2 * ============LICENSE_START==========================================
4 * ===================================================================
5 * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved.
6 * Copyright © 2017-2018 Amdocs
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============================================
21 package org.onap.aai.modelloader.entity.model;
23 import static org.junit.Assert.assertEquals;
24 import static org.junit.Assert.assertNotNull;
26 import java.util.ArrayList;
27 import java.util.Collections;
28 import java.util.List;
30 import org.junit.Test;
31 import org.onap.aai.modelloader.entity.Artifact;
32 import org.onap.aai.modelloader.entity.model.ModelArtifact;
33 import org.onap.aai.modelloader.entity.model.ModelSorter;
34 import org.onap.aai.modelloader.entity.model.ModelV8Artifact;
35 import org.onap.aai.modelloader.entity.model.NamedQueryArtifact;
37 public class ModelSorterTest {
40 public void noModels() {
42 List<Artifact> emptyList = Collections.emptyList();
44 ModelSorter sorter = new ModelSorter();
45 sorter = new ModelSorter();
47 List<Artifact> sortedList = sorter.sort(emptyList);
48 assertNotNull(sortedList);
49 assertEquals(0, sortedList.size());
54 public void singleModel() {
56 List<Artifact> modelList = new ArrayList<Artifact>();
58 ModelArtifact model = new ModelArtifact();
59 model.setModelInvariantId("aaa");
60 model.setModelVerId("111");
61 model.addDependentModelId("xyz|123");
64 ModelSorter sorter = new ModelSorter();
65 sorter = new ModelSorter();
67 List<Artifact> sortedList = sorter.sort(modelList);
68 assertNotNull(sortedList);
69 assertEquals(1, sortedList.size());
75 * depends on depends on B ------> A -------> C
78 * Input list = a, b, c Sorted list = c, a, b
82 public void multipleModels() {
84 List<Artifact> modelList = new ArrayList<Artifact>();
86 ModelArtifact aaaa = new ModelArtifact();
87 aaaa.setModelInvariantId("aaaa");
88 aaaa.setModelVerId("mvaaaa");
89 aaaa.addDependentModelId("cccc|mvcccc");
91 ModelArtifact bbbb = new ModelArtifact();
92 bbbb.setModelInvariantId("bbbb");
93 bbbb.setModelVerId("mvbbbb");
94 bbbb.addDependentModelId("aaaa|mvaaaa");
96 ModelArtifact cccc = new ModelArtifact();
97 cccc.setModelInvariantId("cccc");
98 cccc.setModelVerId("mvcccc");
104 ModelSorter sorter = new ModelSorter();
105 sorter = new ModelSorter();
107 List<Artifact> sortedList = sorter.sort(modelList);
108 assertNotNull(sortedList);
109 assertEquals(3, sortedList.size());
111 assertEquals(cccc, sortedList.get(0));
112 assertEquals(aaaa, sortedList.get(1));
113 assertEquals(bbbb, sortedList.get(2));
117 public void multipleModelsV8() {
119 List<Artifact> modelList = new ArrayList<Artifact>();
121 ModelV8Artifact aaaa = new ModelV8Artifact();
122 aaaa.setModelNameVersionId("aaaa");
123 aaaa.addDependentModelId("cccc");
125 ModelV8Artifact bbbb = new ModelV8Artifact();
126 bbbb.setModelNameVersionId("bbbb");
127 bbbb.addDependentModelId("aaaa");
129 ModelV8Artifact cccc = new ModelV8Artifact();
130 cccc.setModelNameVersionId("cccc");
136 ModelSorter sorter = new ModelSorter();
137 sorter = new ModelSorter();
139 List<Artifact> sortedList = sorter.sort(modelList);
140 assertNotNull(sortedList);
141 assertEquals(3, sortedList.size());
143 assertEquals(cccc, sortedList.get(0));
144 assertEquals(aaaa, sortedList.get(1));
145 assertEquals(bbbb, sortedList.get(2));
149 public void multipleModelsAndNamedQueries() {
151 List<Artifact> modelList = new ArrayList<Artifact>();
153 ModelArtifact aaaa = new ModelArtifact();
154 aaaa.setModelInvariantId("aaaa");
155 aaaa.setModelVerId("1111");
156 aaaa.addDependentModelId("cccc|2222");
158 NamedQueryArtifact nq1 = new NamedQueryArtifact();
159 nq1.setNamedQueryUuid("nq1");
160 nq1.addDependentModelId("aaaa|1111");
162 NamedQueryArtifact nq2 = new NamedQueryArtifact();
163 nq2.setNamedQueryUuid("nq2");
164 nq2.addDependentModelId("existing-model");
171 ModelSorter sorter = new ModelSorter();
172 sorter = new ModelSorter();
174 List<Artifact> sortedList = sorter.sort(modelList);
175 assertNotNull(sortedList);
176 assertEquals(3, sortedList.size());
178 System.out.println(sortedList.get(0) + "-" + sortedList.get(1) + "-" + sortedList.get(2));
179 assertEquals(aaaa, sortedList.get(0));
180 assertEquals(nq2, sortedList.get(1));
181 assertEquals(nq1, sortedList.get(2));
184 @Test(expected = RuntimeException.class)
185 public void circularDependency() {
187 List<Artifact> modelList = new ArrayList<Artifact>();
189 ModelArtifact aaaa = new ModelArtifact();
190 aaaa.setModelInvariantId("aaaa");
191 aaaa.setModelVerId("1111");
192 aaaa.addDependentModelId("bbbb|1111");
194 ModelArtifact bbbb = new ModelArtifact();
195 bbbb.setModelInvariantId("bbbb");
196 bbbb.setModelVerId("1111");
197 bbbb.addDependentModelId("aaaa|1111");
202 ModelSorter sorter = new ModelSorter();
203 sorter = new ModelSorter();
205 List<Artifact> sortedList = sorter.sort(modelList);
206 assertNotNull(sortedList);
207 assertEquals(2, sortedList.size());