@Test public void watchRemovedWhenClientCloses() throws Exception { CancellableContext withCancellation = Context.current().withCancellation(); Context prevCtx = withCancellation.attach(); RespObserver respObs1 = new RespObserver(); try { assertThat(service.numWatchersForTest(SERVICE1)).isEqualTo(0); stub.watch(HealthCheckRequest.newBuilder().setService(SERVICE1).build(), respObs1); } finally { withCancellation.detach(prevCtx); } RespObserver respObs1b = new RespObserver(); stub.watch(HealthCheckRequest.newBuilder().setService(SERVICE1).build(), respObs1b); RespObserver respObs2 = new RespObserver(); stub.watch(HealthCheckRequest.newBuilder().setService(SERVICE2).build(), respObs2); assertThat(respObs1.responses.poll()).isEqualTo( HealthCheckResponse.newBuilder().setStatus(ServingStatus.SERVICE_UNKNOWN).build()); assertThat(respObs1b.responses.poll()).isEqualTo( HealthCheckResponse.newBuilder().setStatus(ServingStatus.SERVICE_UNKNOWN).build()); assertThat(respObs2.responses.poll()).isEqualTo( HealthCheckResponse.newBuilder().setStatus(ServingStatus.SERVICE_UNKNOWN).build()); assertThat(service.numWatchersForTest(SERVICE1)).isEqualTo(2); assertThat(service.numWatchersForTest(SERVICE2)).isEqualTo(1); assertThat(respObs1.responses).isEmpty(); assertThat(respObs1b.responses).isEmpty(); assertThat(respObs2.responses).isEmpty(); withCancellation.close(); assertThat(respObs1.responses.poll()).isInstanceOf(Throwable.class); assertThat(service.numWatchersForTest(SERVICE1)).isEqualTo(1); assertThat(service.numWatchersForTest(SERVICE2)).isEqualTo(1); assertThat(respObs1.responses).isEmpty(); assertThat(respObs1b.responses).isEmpty(); assertThat(respObs2.responses).isEmpty(); }
public void setStatus(String service, ServingStatus status) { checkNotNull(status, "status"); healthService.setStatus(service, status); }
HealthStatusManager { public void setStatus(String service, ServingStatus status) { checkNotNull(status, "status"); healthService.setStatus(service, status); } }
HealthStatusManager { public void setStatus(String service, ServingStatus status) { checkNotNull(status, "status"); healthService.setStatus(service, status); } HealthStatusManager(); }
HealthStatusManager { public void setStatus(String service, ServingStatus status) { checkNotNull(status, "status"); healthService.setStatus(service, status); } HealthStatusManager(); BindableService getHealthService(); void setStatus(String service, ServingStatus status); void clearStatus(String service); }
HealthStatusManager { public void setStatus(String service, ServingStatus status) { checkNotNull(status, "status"); healthService.setStatus(service, status); } HealthStatusManager(); BindableService getHealthService(); void setStatus(String service, ServingStatus status); void clearStatus(String service); static final String SERVICE_NAME_ALL_SERVICES; }