From a3655fb282e6a03bb0f80172c1017452ab3a5cad Mon Sep 17 00:00:00 2001 From: Joseph Cosentino Date: Wed, 20 Mar 2024 14:48:37 -0700 Subject: [PATCH] chore: handle new local deployment status format --- .../greengrass/testing/features/GreengrassCliSteps.java | 9 +++++++-- .../features/GreengrassCliStepsTest.java | 7 +++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/aws-greengrass-testing-features/aws-greengrass-testing-features-api/src/main/java/com/aws/greengrass/testing/features/GreengrassCliSteps.java b/aws-greengrass-testing-features/aws-greengrass-testing-features-api/src/main/java/com/aws/greengrass/testing/features/GreengrassCliSteps.java index a08d1b60..35a5680e 100644 --- a/aws-greengrass-testing-features/aws-greengrass-testing-features-api/src/main/java/com/aws/greengrass/testing/features/GreengrassCliSteps.java +++ b/aws-greengrass-testing-features/aws-greengrass-testing-features-api/src/main/java/com/aws/greengrass/testing/features/GreengrassCliSteps.java @@ -135,8 +135,13 @@ String getLocalDeploymentStatus() { .build()); LOGGER.debug(String.format("deployment status response received for deployment ID %s is %s", deploymentId, response)); - String[] responseArray = response.split(":"); - return responseArray[responseArray.length - 1].trim(); + // compatible with CLI <2.11.0 where deployment status output is just one line + return Arrays.stream(response.split("\n")) + .filter(line -> line.contains(":")) + .findFirst() // status is the first line + .map(statusLine -> statusLine.split(": ")) + .map(statusParts -> statusParts.length == 2 ? statusParts[1] : null) + .orElse("UNKNOWN"); } catch (CommandExecutionException e) { LOGGER.info("Exception occurred while getting the deployment status. Will try again", e); } diff --git a/aws-greengrass-testing-features/aws-greengrass-testing-features-api/src/test/java/com.aws.greengrass.testing/features/GreengrassCliStepsTest.java b/aws-greengrass-testing-features/aws-greengrass-testing-features-api/src/test/java/com.aws.greengrass.testing/features/GreengrassCliStepsTest.java index 240440dd..a120dd95 100644 --- a/aws-greengrass-testing-features/aws-greengrass-testing-features-api/src/test/java/com.aws.greengrass.testing/features/GreengrassCliStepsTest.java +++ b/aws-greengrass-testing-features/aws-greengrass-testing-features-api/src/test/java/com.aws.greengrass.testing/features/GreengrassCliStepsTest.java @@ -11,8 +11,6 @@ import com.aws.greengrass.testing.api.model.InitializationContext; import com.aws.greengrass.testing.api.model.TestId; import com.aws.greengrass.testing.api.model.TimeoutMultiplier; -import com.aws.greengrass.testing.features.GreengrassCliSteps; -import com.aws.greengrass.testing.features.WaitSteps; import com.aws.greengrass.testing.model.ScenarioContext; import com.aws.greengrass.testing.model.TestContext; import com.aws.greengrass.testing.platform.Commands; @@ -110,6 +108,11 @@ void GIVEN_a_valid_deployment_id_WHEN_get_local_deployment_status_THEN_it_return .executeToString(expectedCommandInput); assertEquals("SUCCEEDED", greengrassCliSteps.getLocalDeploymentStatus()); + + // simulate response for cli version >=2.11.0 that has multiple lines + Mockito.doReturn(String.format("%s: SUCCEEDED\nCreated on: 1/1/1 11:11 AM", MOCK_DEPLOYMENT_ID)) + .when(mockedCommands).executeToString(expectedCommandInput); + assertEquals("SUCCEEDED", greengrassCliSteps.getLocalDeploymentStatus()); } private TestContext initializeMockTestContext() {