public async Task IndexHealthShouldPartiallySucceededWhenClusterStatusYellow()
        {
            var widget = new IndexHealthWidget {
                NodeUris = new List <string>()
                {
                    "http://127.0.0.1:9200"
                }, IndexName = indexName
            };

            var indexHealthResponseMock       = new Mock <IndexHealthResponse>();
            var elasticsearchHelperMock       = new Mock <ElasticsearchHelper>();
            var elasticsearchSimpleClientMock = new Mock <ElasticsearchSimpleClient>(MockBehavior.Strict, new object[] { widget });

            indexHealthResponseMock.Setup(response => response.IsValid).Returns(true);
            indexHealthResponseMock.Setup(response => response.Status).Returns(Health.Yellow);

            elasticsearchHelperMock.Setup(helper => helper.GetElasticClient(It.IsAny <IElasticsearchWidget>()))
            .Returns(elasticsearchSimpleClientMock.Object);

            elasticsearchSimpleClientMock.Setup(client => client.IndexHealthAsync(indexName, It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult(indexHealthResponseMock.Object));

            var request = HealthCheckRequest.Create(widget);

            var handler = new IndexHealthCheck(elasticsearchHelperMock.Object);

            await handler.Handle(request, CancellationToken.None).ConfigureAwait(false);

            Assert.AreEqual(State.PartiallySucceeded, request.DataContext.State);

            elasticsearchHelperMock.Verify(client => client.GetElasticClient(It.IsAny <IElasticsearchWidget>()), Times.Once());
            elasticsearchSimpleClientMock.Verify(client => client.IndexHealthAsync(indexName, It.IsAny <CancellationToken>()), Times.Once());
        }
예제 #2
0
 public IndexLoaderBackgroundService(IConfiguration config,
                                     ILogger <IndexLoaderBackgroundService> logger,
                                     IIndexHolder indexHolder,
                                     IndexHealthCheck indexHealthCheck)
 {
     this.config           = config;
     this.logger           = logger;
     this.indexHolder      = indexHolder;
     this.indexHealthCheck = indexHealthCheck;
 }