From 52069fffc8a8c4578dfb4ab788bdfb2baa2a00cd Mon Sep 17 00:00:00 2001 From: Prabhu Joseph Date: Mon, 25 Mar 2019 23:55:08 +0530 Subject: [PATCH] YARN-9405 --- .../hadoop/yarn/service/ServiceTestUtils.java | 6 ++++++ .../yarn/service/TestYarnNativeServices.java | 22 ++++++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/ServiceTestUtils.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/ServiceTestUtils.java index b3ba58d..a37ec75 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/ServiceTestUtils.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/ServiceTestUtils.java @@ -535,6 +535,12 @@ protected void waitForServiceToBeStarted(ServiceClient client, waitForServiceToBeInState(client, exampleApp, ServiceState.STARTED); } + protected void waitForServiceToBeExpressUpgrading(ServiceClient client, + Service exampleApp) throws TimeoutException, InterruptedException { + waitForServiceToBeInState(client, exampleApp, + ServiceState.EXPRESS_UPGRADING); + } + protected void waitForServiceToBeInState(ServiceClient client, Service exampleApp, ServiceState desiredState) throws TimeoutException, InterruptedException { diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/TestYarnNativeServices.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/TestYarnNativeServices.java index a22ada4..6c38511 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/TestYarnNativeServices.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-applications/hadoop-yarn-services/hadoop-yarn-services-core/src/test/java/org/apache/hadoop/yarn/service/TestYarnNativeServices.java @@ -439,6 +439,8 @@ public void testExpressUpgrade() throws Exception { component2.getConfiguration().getEnv().put("key2", "val2"); client.actionUpgradeExpress(service); + waitForServiceToBeExpressUpgrading(client, service); + // wait for upgrade to complete waitForServiceToBeStable(client, service); Service active = client.getStatus(service.getName()); @@ -859,16 +861,32 @@ private void checkContainerLaunchDependencies(ServiceClient client, private void checkCompInstancesInOrder(ServiceClient client, Service exampleApp) throws IOException, YarnException, TimeoutException, InterruptedException { + waitForContainers(client, exampleApp); Service service = client.getStatus(exampleApp.getName()); for (Component comp : service.getComponents()) { checkEachCompInstancesInOrder(comp, exampleApp.getName()); } } + private void waitForContainers(ServiceClient client, Service exampleApp) + throws TimeoutException, InterruptedException { + GenericTestUtils.waitFor(() -> { + try { + Service service = client.getStatus(exampleApp.getName()); + for (Component comp : service.getComponents()) { + if (comp.getContainers().size() != comp.getNumberOfContainers()) { + return false; + } + } + return true; + } catch (Exception e) { + return false; + } + }, 2000, 200000); + } + private void checkEachCompInstancesInOrder(Component component, String serviceName) throws TimeoutException, InterruptedException { - long expectedNumInstances = component.getNumberOfContainers(); - Assert.assertEquals(expectedNumInstances, component.getContainers().size()); TreeSet instances = new TreeSet<>(); for (Container container : component.getContainers()) { instances.add(container.getComponentInstanceName()); -- 2.7.4 (Apple Git-66)