Esempio n. 1
0
    protected override void SetUp()
    {
        // installs a transport decorator that throws an exception, if the sent message size exceeds the given threshold
        void FailIfMessageSizeExceeds(OptionsConfigurer optionsConfigurer, int messageSizeLimitBytes) =>
        optionsConfigurer.Decorate <ITransport>(c => new ThrowExceptionsOnBigMessagesTransportDecorator(c.Get <ITransport>(), messageSizeLimitBytes));

        _activator = new BuiltinHandlerActivator();

        Using(_activator);

        _subscriberStore = new InMemorySubscriberStore();
        _network         = new InMemNetwork();
        _dataStore       = new InMemDataStore();

        _starter = Configure.With(_activator)
                   .Transport(t => t.UseInMemoryTransport(_network, "automatic-claim-check"))
                   .Options(o => o.LogPipeline(verbose: true))
                   .Subscriptions(s => s.StoreInMemory(_subscriberStore))
                   .DataBus(d =>
        {
            d.SendBigMessagesAsAttachments(bodySizeThresholdBytes: limit / 2);

            d.StoreInMemory(_dataStore);
        })
                   .Options(o => FailIfMessageSizeExceeds(o, limit))
                   .Create();
    }
Esempio n. 2
0
        protected override void SetUp()
        {
            _inMemDataStore = new InMemDataStore();
            _network        = new InMemNetwork();

            _activator = Using(new BuiltinHandlerActivator());
        }
Esempio n. 3
0
        public async Task ReadTest()
        {
            const string textData         = "this is the payload!!";
            var          receivedTextData = new List <string>();
            var          receivedMetadata = new List <Dictionary <string, string> >();
            var          gotMessage       = new ManualResetEvent(false);
            var          handler          = new DataBusAttachmentReadingHandler(receivedTextData, gotMessage, receivedMetadata);

            var dataStore = new InMemDataStore();

            dataStore.Save("this is an attachment id", Encoding.UTF8.GetBytes(textData), new Dictionary <string, string>
            {
                { "custom-meta", "whee!!" }
            });

            using (FakeDataBus.EstablishContext(dataStore))
            {
                await handler.Handle("this is an attachment id");
            }

            gotMessage.WaitOrDie(TimeSpan.FromSeconds(1));

            Assert.That(receivedTextData.Count, Is.EqualTo(1));
            Assert.That(receivedTextData.First(), Is.EqualTo(textData));

            Assert.That(receivedMetadata.Count, Is.EqualTo(1));
            Assert.That(receivedMetadata.First()["custom-meta"], Is.EqualTo("whee!!"));
        }
Esempio n. 4
0
        protected override void SetUp()
        {
            _inMemNetwork   = new InMemNetwork();
            _inMemDataStore = new InMemDataStore();

            _senderBus         = StartBus("sender").Bus;
            _receiverActivator = StartBus("receiver");
        }
Esempio n. 5
0
        /// <summary>
        /// Establishes a fake presence of a configured data bus, using the given <see cref="InMemDataStore"/> to retrieve data
        /// </summary>
        public static IDisposable EstablishContext(InMemDataStore dataStore, IRebusTime rebusTime)
        {
            if (dataStore == null)
            {
                throw new ArgumentNullException(nameof(dataStore));
            }

            TestBackdoor.EnableTestMode(new InMemDataBusStorage(dataStore, rebusTime));

            return(new CleanUp(TestBackdoor.Reset));
        }
Esempio n. 6
0
    protected override void SetUp()
    {
        _inMemNetwork   = new InMemNetwork();
        _inMemDataStore = new InMemDataStore();

        var(_, senderStarter) = CreateBus("sender");

        _senderBus = senderStarter.Start();

        (_receiverActivator, _starter) = CreateBus("receiver");
    }
