From: elinuxhenrik Date: Wed, 4 Mar 2020 15:53:19 +0000 (+0100) Subject: Remove policies from repository when Ric is removed from configuration X-Git-Tag: 2.0.0~141 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=61d78df4c74f93d77bc56eaa51280a8cead66209;p=nonrtric.git Remove policies from repository when Ric is removed from configuration When a Ric is removed from the configuration, all policies created for that Ric must be removed from the repository to keep the consistency of the repository. Change-Id: I7f400de008a16e02457bb055f2fdb67b978d5658 Signed-off-by: elinuxhenrik --- diff --git a/policy-agent/src/main/java/org/oransc/policyagent/repository/Policies.java b/policy-agent/src/main/java/org/oransc/policyagent/repository/Policies.java index 54f876ac..62dd1407 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/repository/Policies.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/repository/Policies.java @@ -110,6 +110,13 @@ public class Policies { multiMapRemove(policiesType, policy.type().name(), policy); } + public synchronized void removePoliciesForRic(String ricName) { + Collection policiesForRic = getForRic(ricName); + for (Policy policy : policiesForRic) { + remove(policy); + } + } + public synchronized int size() { return policiesId.size(); } diff --git a/policy-agent/src/main/java/org/oransc/policyagent/tasks/StartupService.java b/policy-agent/src/main/java/org/oransc/policyagent/tasks/StartupService.java index 7068da4e..590b0107 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/tasks/StartupService.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/tasks/StartupService.java @@ -92,6 +92,7 @@ public class StartupService implements ApplicationConfig.Observer { case REMOVED: rics.remove(ricConfig.name()); + policies.removePoliciesForRic(ricConfig.name()); break; default: diff --git a/policy-agent/src/test/java/org/oransc/policyagent/tasks/StartupServiceTest.java b/policy-agent/src/test/java/org/oransc/policyagent/tasks/StartupServiceTest.java index 5590c5e3..ed4b7ee9 100644 --- a/policy-agent/src/test/java/org/oransc/policyagent/tasks/StartupServiceTest.java +++ b/policy-agent/src/test/java/org/oransc/policyagent/tasks/StartupServiceTest.java @@ -23,9 +23,11 @@ package org.oransc.policyagent.tasks; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import java.util.Collections; import java.util.List; @@ -37,6 +39,9 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.oransc.policyagent.configuration.ApplicationConfig; import org.oransc.policyagent.configuration.ImmutableRicConfig; import org.oransc.policyagent.configuration.RicConfig; +import org.oransc.policyagent.repository.Policies; +import org.oransc.policyagent.repository.Policy; +import org.oransc.policyagent.repository.PolicyType; import org.oransc.policyagent.repository.Ric; import org.oransc.policyagent.repository.Rics; @@ -106,17 +111,33 @@ public class StartupServiceTest { } @Test - public void oneRicIsRemoved_thenNoSynchronizationIsStartedAndRicIsDeletedFromRepository() { + public void oneRicIsRemoved_thenNoSynchronizationIsStartedAndRicAndItsPoliciesAreDeletedFromRepository() { Rics rics = new Rics(); RicConfig ricConfig = getRicConfig(FIRST_RIC_NAME); - rics.put(new Ric(ricConfig)); + Ric ric = new Ric(ricConfig); + rics.put(ric); + + Policies policies = addPolicyForRic(ric); StartupService serviceUnderTest = - new StartupService(appConfigMock, refreshTaskMock, rics, null, null, null, null); + new StartupService(appConfigMock, refreshTaskMock, rics, null, null, policies, null); serviceUnderTest.onRicConfigUpdate(ricConfig, ApplicationConfig.RicConfigUpdate.REMOVED); assertEquals(0, rics.size(), "Ric not deleted"); + assertEquals(0, policies.size(), "Ric's policies not deleted"); + } + + private Policies addPolicyForRic(Ric ric) { + Policies policies = new Policies(); + Policy policyMock = mock(Policy.class); + when(policyMock.id()).thenReturn("policyId"); + when(policyMock.ric()).thenReturn(ric); + PolicyType policyTypeMock = mock(PolicyType.class); + when(policyTypeMock.name()).thenReturn("typeName"); + when(policyMock.type()).thenReturn(policyTypeMock); + policies.put(policyMock); + return policies; } private RicConfig getRicConfig(String name) {