コード例 #1
0
        public async Task SingleInsertAndFind_TestAsync()
        {
            var streamEvent = FakeInstanceUtils.GenerateRandomStreamEvent();

            await mongo.InsertEventAsync(new WebSocketStream(streamEvent, "tests"));

            var events = await mongo.FindEventsByFiltersAsync(Builders <WebSocketStream> .Filter.Eq(x => x.StreamEvent.Payload.Id, streamEvent.Payload.Id));

            Assert.Single(events);
            var singleEvent = events.First();

            Assert.IsType <WebSocketStream>(singleEvent);
            Assert.IsType <StreamEvent>(singleEvent.StreamEvent);
            Assert.IsType <Payload>(singleEvent.StreamEvent.Payload);

            Assert.IsAssignableFrom <IStreamEvent>(singleEvent.StreamEvent);
            Assert.IsAssignableFrom <IPayload>(singleEvent.StreamEvent.Payload);

            Assert.Equal(streamEvent.Event, singleEvent.StreamEvent.Event);
            Assert.Null(singleEvent.StreamEvent.JoinRef);
            Assert.Null(singleEvent.StreamEvent.Ref);
            Assert.Equal(streamEvent.Topic, singleEvent.StreamEvent.Topic);

            Assert.Equal(streamEvent.Payload.Timestamp, singleEvent.StreamEvent.Payload.Timestamp);
            Assert.Equal(streamEvent.Payload.MachineId, singleEvent.StreamEvent.Payload.MachineId);
            Assert.Equal(streamEvent.Payload.Status, singleEvent.StreamEvent.Payload.Status);
        }
コード例 #2
0
        public static async Task <(string id, string machineId, DateTime timestamp, string status)> SeedDataAsync(IMongo mongo)
        {
            string id = Guid.NewGuid().ToString();
            await mongo.InsertEventAsync(new WebSocketStream(
                                             GenerateRandomStreamEvent(id: id), "tests"
                                             ));

            string machineId = Guid.NewGuid().ToString();

            for (int i = 0; i < 10; i++)
            {
                await mongo.InsertEventAsync(new WebSocketStream(
                                                 GenerateRandomStreamEvent(machineId: machineId), "tests"
                                                 ));
            }

            DateTime timestamp = DateTime.UtcNow.AddDays(-5);

            for (int i = 0; i < 10; i++)
            {
                await mongo.InsertEventAsync(new WebSocketStream(
                                                 GenerateRandomStreamEvent(timestamp: timestamp), "tests"
                                                 ));
            }

            string status = "idle";

            for (int i = 0; i < 10; i++)
            {
                await mongo.InsertEventAsync(new WebSocketStream(
                                                 GenerateRandomStreamEvent(status: status), "tests"
                                                 ));
            }

            return(id, machineId, timestamp, status);
        }
コード例 #3
0
        public async Task GetEventById_TestAsync()
        {
            string id          = Guid.NewGuid().ToString();
            var    streamEvent = FakeInstanceUtils.GenerateRandomStreamEvent(id: id);

            await mongo.InsertEventAsync(new WebSocketStream(streamEvent, "test"));

            var singleEvent = await getData.GetEventByIdAsync(id);

            Assert.IsAssignableFrom <IWebSocketStream>(singleEvent);
            Assert.IsAssignableFrom <IStreamEvent>(singleEvent.StreamEvent);
            Assert.IsAssignableFrom <IPayload>(singleEvent.StreamEvent.Payload);

            Assert.Equal(streamEvent.Event, singleEvent.StreamEvent.Event);
            Assert.Null(singleEvent.StreamEvent.JoinRef);
            Assert.Null(singleEvent.StreamEvent.Ref);
            Assert.Equal(streamEvent.Topic, singleEvent.StreamEvent.Topic);

            Assert.Equal(streamEvent.Payload.Timestamp, singleEvent.StreamEvent.Payload.Timestamp);
            Assert.Equal(streamEvent.Payload.MachineId, singleEvent.StreamEvent.Payload.MachineId);
            Assert.Equal(streamEvent.Payload.Status, singleEvent.StreamEvent.Payload.Status);
        }
コード例 #4
0
 /// <summary>
 /// Method that encapsulate the business logic to store the event
 /// </summary>
 /// <param name="streamEvent">The stream event that need to be stored</param>
 /// <param name="source">A string description of the event source</param>
 /// <returns></returns>
 public async Task StoreEventAsync(IStreamEvent streamEvent, string source)
 {
     await mongo.InsertEventAsync(new WebSocketStream(streamEvent, source));
 }