public async Task WhenNodeRegistered_GivenUnregister_ShouldPass() { await _fixture.NameServerClient.ClearAll(_workContext); var request = new RouteRegistrationRequest { NodeId = "test/Node1" }; RouteRegistrationResponse response = await _fixture.NameServerClient.Register(_workContext, request); var lookupRequest = new RouteLookupRequest { SearchNodeId = request.NodeId }; RouteLookupResponse?lookupResponse = await _fixture.NameServerClient.Lookup(_workContext, lookupRequest); lookupResponse.Should().NotBeNull(); lookupResponse !.NodeId.Should().Be(request.NodeId); await _fixture.NameServerClient.Unregister(_workContext, request); lookupResponse = await _fixture.NameServerClient.Lookup(_workContext, lookupRequest); lookupResponse.Should().BeNull(); }
public async Task <IActionResult> Register([FromBody] RouteRegistrationRequest routeRegistrationRequest) { if (routeRegistrationRequest == null) { return(StatusCode(StatusCodes.Status400BadRequest)); } RouteRegistrationResponse response = await _routeManager.Register(_workContext, routeRegistrationRequest); return(StatusCode(StatusCodes.Status201Created, response)); }
public async Task WhenNodeRegistrating_GivenRestClient_ShouldRegister() { await _fixture.NameServerClient.ClearAll(_workContext); var request = new RouteRegistrationRequest { NodeId = "test/Node1" }; RouteRegistrationResponse response = await _fixture.NameServerClient.Register(_workContext, request); response.InputQueueUri.Should().Be("queue://default/test/Node1"); response.ForwardRoutes.Should().BeNull(); }
public async Task GivenNode_WhenRegisterAndUnregistered_ShouldPass() { IContainer rootContainer = CreateContainer(); using (ILifetimeScope container = rootContainer.BeginLifetimeScope()) { _workContext = new WorkContextBuilder() .Set(new ServiceProviderProxy(x => container.Resolve(x), x => container.ResolveOptional(x))) .Build(); RouteManager manager = container.Resolve <RouteManager>(); const string nodeId = "Need/Customer"; RouteRegistrationRequest request = new RouteRegistrationRequest { NodeId = nodeId }; RouteRegistrationResponse response = await manager.Register(_workContext, request); response.Should().NotBeNull(); Uri uri = new ResourcePathBuilder() .SetScheme(ResourceScheme.Queue) .SetServiceBusName("Default") .SetEntityName(nodeId) .Build(); response.InputQueueUri.Should().NotBeNullOrEmpty(); response.InputQueueUri.Should().Be(uri.ToString()); RouteLookupRequest routeLookupRequest = new RouteLookupRequest { SearchNodeId = nodeId, }; IReadOnlyList <RouteLookupResponse>?routeLookupResponses = await manager.Search(_workContext, routeLookupRequest); routeLookupResponses.Should().NotBeNull(); routeLookupResponses.Count.Should().Be(1); routeLookupResponses[0].NodeId.Should().Be(nodeId); routeLookupResponses[0].InputUri.Should().Be(uri.ToString()); await manager.Unregister(_workContext, request); routeLookupResponses = await manager.Search(_workContext, routeLookupRequest); routeLookupResponses.Should().NotBeNull(); routeLookupResponses.Count.Should().Be(0); } }
/// <summary> /// Register a receiver to receive messages /// </summary> /// <param name="context">context</param> /// <param name="receiver">function to call</param> /// <returns>task</returns> public async Task RegisterReceiver(IWorkContext context, Func <Message, Task> receiver) { _messageProcessor.Verify().Assert(x => x == null, "Message process has already been started"); var request = new RouteRegistrationRequest { NodeId = _nodeId }; RouteRegistrationResponse response = await _nameServerClient.Register(context, request); response.Verify().IsNotNull($"Registration failed with name server"); response.InputQueueUri !.Verify().IsNotEmpty("Name server's response did not include input queue uri"); string connectionString = _getConnectionString(response.InputQueueUri !); var builder = new ResourcePathBuilder(response.InputQueueUri !); _messageProcessor = new MessageQueueReceiveProcessor(connectionString, builder.EntityName); await _messageProcessor.Register(context, receiver); }
public async Task WhenNodeRegistrating_GivenTestNode_ShouldRegister() { await _fixture.NameServerClient.ClearAll(_workContext); var request = new RouteRegistrationRequest { NodeId = "test/Node1" }; var content = new StringContent(JsonConvert.SerializeObject(request), Encoding.UTF8, "application/json"); var httpResponse = await _fixture.Client .PostAsync("api/Registgration", content); httpResponse.EnsureSuccessStatusCode(); var responseString = await httpResponse.Content.ReadAsStringAsync(); RouteRegistrationResponse response = JsonConvert.DeserializeObject <RouteRegistrationResponse>(responseString); response.InputQueueUri.Should().Be("queue://default/test/Node1"); response.ForwardRoutes.Should().BeNull(); }