Exemplo n.º 1
0
        public void AdapterGetVersionTest()
        {
            var settings = new Mock<ISettings>();
            settings.Setup(x => x.EventStateFilePath).Returns(".");
            
            var streamListenerManager = new StreamListenerManager(settings.Object);
            streamListenerManager.StateManager = _state.Object;
            var service = new Mock<IServiceFacade>();
            service.Setup(x => x.IsConnected).Returns(true);
            var connector = new Mock<IAdapterPlugin>();
            var listener = new Mock<IListener>();

            settings.Setup(s => s.FixtureCheckerFrequency).Returns(10000);
            service.Setup(s => s.Connect());

            var adapter = new Adapter(
                settings.Object,
                service.Object,
                connector.Object,
                streamListenerManager);

            adapter.Start();
            adapter.Stop();

            var adapterVersionInfo = AdapterVersionInfo.GetAdapterVersionInfo();
            adapterVersionInfo.AdapterVersion.Should().NotBeNullOrEmpty();
            adapterVersionInfo.UdapiSDKVersion.Should().NotBeNullOrEmpty();
        }
Exemplo n.º 2
0
        public void AdapterGetVersionTest()
        {
            var settings = new Mock <ISettings>();

            settings.Setup(x => x.EventStateFilePath).Returns(".");

            var streamListenerManager = new StreamListenerManager(settings.Object);

            streamListenerManager.StateManager = _state.Object;
            var service = new Mock <IServiceFacade>();

            service.Setup(x => x.IsConnected).Returns(true);
            var connector = new Mock <IAdapterPlugin>();
            var listener  = new Mock <IListener>();

            settings.Setup(s => s.FixtureCheckerFrequency).Returns(10000);
            service.Setup(s => s.Connect());

            var adapter = new Adapter(
                settings.Object,
                service.Object,
                connector.Object,
                streamListenerManager);

            adapter.Start();
            adapter.Stop();

            var adapterVersionInfo = AdapterVersionInfo.GetAdapterVersionInfo();

            adapterVersionInfo.AdapterVersion.Should().NotBeNullOrEmpty();
            adapterVersionInfo.UdapiSDKVersion.Should().NotBeNullOrEmpty();
        }
Exemplo n.º 3
0
        public void ShouldStartAndStopNoSports()
        {
            var settings = new Mock<ISettings>();
            settings.Setup(x => x.EventStateFilePath).Returns(".");


            var streamListenerManager = new StreamListenerManager(settings.Object);
            streamListenerManager.StateManager = _state.Object;
            var service = new Mock<IServiceFacade>();
            service.Setup(x => x.IsConnected).Returns(true);
            var connector = new Mock<IAdapterPlugin>();
            var listener = new Mock<IListener>();

            settings.Setup(s => s.FixtureCheckerFrequency).Returns(10000);
            service.Setup(s => s.Connect());

            var adapter = new Adapter(
                settings.Object,
                service.Object,
                connector.Object,
                streamListenerManager);

            adapter.Start();
            adapter.Stop();

            service.VerifyAll();
            listener.Verify(l => l.Start(), Times.Never());
            listener.Verify(l => l.Stop(), Times.Never());
        }
Exemplo n.º 4
0
        public void ShouldStartAndStopNoSports()
        {
            var settings = new Mock <ISettings>();

            settings.Setup(x => x.EventStateFilePath).Returns(".");


            var streamListenerManager = new StreamListenerManager(settings.Object);

            streamListenerManager.StateManager = _state.Object;
            var service = new Mock <IServiceFacade>();

            service.Setup(x => x.IsConnected).Returns(true);
            var connector = new Mock <IAdapterPlugin>();
            var listener  = new Mock <IListener>();

            settings.Setup(s => s.FixtureCheckerFrequency).Returns(10000);
            service.Setup(s => s.Connect());

            var adapter = new Adapter(
                settings.Object,
                service.Object,
                connector.Object,
                streamListenerManager);

            adapter.Start();
            adapter.Stop();

            service.VerifyAll();
            listener.Verify(l => l.Start(), Times.Never());
            listener.Verify(l => l.Stop(), Times.Never());
        }
