123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279 |
- /*
- * Copyright 2000-2013 Vaadind 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.tb3;
-
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.net.InetAddress;
- import java.net.NetworkInterface;
- import java.net.SocketException;
- import java.util.Calendar;
- import java.util.Enumeration;
- import java.util.Properties;
-
- import org.junit.Assert;
- import org.openqa.selenium.ie.InternetExplorerDriver;
- import org.openqa.selenium.remote.DesiredCapabilities;
-
- import com.vaadin.testbench.annotations.BrowserFactory;
- import com.vaadin.testbench.annotations.RunLocally;
- import com.vaadin.testbench.annotations.RunOnHub;
- import com.vaadin.testbench.parallel.Browser;
- import com.vaadin.testbench.parallel.BrowserUtil;
-
- /**
- * Provides values for parameters which depend on where the test is run.
- * Parameters should be configured in work/eclipse-run-selected-test.properties.
- * A template is available in uitest/.
- *
- * @author Vaadin Ltd
- */
- @RunOnHub("tb3-hub.intra.itmill.com")
- @BrowserFactory(VaadinBrowserFactory.class)
- public abstract class PrivateTB3Configuration extends ScreenshotTB3Test {
- /**
- *
- */
- public static final String SCREENSHOT_DIRECTORY = "com.vaadin.testbench.screenshot.directory";
- private static final String HOSTNAME_PROPERTY = "com.vaadin.testbench.deployment.hostname";
- private static final String RUN_LOCALLY_PROPERTY = "com.vaadin.testbench.runLocally";
- private static final String ALLOW_RUN_LOCALLY_PROPERTY = "com.vaadin.testbench.allowRunLocally";
- private static final String PORT_PROPERTY = "com.vaadin.testbench.deployment.port";
- private static final String DEPLOYMENT_PROPERTY = "com.vaadin.testbench.deployment.url";
- private static final String HUB_URL = "com.vaadin.testbench.hub.url";
- private static final Properties properties = new Properties();
- private static final File propertiesFile = new File("../work",
- "eclipse-run-selected-test.properties");
- private static final String FIREFOX_PATH = "firefox.path";
- private static final String PHANTOMJS_PATH = "phantomjs.binary.path";
-
- static {
- if (propertiesFile.exists()) {
- try {
- properties.load(new FileInputStream(propertiesFile));
- if (properties.containsKey(RUN_LOCALLY_PROPERTY)) {
- System.setProperty("useLocalWebDriver", "true");
- DesiredCapabilities localBrowser = getRunLocallyCapabilities();
- System.setProperty("browsers.include",
- localBrowser.getBrowserName()
- + localBrowser.getVersion());
- }
- if (properties.containsKey(FIREFOX_PATH)) {
- System.setProperty(FIREFOX_PATH,
- properties.getProperty(FIREFOX_PATH));
- }
- if (properties.containsKey(PHANTOMJS_PATH)) {
- System.setProperty(PHANTOMJS_PATH,
- properties.getProperty(PHANTOMJS_PATH));
- }
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
- }
-
- @Override
- public void setup() throws Exception {
- String allowRunLocally = getProperty(ALLOW_RUN_LOCALLY_PROPERTY);
- if ((allowRunLocally == null || !allowRunLocally.equals("" + true))
- && getClass().getAnnotation(RunLocally.class) != null) {
- Assert.fail(
- "@RunLocally annotation is not allowed by default in framework tests. "
- + "See file uitest/eclipse-run-selected-test.properties for more information.");
- }
-
- super.setup();
- }
-
- @Override
- public void setDesiredCapabilities(
- DesiredCapabilities desiredCapabilities) {
- super.setDesiredCapabilities(desiredCapabilities);
-
- if (BrowserUtil.isIE(desiredCapabilities)) {
- if (requireWindowFocusForIE()) {
- desiredCapabilities.setCapability(
- InternetExplorerDriver.REQUIRE_WINDOW_FOCUS, true);
- }
- if (!usePersistentHoverForIE()) {
- desiredCapabilities.setCapability(
- InternetExplorerDriver.ENABLE_PERSISTENT_HOVERING,
- false);
- }
- if (!useNativeEventsForIE()) {
- desiredCapabilities.setCapability(
- InternetExplorerDriver.NATIVE_EVENTS, false);
- }
- }
-
- desiredCapabilities.setCapability("project", "Vaadin Framework");
- desiredCapabilities.setCapability("build", String.format("%s / %s",
- getDeploymentHostname(), Calendar.getInstance().getTime()));
- desiredCapabilities.setCapability("name", String.format("%s.%s",
- getClass().getCanonicalName(), testName.getMethodName()));
- }
-
- protected static DesiredCapabilities getRunLocallyCapabilities() {
- VaadinBrowserFactory factory = new VaadinBrowserFactory();
- try {
- return factory.create(Browser.valueOf(properties
- .getProperty(RUN_LOCALLY_PROPERTY).toUpperCase()));
- } catch (Exception e) {
- System.err.println(e.getMessage());
- System.err.println("Falling back to FireFox");
- }
- return factory.create(Browser.FIREFOX);
- }
-
- protected static String getProperty(String name) {
- String property = properties.getProperty(name);
- if (property == null) {
- property = System.getProperty(name);
- }
-
- return property;
- }
-
- @Override
- protected String getScreenshotDirectory() {
- String screenshotDirectory = getProperty(SCREENSHOT_DIRECTORY);
- if (screenshotDirectory == null) {
- throw new RuntimeException("No screenshot directory defined. Use -D"
- + SCREENSHOT_DIRECTORY + "=<path>");
- }
- return screenshotDirectory;
- }
-
- @Override
- protected String getHubURL() {
- String hubUrl = getProperty(HUB_URL);
- if (hubUrl == null || hubUrl.trim().isEmpty()) {
- return super.getHubURL();
- }
-
- return hubUrl;
- }
-
- @Override
- protected String getBaseURL() {
- if (isRunLocally()) {
- return "http://localhost:8888";
- }
- String url = getProperty(DEPLOYMENT_PROPERTY);
- if (url == null || url.trim().isEmpty()) {
- return super.getBaseURL();
- }
- return url;
- }
-
- @Override
- protected String getDeploymentHostname() {
- if (isRunLocally()) {
- return "localhost";
- }
- return getConfiguredDeploymentHostname();
- }
-
- protected boolean isRunLocally() {
- if (properties.containsKey(RUN_LOCALLY_PROPERTY)) {
- return true;
- }
-
- if (properties.containsKey(ALLOW_RUN_LOCALLY_PROPERTY)
- && properties.get(ALLOW_RUN_LOCALLY_PROPERTY).equals("true")
- && getClass().getAnnotation(RunLocally.class) != null) {
- return true;
- }
-
- return false;
- }
-
- /**
- * Gets the hostname that tests are configured to use.
- *
- * @return the host name configuration value
- */
- public static String getConfiguredDeploymentHostname() {
- String hostName = getProperty(HOSTNAME_PROPERTY);
-
- if (hostName == null || "".equals(hostName)) {
- hostName = findAutoHostname();
- }
-
- return hostName;
- }
-
- @Override
- protected int getDeploymentPort() {
- return getConfiguredDeploymentPort();
- }
-
- /**
- * Gets the port that tests are configured to use.
- *
- * @return the port configuration value
- */
- public static int getConfiguredDeploymentPort() {
- String portString = getProperty(PORT_PROPERTY);
-
- int port = 8888;
- if (portString != null && !"".equals(portString)) {
- port = Integer.parseInt(portString);
- }
-
- return port;
- }
-
- /**
- * Tries to automatically determine the IP address of the machine the test
- * is running on.
- *
- * @return An IP address of one of the network interfaces in the machine.
- * @throws RuntimeException
- * if there was an error or no IP was found
- */
- private static String findAutoHostname() {
- try {
- Enumeration<NetworkInterface> interfaces = NetworkInterface
- .getNetworkInterfaces();
- while (interfaces.hasMoreElements()) {
- NetworkInterface nwInterface = interfaces.nextElement();
- if (!nwInterface.isUp() || nwInterface.isLoopback()
- || nwInterface.isVirtual()) {
- continue;
- }
- Enumeration<InetAddress> addresses = nwInterface
- .getInetAddresses();
- while (addresses.hasMoreElements()) {
- InetAddress address = addresses.nextElement();
- if (address.isLoopbackAddress()) {
- continue;
- }
- if (address.isSiteLocalAddress()) {
- return address.getHostAddress();
- }
- }
- }
- } catch (SocketException e) {
- throw new RuntimeException("Could not enumerate ");
- }
-
- throw new RuntimeException(
- "No compatible (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) ip address found.");
- }
- }
|