You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2019/06/05 12:33:11 UTC

[sling-whiteboard] 02/08: Migrate to Junit 5 for more fine-grained timeouts and exception checks.

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to branch feature/url-connection-agent-testing
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git

commit a5fea2d2aa812c891e3001ad95ccbfdf9f807a52
Author: Robert Munteanu <ro...@apache.org>
AuthorDate: Wed Jun 5 11:34:02 2019 +0200

    Migrate to Junit 5 for more fine-grained timeouts and exception checks.
---
 url-connection-agent/pom.xml                       | 10 ++++---
 .../org/apache/sling/uca/impl/IntegrationTest.java | 31 ++++++++++++++--------
 .../java/org/apache/sling/uca/impl/ServerRule.java | 29 +++++++++++---------
 .../sling/uca/impl/UrlTimeoutTransformerTest.java  | 16 ++++++-----
 4 files changed, 52 insertions(+), 34 deletions(-)

diff --git a/url-connection-agent/pom.xml b/url-connection-agent/pom.xml
index e44e7ba..bc5a25f 100644
--- a/url-connection-agent/pom.xml
+++ b/url-connection-agent/pom.xml
@@ -67,10 +67,6 @@
             <version>3.24.0-GA</version>
         </dependency>
         <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-        </dependency>
-        <dependency>
             <groupId>org.eclipse.jetty</groupId>
             <artifactId>jetty-server</artifactId>
             <version>9.4.18.v20190429</version>
@@ -81,5 +77,11 @@
             <artifactId>slf4j-simple</artifactId>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter</artifactId>
+            <version>5.4.2</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 </project>
\ No newline at end of file
diff --git a/url-connection-agent/src/test/java/org/apache/sling/uca/impl/IntegrationTest.java b/url-connection-agent/src/test/java/org/apache/sling/uca/impl/IntegrationTest.java
index b3d6816..d9a1d7c 100644
--- a/url-connection-agent/src/test/java/org/apache/sling/uca/impl/IntegrationTest.java
+++ b/url-connection-agent/src/test/java/org/apache/sling/uca/impl/IntegrationTest.java
@@ -16,42 +16,51 @@
  */
 package org.apache.sling.uca.impl;
 
