/** * Stop the configured Selenium Grid node server. * * @param localOnly 'true' to target only local Grid node server * @return 'false' if [localOnly] and node is remote; otherwise 'true' */ public static boolean stopGridNode(boolean localOnly) { if (localOnly && !isLocalNode()) { return false; } RegistrationRequest nodeConfig = SeleniumConfig.getConfig().getNodeConfig(); if (isNodeActive(nodeConfig)) { HttpHost nodeHost = GridUtility.getNodeHost(nodeConfig); try { GridUtility.getHttpResponse(nodeHost, NODE_SHUTDOWN); new UrlChecker().waitUntilUnavailable(SHUTDOWN_DELAY, TimeUnit.SECONDS, URI.create(nodeHost.toURI()).toURL()); } catch (IOException | TimeoutException e) { throw UncheckedThrow.throwUnchecked(e); } } setNodeProcess(null); return true; }
/** * Stop the configured Selenium Grid hub server. * * @param localOnly 'true' to target only local Grid hub server * @return 'false' if [localOnly] and hub is remote; otherwise 'true' */ public static boolean stopGridHub(boolean localOnly) { if (localOnly && !isLocalHub()) { return false; } GridHubConfiguration hubConfig = SeleniumConfig.getConfig().getHubConfig(); if (isHubActive(hubConfig)) { HttpHost hubHost = GridUtility.getHubHost(hubConfig); try { GridUtility.getHttpResponse(hubHost, HUB_SHUTDOWN); new UrlChecker().waitUntilUnavailable(SHUTDOWN_DELAY, TimeUnit.SECONDS, URI.create(hubHost.toURI()).toURL()); } catch (IOException | TimeoutException e) { throw UncheckedThrow.throwUnchecked(e); } } setHubProcess(null); return true; }
/** * Stop the configured Selenium Grid node server. * * @param localOnly 'true' to target only local Grid node server * @return 'false' if [localOnly] and node is remote; otherwise 'true' */ public static boolean stopGridNode(boolean localOnly) { if (localOnly && !isLocalNode()) { return false; } GridNodeConfiguration nodeConfig = SeleniumConfig.getConfig().getNodeConfig(); if (isNodeActive(nodeConfig)) { HttpHost nodeHost = GridUtility.getNodeHost(nodeConfig); try { GridUtility.getHttpResponse(nodeHost, NODE_SHUTDOWN); new UrlChecker().waitUntilUnavailable(SHUTDOWN_DELAY, TimeUnit.SECONDS, URI.create(nodeHost.toURI()).toURL()); } catch (IOException | TimeoutException e) { throw UncheckedThrow.throwUnchecked(e); } } setNodeProcess(null); return true; }
@Override public boolean isRunning() { lock.lock(); try { if (process == null) { return false; } if (!process.isRunning()) { return false; } try { ping(1500, TimeUnit.MILLISECONDS); return true; } catch (UrlChecker.TimeoutException e) { return false; } } finally { lock.unlock(); } }
private void ping(long time, TimeUnit timeUnit) throws UrlChecker.TimeoutException { URL url = getUrl(); try { URL status = new URL(url.toString() + "/status"); new UrlChecker().waitUntilAvailable(time, timeUnit, status); } catch (MalformedURLException e) { throw new RuntimeException( "URL出错 " + url.toString().toString() + "/status"); } }
/** * Start the specified Selenium Grid server. * @param serverParms Selenium Grid server parameters * * @throws TimeoutException If Grid server took too long to activate. */ private static void startGridServer(GridServerParms serverParms) throws TimeoutException { Process serverProcess = GridProcess.start(serverParms.processArgs); new UrlChecker().waitUntilAvailable(WaitType.HOST.getInterval(), TimeUnit.SECONDS, serverParms.statusUrl); setProcess(serverParms.processRole, serverProcess); }