2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
6 * Modifications Copyright (C) 2021 Nordix Foundation.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.policy.pap.main.rest.e2e;
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertNull;
27 import java.util.Collections;
28 import java.util.List;
29 import javax.ws.rs.client.Entity;
30 import javax.ws.rs.client.Invocation;
31 import javax.ws.rs.core.Response;
32 import org.junit.Before;
33 import org.junit.BeforeClass;
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";
50 * Starts Main and adds policies to the DB.
52 * @throws Exception if an error occurs
55 public static void setUpBeforeClass() throws Exception {
56 End2EndBase.setUpBeforeClass();
58 addToscaPolicyTypes("monitoring.policy-type.yaml");
59 addToscaPolicies("monitoring.policy.yaml");
67 public void setUp() throws Exception {
70 context = new End2EndContext();
74 public void testMakePassive() throws Exception {
75 addGroups("stateChangeGroupDeactivate.json");
77 ToscaConceptIdentifier policy =
78 new ToscaConceptIdentifier("onap.restart.tca", "1.0.0");
79 List<ToscaConceptIdentifier> policies = Collections.singletonList(policy);
81 PdpStatus status11 = new PdpStatus();
82 status11.setName(PDP1);
83 status11.setState(PdpState.ACTIVE);
84 status11.setPdpGroup(DEACT_GROUP);
85 status11.setPdpType(SUBGROUP1);
86 status11.setPdpSubgroup(SUBGROUP1);
87 status11.setPolicies(policies);
89 PdpStatus status12 = makeCopy(status11);
90 status12.setState(PdpState.PASSIVE);
92 PdpStatus status21 = new PdpStatus();
93 status21.setName(PDP2);
94 status21.setState(PdpState.ACTIVE);
95 status21.setPdpGroup(DEACT_GROUP);
96 status21.setPdpType(SUBGROUP1);
97 status21.setPdpSubgroup(SUBGROUP1);
98 status21.setPolicies(policies);
100 PdpStatus status22 = makeCopy(status21);
101 status22.setState(PdpState.PASSIVE);
103 PdpStatus status31 = new PdpStatus();
104 status31.setName(PDP3);
105 status31.setState(PdpState.ACTIVE);
106 status31.setPdpGroup(DEACT_GROUP);
107 status31.setPdpType(SUBGROUP2);
108 status31.setPdpSubgroup(SUBGROUP2);
109 status31.setPolicies(Collections.emptyList());
111 PdpStatus status32 = makeCopy(status31);
112 status32.setState(PdpState.PASSIVE);
114 context.addPdp(PDP1, SUBGROUP1).addReply(status11).addReply(status12);
115 context.addPdp(PDP2, SUBGROUP1).addReply(status21).addReply(status22);
116 context.addPdp(PDP3, SUBGROUP2).addReply(status31).addReply(status32);
118 context.startThreads();
120 String uri = GROUP_ENDPOINT + "/" + DEACT_GROUP + "?state=PASSIVE";
122 Invocation.Builder invocationBuilder = sendRequest(uri);
123 Response rawresp = invocationBuilder.put(Entity.json(""));
124 PdpGroupStateChangeResponse resp = rawresp.readEntity(PdpGroupStateChangeResponse.class);
125 assertEquals(Response.Status.OK.getStatusCode(), rawresp.getStatus());
126 assertNull(resp.getErrorDetails());
131 private PdpStatus makeCopy(PdpStatus source) {
132 PdpStatus status = new PdpStatus();
134 status.setHealthy(source.getHealthy());
135 status.setName(source.getName());
136 status.setPdpGroup(source.getPdpGroup());
137 status.setPdpSubgroup(source.getPdpSubgroup());
138 status.setPdpType(source.getPdpType());
139 status.setPolicies(source.getPolicies());