blob: 49d26a52db21c424c424868cc798da72fd1cb8e7 [file] [log] [blame]
Jonathan Hartaa380972014-04-03 10:24:46 -07001package net.onrc.onos.core.intent;
Toshio Koideb609b3b2014-02-14 18:25:52 -08002
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;
Ray Milkey269ffb92014-04-03 14:43:30 -07006
Jonathan Hartaa380972014-04-03 10:24:46 -07007import net.onrc.onos.core.intent.ErrorIntent.ErrorType;
8import net.onrc.onos.core.intent.Intent.IntentState;
9import net.onrc.onos.core.intent.IntentMap.ChangedEventType;
10import net.onrc.onos.core.intent.IntentOperation.Operator;
11import net.onrc.onos.core.intent.runtime.IntentStateList;
Toshio Koideb609b3b2014-02-14 18:25:52 -080012
13import org.junit.After;
14import org.junit.Before;
15import org.junit.Test;
16
Toshio Koide066506e2014-02-20 19:52:09 -080017/**
Yuta HIGUCHId4acc802014-06-19 22:30:31 -070018 * Unit tests for IntentMap class.
Toshio Koide066506e2014-02-20 19:52:09 -080019 */
Toshio Koideb609b3b2014-02-14 18:25:52 -080020public class IntentMapTest {
21
Ray Milkey269ffb92014-04-03 14:43:30 -070022 @Before
23 public void setUp() throws Exception {
24 }
Toshio Koideb609b3b2014-02-14 18:25:52 -080025
Ray Milkey269ffb92014-04-03 14:43:30 -070026 @After
27 public void tearDown() throws Exception {
28 }
Toshio Koideb609b3b2014-02-14 18:25:52 -080029
Ray Milkey269ffb92014-04-03 14:43:30 -070030 @Test
31 public void testCreate() {
32 IntentMap intents = new IntentMap();
33 assertEquals(0, intents.getAllIntents().size());
34 }
Toshio Koideb609b3b2014-02-14 18:25:52 -080035
Ray Milkey269ffb92014-04-03 14:43:30 -070036 @Test
37 public void testChangedEventCreate() {
Pavlin Radoslavovfee80982014-04-10 12:12:04 -070038 IntentMap.ChangedEvent event = new IntentMap.ChangedEvent(
Ray Milkey269ffb92014-04-03 14:43:30 -070039 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
Ray Milkey269ffb92014-04-03 14:43:30 -070045 @Test
46 public void testAddOperations() {
47 IntentMap intents = new IntentMap();
48 assertEquals(0, intents.getAllIntents().size());
Toshio Koide066506e2014-02-20 19:52:09 -080049
Ray Milkey269ffb92014-04-03 14:43:30 -070050 Intent intent1 = new Intent("1");
51 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);
Toshio Koideb609b3b2014-02-14 18:25:52 -080055
Ray Milkey269ffb92014-04-03 14:43:30 -070056 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());
Toshio Koide066506e2014-02-20 19:52:09 -080061
Ray Milkey269ffb92014-04-03 14:43:30 -070062 intents.executeOperations(operations);
63 assertEquals(3, intents.getAllIntents().size());
64 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
Ray Milkey269ffb92014-04-03 14:43:30 -070069 @Test
70 public void testAddOperationsOverwrite() {
71 IntentMap intents = new IntentMap();
Toshio Koideb609b3b2014-02-14 18:25:52 -080072
Ray Milkey269ffb92014-04-03 14:43:30 -070073 Intent intent1 = new Intent("1");
74 Intent intent2 = new Intent("2");
75 Intent intent3 = new Intent("3");
76 Intent intent4 = new Intent("1");
77 Intent intent5 = new Intent("2");
78 Intent intent6 = new Intent("4");
Toshio Koide066506e2014-02-20 19:52:09 -080079
Ray Milkey269ffb92014-04-03 14:43:30 -070080 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());
Toshio Koide066506e2014-02-20 19:52:09 -080085
Ray Milkey269ffb92014-04-03 14:43:30 -070086 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"));
Toshio Koide066506e2014-02-20 19:52:09 -080091
Ray Milkey269ffb92014-04-03 14:43:30 -070092 operations.clear();
93 operations.add(Operator.ADD, intent4);
94 operations.add(Operator.ADD, intent5);
95 operations.add(Operator.ADD, intent6);
96 assertEquals(3, operations.size());
Toshio Koide066506e2014-02-20 19:52:09 -080097
Ray Milkey269ffb92014-04-03 14:43:30 -070098 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 }
Toshio Koide066506e2014-02-20 19:52:09 -0800105
Ray Milkey269ffb92014-04-03 14:43:30 -0700106 @Test
107 public void testRemoveOperation() {
108 IntentMap intents = new IntentMap();
Toshio Koide066506e2014-02-20 19:52:09 -0800109
Ray Milkey269ffb92014-04-03 14:43:30 -0700110 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);
Toshio Koide066506e2014-02-20 19:52:09 -0800115
Ray Milkey269ffb92014-04-03 14:43:30 -0700116 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"));
Toshio Koide066506e2014-02-20 19:52:09 -0800125
Ray Milkey269ffb92014-04-03 14:43:30 -0700126 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 }
Toshio Koide066506e2014-02-20 19:52:09 -0800138
Ray Milkey269ffb92014-04-03 14:43:30 -0700139 @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());
Toshio Koide066506e2014-02-20 19:52:09 -0800153
Ray Milkey269ffb92014-04-03 14:43:30 -0700154 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")));
163 intents.executeOperations(operations);
Toshio Koideb609b3b2014-02-14 18:25:52 -0800164
Ray Milkey269ffb92014-04-03 14:43:30 -0700165 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
Ray Milkey269ffb92014-04-03 14:43:30 -0700175 @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
Ray Milkey269ffb92014-04-03 14:43:30 -0700190 intents.purge();
Toshio Koideb609b3b2014-02-14 18:25:52 -0800191
Ray Milkey269ffb92014-04-03 14:43:30 -0700192 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
Ray Milkey269ffb92014-04-03 14:43:30 -0700203 @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());
Toshio Koide066506e2014-02-20 19:52:09 -0800217
Ray Milkey269ffb92014-04-03 14:43:30 -0700218 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);
Toshio Koide066506e2014-02-20 19:52:09 -0800228
Ray Milkey269ffb92014-04-03 14:43:30 -0700229 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());
237 }
Toshio Koideb609b3b2014-02-14 18:25:52 -0800238}