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