Skip to content
Merged
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
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@

import org.eclipse.tracecompass.incubator.internal.trace.server.jersey.rest.core.services.DataProviderService;
import org.eclipse.tracecompass.incubator.internal.trace.server.jersey.rest.core.services.EndpointConstants;
import org.eclipse.tracecompass.incubator.internal.trace.server.jersey.rest.core.services.ErrorResponseImpl;
import org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core.tests.stubs.DataProviderDescriptorStub;
import org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core.tests.stubs.ExperimentModelStub;
import org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core.tests.stubs.TestDataProviderFactory;
Expand Down Expand Up @@ -93,29 +94,29 @@ public void testDataProviderConfigTypesErrors() {
try (Response response = configTypesEndpoint.request(MediaType.APPLICATION_JSON).get()) {
assertNotNull(response);
assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
assertEquals(EndpointConstants.NO_SUCH_TRACE, response.readEntity(String.class));
assertEquals(EndpointConstants.NO_SUCH_TRACE, response.readEntity(ErrorResponseImpl.class).getTitle());
}

WebTarget singleTypeEndpoint = configTypesEndpoint.path(TestSchemaConfigurationSource.TYPE.getId());
try (Response response = singleTypeEndpoint.request(MediaType.APPLICATION_JSON).get()) {
assertNotNull(response);
assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
assertEquals(EndpointConstants.NO_SUCH_TRACE, response.readEntity(String.class));
assertEquals(EndpointConstants.NO_SUCH_TRACE, response.readEntity(ErrorResponseImpl.class).getTitle());
}

// Unknown data provider
configTypesEndpoint = getConfigEndpoint(exp.getUUID().toString(), UNKNOWN_DP_ID);
try (Response response = configTypesEndpoint.request(MediaType.APPLICATION_JSON).get()) {
assertNotNull(response);
assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
assertEquals(EndpointConstants.NO_SUCH_PROVIDER, response.readEntity(String.class));
assertEquals(EndpointConstants.NO_SUCH_PROVIDER, response.readEntity(ErrorResponseImpl.class).getTitle());
}

singleTypeEndpoint = configTypesEndpoint.path(TestSchemaConfigurationSource.TYPE.getId());
try (Response response = singleTypeEndpoint.request(MediaType.APPLICATION_JSON).get()) {
assertNotNull(response);
assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
assertEquals(EndpointConstants.NO_SUCH_PROVIDER, response.readEntity(String.class));
assertEquals(EndpointConstants.NO_SUCH_PROVIDER, response.readEntity(ErrorResponseImpl.class).getTitle());
}

// Test config type is not applicable for another data provider
Expand All @@ -124,15 +125,15 @@ public void testDataProviderConfigTypesErrors() {
try (Response response = singleTypeEndpoint.request(MediaType.APPLICATION_JSON).get()) {
assertNotNull(response);
assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
assertEquals(EndpointConstants.NO_SUCH_PROVIDER, response.readEntity(String.class));
assertEquals(EndpointConstants.NO_SUCH_PROVIDER, response.readEntity(ErrorResponseImpl.class).getTitle());
}

configTypesEndpoint = getConfigEndpoint(exp.getUUID().toString(), TestDataProviderFactory.ID);
singleTypeEndpoint = configTypesEndpoint.path(UNKNOWN_TYPE_ID);
try (Response response = singleTypeEndpoint.request(MediaType.APPLICATION_JSON).get()) {
assertNotNull(response);
assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
assertEquals(EndpointConstants.NO_SUCH_CONFIGURATION_TYPE, response.readEntity(String.class));
assertEquals(EndpointConstants.NO_SUCH_CONFIGURATION_TYPE, response.readEntity(ErrorResponseImpl.class).getTitle());
}
}

Expand Down Expand Up @@ -194,21 +195,21 @@ public void testCreationOfDerivedDataProvidersErrors() throws IOException, URISy
// Unknown experiment
try (Response response = assertDpPostWithErrors(dpCreationEndpoint, configuration)) {
assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
assertEquals(EndpointConstants.NO_SUCH_TRACE, response.readEntity(String.class));
assertEquals(EndpointConstants.NO_SUCH_TRACE, response.readEntity(ErrorResponseImpl.class).getTitle());
}

// Unknown data provider
dpCreationEndpoint = getDpCreationEndpoint(exp.getUUID().toString(), UNKNOWN_DP_ID);
try (Response response = assertDpPostWithErrors(dpCreationEndpoint, configuration)) {
assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
assertEquals(EndpointConstants.NO_SUCH_PROVIDER + ": " + UNKNOWN_DP_ID, response.readEntity(String.class));
assertEquals(EndpointConstants.NO_SUCH_PROVIDER + ": " + UNKNOWN_DP_ID, response.readEntity(ErrorResponseImpl.class).getTitle());
}

// Test config type is not applicable for another data provider
dpCreationEndpoint = getDpCreationEndpoint(exp.getUUID().toString(), CALL_STACK_DATAPROVIDER_ID);
try (Response response = assertDpPostWithErrors(dpCreationEndpoint, configuration)) {
assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
assertEquals(EndpointConstants.NO_SUCH_PROVIDER, response.readEntity(String.class));
assertEquals(EndpointConstants.NO_SUCH_PROVIDER, response.readEntity(ErrorResponseImpl.class).getTitle());
}

// Invalid config type ID
Expand All @@ -222,7 +223,7 @@ public void testCreationOfDerivedDataProvidersErrors() throws IOException, URISy
configuration = builder.build();
try (Response response = assertDpPostWithErrors(dpCreationEndpoint, configuration)) {
assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
assertEquals(EndpointConstants.NO_SUCH_CONFIGURATION_TYPE, response.readEntity(String.class));
assertEquals(EndpointConstants.NO_SUCH_CONFIGURATION_TYPE, response.readEntity(ErrorResponseImpl.class).getTitle());
}
}

