blob: b636167ddc512eada6773b31518037ae3313ee2b [file] [log] [blame]
Toshio Koideb609b3b2014-02-14 18:25:52 -08001package net.onrc.onos.intent;
2
Toshio Koide27ffd412014-02-18 19:15:27 -08003import static org.junit.Assert.assertEquals;
Toshio Koide066506e2014-02-20 19:52:09 -08004import static org.junit.Assert.assertNull;
5import static org.junit.Assert.assertSame;
6import net.onrc.onos.intent.ErrorIntent.ErrorType;
Toshio Koideb609b3b2014-02-14 18:25:52 -08007import net.onrc.onos.intent.Intent.IntentState;
Toshio Koide066506e2014-02-20 19:52:09 -08008import net.onrc.onos.intent.IntentMap.ChangedEventType;
9import net.onrc.onos.intent.IntentOperation.Operator;
10import net.onrc.onos.intent.runtime.IntentStateList;
Toshio Koideb609b3b2014-02-14 18:25:52 -080011
12import org.junit.After;
13import org.junit.Before;
14import org.junit.Test;
15
Toshio Koide066506e2014-02-20 19:52:09 -080016/**
17 * @author Toshio Koide (t-koide@onlab.us)
18 */
Toshio Koideb609b3b2014-02-14 18:25:52 -080019public class IntentMapTest {
20
21 @Before
22 public void setUp() throws Exception {
23 }
24
25 @After
26 public void tearDown() throws Exception {
27 }
28
29 @Test
Toshio Koide066506e2014-02-20 19:52:09 -080030 public void testCreate() {
Toshio Koideb609b3b2014-02-14 18:25:52 -080031 IntentMap intents = new IntentMap();
Toshio Koide066506e2014-02-20 19:52:09 -080032 assertEquals(0, intents.getAllIntents().size());
33 }
Toshio Koideb609b3b2014-02-14 18:25:52 -080034
Toshio Koide066506e2014-02-20 19:52:09 -080035 @Test
36 public void testChangedEventCreate() {
37 IntentMap intents = new IntentMap();
38 IntentMap.ChangedEvent event = intents.new ChangedEvent(
39 ChangedEventType.ADDED,
40 new Intent("id1"));
41 assertEquals(ChangedEventType.ADDED, event.eventType);
42 assertEquals("id1", event.intent.getId());
43 }
Toshio Koideb609b3b2014-02-14 18:25:52 -080044
Toshio Koide066506e2014-02-20 19:52:09 -080045 @Test
46 public void testAddOperations() {
47 IntentMap intents = new IntentMap();
48 assertEquals(0, intents.getAllIntents().size());
49
50 Intent intent1 = new Intent("1");
Toshio Koideb609b3b2014-02-14 18:25:52 -080051 ShortestPathIntent intent2 =
52 new ShortestPathIntent("2", 21L, 22L, 23L, 24L, 25L, 26L);
53 ConstrainedShortestPathIntent intent3 =
54 new ConstrainedShortestPathIntent("3", 31L, 32L, 33L, 34L, 35L, 36L, 1000.0);
55
Toshio Koide066506e2014-02-20 19:52:09 -080056 IntentOperationList operations = new IntentOperationList();
57 operations.add(Operator.ADD, intent1);
58 operations.add(Operator.ADD, intent2);
59 operations.add(Operator.ADD, intent3);
60 assertEquals(3, operations.size());
61
Toshio Koideb609b3b2014-02-14 18:25:52 -080062 intents.executeOperations(operations);
Toshio Koideb609b3b2014-02-14 18:25:52 -080063 assertEquals(3, intents.getAllIntents().size());
Toshio Koide066506e2014-02-20 19:52:09 -080064 assertSame(intent1, intents.getIntent("1"));
65 assertSame(intent2, intents.getIntent("2"));
66 assertSame(intent3, intents.getIntent("3"));
67 }
Toshio Koideb609b3b2014-02-14 18:25:52 -080068
Toshio Koide066506e2014-02-20 19:52:09 -080069 @Test
70 public void testAddOperationsOverwrite() {
71 IntentMap intents = new IntentMap();
Toshio Koideb609b3b2014-02-14 18:25:52 -080072
Toshio Koide066506e2014-02-20 19:52:09 -080073 Intent intent1 = new Intent("1");
74 Intent intent2 = new Intent("2");
75 Intent intent3 = new Intent("3");
Toshio Koideb609b3b2014-02-14 18:25:52 -080076 Intent intent4 = new Intent("1");
Toshio Koide066506e2014-02-20 19:52:09 -080077 Intent intent5 = new Intent("2");
78 Intent intent6 = new Intent("4");
79
80 IntentOperationList operations = new IntentOperationList();
81 operations.add(Operator.ADD, intent1);
82 operations.add(Operator.ADD, intent2);
83 operations.add(Operator.ADD, intent3);
84 assertEquals(3, operations.size());
85
86 intents.executeOperations(operations);
87 assertEquals(3, intents.getAllIntents().size());
88 assertSame(intent1, intents.getIntent("1"));
89 assertSame(intent2, intents.getIntent("2"));
90 assertSame(intent3, intents.getIntent("3"));
91
Toshio Koideb609b3b2014-02-14 18:25:52 -080092 operations.clear();
Toshio Koide066506e2014-02-20 19:52:09 -080093 operations.add(Operator.ADD, intent4);
94 operations.add(Operator.ADD, intent5);
95 operations.add(Operator.ADD, intent6);
96 assertEquals(3, operations.size());
97
98 intents.executeOperations(operations);
99 assertEquals(4, intents.getAllIntents().size());
100 assertSame(intent4, intents.getIntent("1"));
101 assertSame(intent5, intents.getIntent("2"));
102 assertSame(intent3, intents.getIntent("3"));
103 assertSame(intent6, intents.getIntent("4"));
104 }
105
106 @Test
107 public void testRemoveOperation() {
108 IntentMap intents = new IntentMap();
109
110 Intent intent1 = new Intent("1");
111 ShortestPathIntent intent2 =
112 new ShortestPathIntent("2", 21L, 22L, 23L, 24L, 25L, 26L);
113 ConstrainedShortestPathIntent intent3 =
114 new ConstrainedShortestPathIntent("3", 31L, 32L, 33L, 34L, 35L, 36L, 1000.0);
115
116 IntentOperationList operations = new IntentOperationList();
117 operations.add(Operator.ADD, intent1);
118 operations.add(Operator.ADD, intent2);
119 operations.add(Operator.ADD, intent3);
120 intents.executeOperations(operations);
121 assertEquals(3, intents.getAllIntents().size());
122 assertSame(intent1, intents.getIntent("1"));
123 assertSame(intent2, intents.getIntent("2"));
124 assertSame(intent3, intents.getIntent("3"));
125
126 operations.clear();
127 operations.add(Operator.REMOVE, new Intent("1"));
128 operations.add(Operator.REMOVE, new Intent("3"));
129 intents.executeOperations(operations);
130 assertEquals(3, intents.getAllIntents().size());
131 assertSame(intent1, intents.getIntent("1"));
132 assertSame(intent2, intents.getIntent("2"));
133 assertSame(intent3, intents.getIntent("3"));
134 assertEquals(IntentState.DEL_REQ, intents.getIntent("1").getState());
135 assertEquals(IntentState.CREATED, intents.getIntent("2").getState());
136 assertEquals(IntentState.DEL_REQ, intents.getIntent("3").getState());
137 }
138
139 @Test
140 public void testErrorOperation() {
141 IntentMap intents = new IntentMap();
142 IntentOperationList operations = new IntentOperationList();
143 operations.add(Operator.ADD, new Intent("1", IntentState.CREATED));
144 operations.add(Operator.ADD, new Intent("2", IntentState.INST_REQ));
145 operations.add(Operator.ADD, new Intent("3", IntentState.INST_ACK));
146 operations.add(Operator.ADD, new Intent("4", IntentState.INST_NACK));
147 operations.add(Operator.ADD, new Intent("5", IntentState.REROUTE_REQ));
148 operations.add(Operator.ADD, new Intent("6", IntentState.DEL_REQ));
149 operations.add(Operator.ADD, new Intent("7", IntentState.DEL_ACK));
150 operations.add(Operator.ADD, new Intent("8", IntentState.DEL_PENDING));
151 intents.executeOperations(operations);
152 assertEquals(8, intents.getAllIntents().size());
153
154 operations.clear();
155 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("1")));
156 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("2")));
157 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("3")));
158 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("4")));
159 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("5")));
160 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("6")));
161 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("7")));
162 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("8")));
Toshio Koideb609b3b2014-02-14 18:25:52 -0800163 intents.executeOperations(operations);
164
Toshio Koide066506e2014-02-20 19:52:09 -0800165 assertEquals(IntentState.INST_NACK, intents.getIntent("1").getState());
166 assertEquals(IntentState.INST_NACK, intents.getIntent("2").getState());
167 assertEquals(IntentState.INST_NACK, intents.getIntent("3").getState());
168 assertEquals(IntentState.INST_NACK, intents.getIntent("4").getState());
169 assertEquals(IntentState.INST_NACK, intents.getIntent("5").getState());
170 assertEquals(IntentState.DEL_PENDING, intents.getIntent("6").getState());
171 assertEquals(IntentState.DEL_ACK, intents.getIntent("7").getState());
172 assertEquals(IntentState.DEL_PENDING, intents.getIntent("8").getState());
173 }
Toshio Koideb609b3b2014-02-14 18:25:52 -0800174
Toshio Koide066506e2014-02-20 19:52:09 -0800175 @Test
176 public void testPurge() {
177 IntentMap intents = new IntentMap();
178 IntentOperationList operations = new IntentOperationList();
179 operations.add(Operator.ADD, new Intent("1", IntentState.CREATED));
180 operations.add(Operator.ADD, new Intent("2", IntentState.INST_REQ));
181 operations.add(Operator.ADD, new Intent("3", IntentState.INST_ACK));
182 operations.add(Operator.ADD, new Intent("4", IntentState.INST_NACK));
183 operations.add(Operator.ADD, new Intent("5", IntentState.REROUTE_REQ));
184 operations.add(Operator.ADD, new Intent("6", IntentState.DEL_REQ));
185 operations.add(Operator.ADD, new Intent("7", IntentState.DEL_ACK));
186 operations.add(Operator.ADD, new Intent("8", IntentState.DEL_PENDING));
187 intents.executeOperations(operations);
188 assertEquals(8, intents.getAllIntents().size());
Toshio Koideb609b3b2014-02-14 18:25:52 -0800189
190 intents.purge();
191
Toshio Koide066506e2014-02-20 19:52:09 -0800192 assertEquals(6, intents.getAllIntents().size());
193 assertEquals("1", intents.getIntent("1").getId());
194 assertEquals("2", intents.getIntent("2").getId());
195 assertEquals("3", intents.getIntent("3").getId());
196 assertNull(intents.getIntent("4"));
197 assertEquals("5", intents.getIntent("5").getId());
198 assertEquals("6", intents.getIntent("6").getId());
199 assertNull("7", intents.getIntent("7"));
200 assertEquals("8", intents.getIntent("8").getId());
201 }
Toshio Koideb609b3b2014-02-14 18:25:52 -0800202
Toshio Koide066506e2014-02-20 19:52:09 -0800203 @Test
204 public void testChangeStates() {
205 IntentMap intents = new IntentMap();
206 IntentOperationList operations = new IntentOperationList();
207 operations.add(Operator.ADD, new Intent("1", IntentState.CREATED));
208 operations.add(Operator.ADD, new Intent("2", IntentState.INST_REQ));
209 operations.add(Operator.ADD, new Intent("3", IntentState.INST_ACK));
210 operations.add(Operator.ADD, new Intent("4", IntentState.INST_NACK));
211 operations.add(Operator.ADD, new Intent("5", IntentState.REROUTE_REQ));
212 operations.add(Operator.ADD, new Intent("6", IntentState.DEL_REQ));
213 operations.add(Operator.ADD, new Intent("7", IntentState.DEL_ACK));
214 operations.add(Operator.ADD, new Intent("8", IntentState.DEL_PENDING));
215 intents.executeOperations(operations);
216 assertEquals(8, intents.getAllIntents().size());
217
218 IntentStateList states = new IntentStateList();
219 states.put("8", IntentState.CREATED);
220 states.put("1", IntentState.INST_REQ);
221 states.put("2", IntentState.INST_ACK);
222 states.put("3", IntentState.INST_NACK);
223 states.put("4", IntentState.REROUTE_REQ);
224 states.put("5", IntentState.DEL_REQ);
225 states.put("6", IntentState.DEL_ACK);
226 states.put("7", IntentState.DEL_PENDING);
227 intents.changeStates(states);
228
229 assertEquals(IntentState.INST_REQ, intents.getIntent("1").getState());
230 assertEquals(IntentState.INST_ACK, intents.getIntent("2").getState());
231 assertEquals(IntentState.INST_NACK, intents.getIntent("3").getState());
232 assertEquals(IntentState.REROUTE_REQ, intents.getIntent("4").getState());
233 assertEquals(IntentState.DEL_REQ, intents.getIntent("5").getState());
234 assertEquals(IntentState.DEL_ACK, intents.getIntent("6").getState());
235 assertEquals(IntentState.DEL_PENDING, intents.getIntent("7").getState());
236 assertEquals(IntentState.CREATED, intents.getIntent("8").getState());
Toshio Koideb609b3b2014-02-14 18:25:52 -0800237 }
238}