TEST(CollectionOptions, Validate) { CollectionOptions options; ASSERT_OK(options.validate()); options.storageEngine = fromjson("{storageEngine1: 1}"); ASSERT_NOT_OK(options.validate()); }
TEST(CollectionOptions, CollationFieldParsesCorrectly) { CollectionOptions options; ASSERT_OK(options.parse(fromjson("{collation: {locale: 'en'}}"))); ASSERT_EQ(options.collation, fromjson("{locale: 'en'}")); ASSERT_TRUE(options.isValid()); ASSERT_OK(options.validate()); }
CollectionCloner::CollectionCloner(ReplicationExecutor* executor, const HostAndPort& source, const NamespaceString& sourceNss, const CollectionOptions& options, const CallbackFn& work, StorageInterface* storageInterface) : _executor(executor), _source(source), _sourceNss(sourceNss), _destNss(_sourceNss), _options(options), _work(work), _storageInterface(storageInterface), _active(false), _listIndexesFetcher(_executor, _source, _sourceNss.db().toString(), BSON("listIndexes" << _sourceNss.coll()), stdx::bind(&CollectionCloner::_listIndexesCallback, this, stdx::placeholders::_1, stdx::placeholders::_2, stdx::placeholders::_3)), _findFetcher(_executor, _source, _sourceNss.db().toString(), BSON("find" << _sourceNss.coll() << "noCursorTimeout" << true), // SERVER-1387 stdx::bind(&CollectionCloner::_findCallback, this, stdx::placeholders::_1, stdx::placeholders::_2, stdx::placeholders::_3)), _indexSpecs(), _documents(), _dbWorkCallbackHandle(), // TODO: replace with executor database worker when it is available. _scheduleDbWorkFn(stdx::bind(&ReplicationExecutor::scheduleWorkWithGlobalExclusiveLock, _executor, stdx::placeholders::_1)) { uassert(ErrorCodes::BadValue, "null replication executor", executor); uassert(ErrorCodes::BadValue, "invalid collection namespace: " + sourceNss.ns(), sourceNss.isValid()); uassertStatusOK(options.validate()); uassert(ErrorCodes::BadValue, "callback function cannot be null", work); uassert(ErrorCodes::BadValue, "null storage interface", storageInterface); }