public async Task TestPublishSupervisorEventAndReceiveAsync() { var bus = _factory.Resolve <IEventBus>(); var client = _factory.Resolve <IRegistryServiceEvents>(); var expected = new SupervisorEventModel { Supervisor = new SupervisorModel { SiteId = "TestSigfsdfg ff", Connected = true, LogLevel = IIoT.OpcUa.Registry.Models.TraceLogLevel.Verbose } }; var result = new TaskCompletionSource <SupervisorEventApiModel>(); await using (await client.SubscribeSupervisorEventsAsync(ev => { result.SetResult(ev); return(Task.CompletedTask); })) { await bus.PublishAsync(expected); await Task.WhenAny(result.Task, Task.Delay(1000)); Assert.True(result.Task.IsCompleted); var received = result.Task.Result; Assert.NotNull(received?.Supervisor); Assert.Equal(true, received?.Supervisor?.Connected); Assert.Equal(expected.Supervisor.SiteId, received.Supervisor.SiteId); Assert.Equal(expected.Supervisor.LogLevel, (IIoT.OpcUa.Registry.Models.TraceLogLevel)received.Supervisor.LogLevel); } }
public async Task TestPublishSupervisorEventAndReceiveMultipleAsync(int total) { var bus = _factory.Resolve <IEventBus>(); var client = _factory.Resolve <IRegistryServiceEvents>(); var expected = new SupervisorEventModel { Supervisor = new SupervisorModel { SiteId = "azagfff", LogLevel = IIoT.OpcUa.Registry.Models.TraceLogLevel.Verbose } }; var result = new TaskCompletionSource <bool>(); var counter = 0; await using (await client.SubscribeSupervisorEventsAsync(ev => { counter++; if (counter == total) { result.SetResult(true); } return(Task.CompletedTask); })) { for (var i = 0; i < total; i++) { await bus.PublishAsync(expected); } await Task.WhenAny(result.Task, Task.Delay(1000)); Assert.True(result.Task.IsCompleted); } }
/// <inheritdoc/> public Task HandleAsync(SupervisorEventModel eventData) { var arguments = new object[] { eventData.ToApiModel() }; return(_callback.BroadcastAsync( EventTargets.SupervisorEventTarget, arguments)); }
/// <summary> /// Convert to api model /// </summary> /// <param name="model"></param> /// <returns></returns> public static SupervisorEventApiModel ToApiModel( this SupervisorEventModel model) { return(new SupervisorEventApiModel { EventType = (SupervisorEventType)model.EventType, Id = model.Id, Supervisor = model.Supervisor.ToApiModel() }); }