From f2a03c868c472eb47b638685ed197bb642d25270 Mon Sep 17 00:00:00 2001 From: mhardin Date: Wed, 1 Oct 2014 17:12:56 -0500 Subject: [PATCH] [3] Adding IE support to resolve #3 --- .../java/com/rmn/qa/AutomationRunContext.java | 8 +++-- .../qa/servlet/AutomationTestRunServlet.java | 2 +- .../com/rmn/qa/servlet/StatusServlet.java | 5 +-- src/main/resources/aws.properties.default | 1 + .../com/rmn/qa/AutomationRunContextTest.java | 32 ++++++++++++++++++- 5 files changed, 42 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/rmn/qa/AutomationRunContext.java b/src/main/java/com/rmn/qa/AutomationRunContext.java index 49f6725..3ba4bcc 100644 --- a/src/main/java/com/rmn/qa/AutomationRunContext.java +++ b/src/main/java/com/rmn/qa/AutomationRunContext.java @@ -235,7 +235,11 @@ public void cleanUpRunRequests(ProxySet proxySet) { */ private boolean isRunOld(AutomationRunRequest runRequest) { // Get the amount of seconds passed - return System.currentTimeMillis() > runRequest.getCreatedDate().getTime() + (AutomationRunContext.CLEANUP_LIFE_LENGTH_IN_SECONDS * 1000); + if(AutomationUtils.lowerCaseMatch("internetexplorer",runRequest.getBrowser())) { + return System.currentTimeMillis() > runRequest.getCreatedDate().getTime() + (10 * 60 * 1000); // 10 minutes for IE to come online + } else { + return System.currentTimeMillis() > runRequest.getCreatedDate().getTime() + (AutomationRunContext.CLEANUP_LIFE_LENGTH_IN_SECONDS * 1000); + } } /** @@ -288,7 +292,7 @@ public int getTotalThreadsAvailable(ProxySet proxySet) { } } } - // Now process all registered runs to make sure there werent any requests that just haven't had any started nodes + // Now process all registered runs to make sure there weren't any requests that just haven't had any started nodes for(String uuid : runsToSessions.keySet()) { AutomationRunRequest registeredRun = getRunRequest(uuid); // If a the registered run exists AND is still new, we should count the original request amount as all tests may not be in flight yet diff --git a/src/main/java/com/rmn/qa/servlet/AutomationTestRunServlet.java b/src/main/java/com/rmn/qa/servlet/AutomationTestRunServlet.java index df088d5..8bdc3a5 100644 --- a/src/main/java/com/rmn/qa/servlet/AutomationTestRunServlet.java +++ b/src/main/java/com/rmn/qa/servlet/AutomationTestRunServlet.java @@ -302,7 +302,7 @@ private void startNodes(String uuid,int threadCountRequested, String browser, St * @return */ private boolean browserSupportedByAmis(String browser) { - return AutomationUtils.lowerCaseMatch("chrome",browser) || AutomationUtils.lowerCaseMatch("firefox",browser) || AutomationUtils.lowerCaseMatch("internetexplorer",browser); + return AutomationUtils.lowerCaseMatch(BrowserType.CHROME,browser) || AutomationUtils.lowerCaseMatch(BrowserType.FIREFOX,browser) || AutomationUtils.lowerCaseMatch("internetexplorer",browser); } @Override diff --git a/src/main/java/com/rmn/qa/servlet/StatusServlet.java b/src/main/java/com/rmn/qa/servlet/StatusServlet.java index 88a5f7e..098eedb 100644 --- a/src/main/java/com/rmn/qa/servlet/StatusServlet.java +++ b/src/main/java/com/rmn/qa/servlet/StatusServlet.java @@ -22,6 +22,7 @@ import org.openqa.grid.selenium.proxy.DefaultRemoteProxy; import org.openqa.grid.web.servlet.RegistryBasedServlet; import org.openqa.grid.web.utils.BrowserNameUtils; +import org.openqa.selenium.remote.BrowserType; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; import org.slf4j.Logger; @@ -105,8 +106,8 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t builder.append("

Grid Hub "); builder.append(coreVersion).append(coreRevision); builder.append("

