| /* |
| * 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(); |
| } |
| } |