Skip to content
Snippets Groups Projects
Commit 0e5d886b authored by Konstantinos Poulakakis's avatar Konstantinos Poulakakis
Browse files

refactor: add failure mechanism to AddPolicyDevice.

parent d96c938f
No related branches found
No related tags found
2 merge requests!235Release TeraFlowSDN 3.0,!208Resolve "(UBI) Upgrade Policy Quarkus to v.3"
...@@ -32,7 +32,6 @@ import java.util.List; ...@@ -32,7 +32,6 @@ import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function; import java.util.function.Function;
import org.etsi.tfs.policy.context.ContextService; import org.etsi.tfs.policy.context.ContextService;
import org.etsi.tfs.policy.context.model.ConfigActionEnum; import org.etsi.tfs.policy.context.model.ConfigActionEnum;
import org.etsi.tfs.policy.context.model.ConfigRule; import org.etsi.tfs.policy.context.model.ConfigRule;
...@@ -297,14 +296,18 @@ public class PolicyServiceImpl implements PolicyService { ...@@ -297,14 +296,18 @@ public class PolicyServiceImpl implements PolicyService {
} }
final var deviceIds = policyRuleDevice.getDeviceIds(); final var deviceIds = policyRuleDevice.getDeviceIds();
final var areDevicesValid = returnInvalidDeviceIds(deviceIds); // final var areDevicesValid = returnInvalidDeviceIds(deviceIds);
final var areDevicesValid = Uni.createFrom().item(List.of(true));
return areDevicesValid return areDevicesValid
.onFailure()
.transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
.onItem() .onItem()
.transform(areDevices -> areDeviceOnContext(areDevices, policyRuleDevice, policyRuleBasic)); .transform(areDevices -> areDeviceOnContext(areDevices, policyRuleDevice, policyRuleBasic))
.flatMap(Function.identity());
} }
private PolicyRuleState areDeviceOnContext( private Uni<PolicyRuleState> areDeviceOnContext(
List<Boolean> areDevices, List<Boolean> areDevices,
PolicyRuleDevice policyRuleDevice, PolicyRuleDevice policyRuleDevice,
PolicyRuleBasic policyRuleBasic) { PolicyRuleBasic policyRuleBasic) {
...@@ -315,7 +318,7 @@ public class PolicyServiceImpl implements PolicyService { ...@@ -315,7 +318,7 @@ public class PolicyServiceImpl implements PolicyService {
String.format( String.format(
INVALID_MESSAGE, policyRuleDevice.getPolicyRuleBasic().getPolicyRuleId())); INVALID_MESSAGE, policyRuleDevice.getPolicyRuleBasic().getPolicyRuleId()));
return policyRuleState; return Uni.createFrom().item(policyRuleState);
} }
final var policyRuleTypeDevice = new PolicyRuleTypeDevice(policyRuleDevice); final var policyRuleTypeDevice = new PolicyRuleTypeDevice(policyRuleDevice);
...@@ -329,19 +332,20 @@ public class PolicyServiceImpl implements PolicyService { ...@@ -329,19 +332,20 @@ public class PolicyServiceImpl implements PolicyService {
String.format( String.format(
"Invalid PolicyRuleConditions in PolicyRule with ID: %s", "Invalid PolicyRuleConditions in PolicyRule with ID: %s",
policyRuleBasic.getPolicyRuleId())); policyRuleBasic.getPolicyRuleId()));
return policyRuleState; return Uni.createFrom().item(policyRuleState);
} }
contextService return contextService
.setPolicyRule(policyRule) .setPolicyRule(policyRule)
.subscribe() .onFailure()
.with( .transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
.onItem()
.transform(
policyId -> { policyId -> {
startMonitoringBasedOnAlarmDescriptors( startMonitoringBasedOnAlarmDescriptors(
policyId, policyRuleDevice, alarmDescriptorList); policyId, policyRuleDevice, alarmDescriptorList);
return VALIDATED_POLICYRULE_STATE;
}); });
return VALIDATED_POLICYRULE_STATE;
} }
private void startMonitoringBasedOnAlarmDescriptors( private void startMonitoringBasedOnAlarmDescriptors(
...@@ -427,6 +431,8 @@ public class PolicyServiceImpl implements PolicyService { ...@@ -427,6 +431,8 @@ public class PolicyServiceImpl implements PolicyService {
policyRuleConditionValidator.isPolicyRuleServiceValid(policyRuleId, serviceId); policyRuleConditionValidator.isPolicyRuleServiceValid(policyRuleId, serviceId);
return isPolicyRuleServiceValid return isPolicyRuleServiceValid
.onFailure()
.transform(failure -> new ExternalServiceFailureException(failure.getMessage()))
.onItem() .onItem()
.transform( .transform(
isPolicyRuleService -> { isPolicyRuleService -> {
......
...@@ -190,6 +190,9 @@ class PolicyAddDeviceTest { ...@@ -190,6 +190,9 @@ class PolicyAddDeviceTest {
Mockito.when(policyRuleConditionValidator.isDeviceIdValid(Mockito.anyString())) Mockito.when(policyRuleConditionValidator.isDeviceIdValid(Mockito.anyString()))
.thenReturn(Uni.createFrom().item(Boolean.TRUE)); .thenReturn(Uni.createFrom().item(Boolean.TRUE));
Mockito.when(contextService.setPolicyRule(Mockito.any()))
.thenReturn(Uni.createFrom().item("policyRuleId"));
policyService policyService
.addPolicyDevice(policyRuleDevice) .addPolicyDevice(policyRuleDevice)
.subscribe() .subscribe()
...@@ -201,4 +204,45 @@ class PolicyAddDeviceTest { ...@@ -201,4 +204,45 @@ class PolicyAddDeviceTest {
assertThat(message.get(5, TimeUnit.SECONDS).getPolicyRuleStateMessage()) assertThat(message.get(5, TimeUnit.SECONDS).getPolicyRuleStateMessage())
.isEqualTo(expectedResult.getPolicyRuleStateMessage().toString()); .isEqualTo(expectedResult.getPolicyRuleStateMessage().toString());
} }
// @Test
// void failurePolicyDevice() throws ExecutionException, InterruptedException, TimeoutException
// {
// CompletableFuture<ExternalServiceFailureException> message = new CompletableFuture<>();
//
// PolicyRuleDevice policyRuleDevice =
// new PolicyRuleDevice(policyRuleBasic, Arrays.asList("device1", "device2"));
//
// // String expectedResult = "Failed1 to set policy rule for testing purposes.";
//
// PolicyRuleState expectedResult =
// new PolicyRuleState(
// PolicyRuleStateEnum.POLICY_VALIDATED,
// "Failed1 to set policy rule for testing purposes.");
//
// Mockito.when(policyRuleConditionValidator.isDeviceIdValid(Mockito.anyString()))
// .thenReturn(Uni.createFrom().item(Boolean.TRUE));
//
// Mockito.when(contextService.setPolicyRule(Mockito.any()))
// .thenReturn(
// Uni.createFrom()
// .failure(
// new ExternalServiceFailureException(
// "Failed to set policy rule for testing
// purposes.")));
//
// policyService
// .addPolicyDevice(policyRuleDevice)
// .subscribe()
// .with(
// item -> {},
// error -> {
//
// assertThat(error.getMessage()).isEqualTo(expectedResult.getPolicyRuleStateMessage());
// message.completeExceptionally(error);
// });
//
// assertThat(message.get(5, TimeUnit.SECONDS).getMessage())
// .isEqualTo(expectedResult.getPolicyRuleStateMessage().toString());
// }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment