Example #1
0
        public void can_start_two_instances_for_IIS_stop_and_start()
        {
            //This shows that the port doesn't have an exclusive lock, and that lmdb itself can have multiple instances
            var path  = _testDirectory.CreateNewDirectoryForTest();
            var store = new LmdbMessageStore(path);
            var queueConfiguration = new QueueConfiguration();

            queueConfiguration.LogWith(new RecordingLogger());
            queueConfiguration.AutomaticEndpoint();
            queueConfiguration.StoreMessagesWith(store);
            var queue  = queueConfiguration.BuildQueue();
            var queue2 = queueConfiguration.BuildQueue();

            using (queue)
                using (queue2)
                {
                    queue.CreateQueue("test");
                    queue.Start();
                    queue2.CreateQueue("test");
                    queue2.Start();
                    using (queue.Receive("test").Subscribe(x => { }))
                        using (queue2.Receive("test").Subscribe(x => { }))
                        {
                        }
                }
        }
 public void creating_multiple_stores()
 {
     _store.Dispose();
     _store = new LmdbMessageStore(_queuePath);
     _store.Dispose();
     _store = new LmdbMessageStore(_queuePath);
 }
 public SendingErrorPolicyTests(SharedTestDirectory testDirectory)
 {
     _logger      = new RecordingLogger();
     _scheduler   = new TestScheduler();
     _store       = new LmdbMessageStore(testDirectory.CreateNewDirectoryForTest());
     _subject     = new Subject <OutgoingMessageFailure>();
     _errorPolicy = new SendingErrorPolicy(_logger, _store, _subject, _scheduler);
 }
        public void store_can_read_previously_stored_items()
        {
            _store.CreateQueue("test");
            var message         = ObjectMother.NewMessage <Message>("test");
            var outgoingMessage = ObjectMother.NewMessage <OutgoingMessage>();

            outgoingMessage.Destination = new Uri("lq.tcp://localhost:3030");
            outgoingMessage.SentAt      = DateTime.Now;
            var tx = _store.BeginTransaction();

            _store.StoreOutgoing(tx, outgoingMessage);
            _store.StoreIncomingMessages(tx, message);
            tx.Commit();
            _store.Dispose();
            using (var store2 = new LmdbMessageStore(_path))
            {
                store2.PersistedMessages("test").ToEnumerable().Count().ShouldBe(1);
                store2.PersistedOutgoingMessages().ToEnumerable().Count().ShouldBe(1);
            }
        }
        public void crash_before_commit()
        {
            var message = NewMessage <Message>();

            _store.CreateQueue(message.Queue);
            var transaction = _store.BeginTransaction();

            _store.StoreIncomingMessages(transaction, message);
            _store.Dispose();
            //crash
            _store = new LmdbMessageStore(_queuePath);
            using (var tx = _store.Environment.BeginTransaction())
            {
                using (var db = tx.OpenDatabase(message.Queue))
                {
                    var result = tx.Get(db, message.Id.MessageIdentifier.ToByteArray());
                    result.resultCode.ShouldBe(MDBResultCode.NotFound);
                }
            }
        }
 public OutgoingMessageScenarios(SharedTestDirectory testDirectory)
 {
     _queuePath = testDirectory.CreateNewDirectoryForTest();
     _store     = new LmdbMessageStore(_queuePath);
 }
 public LmdbMessageStoreTester(SharedTestDirectory testDirectory)
 {
     _path  = testDirectory.CreateNewDirectoryForTest();
     _store = new LmdbMessageStore(_path);
 }