Browse Source

Added integration test for WebSphere Portal. (#13309)

Change-Id: I576fb145cd34f98ffa90657e20f5a7c1854f470c
tags/7.1.14
Sauli Tähkäpää 10 years ago
parent
commit
5057c59a02

+ 23
- 7
uitest/integration_tests.xml View File

<property name="server.report.dir" location="${report.dir}/integration-test-tb3/${server-name}" /> <property name="server.report.dir" location="${report.dir}/integration-test-tb3/${server-name}" />
<!-- The junit task does not create the report dir... --> <!-- The junit task does not create the report dir... -->
<mkdir dir="${server.report.dir}" /> <mkdir dir="${server.report.dir}" />
<junit showoutput="no" printsummary="no" fork="yes"> <junit showoutput="no" printsummary="no" fork="yes">
<formatter type="xml" /> <formatter type="xml" />
<classpath refid="classpath.tb3" /> <classpath refid="classpath.tb3" />
<jvmarg value="-Ddeployment.url=${deployment.url}" /> <jvmarg value="-Ddeployment.url=${deployment.url}" />
<jvmarg value="-Dserver-name=${server-name}" /> <jvmarg value="-Dserver-name=${server-name}" />
<jvmarg value="-Djava.awt.headless=true" /> <jvmarg value="-Djava.awt.headless=true" />
<jvmarg value="-Ddemo.war=${demo.war}" />
<test name="${junit.test.suite}" todir="${server.report.dir}" /> <test name="${junit.test.suite}" todir="${server.report.dir}" />
</junit> </junit>
</target> </target>
</antcall> </antcall>
</target> </target>


<target name="integration-test-websphereportal8">
<concat>##teamcity[testStarted name='websphereportal8' flowId='websphereportal8']</concat>
<antcall target="run-tb3-test" inheritall="true">
<param name="junit.test.suite" value="com.vaadin.tests.integration.WebSpherePortalIntegrationTest" />
<param name="server-name" value="websphereportal8" />

<!-- Fill out dummy values for params required by run-tb3-test target -->
<param name="test.integration.server" value="" />
<param name="test.integration.user" value="" />
<param name="test.integration.antfile" value="" />
</antcall>
<concat>##teamcity[testFinished name='websphereportal8' flowId='websphereportal8']"</concat>
</target>

<target name="integration-test-weblogic10"> <target name="integration-test-weblogic10">
<antcall target="run-generic-integration-test"> <antcall target="run-generic-integration-test">
<param name="startDelay" value="600" /> <param name="startDelay" value="600" />
<antcall target="integration-test-test-GAE" /> <antcall target="integration-test-test-GAE" />
</target> </target>


<!-- Upload demo, clean error screenshots and test deployment on all
<!-- Upload demo, clean error screenshots and test deployment on all
servers --> servers -->
<target name="integration-test-all" unless="tests.integration.skip"> <target name="integration-test-all" unless="tests.integration.skip">
<property name="passphrase" value="${passphrase}" /> <property name="passphrase" value="${passphrase}" />
<parallel> <parallel>
<antcontrib:trycatch property="tried"> <antcontrib:trycatch property="tried">
<try> <try>
<!-- Still running GAE test from the old server which
<!-- Still running GAE test from the old server which
requires its own lock --> requires its own lock -->


<echo message="Getting lock" /> <echo message="Getting lock" />
<antcall target="integration-test-tomcat8" /> <antcall target="integration-test-tomcat8" />
<antcall target="integration-test-tomcat7apacheproxy" /> <antcall target="integration-test-tomcat7apacheproxy" />
<antcall target="integration-test-websphere8" /> <antcall target="integration-test-websphere8" />
<antcall target="integration-test-websphereportal8" />
</parallel> </parallel>


</target> </target>
</fileset> </fileset>
</scp> </scp>


<!-- trycatch probably not needed any more as it just fails with
<!-- trycatch probably not needed any more as it just fails with
the original message and doesn't do anything in the finally block --> the original message and doesn't do anything in the finally block -->
<antcontrib:trycatch property="error_message"> <antcontrib:trycatch property="error_message">
<try> <try>
<!-- timeout in one hour (remote end should timeout in 55
<!-- timeout in one hour (remote end should timeout in 55
minutes) --> minutes) -->
<sshexec host="${target-host}" outputproperty="lock-output" timeout="3600000" username="${user}" keyfile="${sshkey.file}" trust="yes" command="chmod +x *.sh; ant -f deploy.xml get-lock" /> <sshexec host="${target-host}" outputproperty="lock-output" timeout="3600000" username="${user}" keyfile="${sshkey.file}" trust="yes" command="chmod +x *.sh; ant -f deploy.xml get-lock" />
<antcall target="echo-prefix"> <antcall target="echo-prefix">
</antcontrib:else> </antcontrib:else>
</antcontrib:if> </antcontrib:if>


<!-- Run theme tests in all browsers if there's a property
<!-- Run theme tests in all browsers if there's a property
with the test files --> with the test files -->
<antcontrib:if> <antcontrib:if>
<isset property="testfiles-theme" /> <isset property="testfiles-theme" />
<target name="teamcity-escape"> <target name="teamcity-escape">
<property name="returnTo" value="return" /> <property name="returnTo" value="return" />


<!-- Should also perform other escaping (\u0085, \u2028 and \u2029)
<!-- Should also perform other escaping (\u0085, \u2028 and \u2029)
- see http://confluence.jetbrains.net/display/TCD65/Build+Script+Interaction+with+TeamCity --> - see http://confluence.jetbrains.net/display/TCD65/Build+Script+Interaction+with+TeamCity -->
<!-- Immutable properties -> needs to create a new one every time --> <!-- Immutable properties -> needs to create a new one every time -->
<antcontrib:propertyregex property="details-escaped1" input="${message}" regexp="['|\[\]]" replace="|\0" global="true" defaultValue="${message}" /> <antcontrib:propertyregex property="details-escaped1" input="${message}" regexp="['|\[\]]" replace="|\0" global="true" defaultValue="${message}" />

+ 3
- 1
uitest/ivy.xml View File



<!-- For compiling TestingWidgetSet --> <!-- For compiling TestingWidgetSet -->
<dependency org="com.vaadin" name="vaadin-client-compiler" <dependency org="com.vaadin" name="vaadin-client-compiler"
rev="${vaadin.version}" conf="build-provided-> build"></dependency>
rev="${vaadin.version}" conf="build-provided-> build">
<exclude type="pom" />
</dependency>


<!-- Servlet 3.0 API --> <!-- Servlet 3.0 API -->
<dependency org="javax.servlet" name="javax.servlet-api" <dependency org="javax.servlet" name="javax.servlet-api"

+ 163
- 0
uitest/src/com/vaadin/tests/integration/WebSpherePortalIntegrationTest.java View File

/*
* Copyright 2000-2013 Vaadin Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package com.vaadin.tests.integration;

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.ChannelSftp;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
import com.vaadin.tests.tb3.PrivateTB3Configuration;

public class WebSpherePortalIntegrationTest extends PrivateTB3Configuration {

@BeforeClass
public static void deployPortlet() throws JSchException, SftpException {
Session session = openSession();

uploadDemoApplication(session);

sendCommand(session, "ant -f deploy.xml get-lock startup-and-deploy");

session.disconnect();
}

private static void uploadDemoApplication(Session session)
throws JSchException, SftpException {
ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
sftpChannel.connect();

String applicationPath = System.getProperty("demo.war");
if (new File(applicationPath).exists()) {
sftpChannel.put(applicationPath, "demo.war");
sftpChannel.disconnect();
} else {
sftpChannel.disconnect();
throw new AssertionError("Demo application not found at "
+ applicationPath);
}
}

private static void sendCommand(Session session, String command)
throws JSchException {
ChannelExec channel = (ChannelExec) session.openChannel("exec");
channel.setCommand(command);
BufferedReader in;
try {
in = new BufferedReader(new InputStreamReader(
channel.getInputStream()));

channel.connect();

String msg = null;

while ((msg = in.readLine()) != null) {
System.out.println(msg);
}
} catch (IOException e) {
e.printStackTrace();
}

channel.disconnect();
}

private static Session openSession() throws JSchException {
JSch jsch = new JSch();
Session session = jsch.getSession("integration",
"websphereportal8.devnet.vaadin.com", 22);
jsch.addIdentity("~/.ssh/id_dsa");
session.setConfig("StrictHostKeyChecking", "no");

session.connect();
return session;
}

@AfterClass
public static void teardown() throws JSchException {
Session session = openSession();

sendCommand(session, "ant -f deploy.xml release-lock");

session.disconnect();
}

@Override
protected java.lang.String getTestUrl() {
return "http://websphereportal8.devnet.vaadin.com:10039/wps/portal";
}

@Override
public void setup() throws Exception {
super.setup();

openTestURL();

if (!isLoggedIn()) {
login();
}

waitUntilPortletIsLoaded();
}

private void waitUntilPortletIsLoaded() {
WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(ExpectedConditions.visibilityOfElementLocated(By
.className("v-app")));
}

private boolean isLoggedIn() {
return driver.findElements(By.linkText("Log Out")).size() == 1;
}

private void login() {
driver.findElement(By.linkText("Log In")).click();
driver.findElement(By.id("userID")).sendKeys("test");
driver.findElement(By.id("password")).sendKeys("testtest");

hitButton("login.button.login");
}

@Test
public void portletHasExpectedLayout() throws IOException {
compareScreen("initial");
}

@Test
public void viewModeIsSetToEdit() throws IOException {
driver.findElement(By.linkText("Edit")).click();

assertThat(driver.findElement(By.tagName("input")).isEnabled(),
is(true));

}

}

Loading…
Cancel
Save