Expand All @@ -244,7 +245,7 @@ public void testDeletionOfDerivedDataProvidersErrors() throws IOException, URISy
try (Response response = dpDeletionEndpoint.request().delete()) {
assertNotNull(response);
assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
assertEquals(EndpointConstants.NO_SUCH_TRACE, response.readEntity(String.class));
assertEquals(EndpointConstants.NO_SUCH_TRACE, response.readEntity(ErrorResponseImpl.class).getTitle());
}

// Unknown input data provider
Expand All @@ -253,7 +254,7 @@ public void testDeletionOfDerivedDataProvidersErrors() throws IOException, URISy
try (Response response = dpDeletionEndpoint.request().delete()) {
assertNotNull(response);
assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
assertEquals(EndpointConstants.NO_SUCH_PROVIDER + ": " + UNKNOWN_DP_ID, response.readEntity(String.class));
assertEquals(EndpointConstants.NO_SUCH_PROVIDER + ": " + UNKNOWN_DP_ID, response.readEntity(ErrorResponseImpl.class).getTitle());
}

// Unknown derived data provider
Expand All @@ -262,7 +263,7 @@ public void testDeletionOfDerivedDataProvidersErrors() throws IOException, URISy
try (Response response = dpDeletionEndpoint.request().delete()) {
assertNotNull(response);
assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
assertEquals(EndpointConstants.NO_SUCH_DERIVED_PROVIDER + ": " + UNKNOWN_DP_ID, response.readEntity(String.class));
assertEquals(EndpointConstants.NO_SUCH_DERIVED_PROVIDER + ": " + UNKNOWN_DP_ID, response.readEntity(ErrorResponseImpl.class).getTitle());
}

Map<String, Object> params = readParametersFromJson(VALID_JSON_FILENAME);
Expand All @@ -283,7 +284,7 @@ public void testDeletionOfDerivedDataProvidersErrors() throws IOException, URISy
try (Response response = dpDeletionEndpoint.request().delete()) {
assertNotNull(response);
assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
assertEquals(EndpointConstants.NO_SUCH_PROVIDER, response.readEntity(String.class));
assertEquals(EndpointConstants.NO_SUCH_PROVIDER, response.readEntity(ErrorResponseImpl.class).getTitle());
}

