/** * Gets information about a particular instance of an application. * * @param id * the unique identifier of the instance. * @return information about a particular instance. */ @Path("{id}") public InstanceResource getInstanceInfo(@PathParam("id") String id) { return new InstanceResource(this, id, serverConfig, registry); }
private static Builder handleCancel(InstanceResource resource) { Response response = resource.cancelLease(REPLICATION); return new Builder().setStatusCode(response.getStatus()); }
private static Builder handleDeleteStatusOverride(ReplicationInstance instanceInfo, InstanceResource resource) { Response response = resource.deleteStatusUpdate(REPLICATION, instanceInfo.getStatus(), instanceInfo.getLastDirtyTimestamp().toString()); return new Builder().setStatusCode(response.getStatus()); }
private static Builder handleHeartbeat(EurekaServerConfig config, InstanceResource resource, String lastDirtyTimestamp, String overriddenStatus, String instanceStatus) { Response response = resource.renewLease(REPLICATION, overriddenStatus, instanceStatus, lastDirtyTimestamp); int responseStatus = response.getStatus(); Builder responseBuilder = new Builder().setStatusCode(responseStatus); if ("false".equals(config.getExperimental("bugfix.934"))) { if (responseStatus == Status.OK.getStatusCode() && response.getEntity() != null) { responseBuilder.setResponseEntity((InstanceInfo) response.getEntity()); } } else { if ((responseStatus == Status.OK.getStatusCode() || responseStatus == Status.CONFLICT.getStatusCode()) && response.getEntity() != null) { responseBuilder.setResponseEntity((InstanceInfo) response.getEntity()); } } return responseBuilder; }
private static Builder handleStatusUpdate(ReplicationInstance instanceInfo, InstanceResource resource) { Response response = resource.statusUpdate(instanceInfo.getStatus(), REPLICATION, toString(instanceInfo.getLastDirtyTimestamp())); return new Builder().setStatusCode(response.getStatus()); }
response = this.validateDirtyTimestamp(Long.valueOf(lastDirtyTimestamp), isFromReplicaNode);
@Test public void testConflictResponseReturnsTheInstanceInfoInTheResponseEntity() throws Exception { when(instanceResource.renewLease(anyString(), anyString(), anyString(), anyString())).thenReturn(Response.status(Status.CONFLICT).entity(instanceInfo).build()); ReplicationInstance replicationInstance = newReplicationInstanceOf(Action.Heartbeat, instanceInfo); Response response = peerReplicationResource.batchReplication(new ReplicationList(replicationInstance)); assertStatusIsConflict(response); assertResponseEntityExist(response); }
@Test public void testStatusOverrideReturnsNotFoundErrorCodeIfInstanceNotRegistered() throws Exception { Response response = instanceResource.statusUpdate(InstanceStatus.OUT_OF_SERVICE.name(), "false", "0"); assertThat(response.getStatus(), is(equalTo(Status.NOT_FOUND.getStatusCode()))); }
response = this.validateDirtyTimestamp(Long.valueOf(lastDirtyTimestamp), isFromReplicaNode);
@Test public void testStatusOverrideDeleteReturnsNotFoundErrorCodeIfInstanceNotRegistered() throws Exception { Response response = instanceResource.deleteStatusUpdate(InstanceStatus.OUT_OF_SERVICE.name(), "false", "0"); assertThat(response.getStatus(), is(equalTo(Status.NOT_FOUND.getStatusCode()))); }
/* Visible for testing */ InstanceResource createInstanceResource(ReplicationInstance instanceInfo, ApplicationResource applicationResource) { return new InstanceResource(applicationResource, instanceInfo.getId(), serverConfig, registry); }
@Test public void testHeartbeat() throws Exception { when(instanceResource.renewLease(anyString(), anyString(), anyString(), anyString())).thenReturn(Response.ok().build()); ReplicationInstance replicationInstance = newReplicationInstanceOf(Action.Heartbeat, instanceInfo); Response response = peerReplicationResource.batchReplication(new ReplicationList(replicationInstance)); assertStatusOkReply(response); verify(instanceResource, times(1)).renewLease( "true", replicationInstance.getOverriddenStatus(), instanceInfo.getStatus().name(), Long.toString(replicationInstance.getLastDirtyTimestamp()) ); }
@Test public void testStatusUpdate() throws Exception { when(instanceResource.statusUpdate(anyString(), anyString(), anyString())).thenReturn(Response.ok().build()); ReplicationInstance replicationInstance = newReplicationInstanceOf(Action.StatusUpdate, instanceInfo); Response response = peerReplicationResource.batchReplication(new ReplicationList(replicationInstance)); assertStatusOkReply(response); verify(instanceResource, times(1)).statusUpdate( replicationInstance.getStatus(), "true", Long.toString(replicationInstance.getLastDirtyTimestamp()) ); }
@Test public void testCancelBatching() throws Exception { when(instanceResource.cancelLease(anyString())).thenReturn(Response.ok().build()); ReplicationList replicationList = new ReplicationList(newReplicationInstanceOf(Action.Cancel, instanceInfo)); Response response = peerReplicationResource.batchReplication(replicationList); assertStatusOkReply(response); verify(instanceResource, times(1)).cancelLease("true"); }
@Test public void testDeleteStatusOverride() throws Exception { when(instanceResource.deleteStatusUpdate(anyString(), anyString(), anyString())).thenReturn(Response.ok().build()); ReplicationInstance replicationInstance = newReplicationInstanceOf(Action.DeleteStatusOverride, instanceInfo); Response response = peerReplicationResource.batchReplication(new ReplicationList(replicationInstance)); assertStatusOkReply(response); verify(instanceResource, times(1)).deleteStatusUpdate( "true", replicationInstance.getStatus(), Long.toString(replicationInstance.getLastDirtyTimestamp()) ); }
@Override @Before public void setUp() throws Exception { super.setUp(); applicationResource = new ApplicationResource(testInstanceInfo.getAppName(), serverContext.getServerConfig(), serverContext.getRegistry()); instanceResource = new InstanceResource(applicationResource, testInstanceInfo.getId(), serverContext.getServerConfig(), serverContext.getRegistry()); }
private static Builder handleHeartbeat(EurekaServerConfig config, InstanceResource resource, String lastDirtyTimestamp, String overriddenStatus, String instanceStatus) { Response response = resource.renewLease(REPLICATION, overriddenStatus, instanceStatus, lastDirtyTimestamp); int responseStatus = response.getStatus(); Builder responseBuilder = new Builder().setStatusCode(responseStatus); if ("false".equals(config.getExperimental("bugfix.934"))) { if (responseStatus == Status.OK.getStatusCode() && response.getEntity() != null) { responseBuilder.setResponseEntity((InstanceInfo) response.getEntity()); } } else { if ((responseStatus == Status.OK.getStatusCode() || responseStatus == Status.CONFLICT.getStatusCode()) && response.getEntity() != null) { responseBuilder.setResponseEntity((InstanceInfo) response.getEntity()); } } return responseBuilder; }
private static Builder handleStatusUpdate(ReplicationInstance instanceInfo, InstanceResource resource) { Response response = resource.statusUpdate(instanceInfo.getStatus(), REPLICATION, toString(instanceInfo.getLastDirtyTimestamp())); return new Builder().setStatusCode(response.getStatus()); }
private static Builder handleCancel(InstanceResource resource) { Response response = resource.cancelLease(REPLICATION); return new Builder().setStatusCode(response.getStatus()); }
@Test public void testStatusOverrideDeleteIsAppliedToRegistry() throws Exception { // Override instance status registry.register(testInstanceInfo, false); registry.statusUpdate(testInstanceInfo.getAppName(), testInstanceInfo.getId(), InstanceStatus.OUT_OF_SERVICE, "0", false); assertThat(testInstanceInfo.getStatus(), is(equalTo(InstanceStatus.OUT_OF_SERVICE))); // Remove the override Response response = instanceResource.deleteStatusUpdate("false", null, "0"); assertThat(response.getStatus(), is(equalTo(200))); assertThat(testInstanceInfo.getStatus(), is(equalTo(InstanceStatus.UNKNOWN))); }