blob: ca9ddbdcd5ac5506d8ead9789189bf609f313267 [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/**
18 * @author Toshio Koide (t-koide@onlab.us)
19 */
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() {
38 IntentMap intents = new IntentMap();
Pavlin Radoslavovfee80982014-04-10 12:12:04 -070039 IntentMap.ChangedEvent event = new IntentMap.ChangedEvent(
Ray Milkey269ffb92014-04-03 14:43:30 -070040 ChangedEventType.ADDED,
41 new Intent("id1"));
42 assertEquals(ChangedEventType.ADDED, event.eventType);
43 assertEquals("id1", event.intent.getId());
44 }
Toshio Koideb609b3b2014-02-14 18:25:52 -080045
Ray Milkey269ffb92014-04-03 14:43:30 -070046 @Test
47 public void testAddOperations() {
48 IntentMap intents = new IntentMap();
49 assertEquals(0, intents.getAllIntents().size());
Toshio Koide066506e2014-02-20 19:52:09 -080050
Ray Milkey269ffb92014-04-03 14:43:30 -070051 Intent intent1 = new Intent("1");
52 ShortestPathIntent intent2 =
53 new ShortestPathIntent("2", 21L, 22L, 23L, 24L, 25L, 26L);
54 ConstrainedShortestPathIntent intent3 =
55 new ConstrainedShortestPathIntent("3", 31L, 32L, 33L, 34L, 35L, 36L, 1000.0);
Toshio Koideb609b3b2014-02-14 18:25:52 -080056
Ray Milkey269ffb92014-04-03 14:43:30 -070057 IntentOperationList operations = new IntentOperationList();
58 operations.add(Operator.ADD, intent1);
59 operations.add(Operator.ADD, intent2);
60 operations.add(Operator.ADD, intent3);
61 assertEquals(3, operations.size());
Toshio Koide066506e2014-02-20 19:52:09 -080062
Ray Milkey269ffb92014-04-03 14:43:30 -070063 intents.executeOperations(operations);
64 assertEquals(3, intents.getAllIntents().size());
65 assertSame(intent1, intents.getIntent("1"));
66 assertSame(intent2, intents.getIntent("2"));
67 assertSame(intent3, intents.getIntent("3"));
68 }
Toshio Koideb609b3b2014-02-14 18:25:52 -080069
Ray Milkey269ffb92014-04-03 14:43:30 -070070 @Test
71 public void testAddOperationsOverwrite() {
72 IntentMap intents = new IntentMap();
Toshio Koideb609b3b2014-02-14 18:25:52 -080073
Ray Milkey269ffb92014-04-03 14:43:30 -070074 Intent intent1 = new Intent("1");
75 Intent intent2 = new Intent("2");
76 Intent intent3 = new Intent("3");
77 Intent intent4 = new Intent("1");
78 Intent intent5 = new Intent("2");
79 Intent intent6 = new Intent("4");
Toshio Koide066506e2014-02-20 19:52:09 -080080
Ray Milkey269ffb92014-04-03 14:43:30 -070081 IntentOperationList operations = new IntentOperationList();
82 operations.add(Operator.ADD, intent1);
83 operations.add(Operator.ADD, intent2);
84 operations.add(Operator.ADD, intent3);
85 assertEquals(3, operations.size());
Toshio Koide066506e2014-02-20 19:52:09 -080086
Ray Milkey269ffb92014-04-03 14:43:30 -070087 intents.executeOperations(operations);
88 assertEquals(3, intents.getAllIntents().size());
89 assertSame(intent1, intents.getIntent("1"));
90 assertSame(intent2, intents.getIntent("2"));
91 assertSame(intent3, intents.getIntent("3"));
Toshio Koide066506e2014-02-20 19:52:09 -080092
Ray Milkey269ffb92014-04-03 14:43:30 -070093 operations.clear();
94 operations.add(Operator.ADD, intent4);
95 operations.add(Operator.ADD, intent5);
96 operations.add(Operator.ADD, intent6);
97 assertEquals(3, operations.size());
Toshio Koide066506e2014-02-20 19:52:09 -080098
Ray Milkey269ffb92014-04-03 14:43:30 -070099 intents.executeOperations(operations);
100 assertEquals(4, intents.getAllIntents().size());
101 assertSame(intent4, intents.getIntent("1"));
102 assertSame(intent5, intents.getIntent("2"));
103 assertSame(intent3, intents.getIntent("3"));
104 assertSame(intent6, intents.getIntent("4"));
105 }
Toshio Koide066506e2014-02-20 19:52:09 -0800106
Ray Milkey269ffb92014-04-03 14:43:30 -0700107 @Test
108 public void testRemoveOperation() {
109 IntentMap intents = new IntentMap();
Toshio Koide066506e2014-02-20 19:52:09 -0800110
Ray Milkey269ffb92014-04-03 14:43:30 -0700111 Intent intent1 = new Intent("1");
112 ShortestPathIntent intent2 =
113 new ShortestPathIntent("2", 21L, 22L, 23L, 24L, 25L, 26L);
114 ConstrainedShortestPathIntent intent3 =
115 new ConstrainedShortestPathIntent("3", 31L, 32L, 33L, 34L, 35L, 36L, 1000.0);
Toshio Koide066506e2014-02-20 19:52:09 -0800116
Ray Milkey269ffb92014-04-03 14:43:30 -0700117 IntentOperationList operations = new IntentOperationList();
118 operations.add(Operator.ADD, intent1);
119 operations.add(Operator.ADD, intent2);
120 operations.add(Operator.ADD, intent3);
121 intents.executeOperations(operations);
122 assertEquals(3, intents.getAllIntents().size());
123 assertSame(intent1, intents.getIntent("1"));
124 assertSame(intent2, intents.getIntent("2"));
125 assertSame(intent3, intents.getIntent("3"));
Toshio Koide066506e2014-02-20 19:52:09 -0800126
Ray Milkey269ffb92014-04-03 14:43:30 -0700127 operations.clear();
128 operations.add(Operator.REMOVE, new Intent("1"));
129 operations.add(Operator.REMOVE, new Intent("3"));
130 intents.executeOperations(operations);
131 assertEquals(3, intents.getAllIntents().size());
132 assertSame(intent1, intents.getIntent("1"));
133 assertSame(intent2, intents.getIntent("2"));
134 assertSame(intent3, intents.getIntent("3"));
135 assertEquals(IntentState.DEL_REQ, intents.getIntent("1").getState());
136 assertEquals(IntentState.CREATED, intents.getIntent("2").getState());
137 assertEquals(IntentState.DEL_REQ, intents.getIntent("3").getState());
138 }
Toshio Koide066506e2014-02-20 19:52:09 -0800139
Ray Milkey269ffb92014-04-03 14:43:30 -0700140 @Test
141 public void testErrorOperation() {
142 IntentMap intents = new IntentMap();
143 IntentOperationList operations = new IntentOperationList();
144 operations.add(Operator.ADD, new Intent("1", IntentState.CREATED));
145 operations.add(Operator.ADD, new Intent("2", IntentState.INST_REQ));
146 operations.add(Operator.ADD, new Intent("3", IntentState.INST_ACK));
147 operations.add(Operator.ADD, new Intent("4", IntentState.INST_NACK));
148 operations.add(Operator.ADD, new Intent("5", IntentState.REROUTE_REQ));
149 operations.add(Operator.ADD, new Intent("6", IntentState.DEL_REQ));
150 operations.add(Operator.ADD, new Intent("7", IntentState.DEL_ACK));
151 operations.add(Operator.ADD, new Intent("8", IntentState.DEL_PENDING));
152 intents.executeOperations(operations);
153 assertEquals(8, intents.getAllIntents().size());
Toshio Koide066506e2014-02-20 19:52:09 -0800154
Ray Milkey269ffb92014-04-03 14:43:30 -0700155 operations.clear();
156 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("1")));
157 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("2")));
158 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("3")));
159 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("4")));
160 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("5")));
161 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("6")));
162 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("7")));
163 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("8")));
164 intents.executeOperations(operations);
Toshio Koideb609b3b2014-02-14 18:25:52 -0800165
Ray Milkey269ffb92014-04-03 14:43:30 -0700166 assertEquals(IntentState.INST_NACK, intents.getIntent("1").getState());
167 assertEquals(IntentState.INST_NACK, intents.getIntent("2").getState());
168 assertEquals(IntentState.INST_NACK, intents.getIntent("3").getState());
169 assertEquals(IntentState.INST_NACK, intents.getIntent("4").getState());
170 assertEquals(IntentState.INST_NACK, intents.getIntent("5").getState());
171 assertEquals(IntentState.DEL_PENDING, intents.getIntent("6").getState());
172 assertEquals(IntentState.DEL_ACK, intents.getIntent("7").getState());
173 assertEquals(IntentState.DEL_PENDING, intents.getIntent("8").getState());
174 }
Toshio Koideb609b3b2014-02-14 18:25:52 -0800175
Ray Milkey269ffb92014-04-03 14:43:30 -0700176 @Test
177 public void testPurge() {
178 IntentMap intents = new IntentMap();
179 IntentOperationList operations = new IntentOperationList();
180 operations.add(Operator.ADD, new Intent("1", IntentState.CREATED));
181 operations.add(Operator.ADD, new Intent("2", IntentState.INST_REQ));
182 operations.add(Operator.ADD, new Intent("3", IntentState.INST_ACK));
183 operations.add(Operator.ADD, new Intent("4", IntentState.INST_NACK));
184 operations.add(Operator.ADD, new Intent("5", IntentState.REROUTE_REQ));
185 operations.add(Operator.ADD, new Intent("6", IntentState.DEL_REQ));
186 operations.add(Operator.ADD, new Intent("7", IntentState.DEL_ACK));
187 operations.add(Operator.ADD, new Intent("8", IntentState.DEL_PENDING));
188 intents.executeOperations(operations);
189 assertEquals(8, intents.getAllIntents().size());
Toshio Koideb609b3b2014-02-14 18:25:52 -0800190
Ray Milkey269ffb92014-04-03 14:43:30 -0700191 intents.purge();
Toshio Koideb609b3b2014-02-14 18:25:52 -0800192
Ray Milkey269ffb92014-04-03 14:43:30 -0700193 assertEquals(6, intents.getAllIntents().size());
194 assertEquals("1", intents.getIntent("1").getId());
195 assertEquals("2", intents.getIntent("2").getId());
196 assertEquals("3", intents.getIntent("3").getId());
197 assertNull(intents.getIntent("4"));
198 assertEquals("5", intents.getIntent("5").getId());
199 assertEquals("6", intents.getIntent("6").getId());
200 assertNull("7", intents.getIntent("7"));
201 assertEquals("8", intents.getIntent("8").getId());
202 }
Toshio Koideb609b3b2014-02-14 18:25:52 -0800203
Ray Milkey269ffb92014-04-03 14:43:30 -0700204 @Test
205 public void testChangeStates() {
206 IntentMap intents = new IntentMap();
207 IntentOperationList operations = new IntentOperationList();
208 operations.add(Operator.ADD, new Intent("1", IntentState.CREATED));
209 operations.add(Operator.ADD, new Intent("2", IntentState.INST_REQ));
210 operations.add(Operator.ADD, new Intent("3", IntentState.INST_ACK));
211 operations.add(Operator.ADD, new Intent("4", IntentState.INST_NACK));
212 operations.add(Operator.ADD, new Intent("5", IntentState.REROUTE_REQ));
213 operations.add(Operator.ADD, new Intent("6", IntentState.DEL_REQ));
214 operations.add(Operator.ADD, new Intent("7", IntentState.DEL_ACK));
215 operations.add(Operator.ADD, new Intent("8", IntentState.DEL_PENDING));
216 intents.executeOperations(operations);
217 assertEquals(8, intents.getAllIntents().size());
Toshio Koide066506e2014-02-20 19:52:09 -0800218
Ray Milkey269ffb92014-04-03 14:43:30 -0700219 IntentStateList states = new IntentStateList();
220 states.put("8", IntentState.CREATED);
221 states.put("1", IntentState.INST_REQ);
222 states.put("2", IntentState.INST_ACK);
223 states.put("3", IntentState.INST_NACK);
224 states.put("4", IntentState.REROUTE_REQ);
225 states.put("5", IntentState.DEL_REQ);
226 states.put("6", IntentState.DEL_ACK);
227 states.put("7", IntentState.DEL_PENDING);
228 intents.changeStates(states);
Toshio Koide066506e2014-02-20 19:52:09 -0800229
Ray Milkey269ffb92014-04-03 14:43:30 -0700230 assertEquals(IntentState.INST_REQ, intents.getIntent("1").getState());
231 assertEquals(IntentState.INST_ACK, intents.getIntent("2").getState());
232 assertEquals(IntentState.INST_NACK, intents.getIntent("3").getState());
233 assertEquals(IntentState.REROUTE_REQ, intents.getIntent("4").getState());
234 assertEquals(IntentState.DEL_REQ, intents.getIntent("5").getState());
235 assertEquals(IntentState.DEL_ACK, intents.getIntent("6").getState());
236 assertEquals(IntentState.DEL_PENDING, intents.getIntent("7").getState());
237 assertEquals(IntentState.CREATED, intents.getIntent("8").getState());
238 }
Toshio Koideb609b3b2014-02-14 18:25:52 -0800239}