4397fb58654b3643dc26855cfb754fa04b3a1c0c
[so/adapters/so-cnf-adapter.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2023 Nordix Foundation.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20 package org.onap.so.cnfm.lcm.database.service;
21
22 import static org.junit.Assert.assertEquals;
23 import static org.junit.Assert.assertFalse;
24 import static org.junit.Assert.assertTrue;
25 import java.time.LocalDateTime;
26 import java.time.temporal.ChronoUnit;
27 import java.util.List;
28 import java.util.Optional;
29 import java.util.UUID;
30 import org.junit.Test;
31 import org.junit.runner.RunWith;
32 import org.onap.so.cnfm.lcm.database.TestApplication;
33 import org.onap.so.cnfm.lcm.database.beans.AsDeploymentItem;
34 import org.onap.so.cnfm.lcm.database.beans.AsInst;
35 import org.onap.so.cnfm.lcm.database.beans.AsLcmOpOcc;
36 import org.onap.so.cnfm.lcm.database.beans.AsLcmOpType;
37 import org.onap.so.cnfm.lcm.database.beans.AsLifecycleParam;
38 import org.onap.so.cnfm.lcm.database.beans.Job;
39 import org.onap.so.cnfm.lcm.database.beans.JobAction;
40 import org.onap.so.cnfm.lcm.database.beans.JobStatus;
41 import org.onap.so.cnfm.lcm.database.beans.JobStatusEnum;
42 import org.onap.so.cnfm.lcm.database.beans.OperationStateEnum;
43 import org.onap.so.cnfm.lcm.database.beans.State;
44 import org.springframework.beans.factory.annotation.Autowired;
45 import org.springframework.boot.test.context.SpringBootTest;
46 import org.springframework.test.context.ActiveProfiles;
47 import org.springframework.test.context.junit4.SpringRunner;
48
49 /**
50  * @author Waqas Ikram (waqas.ikram@est.tech)
51  *
52  */
53 @RunWith(SpringRunner.class)
54 @SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
55 @ActiveProfiles("test")
56 public class DatabaseServiceProviderTest {
57
58     private static final String RANDOM_ID = UUID.randomUUID().toString();
59     private static final String DUMMY_NAME = "NAME";
60     private static final LocalDateTime CURRENT_DATE_TIME = LocalDateTime.now().truncatedTo(ChronoUnit.MILLIS);
61     @Autowired
62     private DatabaseServiceProvider databaseServiceProvider;
63
64     @Test
65     public void testAddJob_StoredInDatabase() {
66         final Job expected = new Job().jobType("TYPE").jobAction(JobAction.CREATE).resourceId(RANDOM_ID)
67                 .resourceName(DUMMY_NAME).startTime(CURRENT_DATE_TIME).status(JobStatusEnum.STARTED);
68         databaseServiceProvider.addJob(expected);
69
70         Optional<Job> actual = databaseServiceProvider.getJob(expected.getJobId());
71         assertEquals(expected, actual.get());
72
73         actual = databaseServiceProvider.getRefreshedJob(expected.getJobId());
74         assertEquals(expected, actual.get());
75
76     }
77
78     @Test
79     public void testAddJobWithJobStatus_StoredInDatabase() {
80         final Job job = new Job().jobType("TYPE").jobAction(JobAction.CREATE).resourceId(RANDOM_ID)
81                 .resourceName(DUMMY_NAME).startTime(CURRENT_DATE_TIME).status(JobStatusEnum.STARTED);
82         databaseServiceProvider.addJob(job);
83
84         final JobStatus jobStatus = new JobStatus().status(JobStatusEnum.STARTED)
85                 .description("Create AS workflow process started").updatedTime(CURRENT_DATE_TIME);
86         databaseServiceProvider.addJob(job.jobStatus(jobStatus));
87
88         final Optional<Job> actual = databaseServiceProvider.getJob(job.getJobId());
89         final Job actualJob = actual.get();
90
91         assertEquals(job.getJobId(), actualJob.getJobId());
92         assertFalse(actualJob.getJobStatuses().isEmpty());
93         assertEquals(job.getJobId(), actualJob.getJobStatuses().get(0).getJob().getJobId());
94
95     }
96
97     @Test
98     public void testAddAsInst_StoredInDatabase_ableTofindByQuery() {
99
100         final String name = DUMMY_NAME + UUID.randomUUID().toString();
101         final AsInst asInst = new AsInst().name(name).asdId(RANDOM_ID).status(State.NOT_INSTANTIATED)
102                 .asdInvariantId(RANDOM_ID).statusUpdatedTime(CURRENT_DATE_TIME).asApplicationName("asApplicationName")
103                 .asApplicationVersion("asApplicationVersion").asProvider("asProvider").serviceInstanceId(RANDOM_ID)
104                 .serviceInstanceName("serviceInstanceName").cloudOwner("cloudOwner").cloudRegion("cloudRegion")
105                 .tenantId("tenantId");
106
107         databaseServiceProvider.saveAsInst(asInst);
108
109         Optional<AsInst> actual = databaseServiceProvider.getAsInst(asInst.getAsInstId());
110         AsInst actualAsInst = actual.get();
111         assertEquals(asInst.getAsInstId(), actualAsInst.getAsInstId());
112         assertEquals(RANDOM_ID, actualAsInst.getAsdId());
113         assertEquals(State.NOT_INSTANTIATED, actualAsInst.getStatus());
114         assertEquals(RANDOM_ID, actualAsInst.getAsdInvariantId());
115         assertEquals(CURRENT_DATE_TIME, actualAsInst.getStatusUpdatedTime());
116
117         actual = databaseServiceProvider.getAsInstByName(name);
118         actualAsInst = actual.get();
119
120         assertEquals(asInst.getAsInstId(), actualAsInst.getAsInstId());
121         assertEquals(RANDOM_ID, actualAsInst.getAsdId());
122         assertEquals(State.NOT_INSTANTIATED, actualAsInst.getStatus());
123         assertEquals(RANDOM_ID, actualAsInst.getAsdInvariantId());
124         assertEquals(CURRENT_DATE_TIME, actualAsInst.getStatusUpdatedTime());
125
126
127         assertTrue(databaseServiceProvider.isAsInstExists(name));
128     }
129
130     @Test
131     public void testAddAsdeploymentItem_StoredInDatabase_ableTofindByQuery() {
132
133         final String name = DUMMY_NAME + UUID.randomUUID().toString();
134         final AsInst asInst = new AsInst().name(name).asdId(RANDOM_ID).status(State.NOT_INSTANTIATED)
135                 .asdInvariantId(RANDOM_ID).statusUpdatedTime(CURRENT_DATE_TIME).asApplicationName("asApplicationName")
136                 .asApplicationVersion("asApplicationVersion").asProvider("asProvider").serviceInstanceId(RANDOM_ID)
137                 .serviceInstanceName("serviceInstanceName").cloudOwner("cloudOwner").cloudRegion("cloudRegion")
138                 .tenantId("tenantId");
139
140         databaseServiceProvider.saveAsInst(asInst);
141
142         final AsDeploymentItem asdeploymentItem =
143                 new AsDeploymentItem().asInst(asInst).name(DUMMY_NAME).itemId(RANDOM_ID).status(State.NOT_INSTANTIATED)
144                         .createTime(CURRENT_DATE_TIME).lastUpdateTime(CURRENT_DATE_TIME).releaseName("test");
145         databaseServiceProvider.saveAsDeploymentItem(asdeploymentItem);
146
147         final Optional<AsDeploymentItem> actual =
148                 databaseServiceProvider.getAsDeploymentItem(asdeploymentItem.getAsDeploymentItemInstId());
149         final AsDeploymentItem actualAsdeploymentItem = actual.get();
150         assertEquals(asInst.getAsInstId(), actualAsdeploymentItem.getAsInst().getAsInstId());
151         assertEquals(asdeploymentItem.getAsDeploymentItemInstId(), actualAsdeploymentItem.getAsDeploymentItemInstId());
152         assertEquals(asdeploymentItem.getName(), actualAsdeploymentItem.getName());
153         assertEquals(asdeploymentItem.getItemId(), actualAsdeploymentItem.getItemId());
154         assertEquals(asdeploymentItem.getStatus(), actualAsdeploymentItem.getStatus());
155         assertEquals(asdeploymentItem.getCreateTime(), actualAsdeploymentItem.getCreateTime());
156         assertEquals(asdeploymentItem.getLastUpdateTime(), actualAsdeploymentItem.getLastUpdateTime());
157         assertEquals(asdeploymentItem.getReleaseName(), actualAsdeploymentItem.getReleaseName());
158
159
160         List<AsDeploymentItem> asdeploymentItemList =
161                 databaseServiceProvider.getAsDeploymentItemByAsInstId(asInst.getAsInstId());
162         assertFalse(asdeploymentItemList.isEmpty());
163         assertEquals(asInst.getAsInstId(), asdeploymentItemList.get(0).getAsInst().getAsInstId());
164
165         asdeploymentItemList =
166                 databaseServiceProvider.getAsDeploymentItemByAsInstIdAndName(asInst.getAsInstId(), DUMMY_NAME);
167
168         assertFalse(asdeploymentItemList.isEmpty());
169         assertEquals(asInst.getAsInstId(), asdeploymentItemList.get(0).getAsInst().getAsInstId());
170         assertEquals(DUMMY_NAME, asdeploymentItemList.get(0).getName());
171
172         final AsLifecycleParam aslifecycleparam =
173                 new AsLifecycleParam().asDeploymentItemInst(asdeploymentItem).asLifecycleParam("TEST");
174         databaseServiceProvider.saveAsLifecycleParam(aslifecycleparam);
175
176         final Optional<AsLifecycleParam> actualLP =
177                 databaseServiceProvider.getAsLifecycleParam(aslifecycleparam.getAsLifecycleParamId());
178         final AsLifecycleParam actualLifecycleParam = actualLP.get();
179         assertEquals(aslifecycleparam.getLifecycleParam(), actualLifecycleParam.getLifecycleParam());
180         assertEquals(asdeploymentItem.getAsDeploymentItemInstId(), actualLifecycleParam.getAsDeploymentItemInst().getAsDeploymentItemInstId());
181         assertEquals(aslifecycleparam.getAsLifecycleParamId(), actualLifecycleParam.getAsLifecycleParamId());
182
183         List<AsLifecycleParam> aslifecycleParamsList =
184                 databaseServiceProvider.getAsLifecycleParamByAsDeploymentItemId(asdeploymentItem.getAsDeploymentItemInstId());
185         assertFalse(aslifecycleParamsList.isEmpty());
186         assertEquals(asdeploymentItem.getAsDeploymentItemInstId(), aslifecycleParamsList.get(0).getAsDeploymentItemInst().getAsDeploymentItemInstId());
187     }
188
189     @Test
190     public void testAddAsLcmOpOcc_StoredInDatabase_ableTofindByQuery() {
191         final String name = DUMMY_NAME + UUID.randomUUID().toString();
192         final AsInst asInst = new AsInst().name(name).asdId(RANDOM_ID).status(State.NOT_INSTANTIATED)
193                 .asdInvariantId(RANDOM_ID).statusUpdatedTime(CURRENT_DATE_TIME).asApplicationName("asApplicationName")
194                 .asApplicationVersion("asApplicationVersion").asProvider("asProvider").serviceInstanceId(RANDOM_ID)
195                 .serviceInstanceName("serviceInstanceName").cloudOwner("cloudOwner").cloudRegion("cloudRegion")
196                 .tenantId("tenantId");
197
198         databaseServiceProvider.saveAsInst(asInst);
199
200         final AsLcmOpOcc asLcmOpOcc = new AsLcmOpOcc().asInst(asInst).operationState(OperationStateEnum.PROCESSING)
201                 .isCancelPending(false).isAutoInvocation(false).operation(AsLcmOpType.INSTANTIATE)
202                 .startTime(CURRENT_DATE_TIME).stateEnteredTime(CURRENT_DATE_TIME).operationParams("");
203
204
205         databaseServiceProvider.addAsLcmOpOcc(asLcmOpOcc);
206
207         final Optional<AsLcmOpOcc> actual = databaseServiceProvider.getAsLcmOpOcc(asLcmOpOcc.getId());
208         final AsLcmOpOcc actualLcmOpOcc = actual.get();
209         assertEquals(asLcmOpOcc.getId(), actualLcmOpOcc.getId());
210
211         assertEquals(asInst.getAsInstId(), actualLcmOpOcc.getAsInst().getAsInstId());
212
213     }
214 }