Renaming openecomp to onap
[aai/model-loader.git] / src / test / java / org / onap / aai / modelloader / entity / model / ModelSorterTest.java
1 /**
2  * ============LICENSE_START=======================================================
3  * org.onap.aai
4  * ================================================================================
5  * Copyright © 2017 AT&T Intellectual Property.
6  * Copyright © 2017 Amdocs
7  * 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  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
23  */
24 package org.onap.aai.modelloader.entity.model;
25
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertNotNull;
28
29 import java.util.ArrayList;
30 import java.util.Collections;
31 import java.util.List;
32
33 import org.junit.Test;
34 import org.onap.aai.modelloader.entity.Artifact;
35 import org.onap.aai.modelloader.entity.model.ModelArtifact;
36 import org.onap.aai.modelloader.entity.model.ModelSorter;
37 import org.onap.aai.modelloader.entity.model.ModelV8Artifact;
38 import org.onap.aai.modelloader.entity.model.NamedQueryArtifact;
39
40 public class ModelSorterTest {
41
42   @Test
43   public void noModels() {
44
45     List<Artifact> emptyList = Collections.emptyList();
46
47     ModelSorter sorter = new ModelSorter();
48     sorter = new ModelSorter();
49
50     List<Artifact> sortedList = sorter.sort(emptyList);
51     assertNotNull(sortedList);
52     assertEquals(0, sortedList.size());
53
54   }
55
56   @Test
57   public void singleModel() {
58
59     List<Artifact> modelList = new ArrayList<Artifact>();
60
61     ModelArtifact model = new ModelArtifact();
62     model.setModelInvariantId("aaa");
63     model.setModelVerId("111");
64     model.addDependentModelId("xyz|123");
65     modelList.add(model);
66
67     ModelSorter sorter = new ModelSorter();
68     sorter = new ModelSorter();
69
70     List<Artifact> sortedList = sorter.sort(modelList);
71     assertNotNull(sortedList);
72     assertEquals(1, sortedList.size());
73
74   }
75
76   /**
77    * 
78    * depends on depends on B ------> A -------> C
79    *
80    *
81    * Input list = a, b, c Sorted list = c, a, b
82    *
83    */
84   @Test
85   public void multipleModels() {
86
87     List<Artifact> modelList = new ArrayList<Artifact>();
88
89     ModelArtifact aaaa = new ModelArtifact();
90     aaaa.setModelInvariantId("aaaa");
91     aaaa.setModelVerId("mvaaaa");
92     aaaa.addDependentModelId("cccc|mvcccc");
93
94     ModelArtifact bbbb = new ModelArtifact();
95     bbbb.setModelInvariantId("bbbb");
96     bbbb.setModelVerId("mvbbbb");
97     bbbb.addDependentModelId("aaaa|mvaaaa");
98
99     ModelArtifact cccc = new ModelArtifact();
100     cccc.setModelInvariantId("cccc");
101     cccc.setModelVerId("mvcccc");
102
103     modelList.add(aaaa);
104     modelList.add(bbbb);
105     modelList.add(cccc);
106
107     ModelSorter sorter = new ModelSorter();
108     sorter = new ModelSorter();
109
110     List<Artifact> sortedList = sorter.sort(modelList);
111     assertNotNull(sortedList);
112     assertEquals(3, sortedList.size());
113
114     assertEquals(cccc, sortedList.get(0));
115     assertEquals(aaaa, sortedList.get(1));
116     assertEquals(bbbb, sortedList.get(2));
117   }
118   
119   @Test
120   public void multipleModelsV8() {
121
122     List<Artifact> modelList = new ArrayList<Artifact>();
123
124     ModelV8Artifact aaaa = new ModelV8Artifact();
125     aaaa.setModelNameVersionId("aaaa");
126     aaaa.addDependentModelId("cccc");
127
128     ModelV8Artifact bbbb = new ModelV8Artifact();
129     bbbb.setModelNameVersionId("bbbb");
130     bbbb.addDependentModelId("aaaa");
131
132     ModelV8Artifact cccc = new ModelV8Artifact();
133     cccc.setModelNameVersionId("cccc");
134
135     modelList.add(aaaa);
136     modelList.add(bbbb);
137     modelList.add(cccc);
138
139     ModelSorter sorter = new ModelSorter();
140     sorter = new ModelSorter();
141
142     List<Artifact> sortedList = sorter.sort(modelList);
143     assertNotNull(sortedList);
144     assertEquals(3, sortedList.size());
145
146     assertEquals(cccc, sortedList.get(0));
147     assertEquals(aaaa, sortedList.get(1));
148     assertEquals(bbbb, sortedList.get(2));
149   }
150     
151   @Test
152   public void multipleModelsAndNamedQueries() {
153
154     List<Artifact> modelList = new ArrayList<Artifact>();
155
156     ModelArtifact aaaa = new ModelArtifact();
157     aaaa.setModelInvariantId("aaaa");
158     aaaa.setModelVerId("1111");
159     aaaa.addDependentModelId("cccc|2222");
160     
161     NamedQueryArtifact nq1 = new NamedQueryArtifact();
162     nq1.setNamedQueryUuid("nq1");
163     nq1.addDependentModelId("aaaa|1111");
164     
165     NamedQueryArtifact nq2 = new NamedQueryArtifact();
166     nq2.setNamedQueryUuid("nq2");
167     nq2.addDependentModelId("existing-model");
168     
169
170     modelList.add(nq1);
171     modelList.add(nq2);
172     modelList.add(aaaa);
173
174     ModelSorter sorter = new ModelSorter();
175     sorter = new ModelSorter();
176
177     List<Artifact> sortedList = sorter.sort(modelList);
178     assertNotNull(sortedList);
179     assertEquals(3, sortedList.size());
180
181     System.out.println(sortedList.get(0) + "-" + sortedList.get(1) + "-" + sortedList.get(2));
182     assertEquals(aaaa, sortedList.get(0));
183     assertEquals(nq2, sortedList.get(1));
184     assertEquals(nq1, sortedList.get(2));
185   }
186   
187   @Test(expected = RuntimeException.class)
188   public void circularDependency() {
189
190     List<Artifact> modelList = new ArrayList<Artifact>();
191
192     ModelArtifact aaaa = new ModelArtifact();
193     aaaa.setModelInvariantId("aaaa");
194     aaaa.setModelVerId("1111");
195     aaaa.addDependentModelId("bbbb|1111");
196
197     ModelArtifact bbbb = new ModelArtifact();
198     bbbb.setModelInvariantId("bbbb");
199     bbbb.setModelVerId("1111");
200     bbbb.addDependentModelId("aaaa|1111");
201
202     modelList.add(aaaa);
203     modelList.add(bbbb);
204
205     ModelSorter sorter = new ModelSorter();
206     sorter = new ModelSorter();
207
208     List<Artifact> sortedList = sorter.sort(modelList);
209     assertNotNull(sortedList);
210     assertEquals(2, sortedList.size());
211
212   }
213
214 }