Ejemplo n.º 1
0
        public async Task <BsonDocument> ExecuteAsync(IConnection connection, TimeSpan timeout, CancellationToken cancellationToken)
        {
            var slidingTimeout = new SlidingTimeout(timeout);

            var writeMessage = CreateWriteMessage(connection);

            if (_writeConcern.Equals(WriteConcern.Unacknowledged))
            {
                await connection.SendMessageAsync(writeMessage, slidingTimeout, cancellationToken);

                return(null);
            }
            else
            {
                var getLastErrorMessage = CreateGetLastErrorMessage();
                await connection.SendMessagesAsync(new RequestMessage[] { writeMessage, getLastErrorMessage }, slidingTimeout, cancellationToken);

                var reply = await connection.ReceiveMessageAsync <BsonDocument>(getLastErrorMessage.RequestId, BsonDocumentSerializer.Instance, slidingTimeout, cancellationToken);

                return(ProcessReply(reply));
            }
        }
Ejemplo n.º 2
0
 public void Equals_should_return_true_if_all_fields_are_equal(int? w, int? wTimeoutSeconds, bool? fsync, bool? journal)
 {
     var wCount = w.HasValue ? (WriteConcern.WValue)w.Value : null;
     var wTimeout = wTimeoutSeconds.HasValue ? (TimeSpan?)TimeSpan.FromSeconds(wTimeoutSeconds.Value) : null;
     var writeConcern1 = new WriteConcern(wCount, wTimeout, fsync, journal);
     var writeConcern2 = new WriteConcern(wCount, wTimeout, fsync, journal);
     writeConcern1.Equals((WriteConcern)writeConcern2).Should().BeTrue();
     writeConcern1.Equals((object)writeConcern2).Should().BeTrue();
     writeConcern1.GetHashCode().Should().Be(writeConcern2.GetHashCode());
 }
Ejemplo n.º 3
0
 public void Equals_should_return_false_if_wTimeout_is_not_equal(int? wTimeout1Seconds, int? wTimeout2Seconds)
 {
     var wTimeout1 = wTimeout1Seconds.HasValue ? (TimeSpan?)TimeSpan.FromSeconds(wTimeout1Seconds.Value) : null;
     var wTimeout2 = wTimeout2Seconds.HasValue ? (TimeSpan?)TimeSpan.FromSeconds(wTimeout2Seconds.Value) : null;
     var writeConcern1 = new WriteConcern(null, wTimeout1, null, null);
     var writeConcern2 = new WriteConcern(null, wTimeout2, null, null);
     writeConcern1.Equals((WriteConcern)writeConcern2).Should().BeFalse();
     writeConcern1.Equals((object)writeConcern2).Should().BeFalse();
     writeConcern1.GetHashCode().Should().NotBe(writeConcern2.GetHashCode());
 }
Ejemplo n.º 4
0
 public void Equals_should_return_false_if_w_is_not_equal(int? w1, int? w2)
 {
     var wCount1 = w1.HasValue ? (WriteConcern.WValue)w1.Value : null;
     var wCount2 = w2.HasValue ? (WriteConcern.WValue)w2.Value : null;
     var writeConcern1 = new WriteConcern(wCount1, null, null, null);
     var writeConcern2 = new WriteConcern(wCount2, null, null, null);
     writeConcern1.Equals((WriteConcern)writeConcern2).Should().BeFalse();
     writeConcern1.Equals((object)writeConcern2).Should().BeFalse();
     writeConcern1.GetHashCode().Should().NotBe(writeConcern2.GetHashCode());
 }
Ejemplo n.º 5
0
 public void Equals_should_return_false_if_journal_is_not_equal(bool? journal1, bool? journal2)
 {
     var writeConcern1 = new WriteConcern(null, null, null, journal1);
     var writeConcern2 = new WriteConcern(null, null, null, journal2);
     writeConcern1.Equals((WriteConcern)writeConcern2).Should().BeFalse();
     writeConcern1.Equals((object)writeConcern2).Should().BeFalse();
     writeConcern1.GetHashCode().Should().NotBe(writeConcern2.GetHashCode());
 }
Ejemplo n.º 6
0
 public void Equals_should_return_false_if_fsync_is_not_equal(bool? fsync1, bool? fsync2)
 {
     var writeConcern1 = new WriteConcern(null, null, fsync1, null);
     var writeConcern2 = new WriteConcern(null, null, fsync2, null);
     writeConcern1.Equals((WriteConcern)writeConcern2).Should().BeFalse();
     writeConcern1.Equals((object)writeConcern2).Should().BeFalse();
     writeConcern1.GetHashCode().Should().NotBe(writeConcern2.GetHashCode());
 }
        public void Equals_should_return_true_when_all_fields_are_equal()
        {
            var subject1 = new WriteConcern(1, TimeSpan.FromSeconds(1), false, false);
            var subject2 = new WriteConcern(1, TimeSpan.FromSeconds(1), false, false);

            var result1 = subject1.Equals(subject2);
            var result2 = subject1.Equals((object)subject2);
            var hashCode1 = subject1.GetHashCode();
            var hashCode2 = subject2.GetHashCode();

            result1.Should().BeTrue();
            result2.Should().BeTrue();
            hashCode1.Should().Be(hashCode2);
        }
        public void Equals_should_return_false_when_other_is_wrong_type()
        {
            var subject = new WriteConcern(1, TimeSpan.FromSeconds(1), false, false);
            var other = new object();

            var result = subject.Equals(other);

            result.Should().BeFalse();
        }
        public void Equals_should_return_false_when_other_is_null()
        {
            var subject = new WriteConcern(1, TimeSpan.FromSeconds(1), false, false);

            var result1 = subject.Equals((WriteConcern)null);
            var result2 = subject.Equals((object)null);

            result1.Should().BeFalse();
            result2.Should().BeFalse();
        }
        public void Equals_should_return_false_when_any_fields_are_not_equal(
            [Values("fsync", "journal", "w", "wTimeout")]
            string notEqualFieldName)
        {
            var subject1 = new WriteConcern(1, TimeSpan.FromSeconds(1), false, false);
            WriteConcern subject2;
            switch (notEqualFieldName)
            {
                case "fsync": subject2 = subject1.With(fsync: true); break;
                case "journal": subject2 = subject1.With(journal: true); break;
                case "w": subject2 = subject1.With(w: 2); break;
                case "wTimeout": subject2 = subject1.With(wTimeout: TimeSpan.FromSeconds(2)); break;
                default: throw new ArgumentException("notEqualFieldName");
            }

            var result1 = subject1.Equals(subject2);
            var result2 = subject1.Equals((object)subject2);
            var hashCode1 = subject1.GetHashCode();
            var hashCode2 = subject2.GetHashCode();

            result1.Should().BeFalse();
            result2.Should().BeFalse();
            hashCode1.Should().NotBe(hashCode2);
        }