Bump to yangtools-2.0.0 and odlparent-3.0.2
[neutron.git] / integration / test / src / test / 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 = ITNeutronE2E.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, \"id\": \"4e8e5957-649f-477b-9e5b-f1f75b21c03c\" " + " } } ";
69         ITNeutronE2E.test_create(url, content, "Singleton Network Post Failed NB");
70         return content;
71     }
72
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");
76     }
77
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");
89         return content;
90     }
91
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));
103         element = "shared";
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());
109     }
110
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");
120     }
121
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");
136     }
137
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");
147     }
148
149     public void network_collection_get_test() {
150         String urlS = base + "/networks";
151         ITNeutronE2E.test_fetch(urlS, true, "Network collection Get Failed");
152     }
153
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");
157     }
158
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");
166     }
167
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");
171     }
172
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");
176     }
177
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();
193     }
194 }