diff --git a/test/src/test/java/org/apache/ratis/thirdparty/demo/GrpcSslTest.java b/test/src/test/java/org/apache/ratis/thirdparty/demo/GrpcSslTest.java
index dea7209..56dca10 100644
--- a/test/src/test/java/org/apache/ratis/thirdparty/demo/GrpcSslTest.java
+++ b/test/src/test/java/org/apache/ratis/thirdparty/demo/GrpcSslTest.java
@@ -40,20 +40,21 @@
 
   @Test
   public void testSslClientServer() throws InterruptedException, IOException {
+    GrpcSslServerConfig sslServerConf =
+        new GrpcSslServerConfig(
+            getResource("ssl/server.pem"),
+            getResource("ssl/server.crt"),
+            getResource("ssl/client.crt"),
+            true,
+            false);
+    GrpcSslServer server = new GrpcSslServer(port, sslServerConf);
+    server.start();
+
     Thread serverThread = new Thread(() -> {
-      GrpcSslServerConfig sslServerConf =
-          new GrpcSslServerConfig(
-              getResource("ssl/server.pem"),
-              getResource("ssl/server.crt"),
-              getResource("ssl/client.crt"),
-              true,
-              false);
-      GrpcSslServer server = new GrpcSslServer(port, sslServerConf);
       try {
-        server.start();
         server.blockUntilShutdown();
-      } catch (InterruptedException | IOException e) {
-        e.printStackTrace();
+      } catch (InterruptedException e) {
+        Thread.currentThread().interrupt();
       }
     });
     serverThread.start();
@@ -72,7 +73,7 @@
       String user = "testuser";
       String response = client.greet(user);
       LOG.info("Greet result: {}", response);
-      Assert.assertTrue(response.equals("Hello " + user));
+      Assert.assertEquals("Hello " + user, response);
     } finally {
       client.shutdown();
     }
diff --git a/test/src/test/java/org/apache/ratis/thirdparty/demo/GrpcTest.java b/test/src/test/java/org/apache/ratis/thirdparty/demo/GrpcTest.java
index ca609d0..98c7420 100644
--- a/test/src/test/java/org/apache/ratis/thirdparty/demo/GrpcTest.java
+++ b/test/src/test/java/org/apache/ratis/thirdparty/demo/GrpcTest.java
@@ -34,14 +34,15 @@
 
   private final static Logger LOG = LoggerFactory.getLogger(GrpcTest.class);
   @Test
-  public void testClientServer() throws InterruptedException {
+  public void testClientServer() throws IOException, InterruptedException {
+    GrpcServer server = new GrpcServer(50001);
+    server.start();
+
     Thread serverThread = new Thread(() -> {
-      GrpcServer server = new GrpcServer(50001);
       try {
-        server.start();
         server.blockUntilShutdown();
-      } catch (InterruptedException | IOException e) {
-        e.printStackTrace();
+      } catch (InterruptedException e) {
+        Thread.currentThread().interrupt();
       }
     });
     serverThread.start();
@@ -52,7 +53,7 @@
       String user = "testuser";
       String response = client.greet(user);
       LOG.info("Greet result: {}", response);
-      Assert.assertTrue(response.equals("Hello " + user));
+      Assert.assertEquals("Hello " + user, response);
     } finally {
       client.shutdown();
     }
