private void SetupSettings(int movie, int tv, int album)
 {
     SettingsMock.Setup(x => x.GetSettings())
     .Returns(new PlexRequestSettings {
         MovieWeeklyRequestLimit = movie, TvWeeklyRequestLimit = tv, AlbumWeeklyRequestLimit = album
     });
 }
        public void Init()
        {
            this.Settings = new SettingsMock();
            this.MessageBox = new MessageBusMock();

            this.PropertiesChanged = new List<string>();
        }
        public void TestSkipStreamListenerActorInstanceCreationWhenFixtureHasMatchOver()
        {
            //
            //Arrange
            //
            SettingsMock.SetupGet(a => a.FixtureCreationConcurrency).Returns(10);
            var resourceFacadeMock = new Mock <IResourceFacade>();

            resourceFacadeMock.SetupGet(o => o.Id).Returns("Fixture1Id");
            resourceFacadeMock.SetupGet(o => o.MatchStatus).Returns(MatchStatus.MatchOver);

            //
            //Act
            //
            var streamListenerBuilderActorRef =
                ActorOfAsTestActorRef <StreamListenerBuilderActor>(
                    Props.Create(() =>
                                 new StreamListenerBuilderActor(
                                     SettingsMock.Object,
                                     new Mock <IActorContext>().Object,
                                     PluginMock.Object,
                                     StateManagerMock.Object,
                                     SuspensionManagerMock.Object,
                                     StreamHealthCheckValidationMock.Object,
                                     FixtureValidationMock.Object)),
                    StreamListenerBuilderActor.ActorName);

            //
            //Act
            //
            streamListenerBuilderActorRef.Tell(
                new CreateStreamListenerMsg
            {
                Resource = resourceFacadeMock.Object
            });

            Task.Delay(TimeSpan.FromMilliseconds(100));

            streamListenerBuilderActorRef.Tell(
                new CheckFixtureStateMsg
            {
                Resource             = resourceFacadeMock.Object,
                ShouldProcessFixture = false
            });

            //
            //Assert
            //
            AwaitAssert(() =>
            {
                Assert.AreEqual(
                    StreamListenerBuilderState.Active,
                    streamListenerBuilderActorRef.UnderlyingActor.State);
                Assert.AreEqual(
                    0,
                    streamListenerBuilderActorRef.UnderlyingActor.CreationInProgressFixtureIdSetCount);
            },
                        TimeSpan.FromMilliseconds(ASSERT_WAIT_TIMEOUT),
                        TimeSpan.FromMilliseconds(ASSERT_EXEC_INTERVAL));
        }
        public void GlobalSetup()
        {
            var prepareSettings = new AppSettings()
            {
                EncryptionPrivateKey    = MyPrivateKey.ToString(),
                MonitoringServiceClient = new MonitoringServiceClientSettings()
                {
                    MonitoringServiceUrl = "http://localhost:5431"
                }
            };

            var settingsMock = new SettingsMock(_pathToSettings);

            settingsMock.PrepareSettings(prepareSettings);
        }
        public void GetPlexTvShowsTests()
        {
            var cachedTv = F.Build <PlexSearch>().Without(x => x.Directory).CreateMany().ToList();

            cachedTv.Add(new PlexSearch
            {
                Directory = new List <Directory1>
                {
                    new Directory1 {
                        Type = "show", Title = "title1", Year = "2016", ProviderId = "1212", Seasons = new List <Directory1>()
                    }
                }
            });
            SettingsMock.Setup(x => x.GetSettings()).Returns(F.Create <PlexSettings>());
            CacheMock.Setup(x => x.Get <List <PlexSearch> >(CacheKeys.PlexLibaries)).Returns(cachedTv);
            var movies = Checker.GetPlexTvShows();

            Assert.That(movies.Any(x => x.ProviderId == "1212"));
        }
        public void GetPlexMoviesTests()
        {
            var cachedMovies = F.Build <PlexSearch>().Without(x => x.Directory).CreateMany().ToList();

            cachedMovies.Add(new PlexSearch
            {
                Video = new List <Video>
                {
                    new Video {
                        Type = "movie", Title = "title1", Year = "2016", ProviderId = "1212"
                    }
                }
            });
            CacheMock.Setup(x => x.Get <List <PlexSearch> >(CacheKeys.PlexLibaries)).Returns(cachedMovies);
            SettingsMock.Setup(x => x.GetSettings()).Returns(F.Create <PlexSettings>());
            var movies = Checker.GetPlexMovies();

            Assert.That(movies.Any(x => x.ProviderId == "1212"));
        }
