コード例 #1
0
        public void Dispose()
        {
            // arrange
            ITransmissionStorage <AttachmentDescriptor> storage = new Mock <ITransmissionStorage <AttachmentDescriptor> >().Object;
            ITransmissionSender <AttachmentDescriptor>  sender  = new Mock <ITransmissionSender <AttachmentDescriptor> >().Object;
            BlobStorageTransmitter transmitter = new BlobStorageTransmitter(storage, sender);

            // act
            Action verify = () => transmitter.Dispose();

            // assert
            Assert.Null(Record.Exception(verify));
        }
コード例 #2
0
        public void Enqueue_NoException()
        {
            // assert
            ITransmissionStorage <AttachmentDescriptor> storage     = new Mock <ITransmissionStorage <AttachmentDescriptor> >().Object;
            ITransmissionSender <AttachmentDescriptor>  sender      = new Mock <ITransmissionSender <AttachmentDescriptor> >().Object;
            ITelemetryAttachmentTransmitter             transmitter = new BlobStorageTransmitter(storage, sender);
            AttachmentDescriptor data = new Mock <AttachmentDescriptor>().Object;

            // act
            Action verify = () => new BlobStorageTransmitter(storage, sender);

            // arrange
            Assert.Null(Record.Exception(verify));
        }
コード例 #3
0
        public void Enqueue_DataNull()
        {
            // arrange
            ITransmissionStorage <AttachmentDescriptor> storage     = new Mock <ITransmissionStorage <AttachmentDescriptor> >().Object;
            ITransmissionSender <AttachmentDescriptor>  sender      = new Mock <ITransmissionSender <AttachmentDescriptor> >().Object;
            ITelemetryAttachmentTransmitter             transmitter = new BlobStorageTransmitter(storage, sender);
            AttachmentDescriptor data = null;

            // act
            Action verify = () => transmitter.Enqueue(data);

            // assert
            Assert.Throws <ArgumentNullException>("data", verify);
        }
コード例 #4
0
        public void Enqueue_TransmissionFlow()
        {
            // assert
            ManualResetEventSlim resetEvent = new ManualResetEventSlim();
            Mock <ITransmissionStorage <AttachmentDescriptor> > storage     = new Mock <ITransmissionStorage <AttachmentDescriptor> >();
            Mock <ITransmissionSender <AttachmentDescriptor> >  sender      = new Mock <ITransmissionSender <AttachmentDescriptor> >();
            ConcurrentQueue <AttachmentDescriptor[]>            bufferQueue = new ConcurrentQueue <AttachmentDescriptor[]>();

            storage
            .Setup(t => t.EnqueueAsync(It.IsAny <AttachmentDescriptor[]>(), It.IsAny <CancellationToken>()))
            .Callback((AttachmentDescriptor[] d, CancellationToken t) => bufferQueue.Enqueue(d));
            storage
            .Setup(t => t.DequeueAsync(It.IsAny <CancellationToken>()))
            .Returns(() =>
            {
                int count = 0;
                List <AttachmentDescriptor> results = new List <AttachmentDescriptor>();

                while (bufferQueue.TryDequeue(out AttachmentDescriptor[] d) && count < 10)
                {
                    results.AddRange(d);
                    count++;
                }

                return(Task.FromResult(results.ToArray()));
            });
            sender
            .Setup(t => t.SendAsync(It.IsAny <AttachmentDescriptor[]>(), It.IsAny <CancellationToken>()))
            .Callback(() => resetEvent.Set());

            ITelemetryAttachmentTransmitter transmitter = new BlobStorageTransmitter(storage.Object, sender.Object);
            AttachmentDescriptor            data        = new Mock <AttachmentDescriptor>().Object;

            // act
            transmitter.Enqueue(data);

            // arrange
            resetEvent.Wait(TimeSpan.FromSeconds(5));

            sender.Verify((ITransmissionSender <AttachmentDescriptor> s) =>
                          s.SendAsync(It.Is((AttachmentDescriptor[] d) => d.Length == 1),
                                      It.IsAny <CancellationToken>()), Times.Once);
        }