Exemplo n.º 5
0
        public void DisposeStreamListenerSafeGuardTest()
        {
            var settings = new Mock<ISettings>();
            settings.Setup(x => x.EventStateFilePath).Returns(".");
            settings.Setup(x => x.FixtureCreationConcurrency).Returns(2);
            settings.Setup(x => x.FixtureCheckerFrequency).Returns(1200000); 

            var service = new Mock<IServiceFacade>();
            service.Setup(x => x.IsConnected).Returns(true);
            var streamListenerManager = new StreamListenerManager(settings.Object);
            streamListenerManager.StateManager = _state.Object;
            var connector = new Mock<IAdapterPlugin>();
            var fixtureOne = new Mock<IResourceFacade>();
            var fixtureTwo = new Mock<IResourceFacade>();

            int created = 0;            

            fixtureOne.Setup(f => f.Id).Returns("1");
            fixtureOne.Setup(f => f.Sport).Returns("Football");
            fixtureOne.Setup(f => f.GetSnapshot()).Returns(TestHelper.GetSnapshotJson());
            fixtureOne.Setup(f => f.Content).Returns(new Summary { Id = "1", Date = "23/05/2012", StartTime = "10:20", MatchStatus = (int)MatchStatus.Setup });

            fixtureTwo.Setup(f => f.Id).Returns("2");
            fixtureTwo.Setup(f => f.Sport).Returns("Football");
            fixtureTwo.Setup(f => f.GetSnapshot()).Returns(string.Empty);
            fixtureTwo.Setup(f => f.Content).Returns(new Summary { Id = "2", Date = "23/05/2012", StartTime = "10:30", MatchStatus = (int)MatchStatus.Setup });

            service.Setup(x => x.GetResources("Football"))
                .Returns(() => new List<IResourceFacade> {fixtureOne.Object, fixtureTwo.Object});
                
            Adapter adapter = new Adapter(settings.Object, service.Object, connector.Object,streamListenerManager);
            adapter.StateManager.ClearState("1");
            adapter.StateManager.ClearState("2");
            adapter.AddSport("Football");

            streamListenerManager.StreamCreated += delegate(object sender, string e)
                {
                    created++;
                };

            streamListenerManager.StreamRemoved += delegate(object sender, string e)
                {
                    created--;
                };

            adapter.Start();

            adapter.TimerEvent();

            Thread.Sleep(500);

            created.Should().Be(2);

            service.Setup(s => s.GetResources("Football")).Returns(() => 
            {
                return new List<IResourceFacade> {fixtureTwo.Object}; 
            });

            adapter.TimerEvent();

            Thread.Sleep(500);
            created.Should().Be(2);

            adapter.TimerEvent();
            Thread.Sleep(500);

            created.Should().Be(1);
            
        }
Exemplo n.º 6
0
        public void ResourceIsProcessedExclusivelyTest()
        {
            var settings = new Mock<ISettings>();
            var service = new Mock<IServiceFacade>();
            var connector = new Mock<IAdapterPlugin>();
            var state = new Mock<IEventState>();
            
            settings.Setup(x => x.EventStateFilePath).Returns(".");
            settings.Setup(x => x.MarketFiltersDirectory).Returns(".");
            settings.Setup(x => x.FixtureCreationConcurrency).Returns(1);
            settings.Setup(x => x.FixtureCheckerFrequency).Returns(500);

            var streamListenerManager = new StreamListenerManager(settings.Object);
            streamListenerManager.StateManager = _state.Object;
            var sport = new Mock<IFeature>();

            var resource = new Mock<IResourceFacade>();
            resource.Setup(x => x.Id).Returns("ABC");
            resource.Setup(x => x.Content).Returns(new Summary { Sequence = 1 });

            service.Setup(x => x.GetSports()).Returns(new List<IFeature> { sport.Object });
            service.Setup(x => x.GetResources(It.IsAny<string>())).Returns(new List<IResourceFacade> { resource.Object });
            service.Setup(x => x.IsConnected).Returns(true);



            Adapter adapter = new Adapter(settings.Object, service.Object, connector.Object, streamListenerManager);
            streamListenerManager.StreamCreated += adapter_StreamCreated;
            streamListenerManager.EventState = state.Object;

            // after this call a stream listener for the above resource will be created
            // and the thread that created it will be blocked on the adapter_StreamCreated 
            // event handler until we un-block it
            adapter.Start();

            // As the FixtureCheckerFrequency is half second, before returning
            // from the event handler, the adapter's timer tick surely has
            // been fired several times. As we haven't yet returned from
            // the event handler, for the adapter the resource is still
            // being processed. Here we want to check that this is true.

            // For checking this we check how many times the adapter
            // interrogates EventState.GetFixtureState("ABC")
            // (that call is made immediately before adding the resource
            // to the creation queue - if that detail change, we need
            // to revisit this unit test

            Thread.Sleep(5000);

            lock (streamListenerManager)
            {
                Monitor.PulseAll(streamListenerManager);
                state.Verify(x => x.GetFixtureState("ABC"), Times.AtLeastOnce());
            }

            adapter.Stop();

        }
