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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
20 package org.onap.so.cnfm.lcm.database.service;
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;
50 * @author Waqas Ikram (waqas.ikram@est.tech)
53 @RunWith(SpringRunner.class)
54 @SpringBootTest(classes = TestApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
55 @ActiveProfiles("test")
56 public class DatabaseServiceProviderTest {
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);
62 private DatabaseServiceProvider databaseServiceProvider;
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);
70 Optional<Job> actual = databaseServiceProvider.getJob(expected.getJobId());
71 assertEquals(expected, actual.get());
73 actual = databaseServiceProvider.getRefreshedJob(expected.getJobId());
74 assertEquals(expected, actual.get());
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);
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));
88 final Optional<Job> actual = databaseServiceProvider.getJob(job.getJobId());
89 final Job actualJob = actual.get();
91 assertEquals(job.getJobId(), actualJob.getJobId());
92 assertFalse(actualJob.getJobStatuses().isEmpty());
93 assertEquals(job.getJobId(), actualJob.getJobStatuses().get(0).getJob().getJobId());
98 public void testAddAsInst_StoredInDatabase_ableTofindByQuery() {
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");
107 databaseServiceProvider.saveAsInst(asInst);
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());
117 actual = databaseServiceProvider.getAsInstByName(name);
118 actualAsInst = actual.get();
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());
127 assertTrue(databaseServiceProvider.isAsInstExists(name));
131 public void testAddAsdeploymentItem_StoredInDatabase_ableTofindByQuery() {
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");
140 databaseServiceProvider.saveAsInst(asInst);
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);
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());
160 List<AsDeploymentItem> asdeploymentItemList =
161 databaseServiceProvider.getAsDeploymentItemByAsInstId(asInst.getAsInstId());
162 assertFalse(asdeploymentItemList.isEmpty());
163 assertEquals(asInst.getAsInstId(), asdeploymentItemList.get(0).getAsInst().getAsInstId());
165 asdeploymentItemList =
166 databaseServiceProvider.getAsDeploymentItemByAsInstIdAndName(asInst.getAsInstId(), DUMMY_NAME);
168 assertFalse(asdeploymentItemList.isEmpty());
169 assertEquals(asInst.getAsInstId(), asdeploymentItemList.get(0).getAsInst().getAsInstId());
170 assertEquals(DUMMY_NAME, asdeploymentItemList.get(0).getName());
172 final AsLifecycleParam aslifecycleparam =
173 new AsLifecycleParam().asDeploymentItemInst(asdeploymentItem).asLifecycleParam("TEST");
174 databaseServiceProvider.saveAsLifecycleParam(aslifecycleparam);
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());
183 List<AsLifecycleParam> aslifecycleParamsList =
184 databaseServiceProvider.getAsLifecycleParamByAsDeploymentItemId(asdeploymentItem.getAsDeploymentItemInstId());
185 assertFalse(aslifecycleParamsList.isEmpty());
186 assertEquals(asdeploymentItem.getAsDeploymentItemInstId(), aslifecycleParamsList.get(0).getAsDeploymentItemInst().getAsDeploymentItemInstId());
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");
198 databaseServiceProvider.saveAsInst(asInst);
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("");
205 databaseServiceProvider.addAsLcmOpOcc(asLcmOpOcc);
207 final Optional<AsLcmOpOcc> actual = databaseServiceProvider.getAsLcmOpOcc(asLcmOpOcc.getId());
208 final AsLcmOpOcc actualLcmOpOcc = actual.get();
209 assertEquals(asLcmOpOcc.getId(), actualLcmOpOcc.getId());
211 assertEquals(asInst.getAsInstId(), actualLcmOpOcc.getAsInst().getAsInstId());