static void test_read_concern_always_mutable (void) { mongoc_read_concern_t *read_concern; read_concern = mongoc_read_concern_new (); ASSERT (read_concern); mongoc_read_concern_set_level (read_concern, MONGOC_READ_CONCERN_LEVEL_LOCAL); ASSERT_MATCH (_mongoc_read_concern_get_bson (read_concern), "{'level': 'local'}"); mongoc_read_concern_set_level (read_concern, MONGOC_READ_CONCERN_LEVEL_MAJORITY); ASSERT_MATCH (_mongoc_read_concern_get_bson (read_concern), "{'level': 'majority'}"); mongoc_read_concern_set_level (read_concern, MONGOC_READ_CONCERN_LEVEL_LINEARIZABLE); ASSERT_MATCH (_mongoc_read_concern_get_bson (read_concern), "{'level': 'linearizable'}"); mongoc_read_concern_destroy (read_concern); }
mongoc_database_t * _mongoc_database_new (mongoc_client_t *client, const char *name, const mongoc_read_prefs_t *read_prefs, const mongoc_read_concern_t *read_concern, const mongoc_write_concern_t *write_concern) { mongoc_database_t *db; ENTRY; BSON_ASSERT (client); BSON_ASSERT (name); db = (mongoc_database_t *)bson_malloc0(sizeof *db); db->client = client; db->write_concern = write_concern ? mongoc_write_concern_copy(write_concern) : mongoc_write_concern_new(); db->read_concern = read_concern ? mongoc_read_concern_copy(read_concern) : mongoc_read_concern_new(); db->read_prefs = read_prefs ? mongoc_read_prefs_copy(read_prefs) : mongoc_read_prefs_new(MONGOC_READ_PRIMARY); bson_strncpy (db->name, name, sizeof db->name); RETURN(db); }
static void test_read_concern_basic (void) { mongoc_read_concern_t *read_concern; read_concern = mongoc_read_concern_new (); BEGIN_IGNORE_DEPRECATIONS; /* * Test defaults. */ ASSERT (read_concern); ASSERT (mongoc_read_concern_is_default (read_concern)); ASSERT (!mongoc_read_concern_get_level (read_concern)); /* * Test changes to level. */ mongoc_read_concern_set_level (read_concern, MONGOC_READ_CONCERN_LEVEL_LOCAL); ASSERT (!mongoc_read_concern_is_default (read_concern)); ASSERT_CMPSTR (mongoc_read_concern_get_level (read_concern), MONGOC_READ_CONCERN_LEVEL_LOCAL); /* * Check generated bson. */ ASSERT_MATCH (_mongoc_read_concern_get_bson (read_concern), "{'level': 'local'}"); mongoc_read_concern_destroy (read_concern); }
static void _test_read_concern_wire_version (bool allow, bool explicit) { mongoc_read_concern_t *rc; bson_t opts = BSON_INITIALIZER; mock_server_t *server; mongoc_client_t *client; mongoc_collection_t *collection; mongoc_cursor_t *cursor; const bson_t *doc; future_t *future; request_t *request; bson_error_t error; rc = mongoc_read_concern_new (); mongoc_read_concern_set_level (rc, "foo"); server = mock_server_with_autoismaster ( allow ? WIRE_VERSION_READ_CONCERN : WIRE_VERSION_READ_CONCERN - 1); mock_server_run (server); client = mongoc_client_new_from_uri (mock_server_get_uri (server)); collection = mongoc_client_get_collection (client, "db", "collection"); if (explicit) { mongoc_read_concern_append (rc, &opts); } else {
void HHVM_METHOD(MongoDBDriverReadConcern, __construct, const Variant &level) { MongoDBDriverReadConcernData* data = Native::data<MongoDBDriverReadConcernData>(this_); data->m_read_concern = mongoc_read_concern_new(); if (!level.isNull()) { mongoc_read_concern_set_level(data->m_read_concern, level.toString().c_str()); } }
mongoc_read_concern_t * mongoc_read_concern_copy (const mongoc_read_concern_t *read_concern) { mongoc_read_concern_t *ret = NULL; if (read_concern) { ret = mongoc_read_concern_new (); ret->level = bson_strdup (read_concern->level); } return ret; }
mongoc_uri_t * mongoc_uri_new (const char *uri_string) { mongoc_uri_t *uri; #ifdef MONGOC_EXPERIMENTAL_FEATURES int32_t max_staleness_ms; #endif uri = (mongoc_uri_t *)bson_malloc0(sizeof *uri); bson_init(&uri->options); bson_init(&uri->credentials); /* Initialize read_prefs since tag parsing may add to it */ uri->read_prefs = mongoc_read_prefs_new(MONGOC_READ_PRIMARY); /* Initialize empty read_concern */ uri->read_concern = mongoc_read_concern_new (); if (!uri_string) { uri_string = "mongodb://127.0.0.1/"; } if (!mongoc_uri_parse(uri, uri_string)) { mongoc_uri_destroy(uri); return NULL; } uri->str = bson_strdup(uri_string); _mongoc_uri_assign_read_prefs_mode(uri); #ifdef MONGOC_EXPERIMENTAL_FEATURES max_staleness_ms = mongoc_uri_get_option_as_int32 (uri, "maxstalenessms", 0); mongoc_read_prefs_set_max_staleness_ms (uri->read_prefs, max_staleness_ms); #endif if (!mongoc_read_prefs_is_valid(uri->read_prefs)) { mongoc_uri_destroy(uri); return NULL; } _mongoc_uri_build_write_concern (uri); if (!mongoc_write_concern_is_valid (uri->write_concern)) { mongoc_uri_destroy(uri); return NULL; } return uri; }
void mongoc_client_set_read_concern (mongoc_client_t *client, const mongoc_read_concern_t *read_concern) { BSON_ASSERT (client); if (read_concern != client->read_concern) { if (client->read_concern) { mongoc_read_concern_destroy (client->read_concern); } client->read_concern = read_concern ? mongoc_read_concern_copy (read_concern) : mongoc_read_concern_new (); } }
mongoc_uri_t * mongoc_uri_new (const char *uri_string) { mongoc_uri_t *uri; uri = (mongoc_uri_t *)bson_malloc0(sizeof *uri); bson_init(&uri->options); bson_init(&uri->credentials); /* Initialize read_prefs since tag parsing may add to it */ uri->read_prefs = mongoc_read_prefs_new(MONGOC_READ_PRIMARY); /* Initialize empty read_concern */ uri->read_concern = mongoc_read_concern_new (); if (!uri_string) { uri_string = "mongodb://127.0.0.1/"; } if (!mongoc_uri_parse(uri, uri_string)) { mongoc_uri_destroy(uri); return NULL; } uri->str = bson_strdup(uri_string); _mongoc_uri_assign_read_prefs_mode(uri); if (!mongoc_read_prefs_is_valid(uri->read_prefs)) { mongoc_uri_destroy(uri); return NULL; } _mongoc_uri_build_write_concern (uri); if (!mongoc_write_concern_is_valid (uri->write_concern)) { mongoc_uri_destroy(uri); return NULL; } return uri; }
static void test_read_concern_bson_omits_defaults (void) { mongoc_read_concern_t *read_concern; const bson_t *bson; bson_iter_t iter; read_concern = mongoc_read_concern_new (); /* * Check generated bson. */ ASSERT (read_concern); bson = _mongoc_read_concern_get_bson (read_concern); ASSERT (bson); ASSERT (!bson_iter_init_find (&iter, bson, "level")); mongoc_read_concern_destroy (read_concern); }
static void test_read_concern_append (void) { mongoc_read_concern_t *rc; bson_t *cmd; cmd = tmp_bson ("{'foo': 1}"); /* append default readConcern */ rc = mongoc_read_concern_new (); ASSERT (mongoc_read_concern_is_default (rc)); ASSERT_MATCH (cmd, "{'foo': 1, 'readConcern': {'$exists': false}}"); /* append readConcern with level */ mongoc_read_concern_set_level (rc, MONGOC_READ_CONCERN_LEVEL_LOCAL); ASSERT (mongoc_read_concern_append (rc, cmd)); ASSERT_MATCH (cmd, "{'foo': 1, 'readConcern': {'level': 'local'}}"); mongoc_read_concern_destroy (rc); }