NEUTRON-162: vlan_transparent attribute is missing in network_attributes
[neutron.git] / integration / test-standalone / src / main / java / org / opendaylight / neutron / e2etest / NeutronNetworkTests.java
1 /*
2  * Copyright (C) 2015 IBM, Inc.
3  *
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
7  */
8
9 package org.opendaylight.neutron.e2etest;
10
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;
16 import java.net.URL;
17 import org.junit.Assert;
18 import org.slf4j.Logger;
19 import org.slf4j.LoggerFactory;
20
21 public class NeutronNetworkTests {
22
23     private static final int TIMEOUT = 180;
24
25     String base;
26
27     private static final Logger LOG = LoggerFactory.getLogger(NeutronNetworkTests.class);
28
29     public NeutronNetworkTests(String base) {
30         this.base = base;
31     }
32
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);
37             int responseCode;
38             try {
39                 responseCode = httpConn.getResponseCode();
40             } catch (ConnectException e) {
41                 LOG.info("connection trial {} failed to URL {}", retry, url, e);
42                 Thread.sleep(1000);
43                 continue;
44             }
45
46             if (responseCode != 200) {
47                 LOG.info("trial {} to URL {} failed with {}", retry, url, httpConn.getResponseCode());
48                 Thread.sleep(1000);
49             } else {
50                 Assert.assertEquals("Network Collection GET failed", 200, httpConn.getResponseCode());
51                 return;
52             }
53         }
54         Assert.assertFalse("Network Collection GET to URL " + url + " with wait failed", true);
55     }
56
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");
71         return content;
72     }
73
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");
77     }
78
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");
90         return content;
91     }
92
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));
104         element = "shared";
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());
116     }
117
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");
127     }
128
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");
143     }
144
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");
154     }
155
156     public void network_collection_get_test() {
157         String urlS = base + "/networks";
158         HttpUtils.test_fetch(urlS, true, "Network collection Get Failed");
159     }
160
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");
164     }
165
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");
173     }
174
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");
178     }
179
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");
183     }
184
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();
200     }
201 }