static mock_server_t *
_run_server (read_pref_test_type_t test_type,
             int32_t               max_wire_version)
{
   mock_server_t *server;

   server = mock_server_new ();
   mock_server_run (server);

   switch (test_type) {
   case READ_PREF_TEST_STANDALONE:
      mock_server_auto_ismaster (server,
                                 "{'ok': 1,"
                                 " 'maxWireVersion': %d,"
                                 " 'ismaster': true}",
                                 max_wire_version);
      break;
   case READ_PREF_TEST_MONGOS:
      mock_server_auto_ismaster (server,
                                 "{'ok': 1,"
                                 " 'maxWireVersion': %d,"
                                 " 'ismaster': true,"
                                 " 'msg': 'isdbgrid'}",
                                 max_wire_version);
      break;
   case READ_PREF_TEST_PRIMARY:
      mock_server_auto_ismaster (server,
                                 "{'ok': 1,"
                                 " 'maxWireVersion': %d,"
                                 " 'ismaster': true,"
                                 " 'setName': 'rs',"
                                 " 'hosts': ['%s']}",
                                 max_wire_version,
                                 mock_server_get_host_and_port (server));
      break;
   case READ_PREF_TEST_SECONDARY:
      mock_server_auto_ismaster (server,
                                 "{'ok': 1,"
                                 " 'maxWireVersion': %d,"
                                 " 'ismaster': false,"
                                 " 'secondary': true,"
                                 " 'setName': 'rs',"
                                 " 'hosts': ['%s']}",
                                 max_wire_version,
                                 mock_server_get_host_and_port (server));
      break;
   default:
      fprintf (stderr, "Invalid test_type: : %d\n", test_type);
      abort ();
   }

   return server;
}
Exemple #2
0
mock_server_t *
mock_server_with_autoismaster (int32_t max_wire_version)
{
   mock_server_t *server = mock_server_new ();

   char *ismaster = bson_strdup_printf ("{'ok': 1.0,"
                                        " 'ismaster': true,"
                                        " 'minWireVersion': 0,"
                                        " 'maxWireVersion': %d}",
                                        max_wire_version);

   mock_server_auto_ismaster (server, ismaster);

   bson_free (ismaster);

   return server;
}
static void
auto_ismaster (mock_server_t *server,
               int32_t max_wire_version,
               int32_t max_message_size,
               int32_t max_bson_size,
               int32_t max_batch_size)
{
   char *response = bson_strdup_printf (
      "{'ismaster': true, "
      " 'maxWireVersion': %d,"
      " 'maxBsonObjectSize': %d,"
      " 'maxMessageSizeBytes': %d,"
      " 'maxWriteBatchSize': %d }",
      max_wire_version, max_bson_size, max_message_size, max_batch_size);

   mock_server_auto_ismaster (server, response);

   bson_free (response);
}