// Successful deletion
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.tracecompass.incubator.internal.trace.server.jersey.rest.core.model.views.QueryParameters;
import org.eclipse.tracecompass.incubator.internal.trace.server.jersey.rest.core.services.ExperimentManagerService;
import org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core.tests.stubs.ExperimentErrorResponseStub;
import org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core.tests.stubs.ExperimentModelStub;
import org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core.tests.stubs.TraceModelStub;
import org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core.tests.utils.RestServerTest;
Expand All @@ -64,6 +65,9 @@ public class ExperimentManagerServiceTest extends RestServerTest {
private static final @NonNull ImmutableSet<TraceModelStub> CONTEXT_SWITCH_NOT_INITIALIZED_SET = ImmutableSet.of(sfContextSwitchesKernelNotInitializedStub, sfContextSwitchesUstNotInitializedStub);
private static final @NonNull ExperimentModelStub EXPECTED = new ExperimentModelStub(TEST, CONTEXT_SWITCH_SET);

private static final String EXPERIMENT_NAME_EXISTS = "The experiment (name) already exists and both differ."; //$NON-NLS-1$
private static final String EXPERIMENT_NAME_EXISTS_DETAIL = "The experiment with same name already exists with conflicting parameters. Use a different name to avoid the conflict."; //$NON-NLS-1$

/**
* Basic test for the {@link ExperimentManagerService}
*/
Expand Down Expand Up @@ -195,11 +199,16 @@ public void testPostConflicts() {
parameters2.put(TRACES, traceUUIDs2);
try (Response response2 = expTarget.request().post(Entity.json(new QueryParameters(parameters2, Collections.emptyList())))) {
assertEquals("Expected a conflict for posting different experiment", Status.CONFLICT.getStatusCode(), response2.getStatus());
assertEquals("Conflict should return original experiment name", EXPECTED.getName(), response2.readEntity(ExperimentModelStub.class).getName());
ExperimentErrorResponseStub errorResponse = response2.readEntity(ExperimentErrorResponseStub.class);
assertEquals("Conflict detail should be returned", EXPERIMENT_NAME_EXISTS, errorResponse.getTitle());
assertEquals("Conflict detail should be returned", EXPERIMENT_NAME_EXISTS_DETAIL, errorResponse.getDetail());
ExperimentModelStub traceObj = errorResponse.getExperiment();
assertEquals("Conflict should return original experiment", EXPECTED, traceObj);
assertEquals("There should still be only one experiment", ImmutableSet.of(EXPECTED), getExperiments(expTarget));
assertEquals("Failing to add an experiment should not change the trace set", traceSet, getTraces(traces));
assertEquals("Failed to get the experiment by its UUID", EXPECTED, expTarget.path(expStub.getUUID().toString()).request().get(ExperimentModelStub.class));
}

// Post same experiment name, but with traces with the same names, but not the same traces
List<String> traceUUIDs3 = new ArrayList<>();
traceUUIDs3.add(arm64Stub.getUUID().toString());
Expand All @@ -209,7 +218,11 @@ public void testPostConflicts() {
parameters3.put(TRACES, traceUUIDs3);
try (Response response3 = expTarget.request().post(Entity.json(new QueryParameters(parameters3, Collections.emptyList())))) {
assertEquals("Expected a conflict for posting different experiment", Status.CONFLICT.getStatusCode(), response3.getStatus());
assertEquals("Conflict should return original experiment name", EXPECTED.getName(), response3.readEntity(ExperimentModelStub.class).getName());
ExperimentErrorResponseStub errorResponse = response3.readEntity(ExperimentErrorResponseStub.class);
assertEquals("Conflict detail should be returned", EXPERIMENT_NAME_EXISTS, errorResponse.getTitle());
assertEquals("Conflict detail should be returned", EXPERIMENT_NAME_EXISTS_DETAIL, errorResponse.getDetail());
ExperimentModelStub traceObj = errorResponse.getExperiment();
assertEquals("Conflict should return original experiment", EXPECTED, traceObj);
assertEquals("There should still be only one experiment", ImmutableSet.of(EXPECTED), getExperiments(expTarget));
assertEquals("Failing to add an experiment should not change the trace set", traceSet, getTraces(traces));
assertEquals("Failed to get the new experiment by its UUID", EXPECTED, expTarget.path(expStub.getUUID().toString()).request().get(ExperimentModelStub.class));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import org.eclipse.tracecompass.incubator.internal.trace.server.jersey.rest.core.model.views.QueryParameters;
import org.eclipse.tracecompass.incubator.internal.trace.server.jersey.rest.core.services.DataProviderService;
import org.eclipse.tracecompass.incubator.internal.trace.server.jersey.rest.core.services.EndpointConstants;
import org.eclipse.tracecompass.incubator.internal.trace.server.jersey.rest.core.services.ErrorResponseImpl;
import org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core.tests.stubs.AnnotationCategoriesOutputResponseStub;
import org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core.tests.stubs.AnnotationModelStub;
import org.eclipse.tracecompass.incubator.trace.server.jersey.rest.core.tests.stubs.AnnotationResponseStub;
Expand Down Expand Up @@ -283,15 +284,15 @@ public void testAnnotationCategoriesErrors() {
try (Response response = endpoint.request(MediaType.APPLICATION_JSON).get()) {
assertNotNull(response);
assertEquals(Status.NOT_FOUND.getStatusCode(), response.getStatus());
assertEquals(EndpointConstants.NO_SUCH_TRACE, response.readEntity(String.class));
assertEquals(EndpointConstants.NO_SUCH_TRACE, response.readEntity(ErrorResponseImpl.class).getTitle());
}

// Unknown data provider
endpoint = getAnnotationCategoriesEndpoint(exp.getUUID().toString(), UNKNOWN_DP_ID);
try (Response response = endpoint.request(MediaType.APPLICATION_JSON).get()) {
assertNotNull(response);
assertEquals(Status.METHOD_NOT_ALLOWED.getStatusCode(), response.getStatus());
assertEquals(EndpointConstants.NO_PROVIDER, response.readEntity(String.class));
assertEquals(EndpointConstants.NO_PROVIDER, response.readEntity(ErrorResponseImpl.class).getTitle());
}
}

Expand Down
Loading
Loading