public void Enqueue_DataNull() { // arrange ITransmissionBuffer <EventData> buffer = new Mock <ITransmissionBuffer <EventData> >().Object; ITransmissionSender <EventData> sender = new Mock <ITransmissionSender <EventData> >().Object; ITelemetryEventTransmitter transmitter = new EventHubTransmitter(buffer, sender); TelemetryEvent data = null; // act Action verify = () => transmitter.Enqueue(data); // assert Assert.Throws <ArgumentNullException>("data", verify); }
public void Enqueue_DataNull() { // arrange IMemoryBuffer <EventData> buffer = new Mock <IMemoryBuffer <EventData> >().Object; ITransmissionBuffer <EventData, EventDataBatch> aggregator = Mock.Of <ITransmissionBuffer <EventData, EventDataBatch> >(); ITransmissionSender <EventDataBatch> sender = new Mock <ITransmissionSender <EventDataBatch> >().Object; ITransmissionStorage <EventData> storage = new Mock <ITransmissionStorage <EventData> >().Object; ITelemetryEventTransmitter transmitter = new EventHubTransmitter( buffer, aggregator, sender, storage); TelemetryEvent data = null; // act Action verify = () => transmitter.Enqueue(data); // assert Assert.Throws <ArgumentNullException>("data", verify); }
public void Enqueue_TransmissionFlow() { // assert ManualResetEventSlim resetEvent = new ManualResetEventSlim(); Mock <IMemoryBuffer <EventData> > buffer = new Mock <IMemoryBuffer <EventData> >(); Mock <ITransmissionBuffer <EventData, EventDataBatch> > aggregator = new Mock <ITransmissionBuffer <EventData, EventDataBatch> >(); Mock <ITransmissionSender <EventDataBatch> > sender = new Mock <ITransmissionSender <EventDataBatch> >(); Mock <ITransmissionStorage <EventData> > storage = new Mock <ITransmissionStorage <EventData> >(); ConcurrentQueue <EventDataBatch> bufferQueue = new ConcurrentQueue <EventDataBatch>(); buffer .Setup(t => t.Enqueue(It.IsAny <EventData>())) .Callback((EventData d) => bufferQueue.Enqueue(EventHubsModelFactory.EventDataBatch(1, new[] { d }))); aggregator .Setup(t => t.Dequeue(It.IsAny <CancellationToken>())) .Returns(() => { int count = 0; List <EventDataBatch> results = new List <EventDataBatch>(); while (bufferQueue.TryDequeue(out EventDataBatch d) && count < 10) { results.Add(d); count++; } return(results.ToAsyncEnumerable()); }); sender .Setup(t => t.SendAsync(It.IsAny <IAsyncEnumerable <EventDataBatch> >(), It.IsAny <CancellationToken>())) .Callback(() => resetEvent.Set()); ITelemetryEventTransmitter transmitter = new EventHubTransmitter( buffer.Object, aggregator.Object, sender.Object, storage.Object); TelemetryEvent data = new TelemetryEvent(); // act transmitter.Enqueue(data); // arrange resetEvent.Wait(TimeSpan.FromSeconds(5)); sender.Verify(s => s.SendAsync( It.IsAny <IAsyncEnumerable <EventDataBatch> >(), It.IsAny <CancellationToken>()), Times.Once); }
public void Enqueue_TransmissionFlow() { // assert ManualResetEventSlim resetEvent = new ManualResetEventSlim(); Mock <ITransmissionBuffer <EventData> > buffer = new Mock <ITransmissionBuffer <EventData> >(); Mock <ITransmissionSender <EventData> > sender = new Mock <ITransmissionSender <EventData> >(); ConcurrentQueue <EventData> bufferQueue = new ConcurrentQueue <EventData>(); buffer .Setup(t => t.EnqueueAsync(It.IsAny <EventData>(), It.IsAny <CancellationToken>())) .Callback((EventData d, CancellationToken t) => bufferQueue.Enqueue(d)); buffer .Setup(t => t.DequeueAsync(It.IsAny <CancellationToken>())) .Returns(() => { int count = 0; List <EventData> results = new List <EventData>(); while (bufferQueue.TryDequeue(out EventData d) && count < 10) { results.Add(d); count++; } return(Task.FromResult(results.AsEnumerable())); }); sender .Setup(t => t.SendAsync(It.IsAny <IEnumerable <EventData> >(), It.IsAny <CancellationToken>())) .Callback(() => resetEvent.Set()); ITelemetryEventTransmitter transmitter = new EventHubTransmitter(buffer.Object, sender.Object); TelemetryEvent data = new TelemetryEvent(); // act transmitter.Enqueue(data); // arrange resetEvent.Wait(TimeSpan.FromSeconds(5)); sender.Verify(s => s.SendAsync( It.Is((IEnumerable <EventData> d) => d.Count() == 1), It.IsAny <CancellationToken>()), Times.Once); }