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); }
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)); }
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. }