blob: a00cdf82b7413f7548f107d3de80a006878a7895 [file] [log] [blame]
/*
* Copyright (c) 2017, 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 versionedappclient;
import java.io.InputStream;
import java.util.Properties;
/**
* This class is the application being tested and also the client which
* is used to test if the given version is enabled. This is because an appclient/jws
* application is executed on the client side.
*
* We have to setup a system to retrieve the client-stubs of the currently enabled
* version. This is because "asadmin get-client-stubs" always returns the client-stubs
* regardless the given version is enabled or not. On the other side lauching
* the appclient from the stubs either by hand or with appclient script will succeed
* regardless the version enabled.
*
* Using this appclient after a deployment (without enabled=false) or an
* activation process (enable) will always succeed with testPositive=true
* (expectedVersionIdentifier will always be equals to retrievedVersionIdentifier).
*
* Moreover using this appclient after a deactivation process will always fail
* with testPositive=false.
*
* As a conclusion we can say that this test isn't consistant if launched from a
* client-stub retrieved with the "asadmin get-client-stubs" command. Instead,
* we choose to use the Java Web Start URL ([host:port/contextRoot], the
* contextroot equals to the untagged if not provided in the deployment descriptor)
*
* The stubs are retrieved with JWS mechanism, it allows us to change the enabled status
* and make some tests.
*
* @author Romain GRECOURT - SERLI (romain.grecourt@serli.com)
*/
public class SimpleVersionedAppClient {
String url;
String versionIdentifier;
Boolean testPositive;
public SimpleVersionedAppClient(String[] args){
url = args[0];
testPositive = (Boolean.valueOf(args[1])).booleanValue();
if(args.length > 2) {
versionIdentifier = args[2];
} else {
versionIdentifier = "";
}
}
public void doTest(){
try {
// retrieve the version information
Properties prop = new Properties();
InputStream in =
this.getClass().getResource("version-infos.properties").openStream();
prop.load(in);
in.close();
String retrievedVersionIdentifier =
prop.getProperty("version.identifier", "");
// this provides some usefull informations to investigate
log("Test: devtests/deployment/versioning/simple-versioned-appclient");
if(testPositive){
log("this test is expected to succeed");
} else {
log("this test is expected to fail");
}
log("Expected version identifier = " + versionIdentifier);
log("Retrieved version identifier = " + retrievedVersionIdentifier);
boolean isExpectedVersionIdentifier =
versionIdentifier.equals(retrievedVersionIdentifier);
if(testPositive){
if(isExpectedVersionIdentifier){
pass();
} else {
fail();
}
} else {
if(isExpectedVersionIdentifier){
fail();
} else {
pass();
}
}
} catch (Exception ex) {
log(ex.getMessage());
}
}
private void log(String message) {
System.err.println("[versionedappclient.client.SimpleVersionedClient]:: " + message);
}
private void pass() {
log("PASSED: devtests/deployment/versioning/simple-versioned-appclient");
System.exit(0);
}
private void fail() {
log("FAILED: devtests/deployment/versioning/simple-versioned-appclient");
System.exit(1);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
SimpleVersionedAppClient app = new SimpleVersionedAppClient(args);
app.doTest();
}
}