X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnorthbound%2Fintegrationtest%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnorthbound%2Fintegrationtest%2FNorthboundIT.java;h=112725976fa979a3ea2dce55c1f96369709cacc3;hb=9c8108faabf300747a2a5529dc7a8ef76e79c2bc;hp=24eb3d7a4c0933380c2ed5914e8281c6f6d16265;hpb=fad07e38e57f1c0d8d687e3bae01532196d6e99d;p=controller.git diff --git a/opendaylight/northbound/integrationtest/src/test/java/org/opendaylight/controller/northbound/integrationtest/NorthboundIT.java b/opendaylight/northbound/integrationtest/src/test/java/org/opendaylight/controller/northbound/integrationtest/NorthboundIT.java index 24eb3d7a4c..112725976f 100644 --- a/opendaylight/northbound/integrationtest/src/test/java/org/opendaylight/controller/northbound/integrationtest/NorthboundIT.java +++ b/opendaylight/northbound/integrationtest/src/test/java/org/opendaylight/controller/northbound/integrationtest/NorthboundIT.java @@ -167,6 +167,314 @@ public class NorthboundIT { } } + private void testNodeProperties(JSONObject node, Integer nodeId, + String nodeType, Integer timestamp, String timestampName, + Integer actionsValue, Integer capabilitiesValue, + Integer tablesValue, Integer buffersValue) throws JSONException { + + JSONObject nodeInfo = node.getJSONObject("node"); + Assert.assertEquals(nodeId, (Integer) nodeInfo.getInt("@id")); + Assert.assertEquals(nodeType, nodeInfo.getString("@type")); + + JSONObject properties = node.getJSONObject("properties"); + + if (timestamp == null || timestampName == null) { + Assert.assertFalse(properties.has("timeStamp")); + } else { + Assert.assertEquals( + timestamp, + (Integer) properties.getJSONObject("timeStamp").getInt( + "timestamp")); + Assert.assertEquals( + timestampName, + properties.getJSONObject("timeStamp").getString( + "timestampName")); + } + if (actionsValue == null) { + Assert.assertFalse(properties.has("actions")); + } else { + Assert.assertEquals(actionsValue, (Integer) properties + .getJSONObject("actions").getInt("actionsValue")); + } + if (capabilitiesValue == null) { + Assert.assertFalse(properties.has("capabilities")); + } else { + Assert.assertEquals(capabilitiesValue, (Integer) properties + .getJSONObject("capabilities").getInt("capabilitiesValue")); + } + if (tablesValue == null) { + Assert.assertFalse(properties.has("tables")); + } else { + Assert.assertEquals(tablesValue, (Integer) properties + .getJSONObject("tables").getInt("tablesValue")); + } + if (buffersValue == null) { + Assert.assertFalse(properties.has("buffers")); + } else { + Assert.assertEquals(buffersValue, (Integer) properties + .getJSONObject("buffers").getInt("buffersValue")); + } + } + + private void testNodeConnectorProperties( + JSONObject nodeConnectorProperties, Integer ncId, String ncType, + Integer nodeId, String nodeType, Integer state, + Integer capabilities, Integer bandwidth) throws JSONException { + + JSONObject nodeConnector = nodeConnectorProperties + .getJSONObject("nodeconnector"); + JSONObject node = nodeConnector.getJSONObject("node"); + JSONObject properties = nodeConnectorProperties + .getJSONObject("properties"); + + Assert.assertEquals(ncId, (Integer) nodeConnector.getInt("@id")); + Assert.assertEquals(ncType, nodeConnector.getString("@type")); + Assert.assertEquals(nodeId, (Integer) node.getInt("@id")); + Assert.assertEquals(nodeType, node.getString("@type")); + if (state == null) { + Assert.assertFalse(properties.has("state")); + } else { + Assert.assertEquals( + state, + (Integer) properties.getJSONObject("state").getInt( + "stateValue")); + } + if (capabilities == null) { + Assert.assertFalse(properties.has("capabilities")); + } else { + Assert.assertEquals(capabilities, (Integer) properties + .getJSONObject("capabilities").getInt("capabilitiesValue")); + } + if (bandwidth == null) { + Assert.assertFalse(properties.has("bandwidth")); + } else { + Assert.assertEquals( + bandwidth, + (Integer) properties.getJSONObject("bandwidth").getInt( + "bandwidthValue")); + } + + } + + @Test + public void testSwitchManager() { + String baseURL = "http://127.0.0.1:8080/controller/nb/v2/switch/default/"; + + // define Node/NodeConnector attributes for test + int nodeId_1 = 51966; + int nodeId_2 = 3366; + int nodeId_3 = 4477; + int nodeConnectorId_1 = 51966; + int nodeConnectorId_2 = 12; + int nodeConnectorId_3 = 34; + String nodeType = "STUB"; + String ncType = "STUB"; + int timestamp_1 = 100000; + String timestampName_1 = "connectedSince"; + int actionsValue_1 = 2; + int capabilitiesValue_1 = 3; + int tablesValue_1 = 1; + int buffersValue_1 = 1; + int ncState = 1; + int ncCapabilities = 1; + int ncBandwidth = 1000000000; + + // Test GET all nodes + try { + String result = getJsonResult(baseURL + "nodes"); + JSONTokener jt = new JSONTokener(result); + JSONObject json = new JSONObject(jt); + + // Test for first node + JSONObject node = getJsonInstance(json, "nodeProperties", nodeId_1); + Assert.assertNotNull(node); + testNodeProperties(node, nodeId_1, nodeType, timestamp_1, + timestampName_1, actionsValue_1, capabilitiesValue_1, + tablesValue_1, buffersValue_1); + + // Test 2nd node, properties of 2nd node same as first node + node = getJsonInstance(json, "nodeProperties", nodeId_2); + Assert.assertNotNull(node); + testNodeProperties(node, nodeId_2, nodeType, timestamp_1, + timestampName_1, actionsValue_1, capabilitiesValue_1, + tablesValue_1, buffersValue_1); + + // Test 3rd node, properties of 3rd node same as first node + node = getJsonInstance(json, "nodeProperties", nodeId_3); + Assert.assertNotNull(node); + testNodeProperties(node, nodeId_3, nodeType, timestamp_1, + timestampName_1, actionsValue_1, capabilitiesValue_1, + tablesValue_1, buffersValue_1); + + } catch (Exception e) { + Assert.assertTrue(false); + } + + // Test GET nodeConnectors of a node + try { + //Test first node + String result = getJsonResult(baseURL + "node/STUB/" + nodeId_1); + JSONTokener jt = new JSONTokener(result); + JSONObject json = new JSONObject(jt); + JSONObject nodeConnectorProperties = json + .getJSONObject("nodeConnectorProperties"); + + testNodeConnectorProperties(nodeConnectorProperties, + nodeConnectorId_1, ncType, nodeId_1, nodeType, ncState, + ncCapabilities, ncBandwidth); + + //Test second node + result = getJsonResult(baseURL + "node/STUB/" + nodeId_2); + jt = new JSONTokener(result); + json = new JSONObject(jt); + nodeConnectorProperties = json + .getJSONObject("nodeConnectorProperties"); + + testNodeConnectorProperties(nodeConnectorProperties, + nodeConnectorId_2, ncType, nodeId_2, nodeType, ncState, + ncCapabilities, ncBandwidth); + + //Test third node + result = getJsonResult(baseURL + "node/STUB/" + nodeId_3); + jt = new JSONTokener(result); + json = new JSONObject(jt); + + nodeConnectorProperties = json + .getJSONObject("nodeConnectorProperties"); + testNodeConnectorProperties(nodeConnectorProperties, + nodeConnectorId_3, ncType, nodeId_3, nodeType, ncState, + ncCapabilities, ncBandwidth); + + } catch (Exception e) { + Assert.assertTrue(false); + } + + // Test delete node property + try { + // Delete timestamp property from node1 + String result = getJsonResult(baseURL + "node/STUB/" + nodeId_1 + + "/property/timeStamp", "DELETE"); + Assert.assertEquals(200, httpResponseCode.intValue()); + + // Check node1 + result = getJsonResult(baseURL + "nodes"); + JSONTokener jt = new JSONTokener(result); + JSONObject json = new JSONObject(jt); + JSONObject node = getJsonInstance(json, "nodeProperties", nodeId_1); + Assert.assertNotNull(node); + testNodeProperties(node, nodeId_1, nodeType, null, null, + actionsValue_1, capabilitiesValue_1, tablesValue_1, + buffersValue_1); + + // Delete actions property from node2 + result = getJsonResult(baseURL + "node/STUB/" + nodeId_2 + + "/property/actions", "DELETE"); + Assert.assertEquals(200, httpResponseCode.intValue()); + + // Check node2 + result = getJsonResult(baseURL + "nodes"); + jt = new JSONTokener(result); + json = new JSONObject(jt); + node = getJsonInstance(json, "nodeProperties", nodeId_2); + Assert.assertNotNull(node); + testNodeProperties(node, nodeId_2, nodeType, timestamp_1, + timestampName_1, null, capabilitiesValue_1, tablesValue_1, + buffersValue_1); + + } catch (Exception e) { + Assert.assertTrue(false); + } + + // Test add property to node + try { + // Add Tier and Bandwidth property to node1 + String result = getJsonResult(baseURL + "node/STUB/" + nodeId_1 + + "/property/tier/1001", "PUT"); + Assert.assertEquals(201, httpResponseCode.intValue()); + result = getJsonResult(baseURL + "node/STUB/" + nodeId_1 + + "/property/bandwidth/1002", "PUT"); + Assert.assertEquals(201, httpResponseCode.intValue()); + + // Test for first node + result = getJsonResult(baseURL + "nodes"); + JSONTokener jt = new JSONTokener(result); + JSONObject json = new JSONObject(jt); + JSONObject node = getJsonInstance(json, "nodeProperties", nodeId_1); + Assert.assertNotNull(node); + Assert.assertEquals(1001, node.getJSONObject("properties") + .getJSONObject("tier").getInt("tierValue")); + Assert.assertEquals(1002, node.getJSONObject("properties") + .getJSONObject("bandwidth").getInt("bandwidthValue")); + + } catch (Exception e) { + Assert.assertTrue(false); + } + + // Test delete nodeConnector property + try { + // Delete state property of nodeconnector1 + String result = getJsonResult(baseURL + "nodeconnector/STUB/" + + nodeId_1 + "/STUB/" + nodeConnectorId_1 + + "/property/state", "DELETE"); + Assert.assertEquals(200, httpResponseCode.intValue()); + + result = getJsonResult(baseURL + "node/STUB/" + nodeId_1); + JSONTokener jt = new JSONTokener(result); + JSONObject json = new JSONObject(jt); + JSONObject nodeConnectorProperties = json + .getJSONObject("nodeConnectorProperties"); + + testNodeConnectorProperties(nodeConnectorProperties, + nodeConnectorId_1, ncType, nodeId_1, nodeType, null, + ncCapabilities, ncBandwidth); + + // Delete capabilities property of nodeconnector2 + result = getJsonResult(baseURL + "nodeconnector/STUB/" + nodeId_2 + + "/STUB/" + nodeConnectorId_2 + "/property/capabilities", + "DELETE"); + Assert.assertEquals(200, httpResponseCode.intValue()); + + result = getJsonResult(baseURL + "node/STUB/" + nodeId_2); + jt = new JSONTokener(result); + json = new JSONObject(jt); + nodeConnectorProperties = json + .getJSONObject("nodeConnectorProperties"); + + testNodeConnectorProperties(nodeConnectorProperties, + nodeConnectorId_2, ncType, nodeId_2, nodeType, ncState, + null, ncBandwidth); + + } catch (Exception e) { + Assert.assertTrue(false); + } + + // Test PUT nodeConnector property + try { + int newBandwidth = 1001; + + // Add Name/Bandwidth property to nodeConnector1 + String result = getJsonResult(baseURL + "nodeconnector/STUB/" + + nodeId_1 + "/STUB/" + nodeConnectorId_1 + + "/property/bandwidth/" + newBandwidth, "PUT"); + Assert.assertEquals(201, httpResponseCode.intValue()); + + result = getJsonResult(baseURL + "node/STUB/" + nodeId_1); + JSONTokener jt = new JSONTokener(result); + JSONObject json = new JSONObject(jt); + JSONObject nodeConnectorProperties = json + .getJSONObject("nodeConnectorProperties"); + + // Check for new bandwidth value, state value removed from previous + // test + testNodeConnectorProperties(nodeConnectorProperties, + nodeConnectorId_1, ncType, nodeId_1, nodeType, null, + ncCapabilities, newBandwidth); + + } catch (Exception e) { + Assert.assertTrue(false); + } + } + @Test public void testStatistics() { String actionTypes[] = { "drop", "loopback", "flood", "floodAll", @@ -403,7 +711,7 @@ public class NorthboundIT { fc = "{\"dynamic\":\"false\", \"name\":\"test2\", \"nwSrc\":\"1.1.1.1\", \"node\":{\"@id\":\"51966\",\"@type\":\"STUB\"}, \"actions\":[\"DROP\"]}"; result = getJsonResult(baseURL + "STUB/51966/test2", "POST", fc); Assert.assertTrue(httpResponseCode == 201); - + // check that request returns both flows given node. result = getJsonResult(baseURL + "STUB/51966/", "GET"); jt = new JSONTokener(result);