@@ -178,3 +178,110 @@ impl QueueData {
178
178
self . topic_sys_flag
179
179
}
180
180
}
181
+
182
+ #[ cfg( test) ]
183
+ mod tests {
184
+ use std:: collections:: HashMap ;
185
+
186
+ use super :: * ;
187
+
188
+ #[ test]
189
+ fn broker_data_new_initializes_correctly ( ) {
190
+ let cluster = CheetahString :: from ( "test_cluster" ) ;
191
+ let broker_name = CheetahString :: from ( "test_broker" ) ;
192
+ let broker_addrs = HashMap :: new ( ) ;
193
+ let zone_name = Some ( CheetahString :: from ( "test_zone" ) ) ;
194
+
195
+ let broker_data = BrokerData :: new (
196
+ cluster. clone ( ) ,
197
+ broker_name. clone ( ) ,
198
+ broker_addrs. clone ( ) ,
199
+ zone_name. clone ( ) ,
200
+ ) ;
201
+
202
+ assert_eq ! ( broker_data. cluster, cluster) ;
203
+ assert_eq ! ( broker_data. broker_name, broker_name) ;
204
+ assert_eq ! ( broker_data. broker_addrs, broker_addrs) ;
205
+ assert_eq ! ( broker_data. zone_name, zone_name) ;
206
+ assert ! ( !broker_data. enable_acting_master) ;
207
+ }
208
+
209
+ #[ test]
210
+ fn broker_data_setters_work_correctly ( ) {
211
+ let mut broker_data = BrokerData :: new (
212
+ CheetahString :: from ( "cluster1" ) ,
213
+ CheetahString :: from ( "broker1" ) ,
214
+ HashMap :: new ( ) ,
215
+ None ,
216
+ ) ;
217
+
218
+ broker_data. set_cluster ( CheetahString :: from ( "cluster2" ) ) ;
219
+ broker_data. set_broker_name ( CheetahString :: from ( "broker2" ) ) ;
220
+ broker_data. set_broker_addrs ( HashMap :: from ( [ ( 1 , CheetahString :: from ( "127.0.0.1" ) ) ] ) ) ;
221
+ broker_data. set_zone_name ( Some ( CheetahString :: from ( "zone1" ) ) ) ;
222
+ broker_data. set_enable_acting_master ( true ) ;
223
+
224
+ assert_eq ! ( broker_data. cluster, CheetahString :: from( "cluster2" ) ) ;
225
+ assert_eq ! ( broker_data. broker_name, CheetahString :: from( "broker2" ) ) ;
226
+ assert_eq ! (
227
+ broker_data. broker_addrs. get( & 1 ) . unwrap( ) ,
228
+ & CheetahString :: from( "127.0.0.1" )
229
+ ) ;
230
+ assert_eq ! ( broker_data. zone_name, Some ( CheetahString :: from( "zone1" ) ) ) ;
231
+ assert ! ( broker_data. enable_acting_master) ;
232
+ }
233
+
234
+ #[ test]
235
+ fn broker_data_remove_broker_by_addr_works_correctly ( ) {
236
+ let mut broker_data = BrokerData :: new (
237
+ CheetahString :: from ( "cluster1" ) ,
238
+ CheetahString :: from ( "broker1" ) ,
239
+ HashMap :: from ( [
240
+ ( 1 , CheetahString :: from ( "127.0.0.1" ) ) ,
241
+ ( 2 , CheetahString :: from ( "127.0.0.2" ) ) ,
242
+ ] ) ,
243
+ None ,
244
+ ) ;
245
+
246
+ broker_data. remove_broker_by_addr ( 1 , "127.0.0.1" ) ;
247
+ //assert!(broker_data.broker_addrs.get(&1).is_none());
248
+ assert ! ( broker_data. broker_addrs. get( & 2 ) . is_some( ) ) ;
249
+ }
250
+
251
+ #[ test]
252
+ fn broker_data_select_broker_addr_returns_master_if_exists ( ) {
253
+ let broker_data = BrokerData :: new (
254
+ CheetahString :: from ( "cluster1" ) ,
255
+ CheetahString :: from ( "broker1" ) ,
256
+ HashMap :: from ( [ ( mix_all:: MASTER_ID , CheetahString :: from ( "127.0.0.1" ) ) ] ) ,
257
+ None ,
258
+ ) ;
259
+
260
+ let selected_addr = broker_data. select_broker_addr ( ) ;
261
+ assert_eq ! ( selected_addr. unwrap( ) , CheetahString :: from( "127.0.0.1" ) ) ;
262
+ }
263
+
264
+ #[ test]
265
+ fn broker_data_select_broker_addr_returns_random_if_no_master ( ) {
266
+ let broker_data = BrokerData :: new (
267
+ CheetahString :: from ( "cluster1" ) ,
268
+ CheetahString :: from ( "broker1" ) ,
269
+ HashMap :: from ( [ ( 2 , CheetahString :: from ( "127.0.0.2" ) ) ] ) ,
270
+ None ,
271
+ ) ;
272
+
273
+ let selected_addr = broker_data. select_broker_addr ( ) ;
274
+ assert_eq ! ( selected_addr. unwrap( ) , CheetahString :: from( "127.0.0.2" ) ) ;
275
+ }
276
+
277
+ #[ test]
278
+ fn queue_data_new_initializes_correctly ( ) {
279
+ let queue_data = QueueData :: new ( CheetahString :: from ( "broker1" ) , 4 , 4 , 6 , 0 ) ;
280
+
281
+ assert_eq ! ( queue_data. broker_name, CheetahString :: from( "broker1" ) ) ;
282
+ assert_eq ! ( queue_data. read_queue_nums, 4 ) ;
283
+ assert_eq ! ( queue_data. write_queue_nums, 4 ) ;
284
+ assert_eq ! ( queue_data. perm, 6 ) ;
285
+ assert_eq ! ( queue_data. topic_sys_flag, 0 ) ;
286
+ }
287
+ }
0 commit comments