Esempio n. 7
0
        public void GetEpisodesForSeries()
        {
            var series = (PartialViewResult)_controller.GetEpisodes(1, "stringTitle");
            var model  = (SonarrEpisodeViewModel)series.Model;

            Assert.That(model.EpisodeViewModels.Count, Is.GreaterThan(0));
            Assert.That(model.SeasonTitle, Is.EqualTo("stringTitle"));
            Assert.That(model.EpisodeViewModels[SonarrEpisode[0].seasonNumber][0].Monitored, Is.EqualTo(SonarrEpisode[0].monitored));
            Assert.That(model.EpisodeViewModels[SonarrEpisode[0].seasonNumber][0].Overview, Is.EqualTo(SonarrEpisode[0].overview));
            Assert.That(model.EpisodeViewModels[SonarrEpisode[0].seasonNumber][0].Title, Is.EqualTo(SonarrEpisode[0].title));
            Assert.That(model.EpisodeViewModels[SonarrEpisode[0].seasonNumber][0].AbsoluteEpisodeNumber, Is.EqualTo(SonarrEpisode[0].absoluteEpisodeNumber));
            Assert.That(model.EpisodeViewModels[SonarrEpisode[0].seasonNumber][0].Downloading, Is.EqualTo(SonarrEpisode[0].downloading));
            Assert.That(model.EpisodeViewModels[SonarrEpisode[0].seasonNumber][0].EpisodeFileId, Is.EqualTo(SonarrEpisode[0].episodeFileId));
            Assert.That(model.EpisodeViewModels[SonarrEpisode[0].seasonNumber][0].HasFile, Is.EqualTo(SonarrEpisode[0].hasFile));
            Assert.That(model.EpisodeViewModels[SonarrEpisode[0].seasonNumber][0].ID, Is.EqualTo(SonarrEpisode[0].id));
            Assert.That(model.EpisodeViewModels[SonarrEpisode[0].seasonNumber][0].SeasonNumber, Is.EqualTo(SonarrEpisode[0].seasonNumber));


            ServiceMock.Verify(x => x.GetSonarrEpisodes(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <int>()), Times.Once);
            SettingsMock.Verify(x => x.GetSettings(), Times.Once);
        }
        public async Task GlobalSetup()
        {
            LaunchSettingsReader.Read();

            _rabbitMqSettings    = RabbitMqSettingsReader.Read();
            _rabbitMqInitializer = new RabbitMqVhostInitializer(_rabbitMqSettings);

            await _rabbitMqInitializer.InitializeAsync();

            _settingsMock = new SettingsMock(_pathToSettings);

            var prepareSettings = new AppSettings
            {
                Db = new DbSettings
                {
                    AzureDataConnString = "empty",
                    LogsConnString      = "empty",
                    MaxTransactionsSavingParallelism = 4
                },
                RabbitMq = new RabbitMqSettings
                {
                    ConnString             = _rabbitMqSettings.GetConnectionString(),
                    MessageConsumersCount  = 1,
                    MessageProcessorsCount = 1,
                    TransactionsBatchSize  = 2
                },
                LastIrreversibleBlockMonitoringPeriod = TimeSpan.FromSeconds(5),
                NodeUrl                 = "http://localhost:7777/api",
                NodeUser                = "******",
                NodePassword            = "******",
                MonitoringServiceClient = new MonitoringServiceClientSettings
                {
                    MonitoringServiceUrl = "http://localhost:5431"
                }
            };

            _settingsMock.PrepareSettings(prepareSettings);
        }
