blob: e1362053e0e7cb404ce0b714efa0f3e28222be45 [file] [log] [blame]
/*
* Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0, which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* This Source Code may also be made available under the following Secondary
* Licenses when the conditions for such availability set forth in the
* Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
* version 2 with the GNU Classpath Exception, which is available at
* https://www.gnu.org/software/classpath/license.html.
*
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
*/
package test.weld.osgi;
import org.testng.annotations.*;
import org.testng.Assert;
import java.io.*;
import java.net.*;
import java.util.*;
/**
* Test Weld Osgi Bundle Integrity
*
* @author Santiago.PericasGeertsen@oracle.com
* @author Roger.Kitain@oracle.com
*/
public class OsgiWeldTestNG {
private String strContextRoot="osgiweld";
String m_host="";
String m_port="";
@BeforeMethod
public void beforeTest(){
m_host=System.getProperty("http.host");
m_port=System.getProperty("http.port");
}
@DataProvider(name = "exports")
public Object[][] getExportData() throws Exception {
Properties props = new Properties();
props.load(this.getClass().getResourceAsStream("weld-osgi.properties"));
Object[] exportPackages = new Object[1];
exportPackages[0] = props.getProperty("exports");
return (new Object[][] {exportPackages});
}
// @Test(groups = {"pulse"}, dataProvider = "exports")
public void testOsgiModuleIntegrity(String exports) throws Exception {
try {
boolean result = checkManifestAttributes();
Assert.assertEquals(result, true, "Unexpected HTML");
result = checkExports(exports);
Assert.assertEquals(result, true, "Unexpected Package Exports");
} catch (Exception e) {
e.printStackTrace();
throw new Exception(e);
}
}
private boolean checkManifestAttributes() throws Exception {
String testUrl = "http://" + m_host + ":" + m_port + "/"
+ strContextRoot +"/OsgiWeld?command=manifest";
boolean result = checkForString(testUrl, "OK");
return result;
}
private boolean checkExports(String exports) throws Exception {
boolean result = false;
String testurl = "http://" + m_host + ":" + m_port + "/"
+ strContextRoot +"/OsgiWeld?command=exports";
URL url = new URL(testurl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.connect();
int responseCode = conn.getResponseCode();
InputStream is = conn.getInputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(is));
String line = input.readLine();
if (line.equals("ERROR")) {
return false;
}
result = exports.equals(line);
if (!result) {
System.out.println("The packages exported by the weld-osgi-bundle do not match the expected packages");
}
return result;
}
private boolean checkForString(String testurl, String str) throws Exception {
//System.out.println("Checking for " + str + "in " + testurl);
URL url = new URL(testurl);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.connect();
int responseCode = conn.getResponseCode();
InputStream is = conn.getInputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(is));
String line = null;
boolean result = false;
String testLine = null;
while ((line = input.readLine()) != null) {
//System.out.println("line:" + line);
if (line.indexOf(str) != -1) {
result = true;
testLine = line;
}
}
return result;
}
}