2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * Modifications Copyright (C) 2021 Nordix Foundation.
7 * Modifications Copyright (C) 2022 Bell Canada. All rights reserved.
8 * ================================================================================
9 * Licensed under the Apache License, Version 2.0 (the "License");
10 * you may not use this file except in compliance with the License.
11 * You may obtain a copy of the License at
13 * http://www.apache.org/licenses/LICENSE-2.0
15 * Unless required by applicable law or agreed to in writing, software
16 * distributed under the License is distributed on an "AS IS" BASIS,
17 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18 * See the License for the specific language governing permissions and
19 * limitations under the License.
20 * ============LICENSE_END=========================================================
23 package org.onap.policy.pap.main.rest.e2e;
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertNull;
28 import java.util.Collections;
29 import java.util.List;
30 import javax.ws.rs.client.Entity;
31 import javax.ws.rs.client.Invocation;
32 import javax.ws.rs.core.Response;
33 import org.junit.Before;
34 import org.junit.Test;
35 import org.onap.policy.models.pap.concepts.PdpGroupStateChangeResponse;
36 import org.onap.policy.models.pdp.concepts.PdpStatus;
37 import org.onap.policy.models.pdp.enums.PdpState;
38 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier;
40 public class PdpGroupStateChangeTest extends End2EndBase {
41 private static final String PDP1 = "pdpAA_1";
42 private static final String PDP2 = "pdpAA_2";
43 private static final String PDP3 = "pdpAB_1";
44 private static final String SUBGROUP1 = "pdpTypeA";
45 private static final String SUBGROUP2 = "pdpTypeB";
46 private static final String DEACT_GROUP = "stateChangeGroupDeactivate";
47 private static final String GROUP_ENDPOINT = "pdps/groups";
54 public void setUp() throws Exception {
55 addToscaPolicyTypes("monitoring.policy-type.yaml");
56 addToscaPolicies("monitoring.policy.yaml");
59 context = new End2EndContext();
63 public void testMakePassive() throws Exception {
64 addGroups("stateChangeGroupDeactivate.json");
66 ToscaConceptIdentifier policy =
67 new ToscaConceptIdentifier("onap.restart.tca", "1.0.0");
68 List<ToscaConceptIdentifier> policies = Collections.singletonList(policy);
70 PdpStatus status11 = new PdpStatus();
71 status11.setName(PDP1);
72 status11.setState(PdpState.ACTIVE);
73 status11.setPdpGroup(DEACT_GROUP);
74 status11.setPdpType(SUBGROUP1);
75 status11.setPdpSubgroup(SUBGROUP1);
76 status11.setPolicies(policies);
78 PdpStatus status12 = makeCopy(status11);
79 status12.setState(PdpState.PASSIVE);
81 PdpStatus status21 = new PdpStatus();
82 status21.setName(PDP2);
83 status21.setState(PdpState.ACTIVE);
84 status21.setPdpGroup(DEACT_GROUP);
85 status21.setPdpType(SUBGROUP1);
86 status21.setPdpSubgroup(SUBGROUP1);
87 status21.setPolicies(policies);
89 PdpStatus status22 = makeCopy(status21);
90 status22.setState(PdpState.PASSIVE);
92 PdpStatus status31 = new PdpStatus();
93 status31.setName(PDP3);
94 status31.setState(PdpState.ACTIVE);
95 status31.setPdpGroup(DEACT_GROUP);
96 status31.setPdpType(SUBGROUP2);
97 status31.setPdpSubgroup(SUBGROUP2);
98 status31.setPolicies(Collections.emptyList());
100 PdpStatus status32 = makeCopy(status31);
101 status32.setState(PdpState.PASSIVE);
103 context.addPdp(PDP1, SUBGROUP1).addReply(status11).addReply(status12);
104 context.addPdp(PDP2, SUBGROUP1).addReply(status21).addReply(status22);
105 context.addPdp(PDP3, SUBGROUP2).addReply(status31).addReply(status32);
107 context.startThreads();
109 String uri = GROUP_ENDPOINT + "/" + DEACT_GROUP + "?state=PASSIVE";
111 Invocation.Builder invocationBuilder = sendRequest(uri);
112 Response rawresp = invocationBuilder.put(Entity.json(""));
113 PdpGroupStateChangeResponse resp = rawresp.readEntity(PdpGroupStateChangeResponse.class);
114 assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
115 assertNull(resp.getErrorDetails());
120 private PdpStatus makeCopy(PdpStatus source) {
121 PdpStatus status = new PdpStatus();
123 status.setHealthy(source.getHealthy());
124 status.setName(source.getName());
125 status.setPdpGroup(source.getPdpGroup());
126 status.setPdpSubgroup(source.getPdpSubgroup());
127 status.setPdpType(source.getPdpType());
128 status.setPolicies(source.getPolicies());