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(); }
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(); }
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()); }
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()); }
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); }
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(); }
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)); }
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); }
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(); }