blob: b8ad6fba7ee8af7af31fbf1cdfa2b1723827f19a [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;
Jonathan Hartaa380972014-04-03 10:24:46 -07006import net.onrc.onos.core.intent.ConstrainedShortestPathIntent;
7import net.onrc.onos.core.intent.ErrorIntent;
8import net.onrc.onos.core.intent.Intent;
9import net.onrc.onos.core.intent.IntentMap;
10import net.onrc.onos.core.intent.IntentOperationList;
11import net.onrc.onos.core.intent.ShortestPathIntent;
12import net.onrc.onos.core.intent.ErrorIntent.ErrorType;
13import net.onrc.onos.core.intent.Intent.IntentState;
14import net.onrc.onos.core.intent.IntentMap.ChangedEventType;
15import net.onrc.onos.core.intent.IntentOperation.Operator;
16import net.onrc.onos.core.intent.runtime.IntentStateList;
Toshio Koideb609b3b2014-02-14 18:25:52 -080017
18import org.junit.After;
19import org.junit.Before;
20import org.junit.Test;
21
Toshio Koide066506e2014-02-20 19:52:09 -080022/**
23 * @author Toshio Koide (t-koide@onlab.us)
24 */
Toshio Koideb609b3b2014-02-14 18:25:52 -080025public class IntentMapTest {
26
27 @Before
28 public void setUp() throws Exception {
29 }
30
31 @After
32 public void tearDown() throws Exception {
33 }
34
35 @Test
Toshio Koide066506e2014-02-20 19:52:09 -080036 public void testCreate() {
Toshio Koideb609b3b2014-02-14 18:25:52 -080037 IntentMap intents = new IntentMap();
Toshio Koide066506e2014-02-20 19:52:09 -080038 assertEquals(0, intents.getAllIntents().size());
39 }
Toshio Koideb609b3b2014-02-14 18:25:52 -080040
Toshio Koide066506e2014-02-20 19:52:09 -080041 @Test
42 public void testChangedEventCreate() {
43 IntentMap intents = new IntentMap();
44 IntentMap.ChangedEvent event = intents.new ChangedEvent(
45 ChangedEventType.ADDED,
46 new Intent("id1"));
47 assertEquals(ChangedEventType.ADDED, event.eventType);
48 assertEquals("id1", event.intent.getId());
49 }
Toshio Koideb609b3b2014-02-14 18:25:52 -080050
Toshio Koide066506e2014-02-20 19:52:09 -080051 @Test
52 public void testAddOperations() {
53 IntentMap intents = new IntentMap();
54 assertEquals(0, intents.getAllIntents().size());
55
56 Intent intent1 = new Intent("1");
Toshio Koideb609b3b2014-02-14 18:25:52 -080057 ShortestPathIntent intent2 =
58 new ShortestPathIntent("2", 21L, 22L, 23L, 24L, 25L, 26L);
59 ConstrainedShortestPathIntent intent3 =
60 new ConstrainedShortestPathIntent("3", 31L, 32L, 33L, 34L, 35L, 36L, 1000.0);
61
Toshio Koide066506e2014-02-20 19:52:09 -080062 IntentOperationList operations = new IntentOperationList();
63 operations.add(Operator.ADD, intent1);
64 operations.add(Operator.ADD, intent2);
65 operations.add(Operator.ADD, intent3);
66 assertEquals(3, operations.size());
67
Toshio Koideb609b3b2014-02-14 18:25:52 -080068 intents.executeOperations(operations);
Toshio Koideb609b3b2014-02-14 18:25:52 -080069 assertEquals(3, intents.getAllIntents().size());
Toshio Koide066506e2014-02-20 19:52:09 -080070 assertSame(intent1, intents.getIntent("1"));
71 assertSame(intent2, intents.getIntent("2"));
72 assertSame(intent3, intents.getIntent("3"));
73 }
Toshio Koideb609b3b2014-02-14 18:25:52 -080074
Toshio Koide066506e2014-02-20 19:52:09 -080075 @Test
76 public void testAddOperationsOverwrite() {
77 IntentMap intents = new IntentMap();
Toshio Koideb609b3b2014-02-14 18:25:52 -080078
Toshio Koide066506e2014-02-20 19:52:09 -080079 Intent intent1 = new Intent("1");
80 Intent intent2 = new Intent("2");
81 Intent intent3 = new Intent("3");
Toshio Koideb609b3b2014-02-14 18:25:52 -080082 Intent intent4 = new Intent("1");
Toshio Koide066506e2014-02-20 19:52:09 -080083 Intent intent5 = new Intent("2");
84 Intent intent6 = new Intent("4");
85
86 IntentOperationList operations = new IntentOperationList();
87 operations.add(Operator.ADD, intent1);
88 operations.add(Operator.ADD, intent2);
89 operations.add(Operator.ADD, intent3);
90 assertEquals(3, operations.size());
91
92 intents.executeOperations(operations);
93 assertEquals(3, intents.getAllIntents().size());
94 assertSame(intent1, intents.getIntent("1"));
95 assertSame(intent2, intents.getIntent("2"));
96 assertSame(intent3, intents.getIntent("3"));
97
Toshio Koideb609b3b2014-02-14 18:25:52 -080098 operations.clear();
Toshio Koide066506e2014-02-20 19:52:09 -080099 operations.add(Operator.ADD, intent4);
100 operations.add(Operator.ADD, intent5);
101 operations.add(Operator.ADD, intent6);
102 assertEquals(3, operations.size());
103
104 intents.executeOperations(operations);
105 assertEquals(4, intents.getAllIntents().size());
106 assertSame(intent4, intents.getIntent("1"));
107 assertSame(intent5, intents.getIntent("2"));
108 assertSame(intent3, intents.getIntent("3"));
109 assertSame(intent6, intents.getIntent("4"));
110 }
111
112 @Test
113 public void testRemoveOperation() {
114 IntentMap intents = new IntentMap();
115
116 Intent intent1 = new Intent("1");
117 ShortestPathIntent intent2 =
118 new ShortestPathIntent("2", 21L, 22L, 23L, 24L, 25L, 26L);
119 ConstrainedShortestPathIntent intent3 =
120 new ConstrainedShortestPathIntent("3", 31L, 32L, 33L, 34L, 35L, 36L, 1000.0);
121
122 IntentOperationList operations = new IntentOperationList();
123 operations.add(Operator.ADD, intent1);
124 operations.add(Operator.ADD, intent2);
125 operations.add(Operator.ADD, intent3);
126 intents.executeOperations(operations);
127 assertEquals(3, intents.getAllIntents().size());
128 assertSame(intent1, intents.getIntent("1"));
129 assertSame(intent2, intents.getIntent("2"));
130 assertSame(intent3, intents.getIntent("3"));
131
132 operations.clear();
133 operations.add(Operator.REMOVE, new Intent("1"));
134 operations.add(Operator.REMOVE, new Intent("3"));
135 intents.executeOperations(operations);
136 assertEquals(3, intents.getAllIntents().size());
137 assertSame(intent1, intents.getIntent("1"));
138 assertSame(intent2, intents.getIntent("2"));
139 assertSame(intent3, intents.getIntent("3"));
140 assertEquals(IntentState.DEL_REQ, intents.getIntent("1").getState());
141 assertEquals(IntentState.CREATED, intents.getIntent("2").getState());
142 assertEquals(IntentState.DEL_REQ, intents.getIntent("3").getState());
143 }
144
145 @Test
146 public void testErrorOperation() {
147 IntentMap intents = new IntentMap();
148 IntentOperationList operations = new IntentOperationList();
149 operations.add(Operator.ADD, new Intent("1", IntentState.CREATED));
150 operations.add(Operator.ADD, new Intent("2", IntentState.INST_REQ));
151 operations.add(Operator.ADD, new Intent("3", IntentState.INST_ACK));
152 operations.add(Operator.ADD, new Intent("4", IntentState.INST_NACK));
153 operations.add(Operator.ADD, new Intent("5", IntentState.REROUTE_REQ));
154 operations.add(Operator.ADD, new Intent("6", IntentState.DEL_REQ));
155 operations.add(Operator.ADD, new Intent("7", IntentState.DEL_ACK));
156 operations.add(Operator.ADD, new Intent("8", IntentState.DEL_PENDING));
157 intents.executeOperations(operations);
158 assertEquals(8, intents.getAllIntents().size());
159
160 operations.clear();
161 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("1")));
162 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("2")));
163 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("3")));
164 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("4")));
165 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("5")));
166 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("6")));
167 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("7")));
168 operations.add(Operator.ERROR, new ErrorIntent(ErrorType.PATH_NOT_FOUND, "", new Intent("8")));
Toshio Koideb609b3b2014-02-14 18:25:52 -0800169 intents.executeOperations(operations);
170
Toshio Koide066506e2014-02-20 19:52:09 -0800171 assertEquals(IntentState.INST_NACK, intents.getIntent("1").getState());
172 assertEquals(IntentState.INST_NACK, intents.getIntent("2").getState());
173 assertEquals(IntentState.INST_NACK, intents.getIntent("3").getState());
174 assertEquals(IntentState.INST_NACK, intents.getIntent("4").getState());
175 assertEquals(IntentState.INST_NACK, intents.getIntent("5").getState());
176 assertEquals(IntentState.DEL_PENDING, intents.getIntent("6").getState());
177 assertEquals(IntentState.DEL_ACK, intents.getIntent("7").getState());
178 assertEquals(IntentState.DEL_PENDING, intents.getIntent("8").getState());
179 }
Toshio Koideb609b3b2014-02-14 18:25:52 -0800180
Toshio Koide066506e2014-02-20 19:52:09 -0800181 @Test
182 public void testPurge() {
183 IntentMap intents = new IntentMap();
184 IntentOperationList operations = new IntentOperationList();
185 operations.add(Operator.ADD, new Intent("1", IntentState.CREATED));
186 operations.add(Operator.ADD, new Intent("2", IntentState.INST_REQ));
187 operations.add(Operator.ADD, new Intent("3", IntentState.INST_ACK));
188 operations.add(Operator.ADD, new Intent("4", IntentState.INST_NACK));
189 operations.add(Operator.ADD, new Intent("5", IntentState.REROUTE_REQ));
190 operations.add(Operator.ADD, new Intent("6", IntentState.DEL_REQ));
191 operations.add(Operator.ADD, new Intent("7", IntentState.DEL_ACK));
192 operations.add(Operator.ADD, new Intent("8", IntentState.DEL_PENDING));
193 intents.executeOperations(operations);
194 assertEquals(8, intents.getAllIntents().size());
Toshio Koideb609b3b2014-02-14 18:25:52 -0800195
196 intents.purge();
197
Toshio Koide066506e2014-02-20 19:52:09 -0800198 assertEquals(6, intents.getAllIntents().size());
199 assertEquals("1", intents.getIntent("1").getId());
200 assertEquals("2", intents.getIntent("2").getId());
201 assertEquals("3", intents.getIntent("3").getId());
202 assertNull(intents.getIntent("4"));
203 assertEquals("5", intents.getIntent("5").getId());
204 assertEquals("6", intents.getIntent("6").getId());
205 assertNull("7", intents.getIntent("7"));
206 assertEquals("8", intents.getIntent("8").getId());
207 }
Toshio Koideb609b3b2014-02-14 18:25:52 -0800208
Toshio Koide066506e2014-02-20 19:52:09 -0800209 @Test
210 public void testChangeStates() {
211 IntentMap intents = new IntentMap();
212 IntentOperationList operations = new IntentOperationList();
213 operations.add(Operator.ADD, new Intent("1", IntentState.CREATED));
214 operations.add(Operator.ADD, new Intent("2", IntentState.INST_REQ));
215 operations.add(Operator.ADD, new Intent("3", IntentState.INST_ACK));
216 operations.add(Operator.ADD, new Intent("4", IntentState.INST_NACK));
217 operations.add(Operator.ADD, new Intent("5", IntentState.REROUTE_REQ));
218 operations.add(Operator.ADD, new Intent("6", IntentState.DEL_REQ));
219 operations.add(Operator.ADD, new Intent("7", IntentState.DEL_ACK));
220 operations.add(Operator.ADD, new Intent("8", IntentState.DEL_PENDING));
221 intents.executeOperations(operations);
222 assertEquals(8, intents.getAllIntents().size());
223
224 IntentStateList states = new IntentStateList();
225 states.put("8", IntentState.CREATED);
226 states.put("1", IntentState.INST_REQ);
227 states.put("2", IntentState.INST_ACK);
228 states.put("3", IntentState.INST_NACK);
229 states.put("4", IntentState.REROUTE_REQ);
230 states.put("5", IntentState.DEL_REQ);
231 states.put("6", IntentState.DEL_ACK);
232 states.put("7", IntentState.DEL_PENDING);
233 intents.changeStates(states);
234
235 assertEquals(IntentState.INST_REQ, intents.getIntent("1").getState());
236 assertEquals(IntentState.INST_ACK, intents.getIntent("2").getState());
237 assertEquals(IntentState.INST_NACK, intents.getIntent("3").getState());
238 assertEquals(IntentState.REROUTE_REQ, intents.getIntent("4").getState());
239 assertEquals(IntentState.DEL_REQ, intents.getIntent("5").getState());
240 assertEquals(IntentState.DEL_ACK, intents.getIntent("6").getState());
241 assertEquals(IntentState.DEL_PENDING, intents.getIntent("7").getState());
242 assertEquals(IntentState.CREATED, intents.getIntent("8").getState());
Toshio Koideb609b3b2014-02-14 18:25:52 -0800243 }
244}