Beispiel #1
0
        public async Task AddEventHandler_SingleHandlerWithMultipleInterfaces_NotifiesSingleInstance()
        {
            var sourceStartedTracker = new TestEventTracker <SourceStartedEvent>();
            var sourceStoppedTracker = new TestEventTracker <SourceStoppedEvent>();

            var serviceProvider = new TestServiceProvider(
                configureServices: services => services
                .AddSingleton(sourceStartedTracker)
                .AddSingleton(sourceStoppedTracker),
                configureDaisy: daisy => daisy
                .AddEventHandlerSingleton <SourceEventHandler>()
                );

            var chainBuilder = new TestChain <Signal>
            {
                ConfigureSourcesAction = sources => sources
                                         .Add <SignalTestSource>("test")
            };
            var chain = await chainBuilder.BuildAsync(serviceProvider);

            chain.StartAllSources();
            await chain.Sources.WaitForCompletionAsync();

            Assert.Single(sourceStartedTracker.TrackedHandlerIds);
            Assert.Single(sourceStoppedTracker.TrackedHandlerIds);
            Assert.Equal(sourceStoppedTracker.TrackedHandlerIds, sourceStoppedTracker.TrackedHandlerIds);
        }
Beispiel #2
0
 public SourceEventHandler(
     TestEventTracker <SourceStartedEvent> sourceStartedTracker,
     TestEventTracker <SourceStoppedEvent> sourceStoppedTracker)
 {
     _sourceStartedTracker = sourceStartedTracker;
     _sourceStoppedTracker = sourceStoppedTracker;
 }
Beispiel #3
0
        public async Task PublishEvent_MultipleHandlersWithSingleInterface_NotifiesAllHandlers()
        {
            var eventTracker = new TestEventTracker <SourceStartedEvent>();

            var serviceProvider = new TestServiceProvider(
                configureServices: services => services
                .AddSingleton(eventTracker),
                configureDaisy: daisy => daisy
                .AddEventHandlerSingleton <TestEventTrackerHandler <SourceStartedEvent> >()
                .AddEventHandlerSingleton <SourceStartedEventTrackerHandler>()
                );

            var chainBuilder = new TestChain <Signal>
            {
                ConfigureSourcesAction = sources => sources
                                         .Add <SignalTestSource>("test")
            };
            var chain = await chainBuilder.BuildAsync(serviceProvider);

            chain.StartAllSources();
            await chain.Sources.WaitForCompletionAsync();

            Assert.Equal(2, eventTracker.TrackedHandlerIds.Count);
            Assert.Equal(2, eventTracker.TrackedEvents.Count);
        }
Beispiel #4
0
        public async Task SourceException_NotifiesSourceStoppedHandler()
        {
            var eventTracker    = new TestEventTracker <SourceStoppedEvent>();
            var serviceProvider = new TestServiceProvider(
                configureServices: services => services
                .AddSingleton(eventTracker),
                configureDaisy: daisy => daisy
                .AddEventHandlerSingleton <TestEventTrackerHandler <SourceStoppedEvent> >()
                );

            var chainBuilder = new TestChain <Signal>
            {
                ConfigureSourcesAction = sources => sources
                                         .Add <ThrowingTestSource <Signal> >("test")
            };
            var chain = await chainBuilder.BuildAsync(serviceProvider);

            chain.StartAllSources();

            await chain.Sources.WaitForCompletionAsync();

            var source = chain.Sources[0];

            Assert.Single(eventTracker.TrackedEvents, e =>
                          e.ChainName == chain.Name &&
                          e.SourceIndex == source.Index &&
                          e.SourceName == source.Name &&
                          e.Result == SourceResult.Faulted &&
                          e.SourceExecutionId != default &&
                          e.Exception is TestException);
        }
Beispiel #5
0
        public async Task SourceCanceled_SourceStoppedHandler()
        {
            var eventTracker    = new TestEventTracker <SourceStoppedEvent>();
            var serviceProvider = new TestServiceProvider(
                configureServices: services => services
                .AddSingleton(eventTracker),
                configureDaisy: daisy => daisy
                .AddEventHandlerSingleton <TestEventTrackerHandler <SourceStoppedEvent> >()
                );

            var chainBuilder = new TestChain <Signal>
            {
                ConfigureSourcesAction = sources => sources
                                         .Add <InfiniteDelaySource>("test")
            };
            var chain = await chainBuilder.BuildAsync(serviceProvider);

            chain.StartAllSources();
            await chain.StopAllSourcesAsync();

            var source = chain.Sources[0];

            Assert.Single(eventTracker.TrackedEvents, e =>
                          e.ChainName == chain.Name &&
                          e.SourceIndex == source.Index &&
                          e.SourceName == source.Name &&
                          e.SourceExecutionId != default &&
                          e.Result == SourceResult.Canceled);
        }
        public async Task ChainExecutionStart_NotifiesHandler()
        {
            var eventTracker    = new TestEventTracker <ChainExecutionStartedEvent>();
            var serviceProvider = new TestServiceProvider(
                configureServices: services => services
                .AddSingleton(eventTracker),
                configureDaisy: daisy => daisy
                .AddEventHandlerSingleton <TestEventTrackerHandler <ChainExecutionStartedEvent> >()
                );

            var chainBuilder = new TestChain <Signal>
            {
                ConfigureRootAction = root => root
                                      .Link <NoopLink <Signal>, Signal>()
            };

            await chainBuilder.BuildAndExecuteAsync(Signal.Static, default, serviceProvider);
Beispiel #7
0
 public SourceStartedEventTrackerHandler(TestEventTracker <SourceStartedEvent> eventTracker) : base(eventTracker)
 {
 }
Beispiel #8
0
 public TestEventTrackerHandler(TestEventTracker <T> eventTracker)
 {
     _eventTracker = eventTracker;
 }