Exemplo n.º 7
0
        public void AcquireSnapshotAfterFixtureStatusChangeTest()
        {
            var settings = new Mock <ISettings>();
            var service  = new Mock <IServiceFacade>();

            var plugin     = new Mock <IAdapterPlugin>();
            var feature    = new Mock <IFeature>();
            var resource   = new Mock <IResourceFacade>();
            var eventstate = new Mock <IEventState>();
            var provider   = new StateManager(settings.Object, plugin.Object);

            Fixture fixture = new Fixture {
                Id = "ABC", FixtureName = "ABC", Sequence = 2, MatchStatus = "10"
            };

            fixture.Tags.Add("Sport", "Football");

            settings.Setup(x => x.FixtureCreationConcurrency).Returns(1);
            settings.Setup(x => x.FixtureCheckerFrequency).Returns(1000);
            settings.Setup(x => x.EventStateFilePath).Returns(".");
            settings.Setup(x => x.ProcessingLockTimeOutInSecs).Returns(10);
            settings.Setup(x => x.StreamSafetyThreshold).Returns(int.MaxValue);

            var streamListenerManager = new StreamListenerManager(settings.Object);

            streamListenerManager.StateManager = new Mock <IStateManager>().Object;
            feature.Setup(x => x.Name).Returns("Football");

            service.Setup(x => x.GetSports()).Returns(new List <IFeature> {
                feature.Object
            });
            service.Setup(x => x.GetResources(It.Is <string>(y => y == "Football"))).Returns(new List <IResourceFacade> {
                resource.Object
            });
            service.Setup(x => x.IsConnected).Returns(true);

            eventstate.Setup(x => x.GetFixtureState(It.Is <string>(y => y == "ABC"))).Returns(
                new FixtureState
            {
                MatchStatus = MatchStatus.Setup,
                Sequence    = 2,
                Id          = "ABC",
                Sport       = "Football"
            });

            resource.Setup(x => x.Id).Returns("ABC");
            resource.Setup(x => x.MatchStatus).Returns(MatchStatus.Setup);
            resource.Setup(x => x.Content).Returns(new Summary
            {
                Id          = "ABC",
                MatchStatus = 10, // InSetup
                Sequence    = 2
            });

            resource.Setup(x => x.GetSnapshot()).Returns(FixtureJsonHelper.ToJson(fixture));
            resource.Setup(x => x.StartStreaming()).Raises(x => x.StreamConnected += null, EventArgs.Empty);

            Adapter adapter = new Adapter(settings.Object, service.Object, plugin.Object, streamListenerManager)
            {
                StateManager = provider
            };

            streamListenerManager.EventState = eventstate.Object;

            adapter.Start();


            Thread.Sleep(3000);

            resource.Verify(x => x.GetSnapshot(), Times.Once);
            resource.Verify(x => x.StartStreaming(), Times.Never);

            resource.Setup(x => x.MatchStatus).Returns(MatchStatus.Prematch);
            resource.Setup(x => x.StartStreaming()).Raises(x => x.StreamConnected += null, EventArgs.Empty);
            resource.Setup(x => x.Content).Returns(new Summary
            {
                Id          = "ABC",
                MatchStatus = 30,
                Sequence    = 3
            });

            service.Setup(x => x.GetResources(It.Is <string>(y => y == "Football"))).Returns(new List <IResourceFacade> {
                resource.Object
            });

            Thread.Sleep(3000);

            resource.Verify(x => x.GetSnapshot(), Times.Exactly(2));
        }
        public void AcquireSnapshotAfterFixtureStatusChangeTest()
        {
            var settings = new Mock<ISettings>();
            var service = new Mock<IServiceFacade>();
            
            var plugin = new Mock<IAdapterPlugin>();
            var feature = new Mock<IFeature>();
            var resource = new Mock<IResourceFacade>();
            var eventstate = new Mock<IEventState>();
            var provider = new StateManager(settings.Object, plugin.Object);

            Fixture fixture = new Fixture {Id = "ABC", FixtureName = "ABC", Sequence = 2, MatchStatus = "10" };
            fixture.Tags.Add("Sport", "Football");

            settings.Setup(x => x.FixtureCreationConcurrency).Returns(1);
            settings.Setup(x => x.FixtureCheckerFrequency).Returns(1000);
            settings.Setup(x => x.EventStateFilePath).Returns(".");
            settings.Setup(x => x.ProcessingLockTimeOutInSecs).Returns(10);

            var streamListenerManager = new StreamListenerManager(settings.Object);
            streamListenerManager.StateManager = new Mock<IStateManager>().Object;
            feature.Setup(x => x.Name).Returns("Football");

            service.Setup(x => x.GetSports()).Returns(new List<IFeature> { feature.Object });
            service.Setup(x => x.GetResources(It.Is<string>(y => y == "Football"))).Returns(new List<IResourceFacade> { resource.Object });
            service.Setup(x => x.IsConnected).Returns(true);

            eventstate.Setup(x => x.GetFixtureState(It.Is<string>(y => y == "ABC"))).Returns(
                new FixtureState 
                { 
                    MatchStatus = MatchStatus.Setup, 
                    Sequence = 2,
                    Id = "ABC",
                    Sport = "Football"
                });

            resource.Setup(x => x.Id).Returns("ABC");
            resource.Setup(x => x.MatchStatus).Returns(MatchStatus.Setup);
            resource.Setup(x => x.Content).Returns(new Summary
            {
                Id = "ABC",
                MatchStatus = 10, // InSetup
                Sequence = 2
            });

            resource.Setup(x => x.GetSnapshot()).Returns(FixtureJsonHelper.ToJson(fixture));
            resource.Setup(x => x.StartStreaming()).Raises(x => x.StreamConnected += null, EventArgs.Empty);

            Adapter adapter = new Adapter(settings.Object, service.Object, plugin.Object,streamListenerManager)
            {
                StateManager = provider
            };

            streamListenerManager.EventState = eventstate.Object;

            adapter.Start();


            Thread.Sleep(3000);

            resource.Verify( x => x.GetSnapshot(), Times.Once);
            resource.Verify( x => x.StartStreaming(), Times.Never);

            resource.Setup(x => x.MatchStatus).Returns(MatchStatus.Prematch);
            resource.Setup(x => x.StartStreaming()).Raises(x => x.StreamConnected += null, EventArgs.Empty);
            resource.Setup(x => x.Content).Returns(new Summary
                {
                    Id= "ABC",
                    MatchStatus = 30,
                    Sequence =3 
                }); 

            service.Setup(x => x.GetResources(It.Is<string>(y => y == "Football"))).Returns(new List<IResourceFacade> { resource.Object });

            Thread.Sleep(3000);

            resource.Verify(x => x.GetSnapshot(), Times.Exactly(2));
        }
