From b1c8c34273f7cd6843ef8dfe8334f5a1226722ad Mon Sep 17 00:00:00 2001 From: Andrei Solntsev Date: Fri, 26 Aug 2016 21:46:49 +0300 Subject: [PATCH] #196 shutdown proxy server at the same moment (in the same thread) when browser is closed --- .../impl/WebDriverThreadLocalContainer.java | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/codeborne/selenide/impl/WebDriverThreadLocalContainer.java b/src/main/java/com/codeborne/selenide/impl/WebDriverThreadLocalContainer.java index 95d514c37d..1a0cb7c8b1 100644 --- a/src/main/java/com/codeborne/selenide/impl/WebDriverThreadLocalContainer.java +++ b/src/main/java/com/codeborne/selenide/impl/WebDriverThreadLocalContainer.java @@ -130,18 +130,14 @@ protected void closeWebDriver(Thread thread) { ALL_WEB_DRIVERS_THREADS.remove(thread); WebDriver webdriver = THREAD_WEB_DRIVER.remove(thread.getId()); SelenideProxyServer proxy = THREAD_PROXY_SERVER.remove(thread.getId()); - - if (proxy != null) { - log.info("Close proxy server: " + thread.getId() + " -> " + proxy); - proxy.shutdown(); - } - + if (webdriver != null && !holdBrowserOpen) { log.info("Close webdriver: " + thread.getId() + " -> " + webdriver); + log.info("Close proxy server: " + thread.getId() + " -> " + proxy); long start = System.currentTimeMillis(); - Thread t = new Thread(new CloseBrowser(webdriver)); + Thread t = new Thread(new CloseBrowser(webdriver, proxy)); t.setDaemon(true); t.start(); @@ -162,13 +158,19 @@ else if (duration > 200) { log.fine("Closed webdriver in " + duration + " ms"); } } + else if (proxy != null && !holdBrowserOpen) { + log.info("Close proxy server: " + thread.getId() + " -> " + proxy); + proxy.shutdown(); + } } private static class CloseBrowser implements Runnable { private final WebDriver webdriver; + private final SelenideProxyServer proxy; - private CloseBrowser(WebDriver webdriver) { + private CloseBrowser(WebDriver webdriver, SelenideProxyServer proxy) { this.webdriver = webdriver; + this.proxy = proxy; } @Override @@ -187,6 +189,11 @@ public void run() { finally { killBrowser(webdriver); } + + if (proxy != null) { + log.info("Trying to shutdown " + proxy + " ..."); + proxy.shutdown(); + } } protected void killBrowser(WebDriver webdriver) {