Allow handling of legact model artifacts
[aai/model-loader.git] / src / test / java / org / openecomp / modelloader / entity / model / ModelSorterTest.java
1 /**
2  * ============LICENSE_START=======================================================
3  * Model Loader
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  * http://www.apache.org/licenses/LICENSE-2.0
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  *
20  * ECOMP and OpenECOMP are trademarks
21  * and service marks of AT&T Intellectual Property.
22  */
23 package org.openecomp.modelloader.entity.model;
24
25 import static org.junit.Assert.assertEquals;
26 import static org.junit.Assert.assertNotNull;
27
28 import java.util.ArrayList;
29 import java.util.Collections;
30 import java.util.List;
31
32 import org.junit.Test;
33 import org.openecomp.modelloader.entity.Artifact;
34
35 public class ModelSorterTest {
36
37   @Test
38   public void noModels() {
39
40     List<Artifact> emptyList = Collections.emptyList();
41
42     ModelSorter sorter = new ModelSorter();
43     sorter = new ModelSorter();
44
45     List<Artifact> sortedList = sorter.sort(emptyList);
46     assertNotNull(sortedList);
47     assertEquals(0, sortedList.size());
48
49   }
50
51   @Test
52   public void singleModel() {
53
54     List<Artifact> modelList = new ArrayList<Artifact>();
55
56     ModelArtifact model = new ModelArtifact();
57     model.setModelInvariantId("aaa");
58     model.setModelVerId("111");
59     model.addDependentModelId("xyz|123");
60     modelList.add(model);
61
62     ModelSorter sorter = new ModelSorter();
63     sorter = new ModelSorter();
64
65     List<Artifact> sortedList = sorter.sort(modelList);
66     assertNotNull(sortedList);
67     assertEquals(1, sortedList.size());
68
69   }
70
71   /**
72    * 
73    * depends on depends on B ------> A -------> C
74    *
75    *
76    * Input list = a, b, c Sorted list = c, a, b
77    *
78    */
79   @Test
80   public void multipleModels() {
81
82     List<Artifact> modelList = new ArrayList<Artifact>();
83
84     ModelArtifact aaaa = new ModelArtifact();
85     aaaa.setModelInvariantId("aaaa");
86     aaaa.setModelVerId("mvaaaa");
87     aaaa.addDependentModelId("cccc|mvcccc");
88
89     ModelArtifact bbbb = new ModelArtifact();
90     bbbb.setModelInvariantId("bbbb");
91     bbbb.setModelVerId("mvbbbb");
92     bbbb.addDependentModelId("aaaa|mvaaaa");
93
94     ModelArtifact cccc = new ModelArtifact();
95     cccc.setModelInvariantId("cccc");
96     cccc.setModelVerId("mvcccc");
97
98     modelList.add(aaaa);
99     modelList.add(bbbb);
100     modelList.add(cccc);
101
102     ModelSorter sorter = new ModelSorter();
103     sorter = new ModelSorter();
104
105     List<Artifact> sortedList = sorter.sort(modelList);
106     assertNotNull(sortedList);
107     assertEquals(3, sortedList.size());
108
109     assertEquals(cccc, sortedList.get(0));
110     assertEquals(aaaa, sortedList.get(1));
111     assertEquals(bbbb, sortedList.get(2));
112   }
113   
114   @Test
115   public void multipleModelsV8() {
116
117     List<Artifact> modelList = new ArrayList<Artifact>();
118
119     ModelV8Artifact aaaa = new ModelV8Artifact();
120     aaaa.setModelNameVersionId("aaaa");
121     aaaa.addDependentModelId("cccc");
122
123     ModelV8Artifact bbbb = new ModelV8Artifact();
124     bbbb.setModelNameVersionId("bbbb");
125     bbbb.addDependentModelId("aaaa");
126
127     ModelV8Artifact cccc = new ModelV8Artifact();
128     cccc.setModelNameVersionId("cccc");
129
130     modelList.add(aaaa);
131     modelList.add(bbbb);
132     modelList.add(cccc);
133
134     ModelSorter sorter = new ModelSorter();
135     sorter = new ModelSorter();
136
137     List<Artifact> sortedList = sorter.sort(modelList);
138     assertNotNull(sortedList);
139     assertEquals(3, sortedList.size());
140
141     assertEquals(cccc, sortedList.get(0));
142     assertEquals(aaaa, sortedList.get(1));
143     assertEquals(bbbb, sortedList.get(2));
144   }
145     
146   @Test
147   public void multipleModelsAndNamedQueries() {
148
149     List<Artifact> modelList = new ArrayList<Artifact>();
150
151     ModelArtifact aaaa = new ModelArtifact();
152     aaaa.setModelInvariantId("aaaa");
153     aaaa.setModelVerId("1111");
154     aaaa.addDependentModelId("cccc|2222");
155     
156     NamedQueryArtifact nq1 = new NamedQueryArtifact();
157     nq1.setNamedQueryUuid("nq1");
158     nq1.addDependentModelId("aaaa|1111");
159     
160     NamedQueryArtifact nq2 = new NamedQueryArtifact();
161     nq2.setNamedQueryUuid("nq2");
162     nq2.addDependentModelId("existing-model");
163     
164
165     modelList.add(nq1);
166     modelList.add(nq2);
167     modelList.add(aaaa);
168
169     ModelSorter sorter = new ModelSorter();
170     sorter = new ModelSorter();
171
172     List<Artifact> sortedList = sorter.sort(modelList);
173     assertNotNull(sortedList);
174     assertEquals(3, sortedList.size());
175
176     System.out.println(sortedList.get(0) + "-" + sortedList.get(1) + "-" + sortedList.get(2));
177     assertEquals(aaaa, sortedList.get(0));
178     assertEquals(nq2, sortedList.get(1));
179     assertEquals(nq1, sortedList.get(2));
180   }
181   
182   @Test(expected = RuntimeException.class)
183   public void circularDependency() {
184
185     List<Artifact> modelList = new ArrayList<Artifact>();
186
187     ModelArtifact aaaa = new ModelArtifact();
188     aaaa.setModelInvariantId("aaaa");
189     aaaa.setModelVerId("1111");
190     aaaa.addDependentModelId("bbbb|1111");
191
192     ModelArtifact bbbb = new ModelArtifact();
193     bbbb.setModelInvariantId("bbbb");
194     bbbb.setModelVerId("1111");
195     bbbb.addDependentModelId("aaaa|1111");
196
197     modelList.add(aaaa);
198     modelList.add(bbbb);
199
200     ModelSorter sorter = new ModelSorter();
201     sorter = new ModelSorter();
202
203     List<Artifact> sortedList = sorter.sort(modelList);
204     assertNotNull(sortedList);
205     assertEquals(2, sortedList.size());
206
207   }
208
209 }