Jonathan Hart | aa38097 | 2014-04-03 10:24:46 -0700 | [diff] [blame] | 1 | package net.onrc.onos.core.intent; |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 2 | |
Toshio Koide | 27ffd41 | 2014-02-18 19:15:27 -0800 | [diff] [blame] | 3 | import static org.junit.Assert.assertEquals; |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 4 | import static org.junit.Assert.assertNull; |
| 5 | import static org.junit.Assert.assertSame; |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 6 | |
Jonathan Hart | aa38097 | 2014-04-03 10:24:46 -0700 | [diff] [blame] | 7 | import net.onrc.onos.core.intent.ErrorIntent.ErrorType; |
| 8 | import net.onrc.onos.core.intent.Intent.IntentState; |
| 9 | import net.onrc.onos.core.intent.IntentMap.ChangedEventType; |
| 10 | import net.onrc.onos.core.intent.IntentOperation.Operator; |
| 11 | import net.onrc.onos.core.intent.runtime.IntentStateList; |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 12 | |
| 13 | import org.junit.After; |
| 14 | import org.junit.Before; |
| 15 | import org.junit.Test; |
| 16 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 17 | /** |
Yuta HIGUCHI | d4acc80 | 2014-06-19 22:30:31 -0700 | [diff] [blame] | 18 | * Unit tests for IntentMap class. |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 19 | */ |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 20 | public class IntentMapTest { |
| 21 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 22 | @Before |
| 23 | public void setUp() throws Exception { |
| 24 | } |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 25 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 26 | @After |
| 27 | public void tearDown() throws Exception { |
| 28 | } |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 29 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 30 | @Test |
| 31 | public void testCreate() { |
| 32 | IntentMap intents = new IntentMap(); |
| 33 | assertEquals(0, intents.getAllIntents().size()); |
| 34 | } |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 35 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 36 | @Test |
| 37 | public void testChangedEventCreate() { |
Pavlin Radoslavov | fee8098 | 2014-04-10 12:12:04 -0700 | [diff] [blame] | 38 | IntentMap.ChangedEvent event = new IntentMap.ChangedEvent( |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 39 | ChangedEventType.ADDED, |
| 40 | new Intent("id1")); |
| 41 | assertEquals(ChangedEventType.ADDED, event.eventType); |
| 42 | assertEquals("id1", event.intent.getId()); |
| 43 | } |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 44 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 45 | @Test |
| 46 | public void testAddOperations() { |
| 47 | IntentMap intents = new IntentMap(); |
| 48 | assertEquals(0, intents.getAllIntents().size()); |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 49 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 50 | 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 Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 55 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 56 | 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 Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 61 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 62 | 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 Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 68 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 69 | @Test |
| 70 | public void testAddOperationsOverwrite() { |
| 71 | IntentMap intents = new IntentMap(); |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 72 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 73 | 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 Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 79 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 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()); |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 85 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 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")); |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 91 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 92 | 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 Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 97 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 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 | } |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 105 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 106 | @Test |
| 107 | public void testRemoveOperation() { |
| 108 | IntentMap intents = new IntentMap(); |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 109 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 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); |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 115 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 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")); |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 125 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 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 | } |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 138 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 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()); |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 153 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 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"))); |
| 163 | intents.executeOperations(operations); |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 164 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 165 | 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 Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 174 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 175 | @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 Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 189 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 190 | intents.purge(); |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 191 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 192 | 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 Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 202 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 203 | @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 Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 217 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 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); |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 228 | |
Ray Milkey | 269ffb9 | 2014-04-03 14:43:30 -0700 | [diff] [blame] | 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()); |
| 237 | } |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 238 | } |