Esempio n. 9
0
        public void GetSeries()
        {
            var series = (PartialViewResult)_controller.GetSeries();
            var model  = (List <SonarrSeriesViewModel>)series.Model;

            DateTime newDate;

            DateTime.TryParse(SonarrSeries[0].firstAired, out newDate);


            Assert.That(model.Count, Is.GreaterThan(0));
            Assert.That(model[0].Id, Is.EqualTo(SonarrSeries[0].id));
            Assert.That(model[0].ImdbId, Is.EqualTo(SonarrSeries[0].imdbId));
            Assert.That(model[0].Monitored, Is.EqualTo(SonarrSeries[0].monitored));
            Assert.That(model[0].FirstAired, Is.EqualTo(newDate.ToString("D")));
            Assert.That(model[0].EpisodeCount, Is.EqualTo(SonarrSeries[0].episodeCount));
            Assert.That(model[0].CleanTitle, Is.EqualTo(SonarrSeries[0].cleanTitle));
            Assert.That(model[0].AirTime, Is.EqualTo(SonarrSeries[0].airTime));
            Assert.That(model[0].Network, Is.EqualTo(SonarrSeries[0].network));
            Assert.That(model[0].NextAiring, Is.EqualTo(SonarrSeries[0].nextAiring));
            Assert.That(model[0].Overview, Is.EqualTo(SonarrSeries[0].overview));
            Assert.That(model[0].Path, Is.EqualTo(SonarrSeries[0].path));
            Assert.That(model[0].QualityProfileId, Is.EqualTo(SonarrSeries[0].qualityProfileId));
            Assert.That(model[0].Runtime, Is.EqualTo(SonarrSeries[0].runtime));
            Assert.That(model[0].SeasonCount, Is.EqualTo(SonarrSeries[0].seasonCount));
            Assert.That(model[0].SeasonFolder, Is.EqualTo(SonarrSeries[0].seasonFolder));
            Assert.That(model[0].SeriesType, Is.EqualTo(SonarrSeries[0].seriesType));
            Assert.That(model[0].Status, Is.EqualTo(SonarrSeries[0].status));
            Assert.That(model[0].Title, Is.EqualTo(SonarrSeries[0].title));
            Assert.That(model[0].TitleSlug, Is.EqualTo(SonarrSeries[0].titleSlug));
            Assert.That(model[0].Year, Is.EqualTo(SonarrSeries[0].year));
            Assert.That(model[0].ImageUrls[0], Is.EqualTo(UrlHelper.ReturnUri(ExpectedSettings.IpAddress, ExpectedSettings.Port) + SonarrSeries[0].images[0].url));

            ServiceMock.Verify(x => x.GetSonarrSeries(It.IsAny <string>(), It.IsAny <string>()), Times.Once);
            SettingsMock.Verify(x => x.GetSettings(), Times.Once);
        }
Esempio n. 10
0
        public void GlobalSetup()
        {
            var settings = new AppSettings
            {
                Db = new DbSettings
                {
                    AzureDataConnString = "empty",
                    LogsConnString      = "empty"
                },
                HealthMonitoringPeriod = TimeSpan.FromSeconds(10),
                DependenciesInfoCacheExpirationPeriod = TimeSpan.FromMinutes(1),
                NodeUrl                 = "http://localhost:7777/api",
                NodeUser                = "******",
                NodePassword            = "******",
                MonitoringServiceClient = new MonitoringServiceClientSettings()
                {
                    MonitoringServiceUrl = "http://localhost:5431"
                },
            };

            var settingsMock = new SettingsMock(_pathToSettings);

            settingsMock.PrepareSettings(settings);
        }
Esempio n. 11
0
 public void Init()
 {
     this.SettingsManager = new SettingsManagerMock();
     this.Settings        = new SettingsMock();
 }
 public void Teardown()
 {
     SettingsMock.Verify(x => x.GetSettings(), Times.Once);
     JobMock.Verify(x => x.Record(It.IsAny <string>()), Times.Once());
 }
