/* {{{ proto null|boolean MongoDB\Driver\WriteConcern::getJournal() Returns the WriteConcern "journal" option */ static PHP_METHOD(WriteConcern, getJournal) { php_phongo_writeconcern_t *intern; SUPPRESS_UNUSED_WARNING(return_value_ptr) SUPPRESS_UNUSED_WARNING(return_value_used) intern = Z_WRITECONCERN_OBJ_P(getThis()); if (zend_parse_parameters_none() == FAILURE) { return; } if (mongoc_write_concern_journal_is_set(intern->write_concern)) { RETURN_BOOL(mongoc_write_concern_get_journal(intern->write_concern)); } RETURN_NULL(); } /* }}} */
static void test_write_concern_fsync_and_journal_gle_and_validity (void) { mongoc_write_concern_t *write_concern = mongoc_write_concern_new(); /* * Journal and fsync should imply GLE regardless of w; however, journal and * fsync logically conflict with w=0 and w=-1, so a write concern with such * a combination of options will be considered invalid. */ /* No write concern needs GLE, but not "valid" */ ASSERT(mongoc_write_concern_is_acknowledged (NULL)); ASSERT(!mongoc_write_concern_is_valid (NULL)); /* Default write concern needs GLE and is valid */ ASSERT(write_concern); ASSERT(mongoc_write_concern_is_acknowledged (write_concern)); ASSERT(mongoc_write_concern_is_valid (write_concern)); ASSERT(!mongoc_write_concern_journal_is_set (write_concern)); /* w=0 does not need GLE and is valid */ mongoc_write_concern_set_w(write_concern, MONGOC_WRITE_CONCERN_W_UNACKNOWLEDGED); ASSERT(!mongoc_write_concern_is_acknowledged (write_concern)); ASSERT(mongoc_write_concern_is_valid (write_concern)); ASSERT(!mongoc_write_concern_journal_is_set (write_concern)); /* fsync=true needs GLE, but it conflicts with w=0 */ mongoc_write_concern_set_fsync(write_concern, true); ASSERT(mongoc_write_concern_is_acknowledged (write_concern)); ASSERT(!mongoc_write_concern_is_valid (write_concern)); ASSERT(!mongoc_write_concern_journal_is_set (write_concern)); mongoc_write_concern_set_fsync(write_concern, false); /* journal=true needs GLE, but it conflicts with w=0 */ mongoc_write_concern_set_journal(write_concern, true); ASSERT(mongoc_write_concern_is_acknowledged (write_concern)); ASSERT(!mongoc_write_concern_is_valid (write_concern)); ASSERT(mongoc_write_concern_journal_is_set (write_concern)); mongoc_write_concern_set_journal(write_concern, false); /* w=-1 does not need GLE and is valid */ mongoc_write_concern_set_w(write_concern, MONGOC_WRITE_CONCERN_W_ERRORS_IGNORED); ASSERT(!mongoc_write_concern_is_acknowledged (write_concern)); ASSERT(mongoc_write_concern_is_valid (write_concern)); ASSERT(mongoc_write_concern_journal_is_set (write_concern)); /* fsync=true needs GLE, but it conflicts with w=-1 */ mongoc_write_concern_set_fsync(write_concern, true); ASSERT(mongoc_write_concern_is_acknowledged (write_concern)); ASSERT(!mongoc_write_concern_is_valid (write_concern)); ASSERT(mongoc_write_concern_journal_is_set (write_concern)); /* journal=true needs GLE, but it conflicts with w=-1 */ mongoc_write_concern_set_fsync(write_concern, false); mongoc_write_concern_set_journal(write_concern, true); ASSERT(mongoc_write_concern_is_acknowledged (write_concern)); ASSERT(mongoc_write_concern_journal_is_set (write_concern)); /* fsync=true with w=default needs GLE and is valid */ mongoc_write_concern_set_journal(write_concern, false); mongoc_write_concern_set_fsync(write_concern, true); mongoc_write_concern_set_w(write_concern, MONGOC_WRITE_CONCERN_W_DEFAULT); ASSERT(mongoc_write_concern_is_acknowledged (write_concern)); ASSERT(mongoc_write_concern_is_valid (write_concern)); ASSERT(mongoc_write_concern_journal_is_set (write_concern)); /* journal=true with w=default needs GLE and is valid */ mongoc_write_concern_set_journal(write_concern, false); mongoc_write_concern_set_fsync(write_concern, true); mongoc_write_concern_set_w(write_concern, MONGOC_WRITE_CONCERN_W_DEFAULT); ASSERT(mongoc_write_concern_is_acknowledged (write_concern)); ASSERT(mongoc_write_concern_is_valid (write_concern)); ASSERT(mongoc_write_concern_journal_is_set (write_concern)); mongoc_write_concern_destroy(write_concern); }