Exemplo n.º 1
0
        public async Task CantSentGiantEvent()
        {
            var client    = new TestEventHubProducerClient();
            var collector = new EventHubAsyncCollector(client);

            // event hub max is 1024k payload.
            var hugePayload = new byte[1200 * 1024];
            var e1          = new EventData(hugePayload);

            try
            {
                await collector.AddAsync(e1);

                Assert.False(true);
            }
            catch (InvalidOperationException e)
            {
                // Exact error message (and serialization byte size) is subject to change.
                StringAssert.Contains("Event is too large", e.Message);
            }

            // Verify we didn't queue anything
            await collector.FlushAsync();

            Assert.IsEmpty(client.SentBatches.Single().Events);
        }
Exemplo n.º 2
0
        public async Task NotSentUntilFlushed()
        {
            var client    = new TestEventHubProducerClient();
            var collector = new EventHubAsyncCollector(client);

            await collector.FlushAsync(); // should be nop.

            var payload = new byte[] { 1, 2, 3 };
            var e1      = new EventData(payload);
            await collector.AddAsync(e1);

            // Not physically sent yet since we haven't flushed
            Assert.IsEmpty(client.SentBatches);

            await collector.FlushAsync();

            Assert.AreEqual(1, client.SentBatches.Count);
            Assert.AreEqual(payload, client.SentBatches[0].GetEventPayload(0));
        }
Exemplo n.º 3
0
        public async Task SendMultiplePartitions()
        {
            var client    = new TestEventHubProducerClient();
            var collector = new EventHubAsyncCollector(client);

            await collector.AddAsync(this.CreateEvent(new byte[] { 1 }, "pk1"));

            await collector.AddAsync(CreateEvent(new byte[] { 2 }, "pk2"));

            // Not physically sent yet since we haven't flushed
            Assert.IsEmpty(client.SentBatches);

            await collector.FlushAsync();

            // Partitions aren't flushed in a specific order.
            Assert.AreEqual(2, client.SentBatches.Count);
            var batches = client.SentBatches;

            var item0 = batches[0].Events[0].Body.ToArray();
            var item1 = batches[1].Events[0].Body.ToArray();

            Assert.AreEqual(3, item0[0] + item1[0]); // either order.
        }