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; |
Jonathan Hart | aa38097 | 2014-04-03 10:24:46 -0700 | [diff] [blame^] | 6 | import net.onrc.onos.core.intent.ConstrainedShortestPathIntent; |
| 7 | import net.onrc.onos.core.intent.ErrorIntent; |
| 8 | import net.onrc.onos.core.intent.Intent; |
| 9 | import net.onrc.onos.core.intent.IntentMap; |
| 10 | import net.onrc.onos.core.intent.IntentOperationList; |
| 11 | import net.onrc.onos.core.intent.ShortestPathIntent; |
| 12 | import net.onrc.onos.core.intent.ErrorIntent.ErrorType; |
| 13 | import net.onrc.onos.core.intent.Intent.IntentState; |
| 14 | import net.onrc.onos.core.intent.IntentMap.ChangedEventType; |
| 15 | import net.onrc.onos.core.intent.IntentOperation.Operator; |
| 16 | import net.onrc.onos.core.intent.runtime.IntentStateList; |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 17 | |
| 18 | import org.junit.After; |
| 19 | import org.junit.Before; |
| 20 | import org.junit.Test; |
| 21 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 22 | /** |
| 23 | * @author Toshio Koide (t-koide@onlab.us) |
| 24 | */ |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 25 | public 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 Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 36 | public void testCreate() { |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 37 | IntentMap intents = new IntentMap(); |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 38 | assertEquals(0, intents.getAllIntents().size()); |
| 39 | } |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 40 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 41 | @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 Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 50 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 51 | @Test |
| 52 | public void testAddOperations() { |
| 53 | IntentMap intents = new IntentMap(); |
| 54 | assertEquals(0, intents.getAllIntents().size()); |
| 55 | |
| 56 | Intent intent1 = new Intent("1"); |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 57 | 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 Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 62 | 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 Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 68 | intents.executeOperations(operations); |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 69 | assertEquals(3, intents.getAllIntents().size()); |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 70 | assertSame(intent1, intents.getIntent("1")); |
| 71 | assertSame(intent2, intents.getIntent("2")); |
| 72 | assertSame(intent3, intents.getIntent("3")); |
| 73 | } |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 74 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 75 | @Test |
| 76 | public void testAddOperationsOverwrite() { |
| 77 | IntentMap intents = new IntentMap(); |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 78 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 79 | Intent intent1 = new Intent("1"); |
| 80 | Intent intent2 = new Intent("2"); |
| 81 | Intent intent3 = new Intent("3"); |
Toshio Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 82 | Intent intent4 = new Intent("1"); |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 83 | 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 Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 98 | operations.clear(); |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 99 | 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 Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 169 | intents.executeOperations(operations); |
| 170 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 171 | 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 Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 180 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 181 | @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 Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 195 | |
| 196 | intents.purge(); |
| 197 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 198 | 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 Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 208 | |
Toshio Koide | 066506e | 2014-02-20 19:52:09 -0800 | [diff] [blame] | 209 | @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 Koide | b609b3b | 2014-02-14 18:25:52 -0800 | [diff] [blame] | 243 | } |
| 244 | } |