Exemplo n.º 9
0
        public void DisposeStreamListenerSafeGuardTest()
        {
            var settings = new Mock <ISettings>();

            settings.Setup(x => x.EventStateFilePath).Returns(".");
            settings.Setup(x => x.FixtureCreationConcurrency).Returns(2);
            settings.Setup(x => x.FixtureCheckerFrequency).Returns(1200000);

            var service = new Mock <IServiceFacade>();

            service.Setup(x => x.IsConnected).Returns(true);
            var streamListenerManager = new StreamListenerManager(settings.Object);

            streamListenerManager.StateManager = _state.Object;
            var connector  = new Mock <IAdapterPlugin>();
            var fixtureOne = new Mock <IResourceFacade>();
            var fixtureTwo = new Mock <IResourceFacade>();

            int created = 0;

            fixtureOne.Setup(f => f.Id).Returns("1");
            fixtureOne.Setup(f => f.Sport).Returns("Football");
            fixtureOne.Setup(f => f.GetSnapshot()).Returns(TestHelper.GetSnapshotJson());
            fixtureOne.Setup(f => f.Content).Returns(new Summary {
                Id = "1", Date = "23/05/2012", StartTime = "10:20", MatchStatus = (int)MatchStatus.Setup
            });

            fixtureTwo.Setup(f => f.Id).Returns("2");
            fixtureTwo.Setup(f => f.Sport).Returns("Football");
            fixtureTwo.Setup(f => f.GetSnapshot()).Returns(string.Empty);
            fixtureTwo.Setup(f => f.Content).Returns(new Summary {
                Id = "2", Date = "23/05/2012", StartTime = "10:30", MatchStatus = (int)MatchStatus.Setup
            });

            service.Setup(x => x.GetResources("Football"))
            .Returns(() => new List <IResourceFacade> {
                fixtureOne.Object, fixtureTwo.Object
            });

            Adapter adapter = new Adapter(settings.Object, service.Object, connector.Object, streamListenerManager);

            adapter.StateManager.ClearState("1");
            adapter.StateManager.ClearState("2");
            adapter.AddSport("Football");

            streamListenerManager.StreamCreated += delegate(object sender, string e)
            {
                created++;
            };

            streamListenerManager.StreamRemoved += delegate(object sender, string e)
            {
                created--;
            };

            adapter.Start();

            adapter.TimerEvent();

            Thread.Sleep(500);

            created.Should().Be(2);

            service.Setup(s => s.GetResources("Football")).Returns(() =>
            {
                return(new List <IResourceFacade> {
                    fixtureTwo.Object
                });
            });

            adapter.TimerEvent();

            Thread.Sleep(500);
            created.Should().Be(2);

            adapter.TimerEvent();
            Thread.Sleep(500);

            created.Should().Be(1);
        }
