public void CreateCommand_should_return_expected_result_when_CommitQuorum_with_w_is_Set( [Values(1, 2, 3)] int w) { var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) }; var commitQuorum = CreateIndexCommitQuorum.Create(w); var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings) { CommitQuorum = commitQuorum }; var session = OperationTestHelper.CreateSession(); var connectionDescription = OperationTestHelper.CreateConnectionDescription(serverVersion: Feature.CreateIndexCommitQuorum.FirstSupportedVersion); var result = subject.CreateCommand(session, connectionDescription); var expectedResult = new BsonDocument { { "createIndexes", _collectionNamespace.CollectionName }, { "indexes", new BsonArray { requests[0].CreateIndexDocument() } }, { "commitQuorum", w } }; result.Should().Be(expectedResult); result["commitQuorum"].BsonType.Should().Be(BsonType.Int32); }
public void CreateOperation_should_return_expected_result( [Values(null, 1, 2)] int?w, [Values(null, -10000, 0, 1, 42, 9000, 10000, 10001)] int?maxTimeTicks) { var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) }; var commitQuorum = w.HasValue ? CreateIndexCommitQuorum.Create(w.Value) : null; var maxTime = maxTimeTicks == null ? (TimeSpan?)null : TimeSpan.FromTicks(maxTimeTicks.Value); var writeConcern = new WriteConcern(1); var subject = new CreateIndexesOperation(_collectionNamespace, requests, _messageEncoderSettings) { CommitQuorum = commitQuorum, MaxTime = maxTime, WriteConcern = writeConcern }; var result = subject.CreateOperation(); result.Should().BeOfType <CreateIndexesUsingCommandOperation>(); var operation = (CreateIndexesUsingCommandOperation)result; operation.CollectionNamespace.Should().BeSameAs(_collectionNamespace); operation.CommitQuorum.Should().BeSameAs(commitQuorum); operation.MaxTime.Should().Be(maxTime); operation.MessageEncoderSettings.Should().BeSameAs(_messageEncoderSettings); operation.Requests.Should().Equal(requests); operation.WriteConcern.Should().BeSameAs(writeConcern); }
public void CreateCommand_should_return_expected_result_when_CommitQuorum_with_mode_is_Set( [Values("abc", "def")] string mode) { var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) }; var commitQuorum = CreateIndexCommitQuorum.Create(mode); var subject = new CreateIndexesOperation(_collectionNamespace, requests, _messageEncoderSettings) { CommitQuorum = commitQuorum }; var session = OperationTestHelper.CreateSession(); var connectionDescription = OperationTestHelper.CreateConnectionDescription(Feature.CreateIndexCommitQuorum.FirstSupportedWireVersion); var result = subject.CreateCommand(session, connectionDescription); var expectedResult = new BsonDocument { { "createIndexes", _collectionNamespace.CollectionName }, { "indexes", new BsonArray { requests[0].CreateIndexDocument() } }, { "commitQuorum", mode } }; result.Should().Be(expectedResult); result["commitQuorum"].BsonType.Should().Be(BsonType.String); }
public void Create_with_w_should_return_expected_result( [Values(1, 2, 3)] int w) { var subject = CreateIndexCommitQuorum.Create(w); var s = subject.Should().BeOfType <CreateIndexCommitQuorumWithW>().Subject; s.W.Should().Be(w); }
public void Create_with_mode_should_return_expected_result( [Values("abc", "def")] string mode) { var subject = CreateIndexCommitQuorum.Create(mode); var s = subject.Should().BeOfType <CreateIndexCommitQuorumWithMode>().Subject; s.Mode.Should().Be(mode); }
public void CommitQuorum_get_and_set_should_work( [Values(null, 1, 2)] int?w) { var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, Enumerable.Empty <CreateIndexRequest>(), _messageEncoderSettings); var value = w.HasValue ? CreateIndexCommitQuorum.Create(w.Value) : null; subject.CommitQuorum = value; var result = subject.CommitQuorum; result.Should().BeSameAs(value); }
public void CommitQuorum_set_should_have_expected_result( [Values(null, 1, 2)] int?w) { var commitQuorum = w.HasValue ? CreateIndexCommitQuorum.Create(w.Value) : null; var subject = new CreateOneIndexOptions() { CommitQuorum = commitQuorum }; subject.CommitQuorum = commitQuorum; subject.CommitQuorum.Should().Be(commitQuorum); }
public void CommitQuorum_get_should_return_expected_result( [Values(null, 1, 2)] int?w) { var commitQuorum = w.HasValue ? CreateIndexCommitQuorum.Create(w.Value) : null; var subject = new CreateOneIndexOptions() { CommitQuorum = commitQuorum }; var result = subject.CommitQuorum; result.Should().BeSameAs(commitQuorum); }
public void CreateCommand_should_throw_when_commitQuorum_is_specified_and_not_supported() { var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) }; var commitQuorum = CreateIndexCommitQuorum.Create(1); var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings) { CommitQuorum = commitQuorum }; var session = OperationTestHelper.CreateSession(); var connectionDescription = OperationTestHelper.CreateConnectionDescription(serverVersion: Feature.CreateIndexCommitQuorum.LastNotSupportedVersion); var exception = Record.Exception(() => subject.CreateCommand(session, connectionDescription)); exception.Should().BeOfType <NotSupportedException>(); }
public void Execute_should_work_when_commitQuorum_is_specified( [Values(1, "majority", "votingMembers")] object commitQuorumCase, [Values(false, true)] bool async) { RequireServer.Check().ClusterTypes(ClusterType.ReplicaSet, ClusterType.Sharded).Supports(Feature.CreateIndexCommitQuorum); DropCollection(); var requests = new[] { new CreateIndexRequest(new BsonDocument("x", 1)) }; CreateIndexCommitQuorum commitQuorum; if (commitQuorumCase is int w) { commitQuorum = CreateIndexCommitQuorum.Create(w); } else if (commitQuorumCase is string mode) { switch (mode) { case "majority": commitQuorum = CreateIndexCommitQuorum.Majority; break; case "votingMembers": commitQuorum = CreateIndexCommitQuorum.VotingMembers; break; default: commitQuorum = CreateIndexCommitQuorum.Create(mode); break; } } else { throw new ArgumentException($"Invalid commitQuorumCase: {commitQuorumCase}.", nameof(commitQuorumCase)); } var subject = new CreateIndexesUsingCommandOperation(_collectionNamespace, requests, _messageEncoderSettings) { CommitQuorum = commitQuorum }; ExecuteOperation(subject, async); var indexes = ListIndexes(); indexes.Select(index => index["name"].AsString).Should().BeEquivalentTo(new[] { "_id_", "x_1" }); }