df7fcc012fd4f5c559b5fac13678e0c18f3d46a4
[policy/pap.git] / main / src / test / java / org / onap / policy / pap / main / rest / e2e / PdpGroupStateChangeTest.java
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP PAP
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
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
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=========================================================
20  */
21
22 package org.onap.policy.pap.main.rest.e2e;
23
24 import static org.junit.Assert.assertEquals;
25 import static org.junit.Assert.assertNull;
26
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;
39
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";
48
49     /**
50      * Starts Main and adds policies to the DB.
51      *
52      * @throws Exception if an error occurs
53      */
54     @BeforeClass
55     public static void setUpBeforeClass() throws Exception {
56         End2EndBase.setUpBeforeClass();
57
58         addToscaPolicyTypes("monitoring.policy-type.yaml");
59         addToscaPolicies("monitoring.policy.yaml");
60     }
61
62     /**
63      * Sets up.
64      */
65     @Override
66     @Before
67     public void setUp() throws Exception {
68         super.setUp();
69
70         context = new End2EndContext();
71     }
72
73     @Test
74     public void testMakePassive() throws Exception {
75         addGroups("stateChangeGroupDeactivate.json");
76
77         ToscaConceptIdentifier policy =
78                         new ToscaConceptIdentifier("onap.restart.tca", "1.0.0");
79         List<ToscaConceptIdentifier> policies = Collections.singletonList(policy);
80
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);
88
89         PdpStatus status12 = makeCopy(status11);
90         status12.setState(PdpState.PASSIVE);
91
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);
99
100         PdpStatus status22 = makeCopy(status21);
101         status22.setState(PdpState.PASSIVE);
102
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());
110
111         PdpStatus status32 = makeCopy(status31);
112         status32.setState(PdpState.PASSIVE);
113
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);
117
118         context.startThreads();
119
120         String uri = GROUP_ENDPOINT + "/" + DEACT_GROUP + "?state=PASSIVE";
121
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());
127
128         context.await();
129     }
130
131     private PdpStatus makeCopy(PdpStatus source) {
132         PdpStatus status = new PdpStatus();
133
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());
140
141         return status;
142     }
143 }