From 50daaac12878c4acd2a5d38e8964f293db02f674 Mon Sep 17 00:00:00 2001 From: PatrikBuhr Date: Tue, 1 Sep 2020 06:41:16 +0200 Subject: Fixing instable test The testcase in question should wait util the available so that the data synchronization does not iterfere. Change-Id: I152bb5db25cb7d55a0c677595027ef72577f84c0 Issue-ID: CCSDK-2502 Signed-off-by: PatrikBuhr --- .../controllers/v2/PolicyController.java | 35 +++++++++++++++------- 1 file changed, 24 insertions(+), 11 deletions(-) (limited to 'a1-policy-management/src/main/java/org') diff --git a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyController.java b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyController.java index 9d9aff45..d42d51e9 100644 --- a/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyController.java +++ b/a1-policy-management/src/main/java/org/onap/ccsdk/oran/a1policymanagementservice/controllers/v2/PolicyController.java @@ -115,18 +115,25 @@ public class PolicyController { value = "The identity of the policy type to get the definition for. When this parameter is given, max one schema will be returned") // @RequestParam(name = Consts.POLICY_TYPE_ID_PARAM, required = false) String policyTypeId) { try { - if (ricId == null && policyTypeId == null) { + Ric ric = ricId == null ? null : rics.getRic(ricId); + if (ric == null && policyTypeId == null) { Collection types = this.policyTypes.getAll(); return new ResponseEntity<>(toPolicyTypeSchemasJson(types), HttpStatus.OK); - } else if (ricId != null && policyTypeId != null) { - Collection types = new ArrayList<>(); - if (rics.getRic(ricId).isSupportingType(policyTypeId)) { - types.add(policyTypes.getType(policyTypeId)); + } else if (ric != null && policyTypeId != null) { + synchronized (ric) { + assertRicStateIdleSync(ric); + Collection types = new ArrayList<>(); + if (rics.getRic(ricId).isSupportingType(policyTypeId)) { + types.add(policyTypes.getType(policyTypeId)); + } + return new ResponseEntity<>(toPolicyTypeSchemasJson(types), HttpStatus.OK); + } + } else if (ric != null) { + synchronized (ric) { + assertRicStateIdleSync(ric); + Collection types = rics.getRic(ricId).getSupportedPolicyTypes(); + return new ResponseEntity<>(toPolicyTypeSchemasJson(types), HttpStatus.OK); } - return new ResponseEntity<>(toPolicyTypeSchemasJson(types), HttpStatus.OK); - } else if (ricId != null) { - Collection types = rics.getRic(ricId).getSupportedPolicyTypes(); - return new ResponseEntity<>(toPolicyTypeSchemasJson(types), HttpStatus.OK); } else { Collection types = new ArrayList<>(); types.add(policyTypes.getType(policyTypeId)); @@ -318,13 +325,19 @@ public class PolicyController { return Mono.just("{}"); } + private void assertRicStateIdleSync(Ric ric) throws ServiceException { + if (ric.getState() != Ric.RicState.AVAILABLE) { + throw new ServiceException("Near-RT RIC: " + ric.id() + " is " + ric.getState()); + } + } + private Mono assertRicStateIdle(Ric ric) { if (ric.getState() == Ric.RicState.AVAILABLE) { return Mono.just("{}"); } else { - logger.debug("Request rejected RIC not IDLE, ric: {}", ric); + logger.debug("Request rejected Near-RT RIC not IDLE, ric: {}", ric); RejectionException e = new RejectionException( - "Ric is not operational, RIC name: " + ric.id() + ", state: " + ric.getState(), HttpStatus.LOCKED); + "Near-RT RIC: is not operational, id: " + ric.id() + ", state: " + ric.getState(), HttpStatus.LOCKED); return Mono.error(e); } } -- cgit 1.2.3-korg