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();
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 5
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();
        }