* ============LICENSE_START=======================================================
* Copyright (C) 2019-2020 Nordix Foundation.
* Modifications Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
// Check PDPs, read status from DB
try {
- Map<String, List<Pdp>> pdpListWithType = fetchPdpsHealthStatus();
- if (isHealthy && (pdpListWithType.isEmpty() || pdpListWithType.values().stream().flatMap(List::stream)
- .anyMatch(pdp -> !PdpHealthStatus.HEALTHY.equals(pdp.getHealthy())))) {
+ List<PdpGroup> groups = fetchPdpGroups();
+ Map<String, List<Pdp>> pdpListWithType = fetchPdpsHealthStatus(groups);
+ if (isHealthy && (!verifyNumberOfPdps(groups) || pdpListWithType.values().stream().flatMap(List::stream)
+ .anyMatch(pdp -> !PdpHealthStatus.HEALTHY.equals(pdp.getHealthy())))) {
isHealthy = false;
}
result.put(PapConstants.POLICY_PDPS, pdpListWithType);
return Pair.of(Status.OK, result);
}
- private Map<String, List<Pdp>> fetchPdpsHealthStatus() throws PfModelException {
+ private Map<String, List<Pdp>> fetchPdpsHealthStatus(List<PdpGroup> groups) {
Map<String, List<Pdp>> pdpListWithType = new HashMap<>();
- final PolicyModelsProviderFactoryWrapper modelProviderWrapper = Registry
- .get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class);
- try (PolicyModelsProvider databaseProvider = modelProviderWrapper.create()) {
- final List<PdpGroup> groups = databaseProvider.getPdpGroups(null);
- for (final PdpGroup group : groups) {
- for (final PdpSubGroup subGroup : group.getPdpSubgroups()) {
- List<Pdp> pdpList = new ArrayList<>(subGroup.getPdpInstances());
- pdpListWithType.computeIfAbsent(subGroup.getPdpType(), k -> new ArrayList<>()).addAll(pdpList);
- }
+ for (final PdpGroup group : groups) {
+ for (final PdpSubGroup subGroup : group.getPdpSubgroups()) {
+ List<Pdp> pdpList = new ArrayList<>(subGroup.getPdpInstances());
+ pdpListWithType.computeIfAbsent(subGroup.getPdpType(), k -> new ArrayList<>()).addAll(pdpList);
}
}
return pdpListWithType;
}
+ private boolean verifyNumberOfPdps(List<PdpGroup> groups) {
+ boolean flag = true;
+ for (final PdpGroup group : groups) {
+ for (final PdpSubGroup subGroup : group.getPdpSubgroups()) {
+ if (subGroup.getCurrentInstanceCount() < subGroup.getDesiredInstanceCount()) {
+ flag = false;
+ break;
+ }
+ }
+ }
+ return flag;
+ }
+
+ private List<PdpGroup> fetchPdpGroups() throws PfModelException {
+ List<PdpGroup> groups = new ArrayList<>();
+ final PolicyModelsProviderFactoryWrapper modelProviderWrapper =
+ Registry.get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class);
+ try (PolicyModelsProvider databaseProvider = modelProviderWrapper.create()) {
+ groups = databaseProvider.getPdpGroups(null);
+ }
+ return groups;
+ }
+
private HealthCheckReport fetchPolicyComponentHealthStatus(HttpClient httpClient) {
HealthCheckReport clientReport;
try {
/*-
* ============LICENSE_START=======================================================
* Copyright (C) 2019 Nordix Foundation.
+ * Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
}
private void verifyPdps(final List<Pdp> pdpList, final List<PdpGroup> groups) {
- assertEquals(5, pdpList.size());
+ assertEquals(6, pdpList.size());
for (final PdpGroup group : groups) {
for (final PdpSubGroup subGroup : group.getPdpSubgroups()) {
pdpList.containsAll(subGroup.getPdpInstances());
* ============LICENSE_START=======================================================
* Copyright (C) 2020 Nordix Foundation.
* Modifications Copyright (C) 2020 AT&T Corp.
+ * Modifications Copyright (C) 2020 Bell Canada. All rights reserved.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
assertFalse((Boolean) result.get(HEALTHY));
}
+ @Test
+ public void testFetchPolicyComponentsHealthStatus_PdpDown() {
+ // Set currentInstanceCount as 0 to simulate PDP down
+ groups.get(0).getPdpSubgroups().get(0).setCurrentInstanceCount(0);
+ Map<String, Object> result = callFetchPolicyComponentsHealthStatus();
+ assertFalse((Boolean) result.get(HEALTHY));
+ }
+
@Test
public void testFetchPolicyComponentsHealthStatus_unhealthyPap() {
when(papActivator.isAlive()).thenReturn(false);