Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 18 additions & 9 deletions src/main/java/io/litmuschaos/LitmusClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<ListExperimentResponse>(){});
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<ListExperimentResponse>(){});
}

/**
Expand Down Expand Up @@ -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<SaveChaosExperimentResponse>(){});
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<SaveChaosExperimentResponse>(){});
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -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<ChaosExperimentListRequest> {
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);
}
}
}
Original file line number Diff line number Diff line change
@@ -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<ChaosExperimentSaveRequest> {
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);
}
}
}
54 changes: 28 additions & 26 deletions src/test/java/io/litmuschaos/LitmusClientTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<>()
Expand All @@ -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);
}

Expand Down Expand Up @@ -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);
}

Expand Down