blob: d4f862667fc0f17360fd179cf6d9ba6a68ea77ea [file] [log] [blame]
/*
* Copyright (c) 2009, 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
*/
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
/**
*
* @author mohit
*/
public class BundleUtil {
// String installerUrl = "http://localhost:8080/testOSGI/BundleInstaller";
// String uninstallerUrl = "http://localhost:8080/testOSGI/BundleUninstaller";
String installerUrl = "http://localhost:8080/testREST/web/bundleinstaller";
String uninstallerUrl = "http://localhost:8080/testREST/web/bundleuninstaller";
private static Reporter reporter;
private static String testName;
int failCode = 2;//code for deployment failure [see Reporter.java]
// args[0] contains testname
// args[1] contains testResultFile
// args[2] if there, will contain installUrl.
public static void main(String args[]) {
BundleUtil bundleUtil = new BundleUtil();
if(args.length == 2) {
testName = args[0];
reporter = new Reporter(args[1]);
//uninstall the previously installed bundle
bundleUtil.uninstall();
} else if(args.length == 3) {
testName = args[0];
reporter = new Reporter(args[1]);
//install the bundle using given arguments.
bundleUtil.install(args[2]);
} else {
System.out.println("Invalid Number of Arguments.");
}
}
public void install(String installUrl) {
//installerUrl = installerUrl + "?installType=" + installType;
//installerUrl = installerUrl + "&bundlePath=" + bundlePath;
String [] parameters = {"installUrl", installUrl};
invokeURL(installerUrl, parameters);
}
public void uninstall() {
invokeURL(uninstallerUrl, new String [] {});
}
public void invokeURL(String url, String[] parameters) {
try {
URL u = new URL(url);
HttpURLConnection connection = (HttpURLConnection) u.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setDoInput(true);
OutputStream out = connection.getOutputStream();
Writer writer = new OutputStreamWriter(out, "UTF-8");
for (int i = 0; i < parameters.length; i++) {
writer.write(parameters[i++]);//first wtire param name, then value
writer.write("=");
writer.write(URLEncoder.encode(parameters[i], "UTF-8"));
writer.write("&");
}
writer.close();
out.close();
int code = connection.getResponseCode();
InputStream is = connection.getInputStream();
BufferedReader input = new BufferedReader(new InputStreamReader(is));
String line = null;
while ((line = input.readLine()) != null) {
log(line);
if(line.contains("FAIL")){
fail();
}
}
if (code != 200) {
log("Error invoking " + url);
fail();
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
private void log(String message) {
System.out.println("[BundleUtil]:: " + message);
}
private void fail() {
System.out.println("[BundleUtil]:: TestFailed");
reporter.printStatus(testName, failCode);
}
}