public async Task InvokeAsync() { var options = new BusOptions { EnvelopName = "test_lpc" }; var api = new MemoryStorageApi(options); using var mocker = AutoMock.GetLoose(builder => { builder.RegisterInstance(api) .AsImplementedInterfaces(); }); var factory = mocker.Create <Bus.Factory>(); var bus = factory.Invoke(options); mocker.Mock <IBusFactory>() .Setup(x => x.Create(It.IsAny <BusOptions>())) .Returns(bus); // act var server = mocker.Create <LPCServer>(); var instance = new TestServerInstance(); server.AddServerInstance(instance); await server.StartAsync(); var request = new BusTestPage.TestRequest { Name = "newbe36524" }; var response = await bus.SendRequest <BusTestPage.TestRequest, BusTestPage.TestResponse>(request); response.Greetings.Should().Be($"hi, {request.Name}"); }
public async Task ConcurrentAsync() { var options = new BusOptions { EnvelopName = "afEvent" }; var api = new MemoryStorageApi(options); using var mocker = AutoMock.GetLoose(builder => { builder.RegisterInstance(api) .AsImplementedInterfaces(); }); var factory = mocker.Create <Bus.Factory>(); var channel = factory.Invoke(options); await channel.EnsureStartAsync(); channel.RegisterHandler <TestRequest>((scope, payload, message) => { channel.SendResponse(new TestResponse { Greetings = GetGreetings(payload.Name) }, message); }); const int maxCount = 100; // act var tasks = Enumerable.Range(0, maxCount) .Select(x => channel.SendRequest <TestRequest, TestResponse>(new TestRequest { Name = x.ToString() })); var results = await Task.WhenAll(tasks); var expectation = Enumerable.Range(0, maxCount) .Select(x => GetGreetings(x.ToString())).OrderBy(x => x); results.Select(x => x.Greetings).OrderBy(x => x) .Should().BeEquivalentTo(expectation); channel.MessageHandlerCollection.HandlerItems.Count.Should().Be(1); string GetGreetings(string n) { return($"hi, {n}"); } }
public async Task NormalAsync() { var options = new BusOptions { EnvelopName = "afEvent" }; var api = new MemoryStorageApi(options); using var mocker = AutoMock.GetLoose(builder => { builder.RegisterInstance(api) .AsImplementedInterfaces(); }); var factory = mocker.Create <Bus.Factory>(); var channel = factory.Invoke(options); await channel.EnsureStartAsync(); channel.RegisterHandler <TestRequest>((scope, payload, message) => { channel.SendResponse(new TestResponse { Greetings = GetGreetings(payload.Name) }, message); }); var name = "newbe36524"; var testResponse = await channel.SendRequest <TestRequest, TestResponse>(new TestRequest { Name = name }); testResponse.Should().NotBeNull(); testResponse.Greetings.Should().Be(GetGreetings(name)); channel.MessageHandlerCollection.HandlerItems.Count.Should().Be(1); string GetGreetings(string n) { return($"hi, {n}"); } }
public async Task RunAsync() { var options = new BusOptions { EnvelopName = "afEvent" }; var memoryStorageApi = new MemoryStorageApi(options); JsonElement?data = null; await memoryStorageApi.RegisterCallBack((changes, area) => { data = changes; }); await memoryStorageApi.SetLocal(new Dictionary <string, object> { { options.EnvelopName, new TestData { Name = "nice" } } }); data.Should().NotBeNull(); JsonSerializer.Serialize(data).Should().Be("{\"afEvent\":{\"newValue\":{\"Name\":\"nice\"}}}"); }