Esempio n. 13
0
        public void ConnectToStreamingServerAndProcessSnapshot()
        {
            //
            //Arrange
            //
            Fixture snapshot;
            Mock <IResourceFacade> resourceFacadeMock;

            SetupCommonMockObjects(
                /*sport*/ FootabllSportMock.Object.Name,
                /*fixtureData*/ FixtureSamples.football_setup_snapshot_2,
                /*storedData*/ new { Epoch = 3, Sequence = 1, MatchStatus = MatchStatus.Setup },
                out snapshot,
                out resourceFacadeMock);
            ServiceMock.Setup(o => o.GetResources(It.Is <string>(s => s.Equals(FootabllSportMock.Object.Name))))
            .Returns(new List <IResourceFacade> {
                resourceFacadeMock.Object
            });
            StreamHealthCheckValidationMock.Setup(a =>
                                                  a.CanConnectToStreamServer(
                                                      It.IsAny <IResourceFacade>(),
                                                      It.IsAny <StreamListenerState>()))
            .Returns(false);
            SettingsMock.SetupGet(a => a.AllowFixtureStreamingInSetupMode).Returns(false);
            FixtureValidationMock.Setup(a =>
                                        a.IsSnapshotNeeded(
                                            It.IsAny <IResourceFacade>(),
                                            It.IsAny <FixtureState>()))
            .Returns(true);

            //
            //Act
            //
            var streamListenerManagerActor =
                ActorOfAsTestActorRef <StreamListenerManagerActor>(
                    Props.Create(() =>
                                 new StreamListenerManagerActor(
                                     SettingsMock.Object,
                                     PluginMock.Object,
                                     StateManagerMock.Object,
                                     SuspensionManagerMock.Object,
                                     StreamHealthCheckValidationMock.Object,
                                     FixtureValidationMock.Object)),
                    StreamListenerManagerActor.ActorName);
            var sportProcessorRouterActor =
                ActorOfAsTestActorRef <SportProcessorRouterActor>(
                    Props.Create(() => new SportProcessorRouterActor(ServiceMock.Object))
                    .WithRouter(new SmallestMailboxPool(SettingsMock.Object.FixtureCreationConcurrency)),
                    SportProcessorRouterActor.ActorName);

            sportProcessorRouterActor.Tell(new ProcessSportMsg {
                Sport = FootabllSportMock.Object.Name
            });

            IActorRef           streamListenerActorRef;
            StreamListenerActor streamListenerActor = null;
            IActorRef           resourceActorRef;
            IActorRef           healthCheckActorRef;

            //Get child actors instances
            AwaitAssert(() =>
            {
                streamListenerActorRef =
                    GetChildActorRef(
                        streamListenerManagerActor,
                        StreamListenerActor.GetName(resourceFacadeMock.Object.Id));
                streamListenerActor = GetUnderlyingActor <StreamListenerActor>(streamListenerActorRef);
                resourceActorRef    = GetChildActorRef(streamListenerActorRef, ResourceActor.ActorName);
                healthCheckActorRef = GetChildActorRef(streamListenerActorRef, StreamHealthCheckActor.ActorName);
                Assert.NotNull(streamListenerActorRef);
                Assert.NotNull(streamListenerActor);
                Assert.NotNull(resourceActorRef);
                Assert.NotNull(healthCheckActorRef);

                Assert.AreEqual(StreamListenerState.Initialized, streamListenerActor.State);
            },
                        TimeSpan.FromMilliseconds(ASSERT_WAIT_TIMEOUT),
                        TimeSpan.FromMilliseconds(ASSERT_EXEC_INTERVAL));

            StreamHealthCheckValidationMock.Reset();
            StreamHealthCheckValidationMock.Setup(a =>
                                                  a.CanConnectToStreamServer(
                                                      It.IsAny <IResourceFacade>(),
                                                      It.IsAny <StreamListenerState>()))
            .Returns(true);
            StreamHealthCheckValidationMock.Setup(a =>
                                                  a.ValidateStream(
                                                      It.IsAny <IResourceFacade>(),
                                                      It.IsAny <StreamListenerState>(),
                                                      It.IsAny <int>()))
            .Returns(true);
            //This call will trigger health check message
            sportProcessorRouterActor.Tell(new ProcessSportMsg {
                Sport = FootabllSportMock.Object.Name
            });

            //
            //Assert
            //
            AwaitAssert(() =>
            {
                resourceFacadeMock.Verify(a => a.GetSnapshot(), Times.Exactly(2));
                PluginMock.Verify(a =>
                                  a.ProcessSnapshot(It.Is <Fixture>(f => f.Id.Equals(resourceFacadeMock.Object.Id)), false),
                                  Times.Exactly(2));
                PluginMock.Verify(a =>
                                  a.ProcessSnapshot(It.Is <Fixture>(f => f.Id.Equals(resourceFacadeMock.Object.Id)), true),
                                  Times.Never);
                PluginMock.Verify(a =>
                                  a.ProcessMatchStatus(It.Is <Fixture>(f => f.Id.Equals(resourceFacadeMock.Object.Id))),
                                  Times.Never);
                SuspensionManagerMock.Verify(a =>
                                             a.Unsuspend(It.Is <Fixture>(f => f.Id.Equals(resourceFacadeMock.Object.Id))),
                                             Times.Never);
                SuspensionManagerMock.Verify(a =>
                                             a.Suspend(It.Is <Fixture>(f => f.Id.Equals(resourceFacadeMock.Object.Id)),
                                                       SuspensionReason.SUSPENSION),
                                             Times.Never);
                Assert.AreEqual(StreamListenerState.Streaming, streamListenerActor.State);
            },
                        TimeSpan.FromMilliseconds(ASSERT_WAIT_TIMEOUT),
                        TimeSpan.FromMilliseconds(ASSERT_EXEC_INTERVAL));
        }
