From 30d8953abd76e661c5143455eea7535b880e6788 Mon Sep 17 00:00:00 2001 From: Paul Ferraro Date: Wed, 28 Oct 2020 09:09:18 -0400 Subject: [PATCH] Validate WFLY-13998 by removing delays between requests to the same cluster member. --- .../AbstractSessionActivationTestCase.java | 36 +++++++++---------- .../web/AbstractWebFailoverTestCase.java | 18 ---------- .../web/event/SessionActivationServlet.java | 11 +++--- .../clustering/single/web/SimpleServlet.java | 6 ++++ 4 files changed, 30 insertions(+), 41 deletions(-) diff --git a/testsuite/integration/clustering/src/test/java/org/jboss/as/test/clustering/cluster/web/AbstractSessionActivationTestCase.java b/testsuite/integration/clustering/src/test/java/org/jboss/as/test/clustering/cluster/web/AbstractSessionActivationTestCase.java index 4a899e62c86d..fe19d7a779b4 100644 --- a/testsuite/integration/clustering/src/test/java/org/jboss/as/test/clustering/cluster/web/AbstractSessionActivationTestCase.java +++ b/testsuite/integration/clustering/src/test/java/org/jboss/as/test/clustering/cluster/web/AbstractSessionActivationTestCase.java @@ -72,41 +72,41 @@ public void test( try (CloseableHttpClient client = TestHttpClientUtils.promiscuousCookieHttpClient()) { // Verify all operations on primary owner - this.execute(client, new HttpPut(uri1)); + this.execute(client, new HttpPut(uri1), false); - this.execute(client, new HttpGet(uri1)); + this.execute(client, new HttpGet(uri1), false); - this.execute(client, new HttpDelete(uri1)); + this.execute(client, new HttpDelete(uri1), false); // Verify all operations on both backup owner and non-owner - this.execute(client, new HttpPut(uri2)); + this.execute(client, new HttpPut(uri2), true); - this.execute(client, new HttpGet(uri2)); + this.execute(client, new HttpGet(uri2), false); - this.execute(client, new HttpDelete(uri2)); + this.execute(client, new HttpDelete(uri2), false); - this.execute(client, new HttpPut(uri3)); + this.execute(client, new HttpPut(uri3), true); - this.execute(client, new HttpGet(uri3)); + this.execute(client, new HttpGet(uri3), false); - this.execute(client, new HttpDelete(uri3)); + this.execute(client, new HttpDelete(uri3), false); } } - private void execute(HttpClient client, HttpUriRequest request) throws IOException { - HttpResponse response = client.execute(request); - try { - Assert.assertEquals(HttpServletResponse.SC_OK, response.getStatusLine().getStatusCode()); - } finally { - HttpClientUtils.closeQuietly(response); - } - - if (!this.transactional) { + private void execute(HttpClient client, HttpUriRequest request, boolean failover) throws IOException { + if (failover && !this.transactional) { try { Thread.sleep(GRACE_TIME_TO_REPLICATE); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } + + HttpResponse response = client.execute(request); + try { + Assert.assertEquals(HttpServletResponse.SC_OK, response.getStatusLine().getStatusCode()); + } finally { + HttpClientUtils.closeQuietly(response); + } } } diff --git a/testsuite/integration/clustering/src/test/java/org/jboss/as/test/clustering/cluster/web/AbstractWebFailoverTestCase.java b/testsuite/integration/clustering/src/test/java/org/jboss/as/test/clustering/cluster/web/AbstractWebFailoverTestCase.java index 1a8090d9b763..ee7be9e29cc0 100644 --- a/testsuite/integration/clustering/src/test/java/org/jboss/as/test/clustering/cluster/web/AbstractWebFailoverTestCase.java +++ b/testsuite/integration/clustering/src/test/java/org/jboss/as/test/clustering/cluster/web/AbstractWebFailoverTestCase.java @@ -170,8 +170,6 @@ private void testFailover(Lifecycle lifecycle, URL baseURL1, URL baseURL2, URL b Assert.assertEquals(entry.getKey(), response.getFirstHeader(SimpleServlet.SESSION_ID_HEADER).getValue()); } - this.nonTxWait.run(); - try (CloseableHttpResponse response = client.execute(new HttpGet(uri2))) { Assert.assertEquals(HttpServletResponse.SC_OK, response.getStatusLine().getStatusCode()); Assert.assertEquals(value++, Integer.parseInt(response.getFirstHeader(SimpleServlet.VALUE_HEADER).getValue())); @@ -198,8 +196,6 @@ private void testFailover(Lifecycle lifecycle, URL baseURL1, URL baseURL2, URL b } } - this.nonTxWait.run(); - try (CloseableHttpResponse response = client.execute(new HttpGet(uri3))) { Assert.assertEquals(HttpServletResponse.SC_OK, response.getStatusLine().getStatusCode()); Assert.assertEquals(value++, Integer.parseInt(response.getFirstHeader(SimpleServlet.VALUE_HEADER).getValue())); @@ -225,8 +221,6 @@ private void testFailover(Lifecycle lifecycle, URL baseURL1, URL baseURL2, URL b } } - this.nonTxWait.run(); - try (CloseableHttpResponse response = client.execute(new HttpGet(uri2))) { Assert.assertEquals(HttpServletResponse.SC_OK, response.getStatusLine().getStatusCode()); Assert.assertEquals(value++, Integer.parseInt(response.getFirstHeader(SimpleServlet.VALUE_HEADER).getValue())); @@ -263,8 +257,6 @@ private void testFailover(Lifecycle lifecycle, URL baseURL1, URL baseURL2, URL b } } - this.nonTxWait.run(); - try (CloseableHttpResponse response = client.execute(new HttpGet(uri1))) { Assert.assertEquals(HttpServletResponse.SC_OK, response.getStatusLine().getStatusCode()); Assert.assertEquals(value++, Integer.parseInt(response.getFirstHeader(SimpleServlet.VALUE_HEADER).getValue())); @@ -294,8 +286,6 @@ private void testFailover(Lifecycle lifecycle, URL baseURL1, URL baseURL2, URL b } } - this.nonTxWait.run(); - try (CloseableHttpResponse response = client.execute(new HttpGet(uri3))) { Assert.assertEquals(HttpServletResponse.SC_OK, response.getStatusLine().getStatusCode()); Assert.assertEquals(value++, Integer.parseInt(response.getFirstHeader(SimpleServlet.VALUE_HEADER).getValue())); @@ -326,8 +316,6 @@ private void testFailover(Lifecycle lifecycle, URL baseURL1, URL baseURL2, URL b } } - this.nonTxWait.run(); - try (CloseableHttpResponse response = client.execute(new HttpGet(uri1))) { Assert.assertEquals(HttpServletResponse.SC_OK, response.getStatusLine().getStatusCode()); Assert.assertEquals(value, Integer.parseInt(response.getFirstHeader(SimpleServlet.VALUE_HEADER).getValue())); @@ -339,8 +327,6 @@ private void testFailover(Lifecycle lifecycle, URL baseURL1, URL baseURL2, URL b } } - this.nonTxWait.run(); - try (CloseableHttpResponse response = client.execute(new HttpDelete(uri1))) { Assert.assertEquals(HttpServletResponse.SC_OK, response.getStatusLine().getStatusCode()); } @@ -376,15 +362,11 @@ public void testNonPrimaryOwner( Assert.assertEquals(request.getMethod(), value++, Integer.parseInt(response.getFirstHeader(SimpleServlet.VALUE_HEADER).getValue())); } - this.nonTxWait.run(); - try (CloseableHttpResponse response = client.execute(request)) { Assert.assertEquals(request.getMethod(), HttpServletResponse.SC_OK, response.getStatusLine().getStatusCode()); Assert.assertEquals(request.getMethod(), value++, Integer.parseInt(response.getFirstHeader(SimpleServlet.VALUE_HEADER).getValue())); } - this.nonTxWait.run(); - // Remove attribute so we can try again on another non-owner try (CloseableHttpResponse response = client.execute(new HttpPut(uri))) { Assert.assertEquals(request.getMethod(), HttpServletResponse.SC_OK, response.getStatusLine().getStatusCode()); diff --git a/testsuite/integration/clustering/src/test/java/org/jboss/as/test/clustering/cluster/web/event/SessionActivationServlet.java b/testsuite/integration/clustering/src/test/java/org/jboss/as/test/clustering/cluster/web/event/SessionActivationServlet.java index cdbabe577dc0..68400ff51287 100644 --- a/testsuite/integration/clustering/src/test/java/org/jboss/as/test/clustering/cluster/web/event/SessionActivationServlet.java +++ b/testsuite/integration/clustering/src/test/java/org/jboss/as/test/clustering/cluster/web/event/SessionActivationServlet.java @@ -62,9 +62,14 @@ public static URI createURI(URI baseURI) { return baseURI.resolve(SERVLET_NAME); } + @Override + protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + request.getServletContext().log(String.format("[%s] %s", request.getMethod(), request.getRequestURI())); + super.service(request, response); + } + @Override protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - request.getServletContext().log(request.getRequestURI() + ":PUT"); HttpSession session = request.getSession(); SessionActivationListener listener = new ImmutableSessionActivationListener(true); session.setAttribute(IMMUTABLE_ATTRIBUTE_NAME, listener); @@ -76,7 +81,6 @@ protected void doPut(HttpServletRequest request, HttpServletResponse response) t @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - request.getServletContext().log(request.getRequestURI() + ":GET"); HttpSession session = request.getSession(); ((SessionActivationListener) session.getAttribute(IMMUTABLE_ATTRIBUTE_NAME)).assertActive(); ((SessionActivationListener) session.getAttribute(MUTABLE_ATTRIBUTE_NAME)).assertActive(); @@ -84,11 +88,8 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) t @Override protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - request.getServletContext().log(request.getRequestURI() + ":DELETE"); HttpSession session = request.getSession(); - request.getServletContext().log(request.getRequestURI() + ":removeAttribute(" + IMMUTABLE_ATTRIBUTE_NAME + ")"); session.removeAttribute(IMMUTABLE_ATTRIBUTE_NAME); - request.getServletContext().log(request.getRequestURI() + ":removeAttribute(" + MUTABLE_ATTRIBUTE_NAME + ")"); session.removeAttribute(MUTABLE_ATTRIBUTE_NAME); } diff --git a/testsuite/integration/clustering/src/test/java/org/jboss/as/test/clustering/single/web/SimpleServlet.java b/testsuite/integration/clustering/src/test/java/org/jboss/as/test/clustering/single/web/SimpleServlet.java index 39c4d446653f..52c175fcbdf1 100644 --- a/testsuite/integration/clustering/src/test/java/org/jboss/as/test/clustering/single/web/SimpleServlet.java +++ b/testsuite/integration/clustering/src/test/java/org/jboss/as/test/clustering/single/web/SimpleServlet.java @@ -66,6 +66,12 @@ public static URI createURI(URI baseURI, int requestDuration) { return baseURI.resolve(SERVLET_NAME + '?' + REQUEST_DURATION_PARAM + '=' + requestDuration); } + @Override + protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + this.getServletContext().log(String.format("[%s] %s?%s", request.getMethod(), request.getRequestURI(), request.getQueryString())); + super.service(request, response); + } + @Override protected void doHead(HttpServletRequest request, HttpServletResponse response) throws IOException { HttpSession session = request.getSession(true);