2 * Copyright (C) 2015 IBM, Inc.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.neutron.e2etest;
11 import com.google.gson.JsonElement;
12 import com.google.gson.JsonObject;
13 import java.io.IOException;
14 import java.net.ConnectException;
15 import java.net.HttpURLConnection;
17 import org.junit.Assert;
18 import org.slf4j.Logger;
19 import org.slf4j.LoggerFactory;
21 public class NeutronNetworkTests {
23 private static final int TIMEOUT = 180;
27 private static final Logger LOG = LoggerFactory.getLogger(NeutronNetworkTests.class);
29 public NeutronNetworkTests(String base) {
33 public void network_collection_get_test_with_wait() throws IOException, InterruptedException {
34 URL url = new URL(base + "/networks");
35 for (int retry = 0; retry < TIMEOUT; retry++) {
36 HttpURLConnection httpConn = ITNeutronE2E.httpURLConnectionFactoryGet(url);
39 responseCode = httpConn.getResponseCode();
40 } catch (ConnectException e) {
41 LOG.info("connection trial {} failed to URL {}", retry, url, e);
46 if (responseCode != 200) {
47 LOG.info("trial {} to URL {} failed with {}", retry, url, httpConn.getResponseCode());
50 Assert.assertEquals("Network Collection GET failed", 200, httpConn.getResponseCode());
54 Assert.assertFalse("Network Collection GET to URL " + url + " with wait failed", true);
57 //TODO handle SB check
58 public String singleton_network_create_test() {
59 String url = base + "/networks";
60 String content = "{ \"network\": {" + " \"status\": \"ACTIVE\", \"subnets\": [], "
61 + " \"name\": \"net1\", \"admin_state_up\": true, "
62 + " \"tenant_id\": \"9bacb3c5d39d41a79512987f338cf177\", "
63 + " \"router:external\": false, \"segments\": [ " + " { \"provider:segmentation_id\": 2, "
64 + " \"provider:physical_network\": \"8bab8453-1bc9-45af-8c70-f83aa9b50453\", "
65 + " \"provider:network_type\": \"vlan\" }, { " + " \"provider:segmentation_id\": null, "
66 + " \"provider:physical_network\": \"8bab8453-1bc9-45af-8c70-f83aa9b50453\", "
67 + " \"provider:network_type\": \"stt\" } ], "
68 + " \"shared\": false, \"id\": \"4e8e5957-649f-477b-9e5b-f1f75b21c03c\" " + " } } ";
69 ITNeutronE2E.test_create(url, content, "Singleton Network Post Failed NB");
73 public void singleton_network_get_with_one_query_item_test(String createJsonString) {
74 String url = base + "/networks";
75 ITNeutronE2E.test_fetch_with_one_query_item(url, createJsonString, "networks");
78 public String singleton_default_network_create_test() {
79 String url = base + "/networks";
80 String content = "{ \"network\": {" + "\"name\": \"netdefault\", \"subnets\": [], "
81 + " \"tenant_id\": \"9bacb3c5d39d41a79512987f338cf177\", "
82 + " \"router:external\": false, \"segments\": [ " + " { \"provider:segmentation_id\": 2, "
83 + " \"provider:physical_network\": \"8bab8453-1bc9-45af-8c70-f83aa9b50453\", "
84 + " \"provider:network_type\": \"vlan\" }, { " + " \"provider:segmentation_id\": null, "
85 + " \"provider:physical_network\": \"8bab8453-1bc9-45af-8c70-f83aa9b50453\", "
86 + " \"provider:network_type\": \"stt\" } ], "
87 + " \"id\": \"de8e5957-d49f-d77b-de5b-d1f75b21c03c\" " + " } } ";
88 ITNeutronE2E.test_create(url, content, "Singleton Default Network Post Failed NB");
92 public void default_network_content_validation_test() {
93 //Validates Network default parameters are set.
94 //Default parameters: status,shared
95 String element = "status";
96 String url = base + "/networks/de8e5957-d49f-d77b-de5b-d1f75b21c03c?fields=" + element;
97 String expectedContent = "\"ACTIVE\"";
98 String context = "Network details do not match.";
99 JsonObject jsonObjectOutput = ITNeutronE2E.test_fetch_gson(url, context);
100 jsonObjectOutput = jsonObjectOutput.getAsJsonObject("network");
101 JsonElement jsonElementValue = jsonObjectOutput.get(element);
102 Assert.assertEquals(context, expectedContent, String.valueOf(jsonElementValue));
104 url = base + "/networks/de8e5957-d49f-d77b-de5b-d1f75b21c03c?fields=" + element;
105 jsonObjectOutput = ITNeutronE2E.test_fetch_gson(url, context);
106 jsonObjectOutput = jsonObjectOutput.getAsJsonObject("network");
107 jsonElementValue = jsonObjectOutput.get(element);
108 Assert.assertEquals(context, false, jsonElementValue.getAsBoolean());
111 //TODO handle SB check
112 public void external_network_create_test() {
113 String url = base + "/networks";
114 String content = "{ \"network\": {" + " \"status\": \"ACTIVE\", \"subnets\": [], "
115 + " \"name\": \"external1\", \"admin_state_up\": true, "
116 + " \"tenant_id\": \"9bacb3c5d39d41a79512987f338cf177\", "
117 + " \"router:external\": true, \"shared\": false, "
118 + " \"id\": \"8ca37218-28ff-41cb-9b10-039601ea7e6b\" } } ";
119 ITNeutronE2E.test_create(url, content, "External Network Post Failed NB");
122 //TODO handle SB check
123 public void bulk_network_create_test() {
124 String url = base + "/networks";
125 String content = "{ \"networks\": [ { " + "\"status\": \"ACTIVE\", \"subnets\": [], "
126 + "\"name\": \"sample_network3\", " + "\"provider:physical_network\": null, "
127 + "\"admin_state_up\": true, " + "\"tenant_id\": \"4fd44f30292945e481c7b8a0c8908869\", "
128 + "\"provider:network_type\": \"local\", " + "\"shared\": false, "
129 + "\"id\": \"bc1a76cb-8767-4c3a-bb95-018b822f2130\", " + "\"provider:segmentation_id\": null }, { "
130 + "\"status\": \"ACTIVE\", " + "\"subnets\": [], " + "\"name\": \"sample_network4\", "
131 + "\"provider:physical_network\": null, " + "\"admin_state_up\": true, "
132 + "\"tenant_id\": \"4fd44f30292945e481c7b8a0c8908869\", " + "\"provider:network_type\": \"local\", "
133 + "\"shared\": false, " + "\"id\": \"af374017-c9ae-4a1d-b799-ab73111476e2\", "
134 + "\"provider:segmentation_id\": null } ] } ";
135 ITNeutronE2E.test_create(url, content, "Bulk Network Post Failed");
138 //TODO handle SB check
139 public void network_update_test() {
140 String url = base + "/networks/bc1a76cb-8767-4c3a-bb95-018b822f2130";
141 String content = " { \"network\": { " + "\"status\": \"ACTIVE\", " + "\"subnets\": [], "
142 + "\"name\": \"sample_network_5_updated\", " + "\"provider:physical_network\": null, "
143 + "\"admin_state_up\": true, " + "\"tenant_id\": \"4fd44f30292945e481c7b8a0c8908869\", "
144 + "\"provider:network_type\": \"local\", " + "\"router:external\": false, " + "\"shared\": false, "
145 + "\"provider:segmentation_id\": null } } ";
146 ITNeutronE2E.test_modify(url, content, "Network Put Failed");
149 public void network_collection_get_test() {
150 String urlS = base + "/networks";
151 ITNeutronE2E.test_fetch(urlS, true, "Network collection Get Failed");
154 public void network_element_get_test() {
155 String url = base + "/networks/bc1a76cb-8767-4c3a-bb95-018b822f2130";
156 ITNeutronE2E.test_fetch(url, true, "Network Element Get Failed");
159 public void network_element_get_test_with_query() {
160 String url = base + "/networks/bc1a76cb-8767-4c3a-bb95-018b822f2130"
161 + "?fields=status&fields=subnets&fields=name"
162 + "&fields=provider:physical_network&fields=admin_state_up"
163 + "&fields=tenant_id&fields=provides:network_type"
164 + "&fields=router:external&fields=shared&fields=provider:segmentation_id";
165 ITNeutronE2E.test_fetch(url, true, "Network Element with query Get Failed");
168 public void network_element_negative_get_test() {
169 String url = base + "/networks/bc1a76cb-8767-4c3a-bb95-018b822f2130";
170 ITNeutronE2E.test_fetch(url, false, "Network Element Negative Get Failed");
173 public void network_delete_test() {
174 String url = base + "/networks/bc1a76cb-8767-4c3a-bb95-018b822f2130";
175 ITNeutronE2E.test_delete(url, "Network Element Delete Failed");
178 public static void runTests(String base) throws IOException, InterruptedException {
179 NeutronNetworkTests networkTester = new NeutronNetworkTests(base);
180 networkTester.network_collection_get_test_with_wait();
181 String createJsonString = networkTester.singleton_network_create_test();
182 networkTester.singleton_network_get_with_one_query_item_test(createJsonString);
183 networkTester.singleton_default_network_create_test();
184 networkTester.default_network_content_validation_test();
185 networkTester.external_network_create_test(); //needed for router test
186 networkTester.bulk_network_create_test();
187 networkTester.network_update_test();
188 networkTester.network_collection_get_test();
189 networkTester.network_element_get_test();
190 networkTester.network_element_get_test_with_query();
191 networkTester.network_delete_test();
192 networkTester.network_element_negative_get_test();