Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 1 | package net.onrc.onos.intent; |
| 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; |
| 6 | import net.onrc.onos.intent.ErrorIntent.ErrorType; |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 7 | import net.onrc.onos.intent.Intent.IntentState; |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 8 | import net.onrc.onos.intent.IntentMap.ChangedEventType; |
| 9 | import net.onrc.onos.intent.IntentOperation.Operator; |
| 10 | import net.onrc.onos.intent.runtime.IntentStateList; |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 11 | |
| 12 | import org.junit.After; |
| 13 | import org.junit.Before; |
| 14 | import org.junit.Test; |
| 15 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 16 | /** |
| 17 | * @author Toshio Koide (t-koide@onlab.us) |
| 18 | */ |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 19 | public 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 Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 30 | public void testCreate() { |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 31 | IntentMap intents = new IntentMap(); |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 32 | assertEquals(0, intents.getAllIntents().size()); |
| 33 | } |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 34 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 35 | @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 Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 44 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 45 | @Test |
| 46 | public void testAddOperations() { |
| 47 | IntentMap intents = new IntentMap(); |
| 48 | assertEquals(0, intents.getAllIntents().size()); |
| 49 | |
| 50 | Intent intent1 = new Intent("1"); |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 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); |
| 55 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [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()); |
| 61 | |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 62 | intents.executeOperations(operations); |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 63 | assertEquals(3, intents.getAllIntents().size()); |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 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 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [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 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 73 | Intent intent1 = new Intent("1"); |
| 74 | Intent intent2 = new Intent("2"); |
| 75 | Intent intent3 = new Intent("3"); |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 76 | Intent intent4 = new Intent("1"); |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 77 | 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 Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 92 | operations.clear(); |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 93 | 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 Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 163 | intents.executeOperations(operations); |
| 164 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [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 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [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 | |
| 190 | intents.purge(); |
| 191 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [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 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [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()); |
| 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 Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 237 | } |
| 238 | } |