< prev index next >

tools/FxTestRunner/src/client/test/runner/TestScript.java

Print this page




  32 import client.test.RunModes.RunModeException;
  33 import client.test.runner.CommonTestRunnerWorker.Command;
  34 import client.test.runner.CommonTestRunnerWorker.Command.CommandType;
  35 import client.test.runner.interview.LookAndFeelQuestion;
  36 import client.test.runner.interview.PipelineQuestion;
  37 import client.util.CtrUtils;
  38 import static client.util.CtrUtils.*;
  39 import client.util.CtrUtils.OutputReader;
  40 import client.util.JettyServer;
  41 import com.sun.interview.YesNoQuestion;
  42 import com.sun.javatest.Status;
  43 import com.sun.javatest.TestDescription;
  44 import com.sun.javatest.TestEnvironment;
  45 import com.sun.javatest.TestEnvironment.Fault;
  46 import java.io.*;
  47 import java.lang.reflect.Method;
  48 import java.net.ServerSocket;
  49 import java.net.Socket;
  50 import java.net.URL;
  51 import java.net.UnknownHostException;




  52 import java.util.concurrent.Semaphore;
  53 import java.util.concurrent.TimeUnit;
  54 import java.util.logging.Level;
  55 import java.util.logging.Logger;
  56 import org.junit.runner.RunWith;
  57 import test.javaclient.shared.CanvasRunner;
  58 import test.javaclient.shared.Utils;
  59 
  60 /**
  61  *
  62  * @author shura, mrkam, Sergey Grinev, Victor Shubov
  63  */
  64 public class TestScript extends htmltestrunner.TestScript {
  65 
  66     private static final int FORCED_TERMINATION_TIMEOUT = 5000;
  67     private static final boolean verbose = true; //TODO: use real logger
  68     private volatile Process process = null;
  69     private volatile ServerSocket cmdServer = null;
  70     private volatile Socket cmdSocket;
  71     private volatile ObjectOutputStream commandStream;


 317             pathStr.append(p);
 318         }
 319         String javaExec = pathStr.toString();
 320 
 321 
 322         String proxy = lookup(BasicFXInterview.PROXY_PARAM_NAME, "");
 323         String jvmProxyHost = "";
 324         String jvmProxyPort = "";
 325         if (proxy != null && proxy.trim().length() > 0) {
 326             URL proxyUrl = getProxyUrl(proxy);
 327             if (proxyUrl != null) {
 328                 jvmProxyHost = "-DproxyHost=" + proxyUrl.getHost();
 329                 jvmProxyPort = "-DproxyPort=" + proxyUrl.getPort();
 330             }
 331         }
 332 
 333         String additionalOptions = getAdditionalOptions();
 334 
 335         String[] jvmVmOptions = savedEnv.lookup(BasicFXInterview.VM_OPTIONS_PARAM_NAME);
 336 


















 337         String jvmArgPrismOrder = getJvmArgPrismOrder();
 338 
 339         //TODO (SG): is this still required?
 340         String jvmArgLibraryPath = "";
 341         if (fxSdkHome != null) {
 342             jvmArgLibraryPath = "-Djava.library.path=" + fxSdkHome + File.separator + "rt";
 343         }
 344 
 345 //        String externaloutput = lookup(BasicFXInterview.EXTERNALOUTPUT, "");
 346 //        if (externaloutput != null) {
 347 //            jvmArgImageUtils = "-Dimageutils.outputpath=" + externaloutput + File.separator;
 348 //        }
 349         String jvmArgImageUtils = "-Dimageutils.outputpath=" + resultDir + File.separator;
 350 
 351         String jvmArgNoDesc = "";
 352         if (Boolean.parseBoolean(td.getParameter(RunUITestFinder.NO_DESCRIPTION))) {
 353             jvmArgNoDesc = "-Djavatest.mode.nodesc=true";
 354         }
 355 
 356         String runMode = lookup(BasicFXInterview.RUN_MODE_PARAM, BasicFXInterview.RUN_MODE_DESKTOP);
 357 
 358         String jvmInterop = "";
 359         if (runMode.equals(BasicFXInterview.RUN_MODE_DESKTOP_SWING_INTEROPERABILITY)) {
 360             jvmInterop = "-Djavafx.swinginteroperability=true";
 361         } else if (runMode.equals(BasicFXInterview.RUN_MODE_DESKTOP_SWT_INTEROPERABILITY)) {
 362             jvmInterop = "-Djavafx.swtinteroperability=true";
 363         }
 364 
 365         String lookAndFeelOptions = "";
 366         String lfOptions = lookup(LookAndFeelQuestion.LOOKANDFEEL_PARAM_NAME, "");
 367         if (!lfOptions.trim().equals("")) {
 368             lookAndFeelOptions = "-Djavafx.userAgentStylesheetUrl=" + lfOptions;
 369         }
 370 
 371         //Needed to get images via proxy in Evergreen via VPN see RT-21325 || RT-19661
 372         final boolean isFXCompatibility = System.getProperty("java.class.path").contains("JavaFXCompatibility");
 373         String ipV4 = isFXCompatibility ? "-Djava.net.preferIPv4Stack=true" : "";
 374 
 375         String swtTestOpt = "";
 376         try {
 377             if (System.getProperty("os.name").toLowerCase().indexOf("mac") >= 0) {
 378                 RunWith wunWithAnnotation = Class.forName(testClassName).getAnnotation(RunWith.class);
 379                 if ((wunWithAnnotation != null) && (wunWithAnnotation.value().equals(CanvasRunner.class))) {
 380                     swtTestOpt = "-XstartOnFirstThread";
 381                     System.out.println("Use -XstartOnFirstThread option, as we on MacOS, and SWT test is run.");
 382                 }
 383             }
 384         } catch (ClassNotFoundException ex) {
 385             System.err.println("Error : " + ex);
 386         }
 387 
 388         String jvmArgClientTestRoot = "-DtestRoot=" + RunUITestFinder.testRoot;
 389 
 390         String[] command = new String[]{};
 391         command = addToArray(command, javaExec.trim());
 392         command = addToArray(command, jvmVmOptions);








 393         command = addToArray(command, lookAndFeelOptions);
 394         command = addToArray(command, ipV4);
 395         command = addToArray(command, jvmArgPrismOrder, jvmArgLibraryPath, jvmArgImageUtils);
 396         command = addToArray(command, additionalOptions);
 397         command = addToArray(command, jvmArgNoDesc, jvmProxyHost, jvmProxyPort, jvmInterop, swtTestOpt);
 398         command = addToArray(command, jvmArgClientTestRoot);
 399         command = addToArray(command, "-DmasterPort=" + port);
 400         command = addToArray(command, "-classpath", System.getProperty("java.class.path"));
 401 //        command = addToArray(command, "-Xdebug", "-Xnoagent", "-Djava.compiler=NONE", "-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5858");
 402         command = addToArray(command, isJunit ? JUnit2TestRunner.class.getName() : TestRunner.class.getName(), testClassName);
 403         return command;
 404     }





























 405 
 406     /**
 407      *
 408      * @param td
 409      * @param resultDir
 410      * @return
 411      */
 412     protected String[] pluginCmdArgs(TestDescription td, String resultDir) {
 413         return null;
 414     }
 415 
 416     /**
 417      *
 418      * @param command
 419      * @throws IOException
 420      */
 421     protected void doRunTd(String[] command) throws IOException {
 422         process = Runtime.getRuntime().exec(deleteEmptyElements(command));
 423     }
 424 




  32 import client.test.RunModes.RunModeException;
  33 import client.test.runner.CommonTestRunnerWorker.Command;
  34 import client.test.runner.CommonTestRunnerWorker.Command.CommandType;
  35 import client.test.runner.interview.LookAndFeelQuestion;
  36 import client.test.runner.interview.PipelineQuestion;
  37 import client.util.CtrUtils;
  38 import static client.util.CtrUtils.*;
  39 import client.util.CtrUtils.OutputReader;
  40 import client.util.JettyServer;
  41 import com.sun.interview.YesNoQuestion;
  42 import com.sun.javatest.Status;
  43 import com.sun.javatest.TestDescription;
  44 import com.sun.javatest.TestEnvironment;
  45 import com.sun.javatest.TestEnvironment.Fault;
  46 import java.io.*;
  47 import java.lang.reflect.Method;
  48 import java.net.ServerSocket;
  49 import java.net.Socket;
  50 import java.net.URL;
  51 import java.net.UnknownHostException;
  52 import java.util.ArrayList;
  53 import java.util.HashSet;
  54 import java.util.List;
  55 import java.util.Set;
  56 import java.util.concurrent.Semaphore;
  57 import java.util.concurrent.TimeUnit;
  58 import java.util.logging.Level;
  59 import java.util.logging.Logger;
  60 import org.junit.runner.RunWith;
  61 import test.javaclient.shared.CanvasRunner;
  62 import test.javaclient.shared.Utils;
  63 
  64 /**
  65  *
  66  * @author shura, mrkam, Sergey Grinev, Victor Shubov
  67  */
  68 public class TestScript extends htmltestrunner.TestScript {
  69 
  70     private static final int FORCED_TERMINATION_TIMEOUT = 5000;
  71     private static final boolean verbose = true; //TODO: use real logger
  72     private volatile Process process = null;
  73     private volatile ServerSocket cmdServer = null;
  74     private volatile Socket cmdSocket;
  75     private volatile ObjectOutputStream commandStream;


 321             pathStr.append(p);
 322         }
 323         String javaExec = pathStr.toString();
 324 
 325 
 326         String proxy = lookup(BasicFXInterview.PROXY_PARAM_NAME, "");
 327         String jvmProxyHost = "";
 328         String jvmProxyPort = "";
 329         if (proxy != null && proxy.trim().length() > 0) {
 330             URL proxyUrl = getProxyUrl(proxy);
 331             if (proxyUrl != null) {
 332                 jvmProxyHost = "-DproxyHost=" + proxyUrl.getHost();
 333                 jvmProxyPort = "-DproxyPort=" + proxyUrl.getPort();
 334             }
 335         }
 336 
 337         String additionalOptions = getAdditionalOptions();
 338 
 339         String[] jvmVmOptions = savedEnv.lookup(BasicFXInterview.VM_OPTIONS_PARAM_NAME);
 340 
 341         String[] xPatch = savedEnv.lookup(BasicFXInterview.XPATCH_PARAM_NAME);
 342         String xPatchArg = "";
 343         if (xPatch != null && xPatch.length > 0) {
 344             File xPatchFile = new File(xPatch[0]);
 345             xPatchArg = xPatchFile.getAbsolutePath();
 346         }
 347 
 348         boolean enableAddExports = YesNoQuestion.YES.equals(lookup(
 349                 BasicFXInterview.ENABLE_ADD_EXPORTS_PARAM_NAME, YesNoQuestion.NO));
 350 
 351         String noAddExportsArg = enableAddExports ? null : "-DnoAddExports=true";
 352 
 353         String addExportsArg[] = enableAddExports
 354                 ? combineAddExports(
 355                     savedEnv.lookup(BasicFXInterview.ADD_EXPORTS_PARAM_NAME),
 356                     td.getParameter(RunUITestFinder.ADD_EXPORTS))
 357                 : null;
 358 
 359         String jvmArgPrismOrder = getJvmArgPrismOrder();
 360 





 361 
 362 //        String externaloutput = lookup(BasicFXInterview.EXTERNALOUTPUT, "");
 363 //        if (externaloutput != null) {
 364 //            jvmArgImageUtils = "-Dimageutils.outputpath=" + externaloutput + File.separator;
 365 //        }
 366         String jvmArgImageUtils = "-Dimageutils.outputpath=" + resultDir + File.separator;
 367 
 368         String jvmArgNoDesc = "";
 369         if (Boolean.parseBoolean(td.getParameter(RunUITestFinder.NO_DESCRIPTION))) {
 370             jvmArgNoDesc = "-Djavatest.mode.nodesc=true";
 371         }
 372 
 373         String runMode = lookup(BasicFXInterview.RUN_MODE_PARAM, BasicFXInterview.RUN_MODE_DESKTOP);
 374 
 375         String jvmInterop = "";
 376         if (runMode.equals(BasicFXInterview.RUN_MODE_DESKTOP_SWING_INTEROPERABILITY)) {
 377             jvmInterop = "-Djavafx.swinginteroperability=true";
 378         } else if (runMode.equals(BasicFXInterview.RUN_MODE_DESKTOP_SWT_INTEROPERABILITY)) {
 379             jvmInterop = "-Djavafx.swtinteroperability=true";
 380         }
 381 
 382         String lookAndFeelOptions = "";
 383         String lfOptions = lookup(LookAndFeelQuestion.LOOKANDFEEL_PARAM_NAME, "");
 384         if (!lfOptions.trim().equals("")) {
 385             lookAndFeelOptions = "-Djavafx.userAgentStylesheetUrl=" + lfOptions;
 386         }
 387 
 388         //Needed to get images via proxy in Evergreen via VPN see RT-21325 || RT-19661
 389         final boolean isFXCompatibility = System.getProperty("java.class.path").contains("JavaFXCompatibility");
 390         String ipV4 = isFXCompatibility ? "-Djava.net.preferIPv4Stack=true" : "";
 391 
 392         String swtTestOpt = "";
 393         try {
 394             if (System.getProperty("os.name").toLowerCase().contains("mac")) {
 395                 RunWith wunWithAnnotation = Class.forName(testClassName).getAnnotation(RunWith.class);
 396                 if ((wunWithAnnotation != null) && (wunWithAnnotation.value().equals(CanvasRunner.class))) {
 397                     swtTestOpt = "-XstartOnFirstThread";
 398                     System.out.println("Use -XstartOnFirstThread option, as we on MacOS, and SWT test is run.");
 399                 }
 400             }
 401         } catch (ClassNotFoundException ex) {
 402             System.err.println("Error : " + ex);
 403         }
 404 
 405         String jvmArgClientTestRoot = "-DtestRoot=" + RunUITestFinder.testRoot;
 406 
 407         String[] command = new String[]{};
 408         command = addToArray(command, javaExec.trim());
 409         command = addToArray(command, jvmVmOptions);
 410         if (addExportsArg != null) {
 411             command = addToArray(command, addExportsArg);
 412         } else if (noAddExportsArg != null) {
 413             command = addToArray(command, noAddExportsArg);
 414         }
 415         if (xPatchArg != null && !xPatchArg.isEmpty()) {
 416             command = addToArray(command, "--patch-module " + xPatchArg);
 417         }
 418         command = addToArray(command, lookAndFeelOptions);
 419         command = addToArray(command, ipV4);
 420         command = addToArray(command, jvmArgPrismOrder, jvmArgImageUtils);
 421         command = addToArray(command, additionalOptions);
 422         command = addToArray(command, jvmArgNoDesc, jvmProxyHost, jvmProxyPort, jvmInterop, swtTestOpt);
 423         command = addToArray(command, jvmArgClientTestRoot);
 424         command = addToArray(command, "-DmasterPort=" + port);
 425         command = addToArray(command, "-classpath", System.getProperty("java.class.path"));
 426 //        command = addToArray(command, "-Xdebug", "-Xnoagent", "-Djava.compiler=NONE", "-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5858");
 427         command = addToArray(command, isJunit ? JUnit2TestRunner.class.getName() : TestRunner.class.getName(), testClassName);
 428         return command;
 429     }
 430 
 431     static String[] combineAddExports(String[] addExportsArray, String addExportsValue) {
 432         if (addExportsValue == null) {
 433             return combineAddExports(addExportsArray);
 434         } else {
 435             String[] newArray = new String[addExportsArray.length + 1];
 436             System.arraycopy(addExportsArray, 0, newArray, 1, addExportsArray.length);
 437             newArray[0] = addExportsValue;
 438             return combineAddExports(newArray);
 439         }
 440     }
 441 
 442     static String[] combineAddExports(String[] addExportsArray) {
 443         List<String> addExportsList = new ArrayList<>();
 444         for (String addExports : addExportsArray) {
 445             if (addExports != null) {
 446                 for (String value : addExports.split("\\s*,\\s*")) {
 447                     if (!value.isEmpty() && !addExportsList.contains(value.trim())) {
 448                         addExportsList.add("--add-exports");
 449                         addExportsList.add(value.trim());
 450                         addExportsList.add("--add-opens");
 451                         addExportsList.add(value.trim());
 452                     }
 453                 }
 454             }
 455         }
 456         return addExportsList.toArray(new String[addExportsList.size()]);
 457     }
 458 
 459 
 460     /**
 461      *
 462      * @param td
 463      * @param resultDir
 464      * @return
 465      */
 466     protected String[] pluginCmdArgs(TestDescription td, String resultDir) {
 467         return null;
 468     }
 469 
 470     /**
 471      *
 472      * @param command
 473      * @throws IOException
 474      */
 475     protected void doRunTd(String[] command) throws IOException {
 476         process = Runtime.getRuntime().exec(deleteEmptyElements(command));
 477     }
 478 


< prev index next >