@@ -60,14 +60,6 @@ $producer->poll(0);
60
60
$ topicName = sprintf ("test_rdkafka_%s " , uniqid ());
61
61
$ topic = $ producer ->newTopic ($ topicName );
62
62
63
- try {
64
- $ producer ->getMetadata (false , $ topic , 10 *1000 );
65
- echo "Metadata retrieved successfully when refresh callback set token \n" ;
66
- } catch (\RdKafka \Exception $ e ) {
67
- echo "FAIL: Caught exception when getting metadata after successfully refreshing any token: \n" ;
68
- printf ("%s: %s \n" , get_class ($ e ), $ e ->getMessage ());
69
- }
70
-
71
63
echo "Writing test data \n" ;
72
64
$ topic ->produce (RD_KAFKA_PARTITION_UA , 0 , "Test " );
73
65
$ producer ->poll (0 );
@@ -89,7 +81,7 @@ $confConsumer->setErrorCb(function ($producer, $err, $errstr) {
89
81
printf ("%s: %s \n" , rd_kafka_err2str ($ err ), $ errstr );
90
82
});
91
83
92
- // Test that refresh token with setting token accurately will succeed when getting metadata
84
+ // Test that refresh token with setting token accurately will succeed when consuming data
93
85
$ confConsumer ->setOauthbearerTokenRefreshCb (function ($ consumer ) {
94
86
echo "Refreshing token and succeeding \n" ;
95
87
$ token = generateJws ();
@@ -118,9 +110,26 @@ $message = $consumer->consume(500);
118
110
echo $ message ->err === -185 ? "Received empty message when reading data after not setting or refreshing any token \n" :
119
111
"FAIL: Did receive a message after not setting or refreshing any token \n" ;
120
112
113
+ // Test that metadata will be loaded before data consumption, under the condition that poll is called
114
+ $ confConsumer ->setOauthbearerTokenRefreshCb (function ($ consumer ) {
115
+ echo "Refreshing token on poll and succeeding \n" ;
116
+ $ token = generateJws ();
117
+ $ consumer ->oauthbearerSetToken ($ token ['value ' ], (string ) $ token ['expiryMs ' ], $ token ['principal ' ]);
118
+ });
119
+ $ consumer = new \RdKafka \KafkaConsumer ($ confConsumer );
120
+ $ consumerTopic = $ consumer ->newTopic ($ topicName );
121
+ $ consumer ->poll (0 );
122
+
123
+ try {
124
+ echo "Reading metadata \n" ;
125
+ $ consumer ->getMetadata (false , $ consumerTopic , 1000 );
126
+ echo "Metadata was fetched successfully after calling poll \n" ;
127
+ } catch (\RdKafka \Exception $ e ) {
128
+ echo "FAIL: Caught exception when getting metadata after calling poll \n" ;
129
+ }
130
+
121
131
--EXPECT --
122
132
Refreshing token and succeeding
123
- Metadata retrieved successfully when refresh callback set token
124
133
Writing test data
125
134
Write successful
126
135
Reading data
@@ -131,3 +140,6 @@ Reading data
131
140
Setting token failure in refresh cb
132
141
Local: Authentication failure: Failed to acquire SASL OAUTHBEARER token: Token failure before data consumption
133
142
Received empty message when reading data after not setting or refreshing any token
143
+ Refreshing token on poll and succeeding
144
+ Reading metadata
145
+ Metadata was fetched successfully after calling poll
0 commit comments