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 = HttpUtils.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, \"vlan_transparent\": false, "
69 + " \"id\": \"4e8e5957-649f-477b-9e5b-f1f75b21c03c\" " + " } } ";
70 HttpUtils.test_create(url, content, "Singleton Network Post Failed NB");
74 public void singleton_network_get_with_one_query_item_test(String createJsonString) {
75 String url = base + "/networks";
76 HttpUtils.test_fetch_with_one_query_item(url, createJsonString, "networks");
79 public String singleton_default_network_create_test() {
80 String url = base + "/networks";
81 String content = "{ \"network\": {" + "\"name\": \"netdefault\", \"subnets\": [], "
82 + " \"tenant_id\": \"9bacb3c5d39d41a79512987f338cf177\", "
83 + " \"router:external\": false, \"segments\": [ " + " { \"provider:segmentation_id\": 2, "
84 + " \"provider:physical_network\": \"8bab8453-1bc9-45af-8c70-f83aa9b50453\", "
85 + " \"provider:network_type\": \"vlan\" }, { " + " \"provider:segmentation_id\": null, "
86 + " \"provider:physical_network\": \"8bab8453-1bc9-45af-8c70-f83aa9b50453\", "
87 + " \"provider:network_type\": \"stt\" } ], "
88 + " \"id\": \"de8e5957-d49f-d77b-de5b-d1f75b21c03c\" " + " } } ";
89 HttpUtils.test_create(url, content, "Singleton Default Network Post Failed NB");
93 public void default_network_content_validation_test() {
94 //Validates Network default parameters are set.
95 //Default parameters: status,shared
96 String element = "status";
97 String url = base + "/networks/de8e5957-d49f-d77b-de5b-d1f75b21c03c?fields=" + element;
98 String expectedContent = "\"ACTIVE\"";
99 String context = "Network details do not match.";
100 JsonObject jsonObjectOutput = HttpUtils.test_fetch_gson(url, context);
101 jsonObjectOutput = jsonObjectOutput.getAsJsonObject("network");
102 JsonElement jsonElementValue = jsonObjectOutput.get(element);
103 Assert.assertEquals(context, expectedContent, String.valueOf(jsonElementValue));
105 url = base + "/networks/de8e5957-d49f-d77b-de5b-d1f75b21c03c?fields=" + element;
106 jsonObjectOutput = HttpUtils.test_fetch_gson(url, context);
107 jsonObjectOutput = jsonObjectOutput.getAsJsonObject("network");
108 jsonElementValue = jsonObjectOutput.get(element);
109 Assert.assertEquals(context, false, jsonElementValue.getAsBoolean());
110 element = "vlan_transparent";
111 url = base + "/networks/de8e5957-d49f-d77b-de5b-d1f75b21c03c?fields=" + element;
112 jsonObjectOutput = HttpUtils.test_fetch_gson(url, context);
113 jsonObjectOutput = jsonObjectOutput.getAsJsonObject("network");
114 jsonElementValue = jsonObjectOutput.get(element);
115 Assert.assertEquals(context, false, jsonElementValue.getAsBoolean());
118 //TODO handle SB check
119 public void external_network_create_test() {
120 String url = base + "/networks";
121 String content = "{ \"network\": {" + " \"status\": \"ACTIVE\", \"subnets\": [], "
122 + " \"name\": \"external1\", \"admin_state_up\": true, "
123 + " \"tenant_id\": \"9bacb3c5d39d41a79512987f338cf177\", "
124 + " \"router:external\": true, \"shared\": false, \"vlan_transparent\": false,"
125 + " \"id\": \"8ca37218-28ff-41cb-9b10-039601ea7e6b\" } } ";
126 HttpUtils.test_create(url, content, "External Network Post Failed NB");
129 //TODO handle SB check
130 public void bulk_network_create_test() {
131 String url = base + "/networks";
132 String content = "{ \"networks\": [ { " + "\"status\": \"ACTIVE\", \"subnets\": [], "
133 + "\"name\": \"sample_network3\", " + "\"provider:physical_network\": null, "
134 + "\"admin_state_up\": true, " + "\"tenant_id\": \"4fd44f30292945e481c7b8a0c8908869\", "
135 + "\"provider:network_type\": \"local\", " + "\"shared\": false, \"vlan_transparent\": false, "
136 + "\"id\": \"bc1a76cb-8767-4c3a-bb95-018b822f2130\", " + "\"provider:segmentation_id\": null }, { "
137 + "\"status\": \"ACTIVE\", " + "\"subnets\": [], " + "\"name\": \"sample_network4\", "
138 + "\"provider:physical_network\": null, " + "\"admin_state_up\": true, "
139 + "\"tenant_id\": \"4fd44f30292945e481c7b8a0c8908869\", " + "\"provider:network_type\": \"local\", "
140 + "\"shared\": false, " + "\"vlan_transparent\": false, "
141 + "\"id\": \"af374017-c9ae-4a1d-b799-ab73111476e2\", " + "\"provider:segmentation_id\": null } ] } ";
142 HttpUtils.test_create(url, content, "Bulk Network Post Failed");
145 //TODO handle SB check
146 public void network_update_test() {
147 String url = base + "/networks/bc1a76cb-8767-4c3a-bb95-018b822f2130";
148 String content = " { \"network\": { " + "\"status\": \"ACTIVE\", " + "\"subnets\": [], "
149 + "\"name\": \"sample_network_5_updated\", " + "\"provider:physical_network\": null, "
150 + "\"admin_state_up\": true, " + "\"tenant_id\": \"4fd44f30292945e481c7b8a0c8908869\", "
151 + "\"provider:network_type\": \"local\", " + "\"router:external\": false, " + "\"shared\": false, "
152 + "\"vlan_transparent\": false, " + "\"provider:segmentation_id\": null } } ";
153 HttpUtils.test_modify(url, content, "Network Put Failed");
156 public void network_collection_get_test() {
157 String urlS = base + "/networks";
158 HttpUtils.test_fetch(urlS, true, "Network collection Get Failed");
161 public void network_element_get_test() {
162 String url = base + "/networks/bc1a76cb-8767-4c3a-bb95-018b822f2130";
163 HttpUtils.test_fetch(url, true, "Network Element Get Failed");
166 public void network_element_get_test_with_query() {
167 String url = base + "/networks/bc1a76cb-8767-4c3a-bb95-018b822f2130"
168 + "?fields=status&fields=subnets&fields=name"
169 + "&fields=provider:physical_network&fields=admin_state_up"
170 + "&fields=tenant_id&fields=provides:network_type"
171 + "&fields=router:external&fields=shared&fields=vlan_transparent&fields=provider:segmentation_id";
172 HttpUtils.test_fetch(url, true, "Network Element with query Get Failed");
175 public void network_element_negative_get_test() {
176 String url = base + "/networks/bc1a76cb-8767-4c3a-bb95-018b822f2130";
177 HttpUtils.test_fetch(url, false, "Network Element Negative Get Failed");
180 public void network_delete_test() {
181 String url = base + "/networks/bc1a76cb-8767-4c3a-bb95-018b822f2130";
182 HttpUtils.test_delete(url, "Network Element Delete Failed");
185 public static void runTests(String base) throws IOException, InterruptedException {
186 NeutronNetworkTests networkTester = new NeutronNetworkTests(base);
187 networkTester.network_collection_get_test_with_wait();
188 String createJsonString = networkTester.singleton_network_create_test();
189 networkTester.singleton_network_get_with_one_query_item_test(createJsonString);
190 networkTester.singleton_default_network_create_test();
191 networkTester.default_network_content_validation_test();
192 networkTester.external_network_create_test(); //needed for router test
193 networkTester.bulk_network_create_test();
194 networkTester.network_update_test();
195 networkTester.network_collection_get_test();
196 networkTester.network_element_get_test();
197 networkTester.network_element_get_test_with_query();
198 networkTester.network_delete_test();
199 networkTester.network_element_negative_get_test();