Exemplo n.º 10
0
        public void ResourceIsProcessedExclusivelyTest()
        {
            var settings  = new Mock <ISettings>();
            var service   = new Mock <IServiceFacade>();
            var connector = new Mock <IAdapterPlugin>();
            var state     = new Mock <IEventState>();

            settings.Setup(x => x.EventStateFilePath).Returns(".");
            settings.Setup(x => x.MarketFiltersDirectory).Returns(".");
            settings.Setup(x => x.FixtureCreationConcurrency).Returns(1);
            settings.Setup(x => x.FixtureCheckerFrequency).Returns(500);

            var streamListenerManager = new StreamListenerManager(settings.Object);

            streamListenerManager.StateManager = _state.Object;
            var sport = new Mock <IFeature>();

            var resource = new Mock <IResourceFacade>();

            resource.Setup(x => x.Id).Returns("ABC");
            resource.Setup(x => x.Content).Returns(new Summary {
                Sequence = 1
            });

            service.Setup(x => x.GetSports()).Returns(new List <IFeature> {
                sport.Object
            });
            service.Setup(x => x.GetResources(It.IsAny <string>())).Returns(new List <IResourceFacade> {
                resource.Object
            });
            service.Setup(x => x.IsConnected).Returns(true);



            Adapter adapter = new Adapter(settings.Object, service.Object, connector.Object, streamListenerManager);

            streamListenerManager.StreamCreated += adapter_StreamCreated;
            streamListenerManager.EventState     = state.Object;

            // after this call a stream listener for the above resource will be created
            // and the thread that created it will be blocked on the adapter_StreamCreated
            // event handler until we un-block it
            adapter.Start();

            // As the FixtureCheckerFrequency is half second, before returning
            // from the event handler, the adapter's timer tick surely has
            // been fired several times. As we haven't yet returned from
            // the event handler, for the adapter the resource is still
            // being processed. Here we want to check that this is true.

            // For checking this we check how many times the adapter
            // interrogates EventState.GetFixtureState("ABC")
            // (that call is made immediately before adding the resource
            // to the creation queue - if that detail change, we need
            // to revisit this unit test

            Thread.Sleep(5000);

            lock (streamListenerManager)
            {
                Monitor.PulseAll(streamListenerManager);
                state.Verify(x => x.GetFixtureState("ABC"), Times.AtLeastOnce());
            }

            adapter.Stop();
        }