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 WhenNodeNotExist_GivenLookup_ShouldFail() { await _fixture.NameServerClient.ClearAll(_workContext); var request = new RouteLookupRequest { SearchNodeId = "test/Node1" }; RouteLookupResponse?response = await _fixture.NameServerClient.Lookup(_workContext, request); response.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); } }
public async Task <IActionResult> Lookup([FromBody] RouteLookupRequest routeLookupRequest) { if (routeLookupRequest == null || routeLookupRequest.SearchNodeId.IsEmpty()) { return(StatusCode(StatusCodes.Status400BadRequest)); } IReadOnlyList <RouteLookupResponse> response = await _routeManager.Search(_workContext, routeLookupRequest); if (response == null || response.Count != 1) { return(StatusCode(StatusCodes.Status404NotFound)); } return(Ok(response[0])); }
public async Task <RouteLookupResponse?> Lookup(IWorkContext context, RouteLookupRequest request) { RestResponse <RouteLookupResponse> response = await new RestClient(_httpClient) .AddPath("api/Registgration") .SetContent(request) .SetValidHttpStatusCodes(HttpStatusCode.NotFound) .SetEnsureSuccessStatusCode() .GetAsync(context) .GetResponseAsync <RouteLookupResponse>(context); if (response.HttpResponseMessage.StatusCode == HttpStatusCode.NotFound) { return(null); } return(response.Content); }
/// <summary> /// Search for node registration /// </summary> /// <param name="context"></param> /// <param name="request"></param> /// <returns></returns> public async Task <IReadOnlyList <RouteLookupResponse> > Search(IWorkContext context, RouteLookupRequest request) { request.Verify(nameof(request)).IsNotNull(); INodeRegistrationManagementActor managementActor = await _actorManager.CreateProxy <INodeRegistrationManagementActor>("default"); IReadOnlyList <NodeRegistrationModel> registrations = await managementActor.List(context, request.SearchNodeId !); return(registrations .Select(x => new RouteLookupResponse { NodeId = x.NodeId, InputUri = x.InputUri, }) .ToList()); }