Esempio n. 14
0
        public void WhenStartStreamingIsNotRespondingThenStopStreamListener()
        {
            //
            //Arrange
            //
            Fixture snapshot;
            Mock <IResourceFacade> resourceFacadeMock;

            SetupCommonMockObjects(
                /*sport*/ FootabllSportMock.Object.Name,
                /*fixtureData*/ FixtureSamples.football_inplay_snapshot_2,
                /*storedData*/ new { Epoch = 7, Sequence = 1, MatchStatus = MatchStatus.InRunning },
                out snapshot,
                out resourceFacadeMock);
            StreamHealthCheckValidationMock.Setup(a =>
                                                  a.CanConnectToStreamServer(
                                                      It.IsAny <IResourceFacade>(),
                                                      It.IsAny <StreamListenerState>()))
            .Returns(true);
            SettingsMock.SetupGet(o => o.StartStreamingTimeoutInSeconds).Returns(1);
            SettingsMock.SetupGet(o => o.StartStreamingAttempts).Returns(3);
            ServiceMock.Setup(o => o.GetResources(It.Is <string>(s => s.Equals(FootabllSportMock.Object.Name))))
            .Returns(new List <IResourceFacade> {
                resourceFacadeMock.Object
            });
            resourceFacadeMock.Reset();
            resourceFacadeMock.Setup(o => o.Id).Returns(snapshot.Id);
            resourceFacadeMock.Setup(o => o.Sport).Returns(FootabllSportMock.Object.Name);
            resourceFacadeMock.Setup(o => o.MatchStatus).Returns((MatchStatus)Convert.ToInt32(snapshot.MatchStatus));
            resourceFacadeMock.Setup(o => o.Content).Returns(new Summary
            {
                Id          = snapshot.Id,
                Sequence    = snapshot.Sequence,
                MatchStatus = Convert.ToInt32(snapshot.MatchStatus),
                StartTime   = snapshot.StartTime?.ToString("yyyy-MM-ddTHH:mm:ssZ")
            });

            //
            //Act
            //
            var streamListenerManagerActor =
                ActorOfAsTestActorRef <StreamListenerManagerActor>(
                    Props.Create(() =>
                                 new StreamListenerManagerActor(
                                     SettingsMock.Object,
                                     PluginMock.Object,
                                     StateManagerMock.Object,
                                     SuspensionManagerMock.Object,
                                     StreamHealthCheckValidationMock.Object,
                                     FixtureValidationMock.Object)),
                    StreamListenerManagerActor.ActorName);
            var sportProcessorRouterActor =
                ActorOfAsTestActorRef <SportProcessorRouterActor>(
                    Props.Create(() => new SportProcessorRouterActor(ServiceMock.Object))
                    .WithRouter(new SmallestMailboxPool(SettingsMock.Object.FixtureCreationConcurrency)),
                    SportProcessorRouterActor.ActorName);

            sportProcessorRouterActor.Tell(new ProcessSportMsg {
                Sport = FootabllSportMock.Object.Name
            });

            //wait for 5 seconds while the health checks run every second and after 3 attempts the manager kills the actor
            Task.Delay(5000).Wait();

            //
            //Assert
            //
            AwaitAssert(() =>
            {
                resourceFacadeMock.Verify(a => a.GetSnapshot(), Times.Never);
                PluginMock.Verify(a =>
                                  a.ProcessSnapshot(It.Is <Fixture>(f => f.Id.Equals(resourceFacadeMock.Object.Id)), false),
                                  Times.Never);
                PluginMock.Verify(a =>
                                  a.ProcessSnapshot(It.Is <Fixture>(f => f.Id.Equals(resourceFacadeMock.Object.Id)), true),
                                  Times.Never);
                PluginMock.Verify(a =>
                                  a.ProcessStreamUpdate(It.Is <Fixture>(f => f.Id.Equals(resourceFacadeMock.Object.Id)), false),
                                  Times.Never);
                SuspensionManagerMock.Verify(a =>
                                             a.Unsuspend(It.Is <Fixture>(f => f.Id.Equals(resourceFacadeMock.Object.Id))),
                                             Times.Never);
                SuspensionManagerMock.Verify(a =>
                                             a.Suspend(It.Is <Fixture>(f => f.Id.Equals(resourceFacadeMock.Object.Id)),
                                                       SuspensionReason.SUSPENSION),
                                             Times.Never);
                SuspensionManagerMock.Verify(a =>
                                             a.Suspend(It.Is <Fixture>(f => f.Id.Equals(resourceFacadeMock.Object.Id)),
                                                       SuspensionReason.FIXTURE_ERRORED),
                                             Times.Never);
                SuspensionManagerMock.Verify(a =>
                                             a.Suspend(It.Is <Fixture>(f => f.Id.Equals(resourceFacadeMock.Object.Id)),
                                                       SuspensionReason.DISCONNECT_EVENT),
                                             Times.Never);

                Assert.Throws <AggregateException>(() =>
                {
                    Sys.ActorSelection(
                        streamListenerManagerActor,
                        StreamListenerActor.GetName(resourceFacadeMock.Object.Id))
                    .ResolveOne(TimeSpan.FromSeconds(5)).Wait();
                }).InnerException.Should().BeOfType <ActorNotFoundException>();
            },
                        TimeSpan.FromMilliseconds(ASSERT_WAIT_TIMEOUT),
                        TimeSpan.FromMilliseconds(ASSERT_EXEC_INTERVAL));
        }
        public void TestConcurrentStreamListenerCreationLimit()
        {
            //
            //Arrange
            //
            SettingsMock.SetupGet(a => a.FixtureCreationConcurrency).Returns(3);
            var resource1FacadeMock = new Mock <IResourceFacade>();
            var resource2FacadeMock = new Mock <IResourceFacade>();
            var resource3FacadeMock = new Mock <IResourceFacade>();
            var resource4FacadeMock = new Mock <IResourceFacade>();
            var resource5FacadeMock = new Mock <IResourceFacade>();

            resource1FacadeMock.Setup(o => o.Id).Returns("Fixture1Id");
            resource2FacadeMock.Setup(o => o.Id).Returns("Fixture2Id");
            resource3FacadeMock.Setup(o => o.Id).Returns("Fixture3Id");
            resource4FacadeMock.Setup(o => o.Id).Returns("Fixture4Id");
            resource5FacadeMock.Setup(o => o.Id).Returns("Fixture5Id");

            //
            //Act
            //
            var streamListenerBuilderActorRef =
                ActorOfAsTestActorRef <StreamListenerBuilderActor>(
                    Props.Create(() =>
                                 new StreamListenerBuilderActor(
                                     SettingsMock.Object,
                                     new Mock <IActorContext>().Object,
                                     PluginMock.Object,
                                     StateManagerMock.Object,
                                     SuspensionManagerMock.Object,
                                     StreamHealthCheckValidationMock.Object,
                                     FixtureValidationMock.Object)),
                    StreamListenerBuilderActor.ActorName);

            //
            //Assert
            //
            AwaitAssert(() =>
            {
                Assert.AreEqual(
                    StreamListenerBuilderState.Active,
                    streamListenerBuilderActorRef.UnderlyingActor.State);
            },
                        TimeSpan.FromMilliseconds(ASSERT_WAIT_TIMEOUT),
                        TimeSpan.FromMilliseconds(ASSERT_EXEC_INTERVAL));

            //
            //Act
            //
            streamListenerBuilderActorRef.Tell(new CreateStreamListenerMsg {
                Resource = resource1FacadeMock.Object
            });
            Task.Delay(TimeSpan.FromMilliseconds(50));
            streamListenerBuilderActorRef.Tell(new CreateStreamListenerMsg {
                Resource = resource2FacadeMock.Object
            });
            Task.Delay(TimeSpan.FromMilliseconds(50));
            streamListenerBuilderActorRef.Tell(new CreateStreamListenerMsg {
                Resource = resource3FacadeMock.Object
            });
            Task.Delay(TimeSpan.FromMilliseconds(50));
            streamListenerBuilderActorRef.Tell(new CreateStreamListenerMsg {
                Resource = resource4FacadeMock.Object
            });
            Task.Delay(TimeSpan.FromMilliseconds(50));
            streamListenerBuilderActorRef.Tell(new CreateStreamListenerMsg {
                Resource = resource5FacadeMock.Object
            });

            //
            //Assert
            //
            AwaitAssert(() =>
            {
                Assert.AreEqual(
                    StreamListenerBuilderState.Busy,
                    streamListenerBuilderActorRef.UnderlyingActor.State);
            },
                        TimeSpan.FromMilliseconds(ASSERT_WAIT_TIMEOUT),
                        TimeSpan.FromMilliseconds(ASSERT_EXEC_INTERVAL));

            //
            //Act
            //
            Task.Delay(TimeSpan.FromMilliseconds(50));
            streamListenerBuilderActorRef.Tell(new StreamListenerCreationCompletedMsg {
                FixtureId = resource1FacadeMock.Object.Id
            });
            Task.Delay(TimeSpan.FromMilliseconds(50));
            streamListenerBuilderActorRef.Tell(new StreamListenerCreationCompletedMsg {
                FixtureId = resource2FacadeMock.Object.Id
            });
            Task.Delay(TimeSpan.FromMilliseconds(50));
            streamListenerBuilderActorRef.Tell(new StreamListenerCreationFailedMsg {
                FixtureId = resource4FacadeMock.Object.Id
            });

            //
            //Assert
            //
            AwaitAssert(() =>
            {
                Assert.AreEqual(
                    StreamListenerBuilderState.Active,
                    streamListenerBuilderActorRef.UnderlyingActor.State);
            },
                        TimeSpan.FromMilliseconds(ASSERT_WAIT_TIMEOUT),
                        TimeSpan.FromMilliseconds(ASSERT_EXEC_INTERVAL));
        }