-import static org.junit.Assert.fail;
+import static java.time.Duration.ofSeconds;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTimeout;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.MalformedURLException;
+import java.net.SocketTimeoutException;
 import java.net.URL;
 import java.net.URLConnection;
 import java.util.concurrent.TimeUnit;
 
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+@ExtendWith(ServerRule.class)
 public class IntegrationTest {
     
     private static final Logger LOG = LoggerFactory.getLogger(IntegrationTest.class);
-    
-    @Rule
-    public ServerRule server = new ServerRule();
 
-    @Test(expected = IOException.class, timeout = 5000)
+    @Test
     public void connectTimeout() throws IOException {
 
-        runTest(false);
+        SocketTimeoutException exception = assertThrows(SocketTimeoutException.class, 
+            () -> assertTimeout(ofSeconds(5),  () -> runTest(false))
+        );
+        assertEquals("Connect timed out", exception.getMessage());
     }
 
-    @Test(expected = IOException.class, timeout = 15000)
+    @Test
     public void readTimeout() throws IOException {
         
-        runTest(true);
+        SocketTimeoutException exception = assertThrows(SocketTimeoutException.class, 
+            () -> assertTimeout(ofSeconds(10),  () -> runTest(false))
+        );
+        assertEquals("Read timed out", exception.getMessage());
     }
     
 
     private void runTest(boolean shouldConnect) throws MalformedURLException, IOException {
-        URL url = new URL("http://localhost:" + server.getLocalPort());
+        
+        URL url = new URL("http://localhost:" + ServerRule.getLocalPort());
         LOG.info("connecting");
         URLConnection connection = url.openConnection();
         // TODO - remove when running through the harness
diff --git a/url-connection-agent/src/test/java/org/apache/sling/uca/impl/ServerRule.java b/url-connection-agent/src/test/java/org/apache/sling/uca/impl/ServerRule.java
index 6bcad85..c047afd 100644
--- a/url-connection-agent/src/test/java/org/apache/sling/uca/impl/ServerRule.java
+++ b/url-connection-agent/src/test/java/org/apache/sling/uca/impl/ServerRule.java
@@ -32,21 +32,28 @@ import org.eclipse.jetty.server.Request;
 import org.eclipse.jetty.server.Server;
 import org.eclipse.jetty.server.ServerConnector;
 import org.eclipse.jetty.server.handler.AbstractHandler;
-import org.junit.rules.ExternalResource;
+import org.junit.jupiter.api.extension.AfterAllCallback;
+import org.junit.jupiter.api.extension.BeforeAllCallback;
+import org.junit.jupiter.api.extension.ExtensionContext;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-class ServerRule extends ExternalResource {
+class ServerRule implements BeforeAllCallback, AfterAllCallback {
     
     private static final Logger LOG = LoggerFactory.getLogger(ServerRule.class);
     
-    private Server server;
+    private static final int LOCAL_PORT = 12312;
     
-    private int localPort = 12312;
 
+    public static int getLocalPort() {
+        return LOCAL_PORT;
+    }
+    
+    private Server server;
+    
     @Override
-    protected void before() throws Throwable {
-        server = new Server(localPort);
+    public void beforeAll(ExtensionContext context) throws Exception {
+        server = new Server(LOCAL_PORT);
         ServerConnector connector = new ServerConnector(server) {
             @Override
             public void accept(int acceptorID) throws IOException {
@@ -61,7 +68,7 @@ class ServerRule extends ExternalResource {
                 LOG.info("Accepted");
             }
         };
-        connector.setPort(localPort);
+        connector.setPort(LOCAL_PORT);
         connector.setConnectionFactories(Collections.singleton(new HttpConnectionFactory() {
             @Override
             public Connection newConnection(Connector connector, EndPoint endPoint) {
@@ -104,9 +111,9 @@ class ServerRule extends ExternalResource {
         
         server.start();
     }
-    
+
     @Override
-    protected void after() {
+    public void afterAll(ExtensionContext context) throws Exception {
         if ( server != null )
             try {
                 server.stop();
@@ -114,8 +121,4 @@ class ServerRule extends ExternalResource {
                 e.printStackTrace();
             }
     }
-
-    public int getLocalPort() {
-        return localPort;
-    }
 }
\ No newline at end of file
diff --git a/url-connection-agent/src/test/java/org/apache/sling/uca/impl/UrlTimeoutTransformerTest.java b/url-connection-agent/src/test/java/org/apache/sling/uca/impl/UrlTimeoutTransformerTest.java
index 774b420..3847ef2 100644
--- a/url-connection-agent/src/test/java/org/apache/sling/uca/impl/UrlTimeoutTransformerTest.java
+++ b/url-connection-agent/src/test/java/org/apache/sling/uca/impl/UrlTimeoutTransformerTest.java
@@ -16,10 +16,12 @@
  */
 package org.apache.sling.uca.impl;
 
-import static org.junit.Assert.assertNotNull;
 
-import org.junit.Before;
-import org.junit.Test;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import javassist.NotFoundException;
 
@@ -27,7 +29,7 @@ public class UrlTimeoutTransformerTest {
     
     private URLTimeoutTransformer transformer;
 
-    @Before
+    @BeforeEach
     public void initFields() {
         transformer = new URLTimeoutTransformer(1, 1);
     }
@@ -37,11 +39,13 @@ public class UrlTimeoutTransformerTest {
         assertNotNull(transformer.findConnectMethod("sun/net/www/protocol/http/HttpURLConnection"));
     }
 
-    @Test(expected = NotFoundException.class)
+    @Test
     public void findInheritedConnectMethod() throws NotFoundException {
         // do NOT look for inherited methods, as we can only rewrite the precise classes the
         // retransform was triggered for
-        transformer.findConnectMethod("sun/net/www/protocol/https/DelegateHttpsURLConnection");
+        assertThrows( NotFoundException.class,
+            () -> transformer.findConnectMethod("sun/net/www/protocol/https/DelegateHttpsURLConnection")
+        );
     }
     
 }