Skip to content

Commit

Permalink
Validate WFLY-13998 by removing delays between requests to the same c…
Browse files Browse the repository at this point in the history
…luster member.
  • Loading branch information
pferraro committed Oct 30, 2020
1 parent ca23479 commit 5ea9846
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 41 deletions.
Expand Up @@ -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);
}
}
}
Expand Up @@ -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()));
Expand All @@ -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()));
Expand All @@ -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()));
Expand Down Expand Up @@ -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()));
Expand Down Expand Up @@ -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()));
Expand Down Expand Up @@ -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()));
Expand All @@ -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());
}
Expand Down Expand Up @@ -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());
Expand Down
Expand Up @@ -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);
Expand All @@ -76,19 +81,15 @@ 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();
}

@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);
}

Expand Down
Expand Up @@ -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);
Expand Down

0 comments on commit 5ea9846

Please sign in to comment.