X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=policy-agent%2Fsrc%2Ftest%2Fjava%2Forg%2Foransc%2Fpolicyagent%2FApplicationTest.java;h=847cde1942b4d6019f1a61415369ab16ff42ee90;hb=refs%2Fchanges%2F82%2F2382%2F1;hp=5b1f3ca4e028c7288a7a727f403886f5bdb945ea;hpb=c3ed1a5199e3f5f539cc813b9a383dd156fed2e2;p=nonrtric.git diff --git a/policy-agent/src/test/java/org/oransc/policyagent/ApplicationTest.java b/policy-agent/src/test/java/org/oransc/policyagent/ApplicationTest.java index 5b1f3ca4..847cde19 100644 --- a/policy-agent/src/test/java/org/oransc/policyagent/ApplicationTest.java +++ b/policy-agent/src/test/java/org/oransc/policyagent/ApplicationTest.java @@ -21,6 +21,7 @@ package org.oransc.policyagent; import static org.assertj.core.api.Assertions.assertThat; +import static org.awaitility.Awaitility.await; import static org.junit.Assert.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -30,6 +31,7 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonParser; +import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Vector; @@ -39,8 +41,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.oransc.policyagent.configuration.ApplicationConfig; import org.oransc.policyagent.configuration.ImmutableRicConfig; import org.oransc.policyagent.configuration.RicConfig; -import org.oransc.policyagent.controllers.ImmutableServiceRegistrationInfo; -import org.oransc.policyagent.controllers.ImmutableServiceStatus; +import org.oransc.policyagent.controllers.PolicyInfo; import org.oransc.policyagent.controllers.ServiceRegistrationInfo; import org.oransc.policyagent.controllers.ServiceStatus; import org.oransc.policyagent.exceptions.ServiceException; @@ -51,6 +52,7 @@ import org.oransc.policyagent.repository.Policy; import org.oransc.policyagent.repository.PolicyType; import org.oransc.policyagent.repository.PolicyTypes; import org.oransc.policyagent.repository.Ric; +import org.oransc.policyagent.repository.Ric.RicState; import org.oransc.policyagent.repository.Rics; import org.oransc.policyagent.repository.Services; import org.oransc.policyagent.tasks.RepositorySupervision; @@ -63,9 +65,15 @@ import org.springframework.boot.test.context.TestConfiguration; import org.springframework.boot.web.server.LocalServerPort; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; +import org.springframework.http.HttpStatus.Series; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; +import org.springframework.http.client.ClientHttpResponse; import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestTemplate; @ExtendWith(SpringExtension.class) @@ -141,11 +149,26 @@ public class ApplicationTest { private final RestTemplate restTemplate = new RestTemplate(); + public class RestTemplateResponseErrorHandler implements ResponseErrorHandler { + + @Override + public boolean hasError(ClientHttpResponse httpResponse) throws IOException { + return (httpResponse.getStatusCode().series() == Series.CLIENT_ERROR + || httpResponse.getStatusCode().series() == Series.SERVER_ERROR); + } + + @Override + public void handleError(ClientHttpResponse httpResponse) throws IOException { + System.out.println("Error " + httpResponse.toString()); + } + } + private void reset() { rics.clear(); policies.clear(); policyTypes.clear(); assertThat(policies.size()).isEqualTo(0); + restTemplate.setErrorHandler(new RestTemplateResponseErrorHandler()); } @Test @@ -157,7 +180,7 @@ public class ApplicationTest { System.out.println(rsp); assertThat(rsp).contains("kista_1"); - url = baseUrl() + "/rics?policyType=ANR"; + url = baseUrl() + "/rics?policyType=STD_PolicyModelUnconstrained_0.2.0"; rsp = this.restTemplate.getForObject(url, String.class); assertThat(rsp).isEqualTo("[]"); } @@ -165,13 +188,15 @@ public class ApplicationTest { @Test public void testRecovery() throws Exception { reset(); - Policy policy = addPolicy("policyId", "typeName", "service", "ric"); // This should be created in the RIC Policy policy2 = addPolicy("policyId2", "typeName", "service", "ric"); getA1Client("ric").putPolicy(policy2); // put it in the RIC policies.remove(policy2); // Remove it from the repo -> should be deleted in the RIC + Policy policy = addPolicy("policyId", "typeName", "service", "ric"); // This should be created in the RIC supervision.checkAllRics(); // The created policy should be put in the RIC + await().untilAsserted(() -> RicState.IDLE.equals(rics.getRic("ric").getState())); + Policies ricPolicies = getA1Client("ric").getPolicies(); assertThat(ricPolicies.size()).isEqualTo(1); Policy ricPolicy = ricPolicies.get("policyId"); @@ -191,21 +216,20 @@ public class ApplicationTest { String rsp = this.restTemplate.getForObject(url, String.class); System.out.println(rsp); - assertThat(rsp).isEqualTo("ric1"); } @Test public void testPutPolicy() throws Exception { + reset(); putService("service1"); + addPolicyType("type1", "ric1"); String url = baseUrl() + "/policy?type=type1&instance=instance1&ric=ric1&service=service1"; - String json = "{}"; - addPolicyType("type1", "ric1"); + final String json = jsonString(); this.rics.getRic("ric1").setState(Ric.RicState.IDLE); - this.restTemplate.put(url, json); - + this.restTemplate.put(url, createJsonHttpEntity(json)); Policy policy = policies.getPolicy("instance1"); assertThat(policy).isNotNull(); @@ -243,10 +267,33 @@ public class ApplicationTest { return ric; } + private String createServiceJson(String name) { + ServiceRegistrationInfo service = new ServiceRegistrationInfo(name, 1, "callbackUrl"); + + String json = gson.toJson(service); + return json; + } + + HttpEntity createJsonHttpEntity(String content) { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + return new HttpEntity(content, headers); + } + + private void putService(String name) { + String url = baseUrl() + "/service"; + HttpEntity entity = createJsonHttpEntity(createServiceJson(name)); + this.restTemplate.put(url, entity); + } + + private String jsonString() { + return "{\n \"servingCellNrcgi\": \"1\"\n }"; + } + private Policy addPolicy(String id, String typeName, String service, String ric) throws ServiceException { addRic(ric); Policy p = ImmutablePolicy.builder().id(id) // - .json("{}") // + .json(jsonString()) // .ownerServiceName(service) // .ric(rics.getRic(ric)) // .type(addPolicyType(typeName, ric)) // @@ -346,12 +393,16 @@ public class ApplicationTest { public void testGetPolicies() throws Exception { String url = baseUrl() + "/policies"; addPolicy("id1", "type1", "service1"); - addPolicy("id2", "type2", "service2"); String rsp = this.restTemplate.getForObject(url, String.class); System.out.println(rsp); - assertThat(rsp).contains("id1"); - assertThat(rsp).contains("id2"); + List info = parseList(rsp, PolicyInfo.class); + assertThat(info).size().isEqualTo(1); + PolicyInfo policyInfo = info.get(0); + assert (policyInfo.validate()); + assertThat(policyInfo.id).isEqualTo("id1"); + assertThat(policyInfo.type).isEqualTo("type1"); + assertThat(policyInfo.service).isEqualTo("service1"); } @Test @@ -375,34 +426,20 @@ public class ApplicationTest { assertFalse(rsp.contains("id3")); } - private String createServiceJson(String name) { - ServiceRegistrationInfo service = ImmutableServiceRegistrationInfo.builder() // - .keepAliveInterval(1) // - .name(name) // - .callbackUrl("callbackUrl") // - .build(); - String json = gson.toJson(service); - return json; - } - - private void putService(String name) { - String url = baseUrl() + "/service"; - this.restTemplate.put(url, createServiceJson(name)); - } - @Test public void testPutAndGetService() throws Exception { + reset(); // PUT putService("name"); // GET String url = baseUrl() + "/services?name=name"; String rsp = this.restTemplate.getForObject(url, String.class); - List info = parseList(rsp, ImmutableServiceStatus.class); + List info = parseList(rsp, ServiceStatus.class); assertThat(info.size() == 1); ServiceStatus status = info.iterator().next(); - assertThat(status.keepAliveInterval() == 1); - assertThat(status.name().equals("name")); + assertThat(status.keepAliveIntervalSeconds == 1); + assertThat(status.name.equals("name")); // GET (all) url = baseUrl() + "/services"; @@ -410,16 +447,26 @@ public class ApplicationTest { assertThat(rsp.contains("name")); System.out.println(rsp); + // Keep alive + url = baseUrl() + "/services/keepalive?name=name"; + rsp = this.restTemplate.postForObject(url, null, String.class); + assertThat(rsp.contains("OK")); + // DELETE assertThat(services.size() == 1); url = baseUrl() + "/services?name=name"; this.restTemplate.delete(url); assertThat(services.size() == 0); + + // Keep alive, no registerred service + url = baseUrl() + "/services/keepalive?name=nameXXX"; + ResponseEntity entity = this.restTemplate.postForEntity(url, null, String.class); + assertThat(entity.getStatusCode().equals(HttpStatus.NOT_FOUND)); } private static List parseList(String jsonString, Class clazz) { List result = new ArrayList<>(); - JsonArray jsonArr = new JsonParser().parse(jsonString).getAsJsonArray(); + JsonArray jsonArr = JsonParser.parseString(jsonString).getAsJsonArray(); for (JsonElement jsonElement : jsonArr) { T o = gson.fromJson(jsonElement.toString(), clazz); result.add(o); @@ -428,7 +475,7 @@ public class ApplicationTest { } private static List parseSchemas(String jsonString) { - JsonArray arrayOfSchema = new JsonParser().parse(jsonString).getAsJsonArray(); + JsonArray arrayOfSchema = JsonParser.parseString(jsonString).getAsJsonArray(); List result = new ArrayList<>(); for (JsonElement schemaObject : arrayOfSchema) { result.add(schemaObject.toString());