public void SystemNamespacesCollection_should_return_the_system_namespaces_collection()
        {
            var subject = new DatabaseNamespace("test");

            var commandCollection = subject.SystemNamespacesCollection;
            commandCollection.FullName.Should().Be("test.system.namespaces");
        }
        // static constructor
        static DriverTestConfiguration()
        {
            var connectionString = CoreTestConfiguration.ConnectionString.ToString();

            var mongoUrl = new MongoUrl(connectionString);
            var clientSettings = MongoClientSettings.FromUrl(mongoUrl);
            if (!clientSettings.WriteConcern.IsAcknowledged)
            {
                clientSettings.WriteConcern = WriteConcern.Acknowledged; // ensure WriteConcern is enabled regardless of what the URL says
            }

            var serverSelectionTimeoutString = Environment.GetEnvironmentVariable("MONGO_SERVER_SELECTION_TIMEOUT_MS");
            if (serverSelectionTimeoutString == null)
            {
                serverSelectionTimeoutString = "10000";
            }
            clientSettings.ServerSelectionTimeout = TimeSpan.FromMilliseconds(int.Parse(serverSelectionTimeoutString));
            clientSettings.ClusterConfigurator = cb =>
            {
                var traceSource = new TraceSource("mongodb-tests", SourceLevels.Information);
                traceSource.Listeners.Clear(); // remove the default listener
                var listener = new ConsoleTraceListener();
                traceSource.Listeners.Add(listener);
                cb.TraceWith(traceSource);
            };

            __client = new MongoClient(clientSettings);
            __databaseNamespace = mongoUrl.DatabaseName == null ? CoreTestConfiguration.DatabaseNamespace : new DatabaseNamespace(mongoUrl.DatabaseName);
            __collectionNamespace = new CollectionNamespace(__databaseNamespace, "testcollection");
        }
        public void CommandCollection_should_return_the_command_collection()
        {
            var subject = new DatabaseNamespace("test");

            var commandCollection = subject.CommandCollection;
            commandCollection.FullName.Should().Be("test.$cmd");
        }
        public override void TestFixtureSetUp()
        {
            base.TestFixtureSetUp();

            // override this database and collection using special ones for this...
            _databaseNamespace = new DatabaseNamespace("DatabaseExistsOperationTests");
            _collectionNamespace = new CollectionNamespace(_databaseNamespace, "DatabaseExistsOperationTests");
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="CommandStartedEvent" /> class.
 /// </summary>
 /// <param name="commandName">Name of the command.</param>
 /// <param name="command">The command.</param>
 /// <param name="databaseNamespace">The database namespace.</param>
 /// <param name="operationId">The operation identifier.</param>
 /// <param name="requestId">The request identifier.</param>
 /// <param name="connectionId">The connection identifier.</param>
 public CommandStartedEvent(string commandName, BsonDocument command, DatabaseNamespace databaseNamespace, long? operationId, int requestId, ConnectionId connectionId)
 {
     _commandName = Ensure.IsNotNullOrEmpty(commandName, "commandName");
     _command = Ensure.IsNotNull(command, "command");
     _databaseNamespace = Ensure.IsNotNull(databaseNamespace, "databaseNamespace");
     _connectionId = Ensure.IsNotNull(connectionId, "connectionId");
     _operationId = operationId;
     _requestId = requestId;
 }
        public void CollectionNamespace_get_should_return_expected_result(
            [Values("a", "b")]
            string collectionName)
        {
            var databaseNamespace = new DatabaseNamespace("test");
            var collectionNamespace = new CollectionNamespace(databaseNamespace, collectionName);
            var subject = new FindOpcodeOperation<BsonDocument>(collectionNamespace, BsonDocumentSerializer.Instance, _messageEncoderSettings);

            var result = subject.CollectionNamespace;

            result.Should().Be(collectionNamespace);
        }
        // static constructor
        static DriverTestConfiguration()
        {
            var connectionString = CoreTestConfiguration.ConnectionString.ToString();

            var mongoUrl = new MongoUrl(connectionString);
            var clientSettings = MongoClientSettings.FromUrl(mongoUrl);
            if (!clientSettings.WriteConcern.IsAcknowledged)
            {
                clientSettings.WriteConcern = WriteConcern.Acknowledged; // ensure WriteConcern is enabled regardless of what the URL says
            }

            clientSettings.ServerSelectionTimeout = TimeSpan.FromMilliseconds(500);

            __client = new MongoClient(clientSettings);
            __databaseNamespace = mongoUrl.DatabaseName == null ? CoreTestConfiguration.DatabaseNamespace : new DatabaseNamespace(mongoUrl.DatabaseName);
            __collectionNamespace = new CollectionNamespace(__databaseNamespace, "testcollection");
        }
        // static constructor
        static DriverTestConfiguration()
        {
            var connectionString = CoreTestConfiguration.ConnectionString.ToString();
            var clientSettings = MongoClientSettings.FromUrl(new MongoUrl(connectionString));

            var serverSelectionTimeoutString = Environment.GetEnvironmentVariable("MONGO_SERVER_SELECTION_TIMEOUT_MS");
            if (serverSelectionTimeoutString == null)
            {
                serverSelectionTimeoutString = "30000";
            }
            clientSettings.ServerSelectionTimeout = TimeSpan.FromMilliseconds(int.Parse(serverSelectionTimeoutString));
            clientSettings.ClusterConfigurator = cb => CoreTestConfiguration.ConfigureLogging(cb);

            __client = new Lazy<MongoClient>(() => new MongoClient(clientSettings), true);
            __databaseNamespace = CoreTestConfiguration.DatabaseNamespace;
            __collectionNamespace = new CollectionNamespace(__databaseNamespace, "testcollection");
        }
        public void constructor_should_initialize_instance()
        {
            var channelSource = Substitute.For<IChannelSource>();
            var databaseNamespace = new DatabaseNamespace("test");
            var collectionNamespace = new CollectionNamespace(databaseNamespace, "test");
            var query = new BsonDocument("x", 1);
            var firstBatch = new BsonDocument[] { new BsonDocument("y", 2) };
            var cursorId = 1L;
            var batchSize = 2;
            var limit = 3;
            var serializer = BsonDocumentSerializer.Instance;
            var messageEncoderSettings = new MessageEncoderSettings();
            var maxTime = TimeSpan.FromSeconds(1);

            var result = new AsyncCursor<BsonDocument>(
                channelSource,
                collectionNamespace,
                query,
                firstBatch,
                cursorId,
                batchSize,
                limit,
                serializer,
                messageEncoderSettings,
                maxTime);

            var reflector = new Reflector(result);
            reflector.BatchSize.Should().Be(batchSize);
            reflector.ChannelSource.Should().Be(channelSource);
            reflector.CollectionNamespace.Should().Be(collectionNamespace);
            reflector.Count.Should().Be(firstBatch.Length);
            reflector.CurrentBatch.Should().BeNull();
            reflector.CursorId.Should().Be(cursorId);
            reflector.Disposed.Should().BeFalse();
            reflector.FirstBatch.Should().Equal(firstBatch);
            reflector.Limit.Should().Be(limit);
            reflector.MaxTime.Should().Be(maxTime);
            reflector.MessageEncoderSettings.Should().BeEquivalentTo(messageEncoderSettings);
            reflector.Query.Should().Be(query);
            reflector.Serializer.Should().Be(serializer);
        }
 // constructors
 public WriteCommandOperation(DatabaseNamespace databaseNamespace, BsonDocument command, MessageEncoderSettings messageEncoderSettings)
     : base(databaseNamespace, command, BsonDocumentSerializer.Instance, messageEncoderSettings)
 {
 }
 public OperationTestBase()
 {
     _databaseNamespace      = CoreTestConfiguration.DatabaseNamespace;
     _collectionNamespace    = new CollectionNamespace(_databaseNamespace, GetType().Name);
     _messageEncoderSettings = CoreTestConfiguration.MessageEncoderSettings;
 }
Beispiel #12
0
 public virtual void TestFixtureSetUp()
 {
     _databaseNamespace      = SuiteConfiguration.DatabaseNamespace;
     _collectionNamespace    = new CollectionNamespace(_databaseNamespace, GetType().Name);
     _messageEncoderSettings = SuiteConfiguration.MessageEncoderSettings;
 }
 public DatabaseExistsOperationTests()
 {
     // override this database and collection using special ones for this...
     _databaseNamespace = new DatabaseNamespace("DatabaseExistsOperationTests");
     _collectionNamespace = new CollectionNamespace(_databaseNamespace, "DatabaseExistsOperationTests");
 }
Beispiel #14
0
 public void OneTimeSetUp()
 {
     _databaseNamespace      = CoreTestConfiguration.GetDatabaseNamespaceForTestFixture();
     _messageEncoderSettings = CoreTestConfiguration.MessageEncoderSettings;
 }
 public DatabaseExistsOperationTests()
 {
     // override this database and collection using special ones for this...
     _databaseNamespace   = new DatabaseNamespace("DatabaseExistsOperationTests");
     _collectionNamespace = new CollectionNamespace(_databaseNamespace, "DatabaseExistsOperationTests");
 }
 public void Setup()
 {
     _databaseNamespace = CoreTestConfiguration.DatabaseNamespace;
     _messageEncoderSettings = CoreTestConfiguration.MessageEncoderSettings;
 }
 // public methods
 public CurrentOpUsingFindOperationTests()
 {
     _adminDatabaseNamespace = new DatabaseNamespace("admin");
     _messageEncoderSettings = CoreTestConfiguration.MessageEncoderSettings;
 }
        public async Task ExecuteAsync_should_return_the_expected_result_when_the_database_does_not_exist()
        {
            var databaseNamespace = new DatabaseNamespace(_databaseNamespace.DatabaseName + "-does-not-exist");
            var subject = new ListCollectionsOperation(databaseNamespace, _messageEncoderSettings);

            var result = await ExecuteOperationAsync(subject);
            var list = await result.ToListAsync();

            list.Should().HaveCount(0);
        }
 public virtual void OneTimeSetUp()
 {
     _adminDatabaseNamespace = new DatabaseNamespace("admin");
     _messageEncoderSettings = CoreTestConfiguration.MessageEncoderSettings;
 }
 // constructors
 public DropDatabaseOperationTests()
 {
     _databaseNamespace      = CoreTestConfiguration.GetDatabaseNamespaceForTestClass(typeof(DropDatabaseOperationTests));
     _messageEncoderSettings = CoreTestConfiguration.MessageEncoderSettings;
 }
        public void Execute_should_return_the_expected_result_when_the_database_does_not_exist(
            [Values(false, true)]
            bool async)
        {
            RequireServer.Where(clusterTypes: ClusterTypes.StandaloneOrReplicaSet, storageEngines: "mmapv1");
            var databaseNamespace = new DatabaseNamespace(_databaseNamespace.DatabaseName + "-not");
            var subject = new ListCollectionsUsingQueryOperation(databaseNamespace, _messageEncoderSettings);

            var result = ExecuteOperation(subject, async);
            var list = ReadCursorToEnd(result, async);

            list.Should().HaveCount(0);
        }
 public void TestFixtureSetUp()
 {
     _databaseNamespace = CoreTestConfiguration.GetDatabaseNamespaceForTestFixture();
     _messageEncoderSettings = CoreTestConfiguration.MessageEncoderSettings;
 }
 // static constructor
 static DriverTestConfiguration()
 {
     __client = new Lazy<MongoClient>(() => new MongoClient(CoreTestConfiguration.Cluster), true);
     __databaseNamespace = CoreTestConfiguration.DatabaseNamespace;
     __collectionNamespace = new CollectionNamespace(__databaseNamespace, "testcollection");
 }
        public void Equals_should_be_correct(string a, string b, bool equals)
        {
            var subject = new DatabaseNamespace(a);
            var compared = new DatabaseNamespace(b);

            subject.Equals(compared).Should().Be(equals);
        }
 public EvalOperationTests()
 {
     _adminDatabaseNamespace = DatabaseNamespace.Admin;
     _messageEncoderSettings = CoreTestConfiguration.MessageEncoderSettings;
 }
 public EvalOperationTests()
 {
     _adminDatabaseNamespace = DatabaseNamespace.Admin;
     _messageEncoderSettings = CoreTestConfiguration.MessageEncoderSettings;
 }
Beispiel #27
0
 // constructors
 /// <summary>
 /// Initializes a new instance of the <see cref="DatabaseExistsOperation"/> class.
 /// </summary>
 /// <param name="databaseNamespace">The database namespace.</param>
 /// <param name="messageEncoderSettings">The message encoder settings.</param>
 public DatabaseExistsOperation(DatabaseNamespace databaseNamespace, MessageEncoderSettings messageEncoderSettings)
 {
     _databaseNamespace      = Ensure.IsNotNull(databaseNamespace, "databaseNamespace");
     _messageEncoderSettings = Ensure.IsNotNull(messageEncoderSettings, "messageEncoderSettings");
 }
 public void TestFixtureSetUp()
 {
     _databaseNamespace      = SuiteConfiguration.GetDatabaseNamespaceForTestFixture();
     _messageEncoderSettings = SuiteConfiguration.MessageEncoderSettings;
 }
 // constructors
 public CurrentOpOperation(DatabaseNamespace databaseNamespace, MessageEncoderSettings messageEncoderSettings)
 {
     _databaseNamespace      = Ensure.IsNotNull(databaseNamespace, nameof(databaseNamespace));
     _messageEncoderSettings = messageEncoderSettings;
 }
 public Profiler(OperationTestBase testBase, DatabaseNamespace databaseNamespace)
 {
     _testBase          = testBase;
     _databaseNamespace = databaseNamespace;
 }
 public virtual void TestFixtureSetUp()
 {
     _adminDatabaseNamespace = new DatabaseNamespace("admin");
     _messageEncoderSettings = CoreTestConfiguration.MessageEncoderSettings;
 }
 public FakeMongoDatabase(IMongoClient client, string name, MongoDatabaseSettings settings)
 {
     Client            = client;
     DatabaseNamespace = new DatabaseNamespace(name);
     Settings          = settings ?? new MongoDatabaseSettings();
 }
 private static string TruncateCollectionNameIfTooLong(DatabaseNamespace databaseNamespace, string collectionName)
 {
     var fullNameLength = databaseNamespace.DatabaseName.Length + 1 + collectionName.Length;
     if (fullNameLength < 123)
     {
         return collectionName;
     }
     else
     {
         var maxCollectionNameLength = 123 - (databaseNamespace.DatabaseName.Length + 1);
         return collectionName.Substring(0, maxCollectionNameLength);
     }
 }
 // public methods
 public CurrentOpUsingCommandOperationTests()
 {
     _adminDatabaseNamespace = new DatabaseNamespace("admin");
     _messageEncoderSettings = CoreTestConfiguration.MessageEncoderSettings;
 }
 public EvalOperationTests()
 {
     _adminDatabaseNamespace = DatabaseNamespace.Admin;
 }
        public void Execute_should_return_the_expected_result_when_the_database_does_not_exist(
            [Values(false, true)]
            bool async)
        {
            var databaseNamespace = new DatabaseNamespace(_databaseNamespace.DatabaseName + "-not");
            var subject = new ListCollectionsUsingQueryOperation(databaseNamespace, _messageEncoderSettings);

            var result = ExecuteOperation(subject, async);
            var list = ReadCursorToEnd(result, async);

            list.Should().HaveCount(0);
        }
Beispiel #37
0
 // constructors
 /// <summary>
 /// Initializes a new instance of the <see cref="WriteCommandOperation{TCommandResult}"/> class.
 /// </summary>
 /// <param name="databaseNamespace">The database namespace.</param>
 /// <param name="command">The command.</param>
 /// <param name="resultSerializer">The result serializer.</param>
 /// <param name="messageEncoderSettings">The message encoder settings.</param>
 public WriteCommandOperation(DatabaseNamespace databaseNamespace, BsonDocument command, IBsonSerializer <TCommandResult> resultSerializer, MessageEncoderSettings messageEncoderSettings)
     : base(databaseNamespace, command, resultSerializer, messageEncoderSettings)
 {
 }
 // static constructor
 static DriverConfiguration()
 {
     __client = new Lazy<MongoClient>(() => new MongoClient(GetClientSettings(string.Empty)), true);
     __databaseNamespace = CoreConfiguration.DatabaseNamespace;
     __collectionNamespace = new CollectionNamespace(__databaseNamespace, "testcollection");
 }
Beispiel #39
0
 // static constructor
 static DriverTestConfiguration()
 {
     __client              = new Lazy <MongoClient>(() => new MongoClient(CoreTestConfiguration.Cluster), true);
     __databaseNamespace   = CoreTestConfiguration.DatabaseNamespace;
     __collectionNamespace = new CollectionNamespace(__databaseNamespace, "testcollection");
 }
 public void Setup()
 {
     _databaseNamespace      = SuiteConfiguration.DatabaseNamespace;
     _messageEncoderSettings = SuiteConfiguration.MessageEncoderSettings;
 }
        public void ToString_should_return_the_name()
        {
            var subject = new DatabaseNamespace("test");

            subject.ToString().Should().Be("test");
        }
Beispiel #42
0
 // constructors
 /// <summary>
 /// Initializes a new instance of the <see cref="AggregateOperation{TResult}"/> class.
 /// </summary>
 /// <param name="databaseNamespace">The database namespace.</param>
 /// <param name="pipeline">The pipeline.</param>
 /// <param name="resultSerializer">The result value serializer.</param>
 /// <param name="messageEncoderSettings">The message encoder settings.</param>
 public AggregateOperation(DatabaseNamespace databaseNamespace, IEnumerable <BsonDocument> pipeline, IBsonSerializer <TResult> resultSerializer, MessageEncoderSettings messageEncoderSettings)
     : this(pipeline, resultSerializer, messageEncoderSettings)
 {
     _databaseNamespace = Ensure.IsNotNull(databaseNamespace, nameof(databaseNamespace));
 }
        public void DatabaseName_should_report_the_provided_database_name()
        {
            var subject = new DatabaseNamespace("test");

            subject.DatabaseName.Should().Be("test");
        }
        public void GetMore_should_use_same_session(
            [Values(false, true)] bool async)
        {
            var mockChannelSource     = new Mock <IChannelSource>();
            var channelSource         = mockChannelSource.Object;
            var mockChannel           = new Mock <IChannelHandle>();
            var channel               = mockChannel.Object;
            var mockSession           = new Mock <ICoreSessionHandle>();
            var session               = mockSession.Object;
            var databaseNamespace     = new DatabaseNamespace("database");
            var collectionNamespace   = new CollectionNamespace(databaseNamespace, "collection");
            var cursorId              = 1;
            var subject               = CreateSubject(collectionNamespace: collectionNamespace, cursorId: cursorId, channelSource: Optional.Create(channelSource));
            var cancellationToken     = new CancellationTokenSource().Token;
            var connectionDescription = CreateConnectionDescriptionSupportingSession();

            mockChannelSource.SetupGet(m => m.Session).Returns(session);
            mockChannel.SetupGet(m => m.ConnectionDescription).Returns(connectionDescription);
            var nextBatchBytes = new byte[] { 5, 0, 0, 0, 0 };
            var nextBatchSlice = new ByteArrayBuffer(nextBatchBytes, isReadOnly: true);
            var secondBatch    = new BsonDocument
            {
                { "cursor", new BsonDocument
                  {
                      { "id", 0 },
                      { "nextBatch", new RawBsonArray(nextBatchSlice) }
                  } }
            };

            subject.MoveNext(cancellationToken); // skip empty first batch
            var sameSessionWasUsed = false;

            if (async)
            {
                mockChannelSource.Setup(m => m.GetChannelAsync(cancellationToken)).Returns(Task.FromResult(channel));
                mockChannel
                .Setup(m => m.CommandAsync(
                           session,
                           null,
                           databaseNamespace,
                           It.IsAny <BsonDocument>(),
                           NoOpElementNameValidator.Instance,
                           null,
                           It.IsAny <Func <CommandResponseHandling> >(),
                           It.IsAny <IBsonSerializer <BsonDocument> >(),
                           It.IsAny <MessageEncoderSettings>(),
                           cancellationToken))
                .Callback(() => sameSessionWasUsed = true)
                .Returns(Task.FromResult(secondBatch));

                subject.MoveNextAsync(cancellationToken).GetAwaiter().GetResult();
            }
            else
            {
                mockChannelSource.Setup(m => m.GetChannel(cancellationToken)).Returns(channel);
                mockChannel
                .Setup(m => m.Command(
                           session,
                           null,
                           databaseNamespace,
                           It.IsAny <BsonDocument>(),
                           NoOpElementNameValidator.Instance,
                           null,
                           It.IsAny <Func <CommandResponseHandling> >(),
                           It.IsAny <IBsonSerializer <BsonDocument> >(),
                           It.IsAny <MessageEncoderSettings>(),
                           cancellationToken))
                .Callback(() => sameSessionWasUsed = true)
                .Returns(secondBatch);

                subject.MoveNext(cancellationToken);
            }

            sameSessionWasUsed.Should().BeTrue();
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="CommandStartedEvent" /> class.
 /// </summary>
 /// <param name="commandName">Name of the command.</param>
 /// <param name="command">The command.</param>
 /// <param name="databaseNamespace">The database namespace.</param>
 /// <param name="operationId">The operation identifier.</param>
 /// <param name="requestId">The request identifier.</param>
 /// <param name="connectionId">The connection identifier.</param>
 public CommandStartedEvent(string commandName, BsonDocument command, DatabaseNamespace databaseNamespace, long?operationId, int requestId, ConnectionId connectionId)
     : this(commandName, command, databaseNamespace, operationId, requestId, connectionId, serviceId : null)
 {
 }