From 296f7c083ed15a57e59ea4546eb0624bf235d29b Mon Sep 17 00:00:00 2001 From: elinuxhenrik Date: Mon, 9 Dec 2019 17:06:04 +0100 Subject: [PATCH] Get types at startup Change-Id: I94f8da731589bf45f1f0aa51a0663a5d2ecf7a56 Issue-ID: NONRTRIC-81 Signed-off-by: elinuxhenrik --- .../java/org/oransc/policyagent/Application.java | 4 +-- .../org/oransc/policyagent/clients/RicClient.java | 40 ++++++++++++++++++++++ .../oransc/policyagent/repository/PolicyTypes.java | 7 ++++ .../{controllers => tasks}/StartupService.java | 26 ++++++++++++-- .../{controllers => tasks}/StartupServiceTest.java | 28 +++++++++++++-- 5 files changed, 97 insertions(+), 8 deletions(-) create mode 100644 policy-agent/src/main/java/org/oransc/policyagent/clients/RicClient.java rename policy-agent/src/main/java/org/oransc/policyagent/{controllers => tasks}/StartupService.java (67%) rename policy-agent/src/test/java/org/oransc/policyagent/{controllers => tasks}/StartupServiceTest.java (61%) diff --git a/policy-agent/src/main/java/org/oransc/policyagent/Application.java b/policy-agent/src/main/java/org/oransc/policyagent/Application.java index e4b6e5a4..fdfca611 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/Application.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/Application.java @@ -20,7 +20,7 @@ package org.oransc.policyagent; -import org.oransc.policyagent.controllers.StartupService; +import org.oransc.policyagent.tasks.StartupService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; @@ -39,7 +39,7 @@ public class Application { } /** - * Starts the se4rvice and reads the configuration. + * Starts the service and reads the configuration. * * @param ctx * @return diff --git a/policy-agent/src/main/java/org/oransc/policyagent/clients/RicClient.java b/policy-agent/src/main/java/org/oransc/policyagent/clients/RicClient.java new file mode 100644 index 00000000..709c023b --- /dev/null +++ b/policy-agent/src/main/java/org/oransc/policyagent/clients/RicClient.java @@ -0,0 +1,40 @@ +/*- + * ========================LICENSE_START================================= + * O-RAN-SC + * %% + * Copyright (C) 2019 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.policyagent.clients; + +import java.util.Vector; + +import org.oransc.policyagent.repository.PolicyType; +import org.springframework.stereotype.Service; + +@Service +public class RicClient { + + public void deleteAllPolicies(String url) { + // TODO Auto-generated method stub + + } + + public Vector getPolicyTypes(String url) { + return new Vector<>(); + } + +} diff --git a/policy-agent/src/main/java/org/oransc/policyagent/repository/PolicyTypes.java b/policy-agent/src/main/java/org/oransc/policyagent/repository/PolicyTypes.java index 6cf8ff41..f686ee4c 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/repository/PolicyTypes.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/repository/PolicyTypes.java @@ -43,4 +43,11 @@ public class PolicyTypes { types.put(type.name(), type); } + public boolean contains(PolicyType policyType) { + return types.containsKey(policyType.name()); + } + + public int size() { + return types.size(); + } } diff --git a/policy-agent/src/main/java/org/oransc/policyagent/controllers/StartupService.java b/policy-agent/src/main/java/org/oransc/policyagent/tasks/StartupService.java similarity index 67% rename from policy-agent/src/main/java/org/oransc/policyagent/controllers/StartupService.java rename to policy-agent/src/main/java/org/oransc/policyagent/tasks/StartupService.java index 40f01caa..e014776f 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/controllers/StartupService.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/tasks/StartupService.java @@ -18,13 +18,17 @@ * ========================LICENSE_END=================================== */ -package org.oransc.policyagent.controllers; +package org.oransc.policyagent.tasks; import java.util.Vector; +import org.oransc.policyagent.clients.RicClient; import org.oransc.policyagent.configuration.ApplicationConfig; import org.oransc.policyagent.configuration.RicConfig; +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.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -45,9 +49,17 @@ public class StartupService { @Autowired private Rics rics; - StartupService(ApplicationConfig appConfig, Rics rics) { + @Autowired + PolicyTypes policyTypes; + + @Autowired + private RicClient ricClient; + + StartupService(ApplicationConfig appConfig, Rics rics, PolicyTypes policyTypes, RicClient ricClient) { this.applicationConfig = appConfig; this.rics = rics; + this.policyTypes = policyTypes; + this.ricClient = ricClient; } /** @@ -57,8 +69,16 @@ public class StartupService { applicationConfig.initialize(); Vector ricConfigs = applicationConfig.getRicConfigs(); for (RicConfig ricConfig : ricConfigs) { - logger.error("Ric: {}", ricConfig); Ric ric = new Ric(ricConfig); + String baseUrl = ricConfig.baseUrl(); + ricClient.deleteAllPolicies(baseUrl); + Vector types = ricClient.getPolicyTypes(baseUrl); + for (PolicyType policyType : types) { + if (!policyTypes.contains(policyType)) { + policyTypes.put(policyType); + } + } + ric.setState(RicState.ACTIVE); rics.put(ric); } diff --git a/policy-agent/src/test/java/org/oransc/policyagent/controllers/StartupServiceTest.java b/policy-agent/src/test/java/org/oransc/policyagent/tasks/StartupServiceTest.java similarity index 61% rename from policy-agent/src/test/java/org/oransc/policyagent/controllers/StartupServiceTest.java rename to policy-agent/src/test/java/org/oransc/policyagent/tasks/StartupServiceTest.java index 366524f6..ad9fc697 100644 --- a/policy-agent/src/test/java/org/oransc/policyagent/controllers/StartupServiceTest.java +++ b/policy-agent/src/test/java/org/oransc/policyagent/tasks/StartupServiceTest.java @@ -18,25 +18,33 @@ * ========================LICENSE_END=================================== */ -package org.oransc.policyagent.controllers; +package org.oransc.policyagent.tasks; import static org.junit.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; import java.util.Vector; import org.junit.Test; +import org.oransc.policyagent.clients.RicClient; import org.oransc.policyagent.configuration.ApplicationConfig; import org.oransc.policyagent.configuration.ImmutableRicConfig; import org.oransc.policyagent.configuration.RicConfig; +import org.oransc.policyagent.exceptions.ServiceException; +import org.oransc.policyagent.repository.ImmutablePolicyType; +import org.oransc.policyagent.repository.PolicyType; +import org.oransc.policyagent.repository.PolicyTypes; import org.oransc.policyagent.repository.Rics; public class StartupServiceTest { ApplicationConfig appConfigMock; @Test - public void startup_allOk() { + public void startup_allOk() throws ServiceException { ApplicationConfig appConfigMock = mock(ApplicationConfig.class); Vector ricConfigs = new Vector<>(2); Vector firstNodes = new Vector(1); @@ -45,12 +53,26 @@ public class StartupServiceTest { when(appConfigMock.getRicConfigs()).thenReturn(ricConfigs); Rics rics = new Rics(); + PolicyTypes policyTypes = new PolicyTypes(); - StartupService serviceUnderTest = new StartupService(appConfigMock, rics); + Vector types = new Vector<>(); + PolicyType type = ImmutablePolicyType.builder().name("type1").jsonSchema("{}").build(); + types.add(type); + RicClient ricClientMock = mock(RicClient.class); + when(ricClientMock.getPolicyTypes(anyString())).thenReturn(types); + + StartupService serviceUnderTest = new StartupService(appConfigMock, rics, policyTypes, ricClientMock); serviceUnderTest.startup(); + verify(ricClientMock).deleteAllPolicies("url"); + verify(ricClientMock).getPolicyTypes("url"); + verifyNoMoreInteractions(ricClientMock); + assertEquals("Correct nymber of Rics not added to Rics", 1, rics.size()); assertEquals("Not correct Ric added to Rics", "first", rics.getRic("first").name()); + + assertEquals("Not correct number of policy types added.", 1, policyTypes.size()); + assertEquals("Not correct type added.", type, policyTypes.getType(type.name())); } } -- 2.16.6