Просмотр исходного кода

Added integration test for WebSphere Portal. (#13309)

Change-Id: I576fb145cd34f98ffa90657e20f5a7c1854f470c
tags/7.1.14
Sauli Tähkäpää 10 лет назад
Родитель
Сommit
5057c59a02

+ 23
- 7
uitest/integration_tests.xml Просмотреть файл

@@ -114,7 +114,7 @@
<property name="server.report.dir" location="${report.dir}/integration-test-tb3/${server-name}" />
<!-- The junit task does not create the report dir... -->
<mkdir dir="${server.report.dir}" />
<junit showoutput="no" printsummary="no" fork="yes">
<formatter type="xml" />
<classpath refid="classpath.tb3" />
@@ -123,6 +123,7 @@
<jvmarg value="-Ddeployment.url=${deployment.url}" />
<jvmarg value="-Dserver-name=${server-name}" />
<jvmarg value="-Djava.awt.headless=true" />
<jvmarg value="-Ddemo.war=${demo.war}" />
<test name="${junit.test.suite}" todir="${server.report.dir}" />
</junit>
</target>
@@ -343,6 +344,20 @@
</antcall>
</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">
<antcall target="run-generic-integration-test">
<param name="startDelay" value="600" />
@@ -375,7 +390,7 @@
<antcall target="integration-test-test-GAE" />
</target>

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

<echo message="Getting lock" />
@@ -439,6 +454,7 @@
<antcall target="integration-test-tomcat8" />
<antcall target="integration-test-tomcat7apacheproxy" />
<antcall target="integration-test-websphere8" />
<antcall target="integration-test-websphereportal8" />
</parallel>

</target>
@@ -468,11 +484,11 @@
</fileset>
</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 -->
<antcontrib:trycatch property="error_message">
<try>
<!-- timeout in one hour (remote end should timeout in 55
<!-- timeout in one hour (remote end should timeout in 55
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" />
<antcall target="echo-prefix">
@@ -515,7 +531,7 @@
</antcontrib:else>
</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 -->
<antcontrib:if>
<isset property="testfiles-theme" />
@@ -565,7 +581,7 @@
<target name="teamcity-escape">
<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 -->
<!-- Immutable properties -> needs to create a new one every time -->
<antcontrib:propertyregex property="details-escaped1" input="${message}" regexp="['|\[\]]" replace="|\0" global="true" defaultValue="${message}" />

+ 3
- 1
uitest/ivy.xml Просмотреть файл

@@ -57,7 +57,9 @@

<!-- For compiling TestingWidgetSet -->
<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 -->
<dependency org="javax.servlet" name="javax.servlet-api"

+ 163
- 0
uitest/src/com/vaadin/tests/integration/WebSpherePortalIntegrationTest.java Просмотреть файл

@@ -0,0 +1,163 @@
/*
* 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));

}

}

Загрузка…
Отмена
Сохранить