import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
-import java.net.URL;
import java.util.List;
import java.util.Vector;
import org.oransc.policyagent.repository.PolicyTypes;
import org.oransc.policyagent.repository.Ric;
import org.oransc.policyagent.repository.Rics;
+import org.oransc.policyagent.tasks.RepositorySupervision;
+import org.oransc.policyagent.utils.MockA1Client;
+import org.oransc.policyagent.utils.MockA1ClientFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
@Autowired
private PolicyTypes policyTypes;
+ @Autowired
+ MockA1ClientFactory a1ClientFactory;
+
+ @Autowired
+ RepositorySupervision supervision;
+
private static Gson gson = new GsonBuilder() //
.serializeNulls() //
.create(); //
public static class MockApplicationConfig extends ApplicationConfig {
@Override
- public void initialize() {
- URL url = MockApplicationConfig.class.getClassLoader().getResource("test_application_configuration.json");
- loadConfigurationFromFile(url.getFile());
+ public String getLocalConfigurationFilePath() {
+ return ""; // No config file loaded for the test
}
}
*/
@TestConfiguration
static class TestBeanFactory {
+ private final PolicyTypes policyTypes = new PolicyTypes();
@Bean
public ApplicationConfig getApplicationConfig() {
return new MockApplicationConfig();
}
+ @Bean
+ MockA1ClientFactory getA1ClientFactory() {
+ return new MockA1ClientFactory(this.policyTypes);
+ }
+
+ @Bean
+ public Policies getPolicies() {
+ return new Policies();
+ }
+
+ @Bean
+ public PolicyTypes getPolicyTypes() {
+ return this.policyTypes;
+ }
+
@Bean
public Rics getRics() {
- Rics rics = new Rics();
- rics.put(new Ric(ImmutableRicConfig.builder().name("kista_1").baseUrl("kista_url")
- .managedElementIds(new Vector<>()).build()));
- rics.put(new Ric(ImmutableRicConfig.builder().name("ric1").baseUrl("ric_url")
- .managedElementIds(new Vector<>()).build()));
- return rics;
+ return new Rics();
}
}
assertThat(rsp).isEqualTo("[]");
}
+ @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
+
+ supervision.checkAllRics(); // The created policy should be put in the RIC
+ Policies ricPolicies = getA1Client("ric").getPolicies();
+ assertThat(ricPolicies.size()).isEqualTo(1);
+ Policy ricPolicy = ricPolicies.get("policyId");
+ assertThat(ricPolicy.json()).isEqualTo(policy.json());
+ }
+
+ MockA1Client getA1Client(String ricName) throws ServiceException {
+ return a1ClientFactory.getOrCreateA1Client(ricName);
+ }
+
@Test
public void testGetRic() throws Exception {
reset();
+ Ric ric = addRic("ric1");
+ ric.addManagedElement("kista_1");
String url = baseUrl() + "/ric?managedElementId=kista_1";
+
String rsp = this.restTemplate.getForObject(url, String.class);
System.out.println(rsp);
+
assertThat(rsp).isEqualTo("ric1");
}
- // managedElmentId -> nodeName
-
@Test
public void testPutPolicy() throws Exception {
putService("service1");
String url = baseUrl() + "/policy?type=type1&instance=instance1&ric=ric1&service=service1";
String json = "{}";
addPolicyType("type1", "ric1");
+ this.rics.getRic("ric1").setState(Ric.RicState.IDLE);
this.restTemplate.put(url, json);
Vector<String> mes = new Vector<>();
RicConfig conf = ImmutableRicConfig.builder() //
.name(ricName) //
- .baseUrl("baseUrl") //
+ .baseUrl(ricName) //
.managedElementIds(mes) //
.build();
Ric ric = new Ric(conf);
public void testDeletePolicy() throws Exception {
reset();
String url = baseUrl() + "/policy?instance=id";
- addPolicy("id", "typeName", "service1", "ric1");
+ Policy policy = addPolicy("id", "typeName", "service1", "ric1");
+ policy.ric().setState(Ric.RicState.IDLE);
assertThat(policies.size()).isEqualTo(1);
this.restTemplate.delete(url);
ServiceRegistrationInfo service = ImmutableServiceRegistrationInfo.builder() //
.keepAliveInterval(1) //
.name(name) //
+ .callbackUrl("callbackUrl") //
.build();
String json = gson.toJson(service);
return json;