Esempio n. 7
0
 /// <summary>
 /// Creates the fake data bus, optionally using the given in-mem data store to store attachments
 /// </summary>
 public FakeDataBus(IRebusTime rebusTime)
 {
     // if there is an "ambient" storage, use that
     if (TestBackdoor.TestDataBusStorage != null)
     {
         _dataBusStorage = TestBackdoor.TestDataBusStorage;
     }
     // last resort: just fake it in mem
     else
     {
         _inMemDataStore = new InMemDataStore();
         _dataBusStorage = new InMemDataBusStorage(_inMemDataStore, rebusTime);
     }
 }
Esempio n. 8
0
        /// <summary>
        /// Establishes a fake presence of a configured data bus, using the given <see cref="InMemDataStore"/> to retrieve data
        /// </summary>
        public static IDisposable EstablishContext(InMemDataStore dataStore)
        {
            if (dataStore == null)
            {
                throw new ArgumentNullException(nameof(dataStore));
            }

            TestDataBusStorage = new InMemDataBusStorage(dataStore);

            return(new CleanUp(() =>
            {
                TestDataBusStorage = null;
            }));
        }
Esempio n. 9
0
 /// <summary>
 /// Creates the fake data bus, optionally using the given in-mem data store to store attachments
 /// </summary>
 /// <param name="dataStore"></param>
 public FakeDataBus(InMemDataStore dataStore = null)
 {
     // if a data store was passed in, we use that
     if (dataStore != null)
     {
         _dataBusStorage = new InMemDataBusStorage(dataStore);
     }
     // otherwise, if there is an "ambient" storage, use that
     else if (TestDataBusStorage != null)
     {
         _dataBusStorage = TestDataBusStorage;
     }
     // last resort: just fake it in mem
     else
     {
         _dataBusStorage = new InMemDataBusStorage(new InMemDataStore());
     }
 }
Esempio n. 10
0
        public async Task CreateTest()
        {
            var dataStore = new InMemDataStore();
            var fakeBus   = new FakeBus {
                Advanced = new FakeAdvancedApi(dataBus: new FakeDataBus(dataStore))
            };
            var handler = new DataBusAttachmentCreatingHandler(fakeBus);

            await handler.Handle("hej med dig min ven!");

            var sentDataBusAttachments = fakeBus.Events
                                         .OfType <MessageSent <DataBusAttachment> >()
                                         .ToList();

            Assert.That(sentDataBusAttachments.Count, Is.EqualTo(1));

            var attachmentId = sentDataBusAttachments.First().CommandMessage.Id;

            var data     = dataStore.Load(attachmentId);
            var textData = Encoding.UTF8.GetString(data);

            Assert.That(textData, Is.EqualTo("hej med dig min ven!"));
        }
Esempio n. 11
0
 public void SetUp()
 {
     _inMemDataStore = new InMemDataStore();
 }
 protected override void SetUp()
 {
     _subscriberStore = new InMemorySubscriberStore();
     _network         = new InMemNetwork();
     _dataStore       = new InMemDataStore();
 }
Esempio n. 13
0
 public InMemDataBusStorage(InMemDataStore dataStore, IRebusTime rebusTime)
 {
     _dataStore = dataStore ?? throw new ArgumentNullException(nameof(dataStore));
     _rebusTime = rebusTime;
 }
Esempio n. 14
0
    /// <summary>
    /// Configures the data bus to store data in memory. This is probably only useful for test scenarios, as the
    /// passed-in <paramref name="inMemDataStore"/> needs to be shared among endpoints on the data bus.
    /// </summary>
    public static void StoreInMemory(this StandardConfigurer <IDataBusStorage> configurer, InMemDataStore inMemDataStore)
    {
        if (configurer == null)
        {
            throw new ArgumentNullException(nameof(configurer));
        }
        if (inMemDataStore == null)
        {
            throw new ArgumentNullException(nameof(inMemDataStore));
        }

        configurer.OtherService <InMemDataBusStorage>()
        .Register(c => new InMemDataBusStorage(inMemDataStore, c.Get <IRebusTime>()));

        configurer.Register(c => c.Get <InMemDataBusStorage>());

        configurer.OtherService <IDataBusStorageManagement>().Register(c => c.Get <InMemDataBusStorage>());
    }