From 5b79f799134892c16d49e2dbb8bc9520d3b0a8a3 Mon Sep 17 00:00:00 2001 From: Theresa Kamerman Date: Thu, 6 Jun 2024 15:20:00 -0700 Subject: [PATCH] Update E2E Tests --- .../nasa/jpl/aerie/e2e/MissionModelTests.java | 22 ++++++++++++++----- .../jpl/aerie/e2e/types/ModelEventLogs.java | 8 +++++-- .../gov/nasa/jpl/aerie/e2e/utils/GQL.java | 3 +++ .../jpl/aerie/e2e/utils/HasuraRequests.java | 12 +++++----- 4 files changed, 32 insertions(+), 13 deletions(-) diff --git a/e2e-tests/src/test/java/gov/nasa/jpl/aerie/e2e/MissionModelTests.java b/e2e-tests/src/test/java/gov/nasa/jpl/aerie/e2e/MissionModelTests.java index 7b0776e285..bae7b43f10 100644 --- a/e2e-tests/src/test/java/gov/nasa/jpl/aerie/e2e/MissionModelTests.java +++ b/e2e-tests/src/test/java/gov/nasa/jpl/aerie/e2e/MissionModelTests.java @@ -21,6 +21,7 @@ import static gov.nasa.jpl.aerie.e2e.types.ValueSchema.*; import static java.util.Map.entry; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; @TestInstance(TestInstance.Lifecycle.PER_CLASS) @@ -377,14 +378,17 @@ void hasuraEventLogsAreAccessible() throws IOException { // Check Activity Type Refresh Event Logs final var activityTypeRefreshLogs = modelLogs.refreshActivityTypesLogs(); assertEquals(1, activityTypeRefreshLogs.size()); - final var activityTypeLog = activityTypeRefreshLogs.get(0); + final var activityTypeLog = activityTypeRefreshLogs.getFirst(); assertEquals("Aerie Legacy", activityTypeLog.triggeringUser()); + assertFalse(activityTypeLog.pending()); assertTrue(activityTypeLog.delivered()); assertTrue(activityTypeLog.success()); assertEquals(1, activityTypeLog.tries()); - assertEquals(200, activityTypeLog.status()); + + assertTrue(activityTypeLog.status().isPresent()); + assertEquals(200, activityTypeLog.status().get()); assertTrue(activityTypeLog.error().isEmpty()); assertTrue(activityTypeLog.errorMessage().isEmpty()); @@ -393,14 +397,17 @@ void hasuraEventLogsAreAccessible() throws IOException { // Check Model Parameter Refresh Event Logs final var modelParamRefreshLogs = modelLogs.refreshModelParamsLogs(); assertEquals(1, modelParamRefreshLogs.size()); - final var modelParamLog = modelParamRefreshLogs.get(0); + final var modelParamLog = modelParamRefreshLogs.getFirst(); assertEquals("Aerie Legacy", modelParamLog.triggeringUser()); + assertFalse(modelParamLog.pending()); assertTrue(modelParamLog.delivered()); assertTrue(modelParamLog.success()); assertEquals(1, modelParamLog.tries()); - assertEquals(200, modelParamLog.status()); + + assertTrue(modelParamLog.status().isPresent()); + assertEquals(200, modelParamLog.status().get()); assertTrue(modelParamLog.error().isEmpty()); assertTrue(modelParamLog.errorMessage().isEmpty()); @@ -409,14 +416,17 @@ void hasuraEventLogsAreAccessible() throws IOException { // Check Resource Type Refresh Event Logs final var resourceTypeRefreshLogs = modelLogs.refreshResourceTypesLogs(); assertEquals(1, resourceTypeRefreshLogs.size()); - final var resourceTypeLog = resourceTypeRefreshLogs.get(0); + final var resourceTypeLog = resourceTypeRefreshLogs.getFirst(); assertEquals("Aerie Legacy", resourceTypeLog.triggeringUser()); + assertFalse(resourceTypeLog.pending()); assertTrue(resourceTypeLog.delivered()); assertTrue(resourceTypeLog.success()); assertEquals(1, resourceTypeLog.tries()); - assertEquals(200, resourceTypeLog.status()); + + assertTrue(resourceTypeLog.status().isPresent()); + assertEquals(200, resourceTypeLog.status().get()); assertTrue(resourceTypeLog.error().isEmpty()); assertTrue(resourceTypeLog.errorMessage().isEmpty()); diff --git a/e2e-tests/src/test/java/gov/nasa/jpl/aerie/e2e/types/ModelEventLogs.java b/e2e-tests/src/test/java/gov/nasa/jpl/aerie/e2e/types/ModelEventLogs.java index b342e0b153..546a6dadd2 100644 --- a/e2e-tests/src/test/java/gov/nasa/jpl/aerie/e2e/types/ModelEventLogs.java +++ b/e2e-tests/src/test/java/gov/nasa/jpl/aerie/e2e/types/ModelEventLogs.java @@ -14,17 +14,20 @@ public record ModelEventLogs( ) { public record EventLog( String triggeringUser, + boolean pending, boolean delivered, boolean success, int tries, String createdAt, - int status, + Optional status, Optional error, Optional errorMessage, Optional errorType ) { public static EventLog fromJSON(JsonObject json) { + final Optional status = json.isNull("status") ? + Optional.empty() : Optional.of(json.getInt("status")); final Optional error = json.isNull("error") ? Optional.empty() : Optional.of(json.getJsonObject("error")); final Optional errorMsg = json.isNull("error_message") ? @@ -34,11 +37,12 @@ public static EventLog fromJSON(JsonObject json) { return new EventLog( json.getString("triggering_user"), + json.getBoolean("pending"), json.getBoolean("delivered"), json.getBoolean("success"), json.getInt("tries"), json.getString("created_at"), - json.getInt("status"), + status, error, errorMsg, errorType); diff --git a/e2e-tests/src/test/java/gov/nasa/jpl/aerie/e2e/utils/GQL.java b/e2e-tests/src/test/java/gov/nasa/jpl/aerie/e2e/utils/GQL.java index 08079cc25b..5108c5874e 100644 --- a/e2e-tests/src/test/java/gov/nasa/jpl/aerie/e2e/utils/GQL.java +++ b/e2e-tests/src/test/java/gov/nasa/jpl/aerie/e2e/utils/GQL.java @@ -273,6 +273,7 @@ query getModelLogs($modelId: Int!) { version refresh_activity_type_logs(order_by: {created_at: desc}) { triggering_user + pending delivered success tries @@ -284,6 +285,7 @@ query getModelLogs($modelId: Int!) { } refresh_model_parameter_logs(order_by: {created_at: desc}) { triggering_user + pending delivered success tries @@ -295,6 +297,7 @@ query getModelLogs($modelId: Int!) { } refresh_resource_type_logs(order_by: {created_at: desc}) { triggering_user + pending delivered success tries diff --git a/e2e-tests/src/test/java/gov/nasa/jpl/aerie/e2e/utils/HasuraRequests.java b/e2e-tests/src/test/java/gov/nasa/jpl/aerie/e2e/utils/HasuraRequests.java index d9f2666b64..aced50855d 100644 --- a/e2e-tests/src/test/java/gov/nasa/jpl/aerie/e2e/utils/HasuraRequests.java +++ b/e2e-tests/src/test/java/gov/nasa/jpl/aerie/e2e/utils/HasuraRequests.java @@ -163,17 +163,19 @@ public ModelEventLogs awaitModelEventLogs(int modelId, int timeout) throws IOExc final var variables = Json.createObjectBuilder().add("modelId", modelId).build(); for(int i = 0; i < timeout; ++i){ - final var logs = makeRequest(GQL.GET_MODEL_EVENT_LOGS, variables).getJsonObject("mission_model"); - if(logs.getJsonArray("refresh_activity_type_logs").isEmpty() - || logs.getJsonArray("refresh_model_parameter_logs").isEmpty() - || logs.getJsonArray("refresh_resource_type_logs").isEmpty()) { + final var logs = ModelEventLogs.fromJSON(makeRequest(GQL.GET_MODEL_EVENT_LOGS, variables) + .getJsonObject("mission_model")); + + if(logs.refreshActivityTypesLogs().getLast().pending() || + logs.refreshModelParamsLogs().getLast().pending() || + logs.refreshResourceTypesLogs().getLast().pending()) { try { Thread.sleep(1000); // 1s } catch (InterruptedException e) { throw new RuntimeException(e); } } else { - return ModelEventLogs.fromJSON(logs); + return logs; } } throw new TimeoutError("One or more mission model Hausra events did not return after " + timeout + " seconds");