X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=enrichment-coordinator-service%2Fsrc%2Ftest%2Fjava%2Forg%2Foransc%2Fenrichment%2FApplicationTest.java;h=8c8ce5f142a447f7106faec5642d61d0a6f32c25;hb=0f6367023720ecc7d7b4b38cbbc4282792172a89;hp=5292d90e00d3e35afd657dd45f5a2a9860bd54ac;hpb=f0e49a07dad877f94f635dda4ab477b9636536c8;p=nonrtric.git diff --git a/enrichment-coordinator-service/src/test/java/org/oransc/enrichment/ApplicationTest.java b/enrichment-coordinator-service/src/test/java/org/oransc/enrichment/ApplicationTest.java index 5292d90e..8c8ce5f1 100644 --- a/enrichment-coordinator-service/src/test/java/org/oransc/enrichment/ApplicationTest.java +++ b/enrichment-coordinator-service/src/test/java/org/oransc/enrichment/ApplicationTest.java @@ -253,7 +253,7 @@ class ApplicationTest { @Test void a1eGetEiJobsIds() throws Exception { putInfoProducerWithOneType(PRODUCER_ID, TYPE_ID); - putEiJob(TYPE_ID, "jobId"); + putInfoJob(TYPE_ID, "jobId"); final String JOB_ID_JSON = "[\"jobId\"]"; String url = A1eConsts.API_ROOT + "/eijobs?infoTypeId=typeId"; String rsp = restClient().get(url).block(); @@ -283,7 +283,7 @@ class ApplicationTest { @Test void consumerGetInformationJobsIds() throws Exception { putInfoProducerWithOneType(PRODUCER_ID, TYPE_ID); - putEiJob(TYPE_ID, "jobId"); + putInfoJob(TYPE_ID, "jobId"); final String JOB_ID_JSON = "[\"jobId\"]"; String url = ConsumerConsts.API_ROOT + "/info-jobs?infoTypeId=typeId"; String rsp = restClient().get(url).block(); @@ -313,7 +313,7 @@ class ApplicationTest { @Test void a1eGetEiJob() throws Exception { putInfoProducerWithOneType(PRODUCER_ID, TYPE_ID); - putEiJob(TYPE_ID, "jobId"); + putInfoJob(TYPE_ID, "jobId"); String url = A1eConsts.API_ROOT + "/eijobs/jobId"; String rsp = restClient().get(url).block(); A1eEiJobInfo info = gson.fromJson(rsp, A1eEiJobInfo.class); @@ -324,7 +324,7 @@ class ApplicationTest { @Test void consumerGetEiJob() throws Exception { putInfoProducerWithOneType(PRODUCER_ID, TYPE_ID); - putEiJob(TYPE_ID, "jobId"); + putInfoJob(TYPE_ID, "jobId"); String url = ConsumerConsts.API_ROOT + "/info-jobs/jobId"; String rsp = restClient().get(url).block(); ConsumerJobInfo info = gson.fromJson(rsp, ConsumerJobInfo.class); @@ -349,15 +349,15 @@ class ApplicationTest { @Test void a1eGetEiJobStatus() throws Exception { putInfoProducerWithOneType(PRODUCER_ID, TYPE_ID); - putEiJob(TYPE_ID, "jobId"); + putInfoJob(TYPE_ID, "jobId"); verifyJobStatus("jobId", "ENABLED"); } @Test - void consumerGetEiJobStatus() throws Exception { + void consumerGetInfoJobStatus() throws Exception { putInfoProducerWithOneType(PRODUCER_ID, TYPE_ID); - putEiJob(TYPE_ID, "jobId"); + putInfoJob(TYPE_ID, "jobId"); String url = ConsumerConsts.API_ROOT + "/info-jobs/jobId/status"; String rsp = restClient().get(url).block(); @@ -372,7 +372,7 @@ class ApplicationTest { @Test void a1eDeleteEiJob() throws Exception { putInfoProducerWithOneType(PRODUCER_ID, TYPE_ID); - putEiJob(TYPE_ID, "jobId"); + putInfoJob(TYPE_ID, "jobId"); assertThat(this.infoJobs.size()).isEqualTo(1); String url = A1eConsts.API_ROOT + "/eijobs/jobId"; restClient().delete(url).block(); @@ -386,7 +386,7 @@ class ApplicationTest { @Test void consumerDeleteEiJob() throws Exception { putInfoProducerWithOneType(PRODUCER_ID, TYPE_ID); - putEiJob(TYPE_ID, "jobId"); + putInfoJob(TYPE_ID, "jobId"); assertThat(this.infoJobs.size()).isEqualTo(1); String url = ConsumerConsts.API_ROOT + "/info-jobs/jobId"; restClient().delete(url).block(); @@ -395,6 +395,8 @@ class ApplicationTest { ProducerSimulatorController.TestResults simulatorResults = this.producerSimulator.getTestResults(); await().untilAsserted(() -> assertThat(simulatorResults.jobsStopped.size()).isEqualTo(1)); assertThat(simulatorResults.jobsStopped.get(0)).isEqualTo("jobId"); + + testErrorCode(restClient().delete(url), HttpStatus.NOT_FOUND, "Could not find Information job: jobId"); } @Test @@ -415,7 +417,7 @@ class ApplicationTest { void a1ePutEiJob() throws Exception { // Test that one producer accepting a job is enough putInfoProducerWithOneType(PRODUCER_ID, TYPE_ID); - putEiProducerWithOneTypeRejecting("simulateProducerError", TYPE_ID); + putInfoProducerWithOneTypeRejecting("simulateProducerError", TYPE_ID); String url = A1eConsts.API_ROOT + "/eijobs/jobId"; String body = gson.toJson(infoJobInfo()); @@ -488,7 +490,10 @@ class ApplicationTest { "targetUri", "jobStatusUrl"); String body = gson.toJson(jobInfo); - testErrorCode(restClient().put(url, body), HttpStatus.CONFLICT, "Json validation failure"); + testErrorCode(restClient().put(url, body), HttpStatus.BAD_REQUEST, "Json validation failure"); + + testErrorCode(restClient().put(url, "{jojo}"), HttpStatus.BAD_REQUEST, "", false); + } @Test @@ -501,7 +506,7 @@ class ApplicationTest { new ConsumerJobInfo("typeId", jsonObject("{ \"XXstring\" : \"value\" }"), "owner", "targetUri", null); String body = gson.toJson(jobInfo); - testErrorCode(restClient().put(url, body), HttpStatus.CONFLICT, "Json validation failure"); + testErrorCode(restClient().put(url, body), HttpStatus.BAD_REQUEST, "Json validation failure"); } @Test @@ -513,14 +518,14 @@ class ApplicationTest { ConsumerJobInfo jobInfo = new ConsumerJobInfo(TYPE_ID, jsonObject(), "owner", "junk", null); String body = gson.toJson(jobInfo); - testErrorCode(restClient().put(url, body), HttpStatus.CONFLICT, "URI: junk is not absolute"); + testErrorCode(restClient().put(url, body), HttpStatus.BAD_REQUEST, "URI: junk is not absolute"); } @Test void a1eChangingEiTypeGetRejected() throws Exception { putInfoProducerWithOneType("producer1", "typeId1"); putInfoProducerWithOneType("producer2", "typeId2"); - putEiJob("typeId1", "jobId"); + putInfoJob("typeId1", "jobId"); String url = A1eConsts.API_ROOT + "/eijobs/jobId"; String body = gson.toJson(infoJobInfo("typeId2", "jobId")); @@ -532,7 +537,7 @@ class ApplicationTest { void consumerChangingInfoTypeGetRejected() throws Exception { putInfoProducerWithOneType("producer1", "typeId1"); putInfoProducerWithOneType("producer2", "typeId2"); - putEiJob("typeId1", "jobId"); + putInfoJob("typeId1", "jobId"); String url = ConsumerConsts.API_ROOT + "/info-jobs/jobId"; String body = gson.toJson(consumerJobInfo("typeId2", "jobId")); @@ -550,13 +555,15 @@ class ApplicationTest { String url = ProducerConsts.API_ROOT + "/info-types/" + TYPE_ID; String body = "{}"; testErrorCode(restClient().put(url, body), HttpStatus.BAD_REQUEST, "No schema provided"); + + testErrorCode(restClient().post(url, body), HttpStatus.METHOD_NOT_ALLOWED, "", false); } @Test void producerDeleteEiType() throws Exception { putInfoType(TYPE_ID); - this.putEiJob(TYPE_ID, "job1"); - this.putEiJob(TYPE_ID, "job2"); + this.putInfoJob(TYPE_ID, "job1"); + this.putInfoJob(TYPE_ID, "job2"); deleteInfoType(TYPE_ID); assertThat(this.infoTypes.size()).isZero(); @@ -570,15 +577,14 @@ class ApplicationTest { void producerDeleteEiTypeExistingProducer() throws Exception { putInfoProducerWithOneType(PRODUCER_ID, TYPE_ID); String url = ProducerConsts.API_ROOT + "/info-types/" + TYPE_ID; - testErrorCode(restClient().delete(url), HttpStatus.NOT_ACCEPTABLE, - "The type has active producers: " + PRODUCER_ID); + testErrorCode(restClient().delete(url), HttpStatus.CONFLICT, "The type has active producers: " + PRODUCER_ID); assertThat(this.infoTypes.size()).isEqualTo(1); } @Test void producerPutProducerWithOneType_rejecting() throws JsonMappingException, JsonProcessingException, ServiceException { - putEiProducerWithOneTypeRejecting("simulateProducerError", TYPE_ID); + putInfoProducerWithOneTypeRejecting("simulateProducerError", TYPE_ID); String url = A1eConsts.API_ROOT + "/eijobs/" + EI_JOB_ID; String body = gson.toJson(infoJobInfo()); restClient().put(url, body).block(); @@ -592,12 +598,12 @@ class ApplicationTest { } @Test - void producerGetEiProducerTypes() throws Exception { + void producerGetInfoProducerTypes() throws Exception { final String EI_TYPE_ID_2 = TYPE_ID + "_2"; putInfoProducerWithOneType("producer1", TYPE_ID); - putEiJob(TYPE_ID, "jobId"); + putInfoJob(TYPE_ID, "jobId"); putInfoProducerWithOneType("producer2", EI_TYPE_ID_2); - putEiJob(EI_TYPE_ID_2, "jobId2"); + putInfoJob(EI_TYPE_ID_2, "jobId2"); String url = ProducerConsts.API_ROOT + "/info-types"; ResponseEntity resp = restClient().getForEntity(url).block(); @@ -607,7 +613,7 @@ class ApplicationTest { } @Test - void producerPutEiProducer() throws Exception { + void producerPutInfoProducer() throws Exception { this.putInfoType(TYPE_ID); String url = ProducerConsts.API_ROOT + "/info-producers/infoProducerId"; String body = gson.toJson(producerInfoRegistratioInfo(TYPE_ID)); @@ -624,15 +630,18 @@ class ApplicationTest { resp = restClient().putForEntity(url, body).block(); assertThat(resp.getStatusCode()).isEqualTo(HttpStatus.OK); + // GET info producer resp = restClient().getForEntity(url).block(); assertThat(resp.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(resp.getBody()).isEqualTo(body); + + testErrorCode(restClient().get(url + "junk"), HttpStatus.NOT_FOUND, "Could not find Information Producer"); } @Test - void producerPutEiProducerExistingJob() throws Exception { + void producerPutInfoProducerExistingJob() throws Exception { putInfoProducerWithOneType(PRODUCER_ID, TYPE_ID); - putEiJob(TYPE_ID, "jobId"); + putInfoJob(TYPE_ID, "jobId"); String url = ProducerConsts.API_ROOT + "/info-producers/infoProducerId"; String body = gson.toJson(producerInfoRegistratioInfo(TYPE_ID)); restClient().putForEntity(url, body).block(); @@ -644,14 +653,14 @@ class ApplicationTest { } @Test - void testPutEiProducer_noType() throws Exception { + void testPutInfoProducer_noType() throws Exception { String url = ProducerConsts.API_ROOT + "/info-producers/infoProducerId"; String body = gson.toJson(producerInfoRegistratioInfo(TYPE_ID)); testErrorCode(restClient().put(url, body), HttpStatus.NOT_FOUND, "Information type not found"); } @Test - void producerPutProducerAndEiJob() throws Exception { + void producerPutProducerAndInfoJob() throws Exception { this.putInfoType(TYPE_ID); String url = ProducerConsts.API_ROOT + "/info-producers/infoProducerId"; String body = gson.toJson(producerInfoRegistratioInfo(TYPE_ID)); @@ -670,10 +679,10 @@ class ApplicationTest { } @Test - void producerGetEiJobsForProducer() throws JsonMappingException, JsonProcessingException, ServiceException { + void producerGetInfoJobsForProducer() throws JsonMappingException, JsonProcessingException, ServiceException { putInfoProducerWithOneType(PRODUCER_ID, TYPE_ID); - putEiJob(TYPE_ID, "jobId1"); - putEiJob(TYPE_ID, "jobId2"); + putInfoJob(TYPE_ID, "jobId1"); + putInfoJob(TYPE_ID, "jobId2"); // PUT a consumerRestApiTestBase.java String url = ProducerConsts.API_ROOT + "/info-producers/infoProducerId"; @@ -690,7 +699,7 @@ class ApplicationTest { } @Test - void producerDeleteEiProducer() throws Exception { + void producerDeleteInfoProducer() throws Exception { putInfoProducerWithOneType("infoProducerId", TYPE_ID); putInfoProducerWithOneType("infoProducerId2", TYPE_ID); @@ -698,18 +707,21 @@ class ApplicationTest { InfoType type = this.infoTypes.getType(TYPE_ID); assertThat(this.infoProducers.getProducerIdsForType(type.getId())).contains("infoProducerId"); assertThat(this.infoProducers.getProducerIdsForType(type.getId())).contains("infoProducerId2"); - putEiJob(TYPE_ID, "jobId"); + putInfoJob(TYPE_ID, "jobId"); assertThat(this.infoJobs.size()).isEqualTo(1); - deleteEiProducer("infoProducerId"); + deleteInfoProducer("infoProducerId"); assertThat(this.infoProducers.size()).isEqualTo(1); assertThat(this.infoProducers.getProducerIdsForType(TYPE_ID)).doesNotContain("infoProducerId"); verifyJobStatus("jobId", "ENABLED"); - deleteEiProducer("infoProducerId2"); + deleteInfoProducer("infoProducerId2"); assertThat(this.infoProducers.size()).isZero(); assertThat(this.infoTypes.size()).isEqualTo(1); verifyJobStatus("jobId", "DISABLED"); + + String url = ProducerConsts.API_ROOT + "/info-producers/" + "junk"; + testErrorCode(restClient().delete(url), HttpStatus.NOT_FOUND, "Could not find Information Producer"); } @Test @@ -718,13 +730,13 @@ class ApplicationTest { ProducerSimulatorController.TestResults producerCalls = this.producerSimulator.getTestResults(); putInfoProducerWithOneType("infoProducerId", TYPE_ID); - putEiJob(TYPE_ID, "jobId"); + putInfoJob(TYPE_ID, "jobId"); putInfoProducerWithOneType("infoProducerId2", TYPE_ID); await().untilAsserted(() -> assertThat(producerCalls.jobsStarted.size()).isEqualTo(2)); - deleteEiProducer("infoProducerId2"); + deleteInfoProducer("infoProducerId2"); assertThat(this.infoTypes.size()).isEqualTo(1); // The type remains, one producer left - deleteEiProducer("infoProducerId"); + deleteInfoProducer("infoProducerId"); assertThat(this.infoTypes.size()).isEqualTo(1); // The type remains assertThat(this.infoJobs.size()).isEqualTo(1); // The job remains await().untilAsserted(() -> assertThat(consumerCalls.eiJobStatusCallbacks.size()).isEqualTo(1)); @@ -742,7 +754,7 @@ class ApplicationTest { // Create a job putInfoProducerWithOneType(PRODUCER_ID, TYPE_ID); - putEiJob(TYPE_ID, EI_JOB_ID); + putInfoJob(TYPE_ID, EI_JOB_ID); // change the type for the producer, the job shall be disabled putInfoProducerWithOneType(PRODUCER_ID, "junk"); @@ -759,13 +771,15 @@ class ApplicationTest { } @Test - void producerGetProducerEiType() throws JsonMappingException, JsonProcessingException, ServiceException { + void producerGetProducerInfoType() throws JsonMappingException, JsonProcessingException, ServiceException { putInfoProducerWithOneType(PRODUCER_ID, TYPE_ID); String url = ProducerConsts.API_ROOT + "/info-types/" + TYPE_ID; ResponseEntity resp = restClient().getForEntity(url).block(); ProducerInfoTypeInfo info = gson.fromJson(resp.getBody(), ProducerInfoTypeInfo.class); assertThat(info.jobDataSchema).isNotNull(); assertThat(info.typeSpecificInformation).isNotNull(); + + testErrorCode(restClient().get(url + "junk"), HttpStatus.NOT_FOUND, "Information type not found"); } @Test @@ -788,14 +802,14 @@ class ApplicationTest { void producerSupervision() throws JsonMappingException, JsonProcessingException, ServiceException { ConsumerSimulatorController.TestResults consumerResults = this.consumerSimulator.getTestResults(); - putEiProducerWithOneTypeRejecting("simulateProducerError", TYPE_ID); + putInfoProducerWithOneTypeRejecting("simulateProducerError", TYPE_ID); { // Create a job putInfoProducerWithOneType(PRODUCER_ID, TYPE_ID); - putEiJob(TYPE_ID, EI_JOB_ID); + putInfoJob(TYPE_ID, EI_JOB_ID); verifyJobStatus(EI_JOB_ID, "ENABLED"); - deleteEiProducer(PRODUCER_ID); + deleteInfoProducer(PRODUCER_ID); // A Job disabled status notification shall now be received await().untilAsserted(() -> assertThat(consumerResults.eiJobStatusCallbacks.size()).isEqualTo(1)); assertThat(consumerResults.eiJobStatusCallbacks.get(0).state) @@ -834,7 +848,7 @@ class ApplicationTest { // suceeded putInfoProducerWithOneType(PRODUCER_ID, TYPE_ID); - putEiJob(TYPE_ID, EI_JOB_ID); + putInfoJob(TYPE_ID, EI_JOB_ID); InfoProducer producer = this.infoProducers.getProducer(PRODUCER_ID); InfoJob job = this.infoJobs.getJob(EI_JOB_ID); @@ -855,8 +869,8 @@ class ApplicationTest { @Test void testGetStatus() throws JsonMappingException, JsonProcessingException, ServiceException { - putEiProducerWithOneTypeRejecting("simulateProducerError", TYPE_ID); - putEiProducerWithOneTypeRejecting("simulateProducerError2", TYPE_ID); + putInfoProducerWithOneTypeRejecting("simulateProducerError", TYPE_ID); + putInfoProducerWithOneTypeRejecting("simulateProducerError2", TYPE_ID); String url = "/status"; ResponseEntity resp = restClient().getForEntity(url).block(); @@ -866,8 +880,8 @@ class ApplicationTest { @Test void testEiJobDatabase() throws Exception { putInfoProducerWithOneType(PRODUCER_ID, TYPE_ID); - putEiJob(TYPE_ID, "jobId1"); - putEiJob(TYPE_ID, "jobId2"); + putInfoJob(TYPE_ID, "jobId1"); + putInfoJob(TYPE_ID, "jobId2"); assertThat(this.infoJobs.size()).isEqualTo(2); @@ -926,6 +940,7 @@ class ApplicationTest { void testConsumerTypeSubscriptionDatabase() { final String callbackUrl = baseUrl() + ConsumerSimulatorController.getTypeStatusCallbackUrl(); final ConsumerTypeSubscriptionInfo info = new ConsumerTypeSubscriptionInfo(callbackUrl, "owner"); + // PUT a subscription String body = gson.toJson(info); restClient().putForEntity(typeSubscriptionUrl() + "/subscriptionId", body).block(); @@ -947,6 +962,12 @@ class ApplicationTest { final String callbackUrl = baseUrl() + ConsumerSimulatorController.getTypeStatusCallbackUrl(); final ConsumerTypeSubscriptionInfo info = new ConsumerTypeSubscriptionInfo(callbackUrl, "owner"); + testErrorCode(restClient().get(typeSubscriptionUrl() + "/junk"), HttpStatus.NOT_FOUND, + "Could not find Information subscription: junk"); + + testErrorCode(restClient().delete(typeSubscriptionUrl() + "/junk"), HttpStatus.NOT_FOUND, + "Could not find Information subscription: junk"); + { // PUT a subscription String body = gson.toJson(info); @@ -1007,7 +1028,7 @@ class ApplicationTest { // Test that subscriptions are removed for a unresponsive consumer // PUT a subscription with a junk callback - final ConsumerTypeSubscriptionInfo info = new ConsumerTypeSubscriptionInfo(baseUrl() + "JUNK", "owner"); + final ConsumerTypeSubscriptionInfo info = new ConsumerTypeSubscriptionInfo(baseUrl() + "/JUNK", "owner"); String body = gson.toJson(info); restClient().putForEntity(typeSubscriptionUrl() + "/subscriptionId", body).block(); assertThat(this.infoTypeSubscriptions.size()).isEqualTo(1); @@ -1031,7 +1052,7 @@ class ApplicationTest { return ConsumerConsts.API_ROOT + "/info-type-subscription"; } - private void deleteEiProducer(String infoProducerId) { + private void deleteInfoProducer(String infoProducerId) { String url = ProducerConsts.API_ROOT + "/info-producers/" + infoProducerId; restClient().deleteForEntity(url).block(); } @@ -1050,7 +1071,7 @@ class ApplicationTest { assertThat(statusInfo.opState).isEqualTo(expectedOperationalState); } - ProducerInfoTypeInfo producerEiTypeRegistrationInfo(String typeId) + ProducerInfoTypeInfo ProducerInfoTypeRegistrationInfo(String typeId) throws JsonMappingException, JsonProcessingException { return new ProducerInfoTypeInfo(jsonSchemaObject(), typeSpecifcInfoObject()); } @@ -1120,7 +1141,7 @@ class ApplicationTest { return jsonObject("{ " + EI_JOB_PROPERTY + " : \"value\" }"); } - private InfoJob putEiJob(String infoTypeId, String jobId) + private InfoJob putInfoJob(String infoTypeId, String jobId) throws JsonMappingException, JsonProcessingException, ServiceException { String url = A1eConsts.API_ROOT + "/eijobs/" + jobId; @@ -1133,7 +1154,7 @@ class ApplicationTest { private HttpStatus putInfoType(String infoTypeId) throws JsonMappingException, JsonProcessingException, ServiceException { String url = ProducerConsts.API_ROOT + "/info-types/" + infoTypeId; - String body = gson.toJson(producerEiTypeRegistrationInfo(infoTypeId)); + String body = gson.toJson(ProducerInfoTypeRegistrationInfo(infoTypeId)); ResponseEntity resp = restClient().putForEntity(url, body).block(); this.infoTypes.getType(infoTypeId); @@ -1148,7 +1169,7 @@ class ApplicationTest { restClient().delete(deleteInfoTypeUrl(typeId)).block(); } - private InfoType putEiProducerWithOneTypeRejecting(String producerId, String infoTypeId) + private InfoType putInfoProducerWithOneTypeRejecting(String producerId, String infoTypeId) throws JsonMappingException, JsonProcessingException, ServiceException { this.putInfoType(infoTypeId); String url = ProducerConsts.API_ROOT + "/info-producers/" + producerId;