1 16 package com.google.gwt.junit; 17 18 import com.google.gwt.core.ext.TreeLogger; 19 import com.google.gwt.core.ext.UnableToCompleteException; 20 import com.google.gwt.junit.remote.BrowserManager; 21 22 import java.net.InetAddress ; 23 import java.net.UnknownHostException ; 24 25 29 class RunStyleRemoteWeb extends RunStyle { 30 31 private static final int INITIAL_KEEPALIVE_MS = 5000; 32 private static final int PING_KEEPALIVE_MS = 2000; 33 34 39 42 private final BrowserManager[] browserManagers; 43 44 47 private int[] remoteTokens; 48 49 52 private final JUnitShell shell; 53 54 private boolean running = false; 55 56 59 public RunStyleRemoteWeb(JUnitShell shell, BrowserManager[] browserManagers) { 60 this.shell = shell; 61 this.browserManagers = browserManagers; 62 this.remoteTokens = new int[ browserManagers.length ]; 63 } 64 65 public void maybeLaunchModule(String moduleName, boolean forceLaunch) 66 throws UnableToCompleteException { 67 68 if (forceLaunch || !running) { 69 shell.compileForWebMode(moduleName); 70 String localhost; 71 72 try { 73 localhost = InetAddress.getLocalHost().getHostAddress(); 74 } catch (UnknownHostException e) { 75 throw new RuntimeException ("Unable to determine my ip address", e); 76 } 77 String url = "http://" + localhost + ":" + shell.getPort() + "/" 78 + moduleName; 79 80 try { 81 for ( int i = 0; i < remoteTokens.length; ++i ) { 82 int remoteToken = remoteTokens[ i ]; 83 BrowserManager mgr = browserManagers[ i ]; 84 if ( remoteToken != 0 ) { 85 mgr.killBrowser(remoteToken); 86 } 87 remoteTokens[ i ] = mgr.launchNewBrowser(url, INITIAL_KEEPALIVE_MS); 88 } 89 } catch (Exception e) { 90 shell.getTopLogger().log(TreeLogger.ERROR, 91 "Error launching remote browser", e); 92 throw new UnableToCompleteException(); 93 } 94 95 running = true; 96 } 97 } 98 99 public boolean wasInterrupted() { 100 for ( int i = 0; i < remoteTokens.length; ++i ) { 101 int remoteToken = remoteTokens[ i ]; 102 BrowserManager mgr = browserManagers[ i ]; 103 if (remoteToken > 0) { 104 try { 105 mgr.keepAlive(remoteToken, PING_KEEPALIVE_MS); 106 } catch (Exception e) { 107 shell.getTopLogger().log(TreeLogger.WARN, 110 "Unexpected exception keeping remote browser alive", e); 111 return true; 112 } 113 } 114 } 115 return false; 116 } 117 118 } | Popular Tags |