This is an automated email from the ASF dual-hosted git repository. jiajunwang pushed a commit to branch helix-0.9.x in repository https://gitbox.apache.org/repos/asf/helix.git
commit 624adaca3177fa80755a4dfea64f8fc537da2bbf Author: Meng Zhang <[email protected]> AuthorDate: Thu Aug 13 16:10:54 2020 -0700 Change TestInstanceAutoJoin to adapt to cloud environment (#1265) Change TestInstanceAutoJoin to adapt to cloud environment --- .../AzureCloudInstanceInformationProcessor.java | 6 +++--- .../paticipant/TestInstanceAutoJoin.java | 25 ++++++++++++++-------- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/helix-core/src/main/java/org/apache/helix/cloud/azure/AzureCloudInstanceInformationProcessor.java b/helix-core/src/main/java/org/apache/helix/cloud/azure/AzureCloudInstanceInformationProcessor.java index f0f75f7..c943664 100644 --- a/helix-core/src/main/java/org/apache/helix/cloud/azure/AzureCloudInstanceInformationProcessor.java +++ b/helix-core/src/main/java/org/apache/helix/cloud/azure/AzureCloudInstanceInformationProcessor.java @@ -109,7 +109,7 @@ public class AzureCloudInstanceInformationProcessor CloseableHttpResponse response = _closeableHttpClient.execute(httpGet); if (response == null || response.getStatusLine().getStatusCode() != 200) { String errorMsg = String.format( - "Failed to get an HTTP Response for the request. Response: {}. Status code: {}", + "Failed to get an HTTP Response for the request. Response: %s. Status code: %s", (response == null ? "NULL" : response.getStatusLine().getReasonPhrase()), response.getStatusLine().getStatusCode()); throw new HelixException(errorMsg); @@ -119,7 +119,7 @@ public class AzureCloudInstanceInformationProcessor return responseString; } catch (IOException e) { throw new HelixException( - String.format("Failed to get Azure cloud instance information from url {}", url), e); + String.format("Failed to get Azure cloud instance information from url %s", url), e); } } @@ -153,7 +153,7 @@ public class AzureCloudInstanceInformationProcessor } } catch (IOException e) { throw new HelixException( - String.format("Error in parsing cloud instance information: {}", response, e)); + String.format("Error in parsing cloud instance information: %s", response, e)); } return azureCloudInstanceInformation; } diff --git a/helix-core/src/test/java/org/apache/helix/integration/paticipant/TestInstanceAutoJoin.java b/helix-core/src/test/java/org/apache/helix/integration/paticipant/TestInstanceAutoJoin.java index 5d5ec46..7f78559 100644 --- a/helix-core/src/test/java/org/apache/helix/integration/paticipant/TestInstanceAutoJoin.java +++ b/helix-core/src/test/java/org/apache/helix/integration/paticipant/TestInstanceAutoJoin.java @@ -4,6 +4,7 @@ import org.apache.helix.HelixDataAccessor; import org.apache.helix.HelixException; import org.apache.helix.HelixManager; import org.apache.helix.PropertyKey; +import org.apache.helix.TestHelper; import org.apache.helix.cloud.constants.CloudProvider; import org.apache.helix.integration.common.ZkStandAloneCMTestBase; import org.apache.helix.integration.manager.MockParticipantManager; @@ -15,8 +16,6 @@ import org.apache.helix.model.builder.ConfigScopeBuilder; import org.testng.Assert; import org.testng.annotations.Test; -import static org.testng.Assert.*; - /* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file @@ -83,12 +82,11 @@ public class TestInstanceAutoJoin extends ZkStandAloneCMTestBase { } @Test(dependsOnMethods = "testInstanceAutoJoin") - public void testAutoRegistrationShouldFailWhenWaitingResponse() throws Exception { + public void testAutoRegistration() throws Exception { // Create CloudConfig object and add to config CloudConfig.Builder cloudConfigBuilder = new CloudConfig.Builder(); cloudConfigBuilder.setCloudEnabled(true); cloudConfigBuilder.setCloudProvider(CloudProvider.AZURE); - cloudConfigBuilder.setCloudID("TestID"); CloudConfig cloudConfig = cloudConfigBuilder.build(); HelixManager manager = _participants[0]; @@ -110,14 +108,23 @@ public class TestInstanceAutoJoin extends ZkStandAloneCMTestBase { new MockParticipantManager(ZK_ADDR, CLUSTER_NAME, instance3); autoParticipant.syncStart(); - Assert.assertTrue(null == manager.getHelixDataAccessor() - .getProperty(accessor.keyBuilder().liveInstance(instance3))); + // if the test is run in cloud environment, auto registration will succeed and live instance + // will be added, otherwise, auto registration will fail and instance config will not be + // populated. An exception will be thrown. try { manager.getConfigAccessor().getInstanceConfig(CLUSTER_NAME, instance3); - fail( - "Exception should be thrown because the instance cannot be added to the cluster due to the disconnection with Azure endpoint"); + Assert.assertTrue(TestHelper.verify(() -> { + if (null == manager.getHelixDataAccessor() + .getProperty(accessor.keyBuilder().liveInstance(instance3))) { + return false; + } + return true; + }, 2000)); } catch (HelixException e) { - + Assert.assertTrue(null == manager.getHelixDataAccessor() + .getProperty(accessor.keyBuilder().liveInstance(instance3))); } + + autoParticipant.syncStop(); } }
