private static Builder handleRegister(ReplicationInstance instanceInfo, ApplicationResource applicationResource) { applicationResource.addInstance(instanceInfo.getInstanceInfo(), REPLICATION); return new Builder().setStatusCode(Status.OK.getStatusCode()); }
@Test public void testGoodRegistration() throws Exception { InstanceInfo noIdInfo = InstanceInfoGenerator.takeOne(); Response response = applicationResource.addInstance(noIdInfo, false+""); assertThat(response.getStatus(), is(204)); }
InstanceInfo instanceInfo = spy(InstanceInfoGenerator.takeOne()); when(instanceInfo.getId()).thenReturn(null); Response response = applicationResource.addInstance(instanceInfo, false+""); assertThat(response.getStatus(), is(400)); response = applicationResource.addInstance(instanceInfo, false+""); assertThat(response.getStatus(), is(400)); response = applicationResource.addInstance(instanceInfo, false+""); assertThat(response.getStatus(), is(400)); response = applicationResource.addInstance(instanceInfo, false+""); assertThat(response.getStatus(), is(400)); response = applicationResource.addInstance(instanceInfo, false+""); assertThat(response.getStatus(), is(400)); response = applicationResource.addInstance(instanceInfo, false+""); assertThat(response.getStatus(), is(400)); response = applicationResource.addInstance(instanceInfo, false+""); assertThat(response.getStatus(), is(400));
@Test public void testRegisterBatching() throws Exception { ReplicationList replicationList = new ReplicationList(newReplicationInstanceOf(Action.Register, instanceInfo)); Response response = peerReplicationResource.batchReplication(replicationList); assertStatusOkReply(response); verify(applicationResource, times(1)).addInstance(instanceInfo, "true"); }
/** * this test tests a scenario where multiple registration and update requests for a single client is sent to * different eureka servers before replication can occur between them */ @Test public void testReplicationWithRegistrationAndUpdateOnDifferentServers() throws Exception { // now simulate server1 (delayed) replication to server2. // without batching this is done by server1 making a REST call to the register endpoint of server2 with // replication=true server2.applicationResource.addInstance(instance1, "true"); // verify that server2's "newer" info is (or is not) overridden // server2 should still see instance2 even though server1 tried to replicate across server1 InstanceInfo newServer2Sees = server2.registry.getInstanceByAppAndId(appName, id); assertThat(newServer2Sees.getStatus(), equalTo(instance2.getStatus())); // now let server2 replicate to server1 server1.applicationResource.addInstance(newServer2Sees, "true"); // verify that server1 now have the updated info from server2 InstanceInfo newServer1Sees = server1.registry.getInstanceByAppAndId(appName, id); assertThat(newServer1Sees.getStatus(), equalTo(instance2.getStatus())); }
@Test public void testBadRegistrationOfDataCenterInfo() throws Exception { try { // test 400 when configured to return client error ConfigurationManager.getConfigInstance().setProperty("eureka.experimental.registration.validation.dataCenterInfoId", "true"); InstanceInfo instanceInfo = spy(InstanceInfoGenerator.takeOne()); when(instanceInfo.getDataCenterInfo()).thenReturn(new TestDataCenterInfo()); Response response = applicationResource.addInstance(instanceInfo, false + ""); assertThat(response.getStatus(), is(400)); // test backfill of data for AmazonInfo ConfigurationManager.getConfigInstance().setProperty("eureka.experimental.registration.validation.dataCenterInfoId", "false"); instanceInfo = spy(InstanceInfoGenerator.takeOne()); assertThat(instanceInfo.getDataCenterInfo(), instanceOf(AmazonInfo.class)); ((AmazonInfo) instanceInfo.getDataCenterInfo()).getMetadata().remove(AmazonInfo.MetaDataKey.instanceId.getName()); // clear the Id response = applicationResource.addInstance(instanceInfo, false + ""); assertThat(response.getStatus(), is(204)); } finally { ConfigurationManager.getConfigInstance().clearProperty("eureka.experimental.registration.validation.dataCenterInfoId"); } }
server1.applicationResource.addInstance(instance1, "false"/* isReplication */); // STARTING server1Sees = server1.registry.getInstanceByAppAndId(appName, id); assertThat(server1Sees, equalTo(instance1)); server2.applicationResource.addInstance(instance2, "false"/* isReplication */); // UP server2Sees = server2.registry.getInstanceByAppAndId(appName, id); assertThat(server2Sees, equalTo(instance2));
private static Builder handleRegister(ReplicationInstance instanceInfo, ApplicationResource applicationResource) { applicationResource.addInstance(instanceInfo.getInstanceInfo(), REPLICATION); return new Builder().setStatusCode(Status.OK.getStatusCode()); }