From ca2cd756cd5d230ba223fbea7edc349ad48a176d Mon Sep 17 00:00:00 2001 From: ecaiyanlinux Date: Fri, 18 Dec 2020 16:36:28 +0100 Subject: [PATCH] Improvements on the return value of ECS rest api Signed-off-by: ecaiyanlinux Change-Id: Ie15c4e61838873aa964cc07c12924264493168e8 Issue-ID: NONRTRIC-314 --- .../controller/EnrichmentController.java | 32 ++++----- .../controlpanel/eiproducerapi/EiProducerApi.java | 11 +++- .../eiproducerapi/EiProducerApiImpl.java | 28 ++++++-- .../model/ProducerRegistrationInfo.java | 75 ++++++++++++++++++++++ .../controlpanel/model}/ProducerStatusInfo.java | 5 +- .../controlpanel/util/JsonArrayHandler.java | 24 +++++++ .../eiproducerapi/EiProducerApiImplTest.java | 58 +++++++++++------ .../portal/nonrtric/controlpanel/mock/EiJobs.java | 31 --------- .../nonrtric/controlpanel/mock/EiProducer.java | 43 ------------- .../nonrtric/controlpanel/mock/EiProducers.java | 29 --------- .../portal/nonrtric/controlpanel/mock/EiType.java | 37 ----------- .../EnrichmentControllerMockConfiguration.java | 68 ++++++++++---------- 12 files changed, 218 insertions(+), 223 deletions(-) create mode 100644 webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/model/ProducerRegistrationInfo.java rename webapp-backend/src/{test/java/org/oransc/portal/nonrtric/controlpanel/mock => main/java/org/oransc/portal/nonrtric/controlpanel/model}/ProducerStatusInfo.java (93%) create mode 100644 webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/util/JsonArrayHandler.java delete mode 100644 webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiJobs.java delete mode 100644 webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiProducer.java delete mode 100644 webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiProducers.java delete mode 100644 webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiType.java diff --git a/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/controller/EnrichmentController.java b/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/controller/EnrichmentController.java index 57019ce..c874dc1 100644 --- a/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/controller/EnrichmentController.java +++ b/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/controller/EnrichmentController.java @@ -19,7 +19,6 @@ */ package org.oransc.portal.nonrtric.controlpanel.controller; -import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonParser; @@ -34,6 +33,9 @@ import org.oransc.portal.nonrtric.controlpanel.ControlPanelConstants; import org.oransc.portal.nonrtric.controlpanel.eiproducerapi.EiProducerApi; import org.oransc.portal.nonrtric.controlpanel.model.JobInfo; import org.oransc.portal.nonrtric.controlpanel.model.ProducerInfo; +import org.oransc.portal.nonrtric.controlpanel.model.ProducerRegistrationInfo; +import org.oransc.portal.nonrtric.controlpanel.model.ProducerRegistrationInfo.ProducerEiTypeRegistrationInfo; +import org.oransc.portal.nonrtric.controlpanel.model.ProducerStatusInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -59,8 +61,6 @@ public class EnrichmentController { private static final Logger logger = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - private static com.google.gson.Gson gson = new GsonBuilder().create(); - // Publish paths in constants so tests are easy to write public static final String CONTROLLER_PATH = ControlPanelConstants.ENDPOINT_PREFIX + "/enrichment"; // Endpoints @@ -95,14 +95,9 @@ public class EnrichmentController { } private List getJobs(JsonElement producerId) { - List jobs = new ArrayList<>(); - ResponseEntity jobsResponse = this.eiProducerApi.getEiJobsForOneEiProducer(producerId.getAsString()); - JsonArray jobsJson = JsonParser.parseString(jobsResponse.getBody()).getAsJsonArray(); - for (JsonElement jobJson : jobsJson) { - JobInfo jobInfo = gson.fromJson(jobJson, JobInfo.class); - jobs.add(jobInfo); - } - return jobs; + ResponseEntity> jobsResponse = + this.eiProducerApi.getEiJobsForOneEiProducer(producerId.getAsString()); + return jobsResponse.getBody(); } @ApiOperation(value = "Get EI producers") @@ -125,19 +120,18 @@ public class EnrichmentController { } private String[] getSupportedTypes(JsonElement producerId) { - ResponseEntity producerResponse = this.eiProducerApi.getEiProducer(producerId.getAsString()); - JsonArray supportedTypesJson = JsonParser.parseString(producerResponse.getBody()).getAsJsonObject() - .get("supported_ei_types").getAsJsonArray(); + ResponseEntity producerResponse = + this.eiProducerApi.getEiProducer(producerId.getAsString()); List supportedTypes = new ArrayList<>(); - for (JsonElement typeJson : supportedTypesJson) { - supportedTypes.add(typeJson.getAsJsonObject().get("ei_type_identity").getAsString()); + for (ProducerEiTypeRegistrationInfo type : producerResponse.getBody().types) { + supportedTypes.add(type.eiTypeId); } return supportedTypes.toArray(new String[0]); } private String getProducerStatus(JsonElement producerId) { - ResponseEntity statusResponse = this.eiProducerApi.getEiProducerStatus(producerId.getAsString()); - return JsonParser.parseString(statusResponse.getBody()).getAsJsonObject().get("operational_state") - .getAsString(); + ResponseEntity statusResponse = + this.eiProducerApi.getEiProducerStatus(producerId.getAsString()); + return statusResponse.getBody().opState.toString(); } } diff --git a/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/eiproducerapi/EiProducerApi.java b/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/eiproducerapi/EiProducerApi.java index 943b9f9..60a3300 100644 --- a/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/eiproducerapi/EiProducerApi.java +++ b/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/eiproducerapi/EiProducerApi.java @@ -19,16 +19,21 @@ */ package org.oransc.portal.nonrtric.controlpanel.eiproducerapi; +import java.util.List; + +import org.oransc.portal.nonrtric.controlpanel.model.JobInfo; +import org.oransc.portal.nonrtric.controlpanel.model.ProducerRegistrationInfo; +import org.oransc.portal.nonrtric.controlpanel.model.ProducerStatusInfo; import org.springframework.http.ResponseEntity; public interface EiProducerApi { public ResponseEntity getAllEiProducerIds(); - public ResponseEntity getEiProducer(String eiProducerId); + public ResponseEntity getEiProducer(String eiProducerId); - public ResponseEntity getEiJobsForOneEiProducer(String eiProducerId); + public ResponseEntity> getEiJobsForOneEiProducer(String eiProducerId); - public ResponseEntity getEiProducerStatus(String eiProducerId); + public ResponseEntity getEiProducerStatus(String eiProducerId); } diff --git a/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/eiproducerapi/EiProducerApiImpl.java b/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/eiproducerapi/EiProducerApiImpl.java index 51be42a..921d586 100644 --- a/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/eiproducerapi/EiProducerApiImpl.java +++ b/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/eiproducerapi/EiProducerApiImpl.java @@ -19,12 +19,20 @@ */ package org.oransc.portal.nonrtric.controlpanel.eiproducerapi; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonSyntaxException; + import java.lang.invoke.MethodHandles; +import java.util.List; import org.json.JSONArray; import org.json.JSONObject; +import org.oransc.portal.nonrtric.controlpanel.model.JobInfo; +import org.oransc.portal.nonrtric.controlpanel.model.ProducerRegistrationInfo; +import org.oransc.portal.nonrtric.controlpanel.model.ProducerStatusInfo; import org.oransc.portal.nonrtric.controlpanel.util.AsyncRestClient; import org.oransc.portal.nonrtric.controlpanel.util.ErrorResponseHandler; +import org.oransc.portal.nonrtric.controlpanel.util.JsonArrayHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -40,6 +48,7 @@ public class EiProducerApiImpl implements EiProducerApi { private static final String STATUS = "/status"; private final AsyncRestClient webClient; + private static com.google.gson.Gson gson = new GsonBuilder().create(); @Autowired public EiProducerApiImpl( @@ -58,18 +67,25 @@ public class EiProducerApiImpl implements EiProducerApi { } @Override - public ResponseEntity getEiProducer(String eiProducerId) { - return getResponseObject(EI_PRODUCERS + "/" + eiProducerId); + public ResponseEntity getEiProducer(String eiProducerId) throws JsonSyntaxException { + ResponseEntity resp = getResponseObject(EI_PRODUCERS + "/" + eiProducerId); + ProducerRegistrationInfo info = gson.fromJson(resp.getBody(), ProducerRegistrationInfo.class); + return new ResponseEntity<>(info, resp.getStatusCode()); } @Override - public ResponseEntity getEiJobsForOneEiProducer(String eiProducerId) { - return getResponseArray(EI_PRODUCERS + "/" + eiProducerId + EI_JOBS); + public ResponseEntity> getEiJobsForOneEiProducer(String eiProducerId) + throws JsonSyntaxException, IllegalStateException { + ResponseEntity resp = getResponseArray(EI_PRODUCERS + "/" + eiProducerId + EI_JOBS); + List jobs = JsonArrayHandler.parseJsonArray(resp.getBody(), JobInfo.class); + return new ResponseEntity<>(jobs, resp.getStatusCode()); } @Override - public ResponseEntity getEiProducerStatus(String eiProducerId) { - return getResponseObject(EI_PRODUCERS + "/" + eiProducerId + STATUS); + public ResponseEntity getEiProducerStatus(String eiProducerId) throws JsonSyntaxException { + ResponseEntity resp = getResponseObject(EI_PRODUCERS + "/" + eiProducerId + STATUS); + ProducerStatusInfo status = gson.fromJson(resp.getBody(), ProducerStatusInfo.class); + return new ResponseEntity<>(status, resp.getStatusCode()); } private ResponseEntity getResponseArray(String url) { diff --git a/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/model/ProducerRegistrationInfo.java b/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/model/ProducerRegistrationInfo.java new file mode 100644 index 0000000..0f4499d --- /dev/null +++ b/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/model/ProducerRegistrationInfo.java @@ -0,0 +1,75 @@ +/*- + * ========================LICENSE_START================================= + * O-RAN-SC + * %% + * Copyright (C) 2020 Nordix Foundation + * %% + * 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. + * ========================LICENSE_END=================================== + */ + +package org.oransc.portal.nonrtric.controlpanel.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.google.gson.annotations.SerializedName; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + +import java.util.Collection; + +import lombok.Builder; + +import org.immutables.gson.Gson; + +@Gson.TypeAdapters +@ApiModel(value = "producer_registration_info", description = "Information for an EI producer") +@Builder +public class ProducerRegistrationInfo { + + @Gson.TypeAdapters + @ApiModel(value = "producer_ei_type_registration_info", description = "Information for an EI type") + @Builder + public static class ProducerEiTypeRegistrationInfo { + + @ApiModelProperty(value = "EI type identity", required = true) + @SerializedName("ei_type_identity") + @JsonProperty(value = "ei_type_identity", required = true) + public String eiTypeId; + + @ApiModelProperty(value = "Json schema for the job data") + @SerializedName("ei_job_data_schema") + @JsonProperty("ei_job_data_schema") + public Object jobDataSchema; + } + + @ApiModelProperty(value = "Supported EI types", required = true) + @SerializedName("supported_ei_types") + @JsonProperty(value = "supported_ei_types", required = true) + public Collection types; + + @ApiModelProperty(value = "callback for EI job", required = true) + @SerializedName("ei_job_callback_url") + @JsonProperty(value = "ei_job_callback_url", required = true) + public String jobCallbackUrl; + + @ApiModelProperty(value = "callback for producer supervision", required = true) + @SerializedName("ei_producer_supervision_callback_url") + @JsonProperty(value = "ei_producer_supervision_callback_url", required = true) + public String producerSupervisionCallbackUrl; + + @ApiModelProperty(value = "status", required = true) + @SerializedName("status") + @JsonProperty(value = "status", required = true) + public ProducerStatusInfo status; +} diff --git a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/ProducerStatusInfo.java b/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/model/ProducerStatusInfo.java similarity index 93% rename from webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/ProducerStatusInfo.java rename to webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/model/ProducerStatusInfo.java index 0a26b65..77f02a8 100644 --- a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/ProducerStatusInfo.java +++ b/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/model/ProducerStatusInfo.java @@ -18,14 +18,17 @@ * ========================LICENSE_END=================================== */ -package org.oransc.portal.nonrtric.controlpanel.mock; +package org.oransc.portal.nonrtric.controlpanel.model; import com.fasterxml.jackson.annotation.JsonProperty; import com.google.gson.annotations.SerializedName; +import lombok.Builder; + import org.immutables.gson.Gson; @Gson.TypeAdapters +@Builder public class ProducerStatusInfo { @Gson.TypeAdapters diff --git a/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/util/JsonArrayHandler.java b/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/util/JsonArrayHandler.java new file mode 100644 index 0000000..7af2429 --- /dev/null +++ b/webapp-backend/src/main/java/org/oransc/portal/nonrtric/controlpanel/util/JsonArrayHandler.java @@ -0,0 +1,24 @@ +package org.oransc.portal.nonrtric.controlpanel.util; + +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonParser; + +import java.util.ArrayList; +import java.util.List; + +public class JsonArrayHandler { + + public static com.google.gson.Gson gson = new GsonBuilder().create(); + + public static List parseJsonArray(String jsonString, Class clazz) { + List result = new ArrayList<>(); + JsonArray jsonArr = JsonParser.parseString(jsonString).getAsJsonArray(); + for (JsonElement jsonElement : jsonArr) { + T json = gson.fromJson(jsonElement.toString(), clazz); + result.add(json); + } + return result; + } +} diff --git a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/eiproducerapi/EiProducerApiImplTest.java b/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/eiproducerapi/EiProducerApiImplTest.java index a388d8b..1f4c21b 100644 --- a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/eiproducerapi/EiProducerApiImplTest.java +++ b/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/eiproducerapi/EiProducerApiImplTest.java @@ -19,15 +19,23 @@ */ package org.oransc.portal.nonrtric.controlpanel.eiproducerapi; +import static org.junit.Assert.assertThrows; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonSyntaxException; + import java.util.Arrays; +import java.util.List; import org.junit.jupiter.api.Test; +import org.oransc.portal.nonrtric.controlpanel.model.JobInfo; +import org.oransc.portal.nonrtric.controlpanel.model.ProducerRegistrationInfo; +import org.oransc.portal.nonrtric.controlpanel.model.ProducerStatusInfo; import org.oransc.portal.nonrtric.controlpanel.util.AsyncRestClient; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -53,6 +61,7 @@ class EiProducerApiImplTest { AsyncRestClient restClientMock = mock(AsyncRestClient.class); EiProducerApiImpl apiUnderTest = new EiProducerApiImpl(restClientMock); + private static com.google.gson.Gson gson = new GsonBuilder().create(); private void whenGetReturnOK(String url, HttpStatus status, String body) { ResponseEntity ret = new ResponseEntity<>(body, status); @@ -86,27 +95,34 @@ class EiProducerApiImplTest { void testGetEiProducerValidJson() { whenGetReturnOK(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1, HttpStatus.OK, EI_PRODUCER_1_INFO_VALID); - ResponseEntity returnedResp = apiUnderTest.getEiProducer(EI_PRODUCER_1); + ResponseEntity returnedResp = apiUnderTest.getEiProducer(EI_PRODUCER_1); assertEquals(HttpStatus.OK, returnedResp.getStatusCode()); - assertEquals(EI_PRODUCER_1_INFO_VALID, returnedResp.getBody()); + assertEquals(EI_PRODUCER_1_INFO_VALID, gson.toJson(returnedResp.getBody())); } @Test - void testGetEiProducerInvalidJson() { + public void whenGetEiProducerExceptionThrown_thenAssertionSucceeds() { whenGetReturnOK(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1, HttpStatus.OK, EI_PRODUCER_1_INFO_INVALID); + Exception exception = assertThrows(JsonSyntaxException.class, () -> { + apiUnderTest.getEiProducer(EI_PRODUCER_1); + }); - ResponseEntity returnedResp = apiUnderTest.getEiProducer(EI_PRODUCER_1); - - assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, returnedResp.getStatusCode()); - assertTrue(returnedResp.getBody().contains("JSONException")); + String expectedMessage = "Expected BEGIN_OBJECT but was STRING"; + String actualMessage = exception.getMessage(); + assertTrue(actualMessage.contains(expectedMessage)); } @Test - void testGetEiJobsForOneEiProducerFailure() { + void whenGetEiJobsForOneEiProducerExceptionThrown_thenAssertionSucceeds() { whenGetReturnFailure(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1 + URL_EI_JOBS, HttpStatus.NOT_FOUND, ""); - ResponseEntity returnedResp = apiUnderTest.getEiJobsForOneEiProducer(EI_PRODUCER_1); - assertEquals(HttpStatus.NOT_FOUND, returnedResp.getStatusCode()); + Exception exception = assertThrows(IllegalStateException.class, () -> { + apiUnderTest.getEiJobsForOneEiProducer(EI_PRODUCER_1); + }); + + String expectedMessage = "Not a JSON Array: null"; + String actualMessage = exception.getMessage(); + assertTrue(actualMessage.contains(expectedMessage)); } @Test @@ -115,9 +131,9 @@ class EiProducerApiImplTest { whenGetReturnOK(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1 + URL_EI_JOBS, HttpStatus.OK, eiJobs); - ResponseEntity returnedResp = apiUnderTest.getEiJobsForOneEiProducer(EI_PRODUCER_1); - assertTrue(returnedResp.getBody().contains("\"ei_job_identity\":\"eijob1\"")); - assertTrue(returnedResp.getBody().contains("\"ei_job_identity\":\"eijob2\"")); + ResponseEntity> returnedResp = apiUnderTest.getEiJobsForOneEiProducer(EI_PRODUCER_1); + assertTrue(gson.toJson(returnedResp.getBody()).contains("\"ei_job_identity\":\"eijob1\"")); + assertTrue(gson.toJson(returnedResp.getBody()).contains("\"ei_job_identity\":\"eijob2\"")); assertEquals(HttpStatus.OK, returnedResp.getStatusCode()); } @@ -125,20 +141,22 @@ class EiProducerApiImplTest { void testGetEiProducerStatusValidJson() { whenGetReturnOK(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1 + URL_STATUS, HttpStatus.OK, EI_PRODUCER_1_STATUS_VALID); - ResponseEntity returnedResp = apiUnderTest.getEiProducerStatus(EI_PRODUCER_1); + ResponseEntity returnedResp = apiUnderTest.getEiProducerStatus(EI_PRODUCER_1); assertEquals(HttpStatus.OK, returnedResp.getStatusCode()); - assertEquals(EI_PRODUCER_1_STATUS_VALID, returnedResp.getBody()); + assertEquals(EI_PRODUCER_1_STATUS_VALID, gson.toJson(returnedResp.getBody())); } @Test - void testGetEiProducerStatusInvalidJson() { + public void whenGetEiProducerStatusExceptionThrown_thenAssertionSucceeds() { whenGetReturnOK(URL_EI_PRODUCERS + "/" + EI_PRODUCER_1 + URL_STATUS, HttpStatus.OK, EI_PRODUCER_1_STATUS_INVALID); + Exception exception = assertThrows(JsonSyntaxException.class, () -> { + apiUnderTest.getEiProducerStatus(EI_PRODUCER_1); + }); - ResponseEntity returnedResp = apiUnderTest.getEiProducerStatus(EI_PRODUCER_1); - - assertEquals(HttpStatus.INTERNAL_SERVER_ERROR, returnedResp.getStatusCode()); - assertTrue(returnedResp.getBody().contains("JSONException")); + String expectedMessage = "Expected BEGIN_OBJECT but was STRING"; + String actualMessage = exception.getMessage(); + assertTrue(actualMessage.contains(expectedMessage)); } } diff --git a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiJobs.java b/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiJobs.java deleted file mode 100644 index ce831d3..0000000 --- a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiJobs.java +++ /dev/null @@ -1,31 +0,0 @@ -/*- - * ========================LICENSE_START================================= - * O-RAN-SC - * %% - * Copyright (C) 2019 Nordix Foundation - * Modifications Copyright (C) 2020 Nordix Foundation - * %% - * 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. - * ========================LICENSE_END=================================== - */ -package org.oransc.portal.nonrtric.controlpanel.mock; - -import java.util.ArrayList; - -import org.oransc.portal.nonrtric.controlpanel.model.JobInfo; - -public class EiJobs extends ArrayList { - - private static final long serialVersionUID = -928428052502491021L; - -} diff --git a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiProducer.java b/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiProducer.java deleted file mode 100644 index 603dd5a..0000000 --- a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiProducer.java +++ /dev/null @@ -1,43 +0,0 @@ -/*- - * ========================LICENSE_START================================= - * O-RAN-SC - * %% - * Copyright (C) 2019 Nordix Foundation - * Modifications Copyright (C) 2020 Nordix Foundation - * %% - * 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. - * ========================LICENSE_END=================================== - */ -package org.oransc.portal.nonrtric.controlpanel.mock; - -import java.util.List; - -import org.immutables.gson.Gson; -import org.immutables.value.Value; - -@Value.Immutable -@Gson.TypeAdapters -public interface EiProducer { - - public String ei_producer_id(); - - public String ei_job_creation_callback_url(); - - public String ei_job_deletion_callback_url(); - - public String ei_producer_supervision_callback_url(); - - public List supported_ei_types(); - - public ProducerStatusInfo status(); -} diff --git a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiProducers.java b/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiProducers.java deleted file mode 100644 index 5bc3ec8..0000000 --- a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiProducers.java +++ /dev/null @@ -1,29 +0,0 @@ -/*- - * ========================LICENSE_START================================= - * O-RAN-SC - * %% - * Copyright (C) 2019 Nordix Foundation - * Modifications Copyright (C) 2020 Nordix Foundation - * %% - * 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. - * ========================LICENSE_END=================================== - */ -package org.oransc.portal.nonrtric.controlpanel.mock; - -import java.util.ArrayList; - -public class EiProducers extends ArrayList { - - private static final long serialVersionUID = -928428052502491021L; - -} diff --git a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiType.java b/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiType.java deleted file mode 100644 index ce64fad..0000000 --- a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EiType.java +++ /dev/null @@ -1,37 +0,0 @@ -/*- - * ========================LICENSE_START================================= - * O-RAN-SC - * %% - * Copyright (C) 2019 Nordix Foundation - * Modifications Copyright (C) 2020 Nordix Foundation - * %% - * 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. - * ========================LICENSE_END=================================== - */ -package org.oransc.portal.nonrtric.controlpanel.mock; - -import java.util.List; - -import org.immutables.gson.Gson; -import org.immutables.value.Value; - -@Value.Immutable -@Gson.TypeAdapters -public interface EiType { - - public String ei_type_identity(); - - public Object ei_job_data_schema(); - - public List ei_producer_ids(); -} diff --git a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EnrichmentControllerMockConfiguration.java b/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EnrichmentControllerMockConfiguration.java index c0fb4f1..b9dcc6b 100644 --- a/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EnrichmentControllerMockConfiguration.java +++ b/webapp-backend/src/test/java/org/oransc/portal/nonrtric/controlpanel/mock/EnrichmentControllerMockConfiguration.java @@ -37,6 +37,9 @@ import java.util.stream.Collectors; import org.oransc.portal.nonrtric.controlpanel.eiproducerapi.EiProducerApi; import org.oransc.portal.nonrtric.controlpanel.model.JobInfo; +import org.oransc.portal.nonrtric.controlpanel.model.ProducerRegistrationInfo; +import org.oransc.portal.nonrtric.controlpanel.model.ProducerRegistrationInfo.ProducerEiTypeRegistrationInfo; +import org.oransc.portal.nonrtric.controlpanel.model.ProducerStatusInfo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.test.context.TestConfiguration; @@ -74,29 +77,29 @@ public class EnrichmentControllerMockConfiguration { } public ResponseEntity getAllEiProducers() { - EiProducers result = new EiProducers(); + List result = new ArrayList<>(); result.addAll(database.getAllEiProducers()); return new ResponseEntity<>(gson.toJson(result), HttpStatus.OK); } @Override - public ResponseEntity getEiProducer(String eiProducerId) { - EiProducer result = database.getEiProducerInstance(eiProducerId); - return new ResponseEntity<>(gson.toJson(result), HttpStatus.OK); + public ResponseEntity getEiProducer(String eiProducerId) { + ProducerRegistrationInfo result = database.getEiProducerInstance(eiProducerId); + return new ResponseEntity<>(result, HttpStatus.OK); } @Override - public ResponseEntity getEiJobsForOneEiProducer(String eiProducerId) { - EiJobs result = new EiJobs(); + public ResponseEntity> getEiJobsForOneEiProducer(String eiProducerId) { + List result = new ArrayList<>(); result.addAll(database.getAllEiJobs()); - return new ResponseEntity<>(gson.toJson(result), HttpStatus.OK); + return new ResponseEntity<>(result, HttpStatus.OK); } @Override - public ResponseEntity getEiProducerStatus(String eiProducerId) { - EiProducer result = database.getEiProducerInstance(eiProducerId); - return new ResponseEntity<>(gson.toJson(result.status()), HttpStatus.OK); + public ResponseEntity getEiProducerStatus(String eiProducerId) { + ProducerRegistrationInfo result = database.getEiProducerInstance(eiProducerId); + return new ResponseEntity<>(result.status, HttpStatus.OK); } } @@ -104,19 +107,19 @@ public class EnrichmentControllerMockConfiguration { Database() { - List supported_types = new ArrayList(); + List supported_types = new ArrayList(); - // Create EiType instance + // Create ProducerEiTypeRegistrationInfo instance String schema = getStringFromFile("ei-type-1.json"); - EiType eiType1 = getEiTypeInstance("type1", schema, Arrays.asList("prod-1")); + ProducerEiTypeRegistrationInfo eiType1 = getEiTypeInstance("type1", schema, Arrays.asList("prod-1")); supported_types.add(eiType1); - // Create EiType instance + // Create ProducerEiTypeRegistrationInfo instance schema = getStringFromFile("ei-type-2.json"); - EiType eiType2 = getEiTypeInstance("type2", schema, Arrays.asList("prod-1")); + ProducerEiTypeRegistrationInfo eiType2 = getEiTypeInstance("type2", schema, Arrays.asList("prod-1")); supported_types.add(eiType2); - // Create EiProducer instance + // Create ProducerRegistrationInfo instance putEiProducerInstance("prod-1", "http://example.com/", "http://example.com/", "http://example.com/", supported_types, new ProducerStatusInfo(ProducerStatusInfo.OperationalState.ENABLED)); @@ -152,22 +155,20 @@ public class EnrichmentControllerMockConfiguration { } void putEiProducerInstance(String id, String creation_url, String deletion_url, String callback_url, - List supported_types, ProducerStatusInfo status) { - EiProducer eiProducer = ImmutableEiProducer.builder() // - .ei_producer_id(id) // - .ei_job_creation_callback_url(creation_url) // - .ei_job_deletion_callback_url(deletion_url) // - .ei_producer_supervision_callback_url(callback_url) // - .supported_ei_types(supported_types) // - .status(status).build(); // + List supported_types, ProducerStatusInfo status) { + ProducerRegistrationInfo eiProducer = ProducerRegistrationInfo.builder() // + .jobCallbackUrl(creation_url) // + .producerSupervisionCallbackUrl(callback_url) // + .types(supported_types) // + .status(status) // + .build(); // eiProducers.put(id, eiProducer); } - EiType getEiTypeInstance(String id, Object data, List producer_ids) { - return ImmutableEiType.builder() // - .ei_type_identity(id) // - .ei_job_data_schema(data) // - .ei_producer_ids(producer_ids) // + ProducerEiTypeRegistrationInfo getEiTypeInstance(String id, Object data, List producer_ids) { + return ProducerEiTypeRegistrationInfo.builder() // + .eiTypeId(id) // + .jobDataSchema(data) // .build(); // } @@ -179,8 +180,8 @@ public class EnrichmentControllerMockConfiguration { eiJobs.remove(id); } - EiProducer getEiProducerInstance(String id) throws RestClientException { - EiProducer i = eiProducers.get(id); + ProducerRegistrationInfo getEiProducerInstance(String id) throws RestClientException { + ProducerRegistrationInfo i = eiProducers.get(id); if (i == null) { throw new RestClientException("Producer not found: " + id); } @@ -191,16 +192,15 @@ public class EnrichmentControllerMockConfiguration { return Collections.unmodifiableCollection(eiProducers.keySet()); } - public Collection getAllEiProducers() { + public Collection getAllEiProducers() { return eiProducers.values(); } public List getAllEiJobs() { return new ArrayList<>(eiJobs.values()); - } - private Map eiProducers = new HashMap<>(); + private Map eiProducers = new HashMap<>(); private Map eiJobs = new HashMap<>(); } } -- 2.16.6