@@ -52,6 +52,9 @@ struct _mock_server_t
52
52
int maxWireVersion ;
53
53
int maxBsonObjectSize ;
54
54
int maxMessageSizeBytes ;
55
+
56
+ const char * setName ;
57
+ const mongoc_host_list_t * hosts ;
55
58
};
56
59
57
60
@@ -130,6 +133,11 @@ handle_ismaster (mock_server_t *server,
130
133
{
131
134
bson_t reply_doc = BSON_INITIALIZER ;
132
135
time_t now = time (NULL );
136
+ bson_t hosts_array ;
137
+ const char * hosts_array_key ;
138
+ char buf [32 ];
139
+ uint32_t i ;
140
+ const mongoc_host_list_t * host ;
133
141
134
142
BSON_ASSERT (server );
135
143
BSON_ASSERT (client );
@@ -147,6 +155,21 @@ handle_ismaster (mock_server_t *server,
147
155
server -> maxWireVersion );
148
156
bson_append_double (& reply_doc , "ok" , -1 , 1.0 );
149
157
bson_append_time_t (& reply_doc , "localtime" , -1 , now );
158
+ if (server -> setName ) {
159
+ BSON_APPEND_UTF8 (& reply_doc , "setName" , server -> setName );
160
+ host = server -> hosts ;
161
+ i = 0 ;
162
+ bson_append_array_begin (& reply_doc , "hosts" , -1 , & hosts_array );
163
+
164
+ while (host ) {
165
+ bson_uint32_to_string (i , & hosts_array_key , buf , sizeof buf );
166
+ BSON_APPEND_UTF8 (& hosts_array , hosts_array_key , host -> host_and_port );
167
+ i ++ ;
168
+ host = host -> next ;
169
+ }
170
+
171
+ bson_append_array_end (& reply_doc , & hosts_array );
172
+ }
150
173
151
174
mock_server_reply_simple (server , client , rpc , MONGOC_REPLY_NONE , & reply_doc );
152
175
@@ -280,10 +303,12 @@ dummy_handler (mock_server_t *server,
280
303
281
304
282
305
mock_server_t *
283
- mock_server_new (const char * address ,
284
- uint16_t port ,
285
- mock_server_handler_t handler ,
286
- void * handler_data )
306
+ mock_server_new_rs (const char * address ,
307
+ uint16_t port ,
308
+ mock_server_handler_t handler ,
309
+ void * handler_data ,
310
+ const char * setName ,
311
+ const mongoc_host_list_t * hosts )
287
312
{
288
313
mock_server_t * server ;
289
314
@@ -308,12 +333,24 @@ mock_server_new (const char *address,
308
333
server -> maxBsonObjectSize = 16777216 ;
309
334
server -> maxMessageSizeBytes = 48000000 ;
310
335
336
+ server -> setName = setName ;
337
+ server -> hosts = hosts ;
338
+
311
339
mongoc_mutex_init (& server -> mutex );
312
340
mongoc_cond_init (& server -> cond );
313
341
314
342
return server ;
315
343
}
316
344
345
+ mock_server_t *
346
+ mock_server_new (const char * address ,
347
+ uint16_t port ,
348
+ mock_server_handler_t handler ,
349
+ void * handler_data )
350
+ {
351
+ return mock_server_new_rs (address , port , handler , handler_data , NULL , NULL );
352
+ }
353
+
317
354
318
355
int
319
356
mock_server_run (mock_server_t * server )
0 commit comments