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;
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.repository.Ric.RicState;
import org.oransc.policyagent.tasks.RepositorySupervision;
import org.oransc.policyagent.utils.MockA1Client;
import org.oransc.policyagent.utils.MockA1ClientFactory;
import org.springframework.web.client.ResponseErrorHandler;
import org.springframework.web.client.RestTemplate;
-import static org.awaitility.Awaitility.await;
-
@ExtendWith(SpringExtension.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
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("[]");
}
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.RECOVERING.equals(rics.getRic("ric").getState()));
await().untilAsserted(() -> RicState.IDLE.equals(rics.getRic("ric").getState()));
Policies ricPolicies = getA1Client("ric").getPolicies();
public void testPutPolicy() throws Exception {
reset();
putService("service1");
+ this.addRic("ric1").setState(Ric.RicState.IDLE);
addPolicyType("type1", "ric1");
- String url = baseUrl() + "/policy?type=type1&instance=instance1&ric=ric1&service=service1";
final String json = jsonString();
- this.rics.getRic("ric1").setState(Ric.RicState.IDLE);
-
+ String url = baseUrl() + "/policy?type=type1&instance=instance1&ric=ric1&service=service1";
this.restTemplate.put(url, createJsonHttpEntity(json));
Policy policy = policies.getPolicy("instance1");
assertThat(policy).isNotNull();
assertThat(policy.id()).isEqualTo("instance1");
assertThat(policy.ownerServiceName()).isEqualTo("service1");
+ assertThat(policy.ric().name()).isEqualTo("ric1");
url = baseUrl() + "/policies";
String rsp = this.restTemplate.getForObject(url, String.class);
System.out.println(rsp);
+
+ }
+
+ @Test
+ public void testRefuseToUpdatePolicy() throws Exception {
+ // Test that only the json can be changed for a already created policy
+ // In this case service is attempted to be changed
+ reset();
+ this.addRic("ric1").setState(Ric.RicState.IDLE);
+ this.addRic("ricXXX").setState(Ric.RicState.IDLE);
+
+ this.addPolicy("instance1", "type1", "service1", "ric1");
+ String urlWrongRic = baseUrl() + "/policy?type=type1&instance=instance1&ric=ricXXX&service=service1";
+ this.restTemplate.put(urlWrongRic, createJsonHttpEntity(jsonString()));
+ Policy policy = policies.getPolicy("instance1");
+ assertThat(policy.ric().name()).isEqualTo("ric1"); // Not changed
}
private PolicyType addPolicyType(String policyTypeName, String ricName) {
String rsp = this.restTemplate.getForObject(url, String.class);
System.out.println("*** " + rsp);
assertThat(rsp).contains("type1");
- assertThat(rsp).contains("type2");
- assertThat(rsp).contains("title");
+ assertThat(rsp).contains("[{\"title\":\"type2\"}");
List<String> info = parseSchemas(rsp);
assertEquals(2, info.size());
assertThat(info.size() == 1);
ServiceStatus status = info.iterator().next();
assertThat(status.keepAliveIntervalSeconds == 1);
- assertThat(status.name.equals("name"));
+ assertThat(status.serviceName.equals("name"));
// GET (all)
url = baseUrl() + "/services";
assertThat(entity.getStatusCode().equals(HttpStatus.NOT_FOUND));
}
+ @Test
+ public void testGetPolicyStatus() throws Exception {
+ reset();
+ Policy policy = addPolicy("id", "typeName", "service1", "ric1");
+ policy.ric().setState(Ric.RicState.IDLE);
+ assertThat(policies.size()).isEqualTo(1);
+
+ String url = baseUrl() + "/policy_status?instance=id";
+ String rsp = this.restTemplate.getForObject(url, String.class);
+ assertThat(rsp.equals("OK"));
+ }
+
private static <T> List<T> parseList(String jsonString, Class<T> clazz) {
List<T> result = new ArrayList<>();
JsonArray jsonArr = JsonParser.parseString(jsonString).getAsJsonArray();