Esempio n. 1
0
 /// <summary>
 /// Sets the health status for given service.
 /// </summary>
 /// <param name="service">The service. Cannot be null.</param>
 /// <param name="status">the health status</param>
 public void SetStatus(string service, HealthCheckResponse.Types.ServingStatus status)
 {
     lock (myLock)
     {
         statusMap[service] = status;
     }
 }
Esempio n. 2
0
 /// <summary>
 /// Sets the health status for given host and service.
 /// </summary>
 /// <param name="host">The host. Cannot be null.</param>
 /// <param name="service">The service. Cannot be null.</param>
 /// <param name="status">the health status</param>
 public void SetStatus(string host, string service, HealthCheckResponse.Types.ServingStatus status)
 {
     lock (myLock)
     {
         statusMap[CreateKey(host, service)] = status;
     }
 }
        /// <summary>
        /// Sets the health status for given service.
        /// </summary>
        /// <param name="service">The service. Cannot be null.</param>
        /// <param name="status">the health status</param>
        public void SetStatus(string service, HealthCheckResponse.Types.ServingStatus status)
        {
            HealthCheckResponse.Types.ServingStatus previousStatus;
            lock (statusLock)
            {
                previousStatus     = GetServiceStatus(service);
                statusMap[service] = status;
            }

            if (status != previousStatus)
            {
                NotifyStatus(service, status);
            }
        }
Esempio n. 4
0
        private void NotifyStatus(string service, HealthCheckResponse.Types.ServingStatus status)
        {
            lock (watchersLock)
            {
                if (watchers.TryGetValue(service, out List <ChannelWriter <HealthCheckResponse> > channelWriters))
                {
                    HealthCheckResponse response = new HealthCheckResponse {
                        Status = status
                    };

                    foreach (ChannelWriter <HealthCheckResponse> writer in channelWriters)
                    {
                        if (!writer.TryWrite(response))
                        {
                            throw new InvalidOperationException("Unable to queue health check notification.");
                        }
                    }
                }
            }
        }
        public void IsScheduleServiceOnline_ReturnScheduleServiceOnline(
            HealthCheckResponse.Types.ServingStatus status,
            bool expected)
        {
            HealthCheckResponse healthResponse = new HealthCheckResponse()
            {
                Status = status
            };


            var mockScheduleClient = new Mock <ScheduleService.ScheduleServiceClient>();
            var mockHealthClient   = new Mock <Health.HealthClient>();

            mockHealthClient.Setup(hc => hc.Check(
                                       It.IsAny <HealthCheckRequest>(),
                                       It.IsAny <CallOptions>()
                                       )).Returns(healthResponse);
            var scheduleClientAction =
                new ScheduleServiceClientAction(mockIlog.Object, mockScheduleClient.Object, mockHealthClient.Object);

            Assert.Equal(scheduleClientAction.IsScheduleServiceOnline, expected);
        }
Esempio n. 6
0
 public void SetStatus(string service, HealthCheckResponse.Types.ServingStatus status)
 {
     pairs.Add(service, status);
 }