"); - int chromeThreads = requestMatcher.getNumFreeThreadsForParameters(getRegistry().getAllProxies(),new AutomationRunRequest(StatusServlet.class.getSimpleName(),null,"chrome")); - int firefoxThreads = requestMatcher.getNumFreeThreadsForParameters(getRegistry().getAllProxies(),new AutomationRunRequest(StatusServlet.class.getSimpleName(),null,"firefox")); + int chromeThreads = requestMatcher.getNumFreeThreadsForParameters(getRegistry().getAllProxies(),new AutomationRunRequest(StatusServlet.class.getSimpleName(),null, BrowserType.CHROME)); + int firefoxThreads = requestMatcher.getNumFreeThreadsForParameters(getRegistry().getAllProxies(),new AutomationRunRequest(StatusServlet.class.getSimpleName(),null,BrowserType.FIREFOX)); int ieThreads = requestMatcher.getNumFreeThreadsForParameters(getRegistry().getAllProxies(),new AutomationRunRequest(StatusServlet.class.getSimpleName(),null,"internetexplorer")); builder.append("

Free Threads - Chrome: ").append(chromeThreads).append(" Firefox: ").append(firefoxThreads).append(" IE: ").append(ieThreads).append("

"); diff --git a/src/main/resources/aws.properties.default b/src/main/resources/aws.properties.default index fc06aba..9bf5bb8 100644 --- a/src/main/resources/aws.properties.default +++ b/src/main/resources/aws.properties.default @@ -13,6 +13,7 @@ node_instance_type_chrome=c3.large # Firefox and IE will only run in 1 browser per VM so we'll use micros for them node_instance_type_firefox=t2.micro node_instance_type_internetexplorer=t2.micro +east_windows_node_ami=ami-dcd869b4 # Security Group Info diff --git a/src/test/java/com/rmn/qa/AutomationRunContextTest.java b/src/test/java/com/rmn/qa/AutomationRunContextTest.java index 76e9a6c..8a31f2a 100644 --- a/src/test/java/com/rmn/qa/AutomationRunContextTest.java +++ b/src/test/java/com/rmn/qa/AutomationRunContextTest.java @@ -43,7 +43,7 @@ public void cleanUp() { @Test // Tests that an old run gets cleaned up (removed) public void testOldRun() { - AutomationRunRequest oldRequest = new AutomationRunRequest("uuid",10,"firefox","10","linux",AutomationUtils.modifyDate(new Date(),-1, Calendar.HOUR)); + AutomationRunRequest oldRequest = new AutomationRunRequest("uuid",10,"firefox","10","linux",AutomationUtils.modifyDate(new Date(),-5, Calendar.MINUTE)); AutomationRunContext context = AutomationContext.getContext(); context.addRun(oldRequest); @@ -68,6 +68,36 @@ public void testNewRun() { Assert.assertTrue("Run request should still exist as the run was new enough", context.hasRun(oldRequest.getUuid())); } + @Test + // Tests that a new run does not get cleaned up (removed) + public void testNewRunIE() { + AutomationRunRequest oldRequest = new AutomationRunRequest("uuid",10,"internetexplorer","10","linux",AutomationUtils.modifyDate(new Date(),-7, Calendar.MINUTE)); + AutomationRunContext context = AutomationContext.getContext(); + context.addRun(oldRequest); + + + Assert.assertTrue("Run should exist", context.hasRun(oldRequest.getUuid())); + ProxySet proxySet = new ProxySet(false); + proxySet.add(new MockRemoteProxy()); + context.cleanUpRunRequests(proxySet); + Assert.assertTrue("Run request should still exist as the run was new enough", context.hasRun(oldRequest.getUuid())); + } + + @Test + // Tests that a new run does not get cleaned up (removed) + public void testOldRunIE() { + AutomationRunRequest oldRequest = new AutomationRunRequest("uuid",10,"internetexplorer","10","linux",AutomationUtils.modifyDate(new Date(),-15, Calendar.MINUTE)); + AutomationRunContext context = AutomationContext.getContext(); + context.addRun(oldRequest); + + + Assert.assertTrue("Run should exist", context.hasRun(oldRequest.getUuid())); + ProxySet proxySet = new ProxySet(false); + proxySet.add(new MockRemoteProxy()); + context.cleanUpRunRequests(proxySet); + Assert.assertFalse("Run request should no longer exist as it should have been removed", context.hasRun(oldRequest.getUuid())); + } + @Test // Tests that a run with slots does not get removed public void testActiveSession() {