diff options
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java')
12 files changed, 560 insertions, 0 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/ExternalTestingManager.java b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/ExternalTestingManager.java new file mode 100644 index 0000000000..dc9b09c767 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/ExternalTestingManager.java @@ -0,0 +1,87 @@ +/* + * Copyright © 2019 iconectiv + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.core.externaltesting.api; + + +import java.util.List; + +public interface ExternalTestingManager { + + /** + * Return the configuration of this feature that we want to + * expose to the client. Treated as a JSON blob for flexibility. + */ + String getConfig(); + + /** + * Build a tree of all test cases for the client including all + * defined endpoints, scenarios, and test suites. + * @return test case tree. + */ + TestTreeNode getTestCasesAsTree(); + + /** + * Get a list of testing endpoints with name and description. + */ + List<VtpNameDescriptionPair> getEndpoints(); + + /** + * Get a list of scenarios from and endpoint. + */ + List<VtpNameDescriptionPair> getScenarios(String endpoint); + + /** + * Get a list of test suites given the endpoint and scenario. + */ + List<VtpNameDescriptionPair> getTestSuites(String endpoint, String scenario); + + /** + * Get a list of test cases. + * @param endpoint endpoint to contact (e.g. VTP) + * @param scenario test scenario to get tests for + * @return list of test cases. + */ + List<VtpTestCase> getTestCases(String endpoint, String scenario); + + /** + * Get the details about a particular test case. + * @param endpoint endpoint to contact (e.g. VTP) + * @param scenario test scenario to get tests for + * @param testSuite suite to get tests for + * @param testCaseName test case name to query. + * @return details about the test case. + */ + VtpTestCase getTestCase(String endpoint, String scenario, String testSuite, String testCaseName); + + /** + * Execute a collection of tests where the manager must distribute + * the tests to the appropriate endpoint and correlate the responses. + * @param requests collection of request items. + * @param requestId optional request ID provided from client. + * @return response from endpoint (don't bother to parse). + */ + List<VtpTestExecutionResponse> execute(List<VtpTestExecutionRequest> requests, String requestId); + + /** + * Return a previous results. + * @param endpoint endpoint to query + * @param executionId execution to query. + * @return response from endpoint. + */ + VtpTestExecutionResponse getExecution(String endpoint, String executionId); + +} diff --git a/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/TestErrorBody.java b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/TestErrorBody.java new file mode 100644 index 0000000000..79a3765596 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/TestErrorBody.java @@ -0,0 +1,50 @@ +/* + * Copyright © 2019 iconectiv + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.core.externaltesting.api; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import java.io.Serializable; + +/** + * Error body to return to client per IETF RFC 7807. + */ +@SuppressWarnings("unused") +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel("Body for errors such as http 500") +@Data +public class TestErrorBody implements Serializable { + + private static final long serialVersionUID = 3504501412736665763L; + + private String code; + private Integer httpStatus; + private String message; + + TestErrorBody() { + + } + + public TestErrorBody(String code, Integer httpStatus, String message) { + this(); + this.code = code; + this.httpStatus = httpStatus; + this.message = message; + } +} diff --git a/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/TestTreeNode.java b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/TestTreeNode.java new file mode 100644 index 0000000000..42fa330d33 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/TestTreeNode.java @@ -0,0 +1,64 @@ +/* + * Copyright © 2019 iconectiv + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.core.externaltesting.api; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.ArrayList; +import java.util.List; + +/** + * Tree structure of tests. VTP does not provide an organized + * tree of tests. Here we define a tree node with tests and + * child nodes to represent our tree. + */ +@SuppressWarnings("unused") +@JsonInclude(JsonInclude.Include.NON_EMPTY) +@Data() +@EqualsAndHashCode(callSuper=true) +public class TestTreeNode extends VtpNameDescriptionPair { + + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List<VtpTestCase> tests; + + @JsonInclude(JsonInclude.Include.NON_EMPTY) + private List<TestTreeNode> children; + + public TestTreeNode() { + super(); + } + + public TestTreeNode(String name, String description) { + super(name, description); + } + + public void addTest(VtpTestCase test) { + if (tests == null) { + tests = new ArrayList<>(); + } + tests.add(test); + } + + public void addChild(TestTreeNode child) { + if (children == null) { + children = new ArrayList<>(); + } + children.add(child); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpNameDescriptionPair.java b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpNameDescriptionPair.java new file mode 100644 index 0000000000..9a435de4ae --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpNameDescriptionPair.java @@ -0,0 +1,38 @@ +/* + * Copyright © 2019 iconectiv + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.core.externaltesting.api; + +import lombok.Data; + +/** + * Scenarios and Test Suites are simple name/description pairs. + */ +@Data +public class VtpNameDescriptionPair { + private String name; + private String description; + + VtpNameDescriptionPair() { + + } + + public VtpNameDescriptionPair(String name, String description) { + this(); + this.name = name; + this.description = description; + } +} diff --git a/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpTestCase.java b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpTestCase.java new file mode 100644 index 0000000000..ae39159f32 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpTestCase.java @@ -0,0 +1,42 @@ +/* + * Copyright © 2019 iconectiv + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.core.externaltesting.api; + +import lombok.Data; + +import java.util.List; + + +@Data +public class VtpTestCase { + + private String scenario; + private String testCaseName; + private String testSuiteName; + private String description; + private String author; + private List<VtpTestCaseInput> inputs; + private List<VtpTestCaseOutput> outputs; + + /** + * Extends VTP test case content with location where test case is defined. + * This value is populated by the SDC-BE for consumption by the front end. + * This allows the front end to tell the back end where to run the test. + */ + private String endpoint; + +} diff --git a/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpTestCaseInput.java b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpTestCaseInput.java new file mode 100644 index 0000000000..5c6db8eb72 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpTestCaseInput.java @@ -0,0 +1,42 @@ +/* + * Copyright © 2019 iconectiv + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.core.externaltesting.api; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.Map; + + +@Data +@EqualsAndHashCode(callSuper=true) +public class VtpTestCaseInput extends VtpNameDescriptionPair { + + private String type; + private String defaultValue; + private boolean isOptional; + private Map<String,Object> metadata; + + /** + * The VTP API has a field called isOptional, not just optional so + * we need to add getter and setter. + */ + @SuppressWarnings({"unused", "WeakerAccess"}) + public boolean getIsOptional() { + return isOptional; + } +} diff --git a/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpTestCaseOutput.java b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpTestCaseOutput.java new file mode 100644 index 0000000000..b7b66b7b0b --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpTestCaseOutput.java @@ -0,0 +1,31 @@ +/* + * Copyright © 2019 iconectiv + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.core.externaltesting.api; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.swagger.annotations.ApiModel; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@ApiModel("VtpTestSuite") +@Data +@EqualsAndHashCode(callSuper=true) +class VtpTestCaseOutput extends VtpNameDescriptionPair { + + private String type; +} diff --git a/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpTestExecutionRequest.java b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpTestExecutionRequest.java new file mode 100644 index 0000000000..481fd46906 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpTestExecutionRequest.java @@ -0,0 +1,39 @@ +/* + * Copyright © 2019 iconectiv + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.core.externaltesting.api; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +import java.util.Map; + +@Data +public class VtpTestExecutionRequest { + + private String scenario; + private String testSuiteName; + private String testCaseName; + + @JsonInclude(value = JsonInclude.Include.NON_NULL) + private String profile; + + @JsonInclude(value = JsonInclude.Include.NON_NULL) + private Map<String,String> parameters; + + @JsonInclude(value = JsonInclude.Include.NON_NULL) + private String endpoint; +} diff --git a/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpTestExecutionResponse.java b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpTestExecutionResponse.java new file mode 100644 index 0000000000..add85210cb --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/api/VtpTestExecutionResponse.java @@ -0,0 +1,53 @@ +/* + * Copyright © 2019 iconectiv + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.core.externaltesting.api; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +import java.util.Map; + +@Data +public class VtpTestExecutionResponse { + private String scenario; + private String testCaseName; + private String testSuiteName; + private String executionId; + private Map<String,String> parameters; + private Object results; + private String status; + private String startTime; // don't bother to convert various ISO8601 formats. + private String endTime; // don't bother to convert various ISO8601 formats. + + /** + * In the event on an error, code provided. + */ + @JsonInclude(value= JsonInclude.Include.NON_NULL) + private String code; + + /** + * Error message + */ + @JsonInclude(value= JsonInclude.Include.NON_NULL) + private String message; + + /** + * In the event of an unexpected status. + */ + @JsonInclude(value= JsonInclude.Include.NON_NULL) + private Integer httpStatus; +} diff --git a/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/errors/ExternalTestingException.java b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/errors/ExternalTestingException.java new file mode 100644 index 0000000000..33fa0f4477 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/errors/ExternalTestingException.java @@ -0,0 +1,51 @@ +/* + * Copyright © 2019 iconectiv + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.core.externaltesting.errors; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.apache.commons.lang3.builder.ToStringBuilder; + +@Data +@EqualsAndHashCode(callSuper=false) +public class ExternalTestingException extends RuntimeException { + + private static final long serialVersionUID = -4357810130868566088L; + + private final String title; + private final int code; + private final String detail; + + public ExternalTestingException(String title, int code, String detail) { + super(title); + this.title = title; + this.code = code; + this.detail = detail; + } + + public ExternalTestingException(String title, int code, String detail, Throwable parent) { + super(title, parent); + this.title = title; + this.code = code; + this.detail = detail; + } + + @Override + public String toString() { + return ToStringBuilder.reflectionToString(this); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/errors/ExternalTestingInitializationException.java b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/errors/ExternalTestingInitializationException.java new file mode 100644 index 0000000000..28f40199ca --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/errors/ExternalTestingInitializationException.java @@ -0,0 +1,33 @@ +/* + * Copyright © 2019 iconectiv + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.core.externaltesting.errors; + +import java.io.IOException; + +@SuppressWarnings("unused") +public class ExternalTestingInitializationException extends IOException { + + private static final long serialVersionUID = -2422448175010311433L; + + public ExternalTestingInitializationException(String message) { + super(message); + } + + public ExternalTestingInitializationException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/factory/ExternalTestingManagerFactory.java b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/factory/ExternalTestingManagerFactory.java new file mode 100644 index 0000000000..e84a4c86a1 --- /dev/null +++ b/openecomp-be/lib/openecomp-sdc-externaltesting-lib/openecomp-sdc-externaltesting-api/src/main/java/org/openecomp/core/externaltesting/factory/ExternalTestingManagerFactory.java @@ -0,0 +1,30 @@ +/* + * Copyright © 2019 iconectiv + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.openecomp.core.externaltesting.factory; + +import org.openecomp.core.factory.api.AbstractComponentFactory; +import org.openecomp.core.factory.api.AbstractFactory; +import org.openecomp.core.externaltesting.api.ExternalTestingManager; + + +@SuppressWarnings("unused") +public abstract class ExternalTestingManagerFactory extends AbstractComponentFactory<ExternalTestingManager> { + + public static ExternalTestingManagerFactory getInstance() { + return AbstractFactory.getInstance(ExternalTestingManagerFactory.class); + } +} |