2fa7cfb4b85ac763a71b28d112088ce82c230bc7
[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  * 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
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
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=========================================================
21  */
22
23 package org.onap.policy.pap.main.rest.e2e;
24
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertNull;
27
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;
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      * Sets up.
51      */
52     @Override
53     @Before
54     public void setUp() throws Exception {
55         addToscaPolicyTypes("monitoring.policy-type.yaml");
56         addToscaPolicies("monitoring.policy.yaml");
57         super.setUp();
58
59         context = new End2EndContext();
60     }
61
62     @Test
63     public void testMakePassive() throws Exception {
64         addGroups("stateChangeGroupDeactivate.json");
65
66         ToscaConceptIdentifier policy =
67                         new ToscaConceptIdentifier("onap.restart.tca", "1.0.0");
68         List<ToscaConceptIdentifier> policies = Collections.singletonList(policy);
69
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);
77
78         PdpStatus status12 = makeCopy(status11);
79         status12.setState(PdpState.PASSIVE);
80
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);
88
89         PdpStatus status22 = makeCopy(status21);
90         status22.setState(PdpState.PASSIVE);
91
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());
99
100         PdpStatus status32 = makeCopy(status31);
101         status32.setState(PdpState.PASSIVE);
102
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);
106
107         context.startThreads();
108
109         String uri = GROUP_ENDPOINT + "/" + DEACT_GROUP + "?state=PASSIVE";
110
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());
116
117         context.await();
118     }
119
120     private PdpStatus makeCopy(PdpStatus source) {
121         PdpStatus status = new PdpStatus();
122
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());
129
130         return status;
131     }
132 }