コード例 #1
0
        public async Task SmokeTest()
        {
            var        endpoint  = new RevivableEndpoint("id1");
            IProcessor processor = endpoint.CreateProcessor();

            Assert.True(processor.ErrorDetectionStrategy.IsTransient(new Exception()));

            Assert.Equal(endpoint, processor.Endpoint);
            Assert.Equal(new List <IMessage>(), endpoint.Processed);
            Assert.Equal(string.Empty, endpoint.IotHubName);

            ISinkResult <IMessage> result = await processor.ProcessAsync(new IMessage[0], CancellationToken.None);

            Assert.Equal(new IMessage[0], result.Succeeded);
            Assert.Equal(new List <IMessage>(), endpoint.Processed);

            IMessage[]             messages = new[] { Message1, Message2, Message3 };
            ISinkResult <IMessage> result2  = await processor.ProcessAsync(messages, CancellationToken.None);

            Assert.Equal(new[] { Message1, Message2, Message3 }, result2.Succeeded);
            Assert.Equal(new List <IMessage> {
                Message1, Message2, Message3
            }, endpoint.Processed);

            // set to failing
            endpoint.Failing = true;
            ISinkResult <IMessage> result3 = await processor.ProcessAsync(messages, CancellationToken.None);

            Assert.True(result3.SendFailureDetails.HasValue);
            Assert.Equal(new List <IMessage> {
                Message1, Message2, Message3
            }, endpoint.Processed);

            // revive
            endpoint.Failing = false;
            ISinkResult <IMessage> result4 = await processor.ProcessAsync(messages, CancellationToken.None);

            Assert.Equal(new[] { Message1, Message2, Message3 }, result4.Succeeded);
            Assert.Equal(new List <IMessage> {
                Message1, Message2, Message3, Message1, Message2, Message3
            }, endpoint.Processed);

            await processor.CloseAsync(CancellationToken.None);
        }
コード例 #2
0
 public Processor(RevivableEndpoint endpoint)
 {
     this.endpoint = endpoint;
 }