diff --git a/src/main/java/io/litmuschaos/LitmusClient.java b/src/main/java/io/litmuschaos/LitmusClient.java index afe0e73..ca00f6c 100644 --- a/src/main/java/io/litmuschaos/LitmusClient.java +++ b/src/main/java/io/litmuschaos/LitmusClient.java @@ -791,15 +791,19 @@ public GetExperimentResponse getExperiment(GetExperimentGraphQLQuery query, GetE /** * List the chaos experiments. * - * @param query - * @param projectionRoot + * @param request the {@link ChaosExperimentListRequest} wrapping projectID, the + * generated filter payload, and the projection root. * @return Returns the list of chaos experiments. * @throws LitmusApiException * @throws IOException */ - public ListExperimentResponse listExperiment(ListExperimentGraphQLQuery query, ListExperimentProjectionRoot projectionRoot) throws LitmusApiException, IOException { - String request = new GraphQLQueryRequest(query, projectionRoot).serialize(); - return graphQLClient.query(request, LIST_EXPERIMENT, new TypeRef(){}); + public ListExperimentResponse listExperiment(ChaosExperimentListRequest request) throws LitmusApiException, IOException { + ListExperimentGraphQLQuery query = ListExperimentGraphQLQuery.newRequest() + .projectID(request.getProjectID()) + .request(request.getRequest()) + .build(); + String body = new GraphQLQueryRequest(query, request.getProjectionRoot()).serialize(); + return graphQLClient.query(body, LIST_EXPERIMENT, new TypeRef(){}); } /** @@ -861,14 +865,19 @@ public RunChaosExperimentResponse runChaosExperiment(RunChaosExperimentGraphQLQu /** * Save the chaos experiment. * - * @param query + * @param request the {@link ChaosExperimentSaveRequest} wrapping projectID and the + * generated save payload. * @return Returns the response of the save chaos experiment request. * @throws LitmusApiException * @throws IOException */ - public SaveChaosExperimentResponse saveChaosExperiment(SaveChaosExperimentGraphQLQuery query) throws LitmusApiException, IOException { - String request = new GraphQLQueryRequest(query).serialize(); - return graphQLClient.query(request, SAVE_CHAOS_EXPERIMENT, new TypeRef(){}); + public SaveChaosExperimentResponse saveChaosExperiment(ChaosExperimentSaveRequest request) throws LitmusApiException, IOException { + SaveChaosExperimentGraphQLQuery query = SaveChaosExperimentGraphQLQuery.newRequest() + .projectID(request.getProjectID()) + .request(request.getRequest()) + .build(); + String body = new GraphQLQueryRequest(query).serialize(); + return graphQLClient.query(body, SAVE_CHAOS_EXPERIMENT, new TypeRef(){}); } /** diff --git a/src/main/java/io/litmuschaos/request/ChaosExperimentListRequest.java b/src/main/java/io/litmuschaos/request/ChaosExperimentListRequest.java new file mode 100644 index 0000000..5850206 --- /dev/null +++ b/src/main/java/io/litmuschaos/request/ChaosExperimentListRequest.java @@ -0,0 +1,59 @@ +package io.litmuschaos.request; + +import io.litmuschaos.generated.client.ListExperimentProjectionRoot; +import io.litmuschaos.generated.types.ListExperimentRequest; +import io.litmuschaos.util.Builder; + +public class ChaosExperimentListRequest { + + private final String projectID; + private final ListExperimentRequest request; + private final ListExperimentProjectionRoot projectionRoot; + + private ChaosExperimentListRequest(ChaosExperimentListRequestBuilder builder) { + this.projectID = builder.projectID; + this.request = builder.request; + this.projectionRoot = builder.projectionRoot; + } + + public String getProjectID() { + return projectID; + } + + public ListExperimentRequest getRequest() { + return request; + } + + public ListExperimentProjectionRoot getProjectionRoot() { + return projectionRoot; + } + + public static ChaosExperimentListRequestBuilder builder() { + return new ChaosExperimentListRequestBuilder(); + } + + public static class ChaosExperimentListRequestBuilder implements Builder { + private String projectID; + private ListExperimentRequest request; + private ListExperimentProjectionRoot projectionRoot; + + public ChaosExperimentListRequestBuilder projectID(String projectID) { + this.projectID = projectID; + return this; + } + + public ChaosExperimentListRequestBuilder request(ListExperimentRequest request) { + this.request = request; + return this; + } + + public ChaosExperimentListRequestBuilder projectionRoot(ListExperimentProjectionRoot projectionRoot) { + this.projectionRoot = projectionRoot; + return this; + } + + public ChaosExperimentListRequest build() { + return new ChaosExperimentListRequest(this); + } + } +} diff --git a/src/main/java/io/litmuschaos/request/ChaosExperimentSaveRequest.java b/src/main/java/io/litmuschaos/request/ChaosExperimentSaveRequest.java new file mode 100644 index 0000000..6a87a9c --- /dev/null +++ b/src/main/java/io/litmuschaos/request/ChaosExperimentSaveRequest.java @@ -0,0 +1,46 @@ +package io.litmuschaos.request; + +import io.litmuschaos.generated.types.SaveChaosExperimentRequest; +import io.litmuschaos.util.Builder; + +public class ChaosExperimentSaveRequest { + + private final String projectID; + private final SaveChaosExperimentRequest request; + + private ChaosExperimentSaveRequest(ChaosExperimentSaveRequestBuilder builder) { + this.projectID = builder.projectID; + this.request = builder.request; + } + + public String getProjectID() { + return projectID; + } + + public SaveChaosExperimentRequest getRequest() { + return request; + } + + public static ChaosExperimentSaveRequestBuilder builder() { + return new ChaosExperimentSaveRequestBuilder(); + } + + public static class ChaosExperimentSaveRequestBuilder implements Builder { + private String projectID; + private SaveChaosExperimentRequest request; + + public ChaosExperimentSaveRequestBuilder projectID(String projectID) { + this.projectID = projectID; + return this; + } + + public ChaosExperimentSaveRequestBuilder request(SaveChaosExperimentRequest request) { + this.request = request; + return this; + } + + public ChaosExperimentSaveRequest build() { + return new ChaosExperimentSaveRequest(this); + } + } +} diff --git a/src/test/java/io/litmuschaos/LitmusClientTest.java b/src/test/java/io/litmuschaos/LitmusClientTest.java index 3fd5edc..01cf5af 100644 --- a/src/test/java/io/litmuschaos/LitmusClientTest.java +++ b/src/test/java/io/litmuschaos/LitmusClientTest.java @@ -839,22 +839,17 @@ void getExperiment() throws LitmusApiException, IOException { @Test void listExperiment() throws LitmusApiException, IOException { - ListExperimentGraphQLQuery query = new ListExperimentGraphQLQuery.Builder() - .projectID("d6f0b5cb-0088-4732-8c2f-4193419103de") - .request(new ListExperimentRequest.Builder() - .experimentIDs(List.of("50703e0e-18de-4cc4-80fb-0784c100bb07")) - .filter(ExperimentFilterInput.newBuilder() - .dateRange(DateRange.newBuilder() - .startDate("1737817199000") - .endDate("1733929200000") - .build()) - .build() - - ) - .pagination(Pagination.newBuilder().page(0).limit(10).build()) - .sort(ExperimentSortInput.newBuilder().ascending(true).field(ExperimentSortingField.NAME).build()) + ListExperimentRequest filter = new ListExperimentRequest.Builder() + .experimentIDs(List.of("50703e0e-18de-4cc4-80fb-0784c100bb07")) + .filter(ExperimentFilterInput.newBuilder() + .dateRange(DateRange.newBuilder() + .startDate("1737817199000") + .endDate("1733929200000") + .build()) .build() ) + .pagination(Pagination.newBuilder().page(0).limit(10).build()) + .sort(ExperimentSortInput.newBuilder().ascending(true).field(ExperimentSortingField.NAME).build()) .build(); ListExperimentProjectionRoot projectionRoot = new ListExperimentProjectionRoot<>() @@ -872,7 +867,13 @@ void listExperiment() throws LitmusApiException, IOException { .root() .totalNoOfExperiments(); - ListExperimentResponse response = litmusClient.listExperiment(query, projectionRoot); + ChaosExperimentListRequest request = ChaosExperimentListRequest.builder() + .projectID("d6f0b5cb-0088-4732-8c2f-4193419103de") + .request(filter) + .projectionRoot(projectionRoot) + .build(); + + ListExperimentResponse response = litmusClient.listExperiment(request); assertThat(response).isInstanceOf(ListExperimentResponse.class); } @@ -939,20 +940,21 @@ void runChaosExperiment() throws LitmusApiException, IOException { @Test void saveChaosExperiment() throws LitmusApiException, IOException { - SaveChaosExperimentGraphQLQuery query = new SaveChaosExperimentGraphQLQuery.Builder() - .projectID("d6f0b5cb-0088-4732-8c2f-4193419103de") - .request(SaveChaosExperimentRequest.newBuilder() - .description("test description") - .id("36048cb8-19db-40f1-8f09-20313b576c22") - .infraID("6c54cea0-16e1-4d7b-bf96-ece11c82a7e4") - .manifest("manifest file") - .tags(List.of("tag1", "tag2")) - .name("test2-experiment") - .build()) + SaveChaosExperimentRequest payload = SaveChaosExperimentRequest.newBuilder() + .description("test description") + .id("36048cb8-19db-40f1-8f09-20313b576c22") + .infraID("6c54cea0-16e1-4d7b-bf96-ece11c82a7e4") + .manifest("manifest file") + .tags(List.of("tag1", "tag2")) + .name("test2-experiment") .build(); + ChaosExperimentSaveRequest request = ChaosExperimentSaveRequest.builder() + .projectID("d6f0b5cb-0088-4732-8c2f-4193419103de") + .request(payload) + .build(); - SaveChaosExperimentResponse response = litmusClient.saveChaosExperiment(query); + SaveChaosExperimentResponse response = litmusClient.saveChaosExperiment(request); assertThat(response).isInstanceOf(SaveChaosExperimentResponse.class); }