diff options
| author | BMatajsz <90217645+BMatajsz@users.noreply.github.com> | 2024-12-03 09:34:00 -0500 |
|---|---|---|
| committer | BMatajsz <90217645+BMatajsz@users.noreply.github.com> | 2024-12-03 09:34:00 -0500 |
| commit | 44df5df0b65df279aaf471fa8258da218ed7c522 (patch) | |
| tree | e0b2bc04e5f68d08043fb36b43a80fba1e9e075f /src | |
| parent | d6067d28ce2a22c64cb595af6bca48c81b1664da (diff) | |
| download | soen423-44df5df0b65df279aaf471fa8258da218ed7c522.zip | |
Added expected test results
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/derms/ReplicaManager.java | 7 | ||||
| -rw-r--r-- | src/main/java/derms/client/ResponderClient.java | 7 | ||||
| -rw-r--r-- | src/main/java/derms/frontend/DERMSServerImpl.java | 5 | ||||
| -rw-r--r-- | src/main/java/derms/frontend/FE.java | 4 | ||||
| -rw-r--r-- | src/main/java/derms/replica1/Replica1.java | 2 | ||||
| -rw-r--r-- | src/main/java/derms/replica2/Replica2.java | 2 | ||||
| -rw-r--r-- | src/main/java/derms/replica3/Replica3.java | 2 | ||||
| -rw-r--r-- | src/main/java/derms/util/LogComparator.java | 16 | ||||
| -rw-r--r-- | src/test/java/derms/test/SystemTest.java | 75 |
9 files changed, 94 insertions, 26 deletions
diff --git a/src/main/java/derms/ReplicaManager.java b/src/main/java/derms/ReplicaManager.java index 1e89969..64ceb04 100644 --- a/src/main/java/derms/ReplicaManager.java +++ b/src/main/java/derms/ReplicaManager.java @@ -112,7 +112,7 @@ public class ReplicaManager { informFrontEndRmIsDown(replica.getId()); replica.restart(); - TestLogger.log("REPLICA " + replicaId + ": {RESTARTED}"); + //TestLogger.log("REPLICA " + replicaId + ": {RESTARTED}"); } try { Thread.sleep(5000); // Example 5 seconds. @@ -139,7 +139,7 @@ public class ReplicaManager { replica.restart(); informFrontEndRmHasBug(replica.getId()); - TestLogger.log("REPLICA " + replicaId + ": {RESTARTED}"); + //TestLogger.log("REPLICA " + replicaId + ": {RESTARTED}"); } private void informFrontEndRmIsDown(int replicaId) { @@ -148,6 +148,7 @@ public class ReplicaManager { out.writeObject("RM_DOWN:" + replicaId); } catch (IOException e) { log.severe("Failed to inform FE that RM is down: " + e.getMessage()); + TestLogger.log("[FAILED TO INFORM FE (RM IS DOWN)]"); } } @@ -157,6 +158,7 @@ public class ReplicaManager { out.writeObject("RM_BUG:" + replicaId); } catch (IOException e) { log.severe("Failed to inform FE that RM has a bug: " + e.getMessage()); + TestLogger.log("[FAILED TO INFORM FE (RM HAS A BUG)]"); } } @@ -176,6 +178,7 @@ public class ReplicaManager { System.out.println("ReplicaManager " + replicaId + " is running."); } catch (IOException e) { System.err.println("Failed to start ReplicaManager: " + e.getMessage()); + TestLogger.log("[FAILED TO START RM]"); e.printStackTrace(); } } diff --git a/src/main/java/derms/client/ResponderClient.java b/src/main/java/derms/client/ResponderClient.java index ec599b4..43be3f3 100644 --- a/src/main/java/derms/client/ResponderClient.java +++ b/src/main/java/derms/client/ResponderClient.java @@ -1,8 +1,10 @@ package derms.client; import derms.frontend.DERMSInterface; +import derms.util.TestLogger; import java.net.MalformedURLException; +import java.util.Objects; public class ResponderClient extends CLI { public static final String usage = "Usage: java derms.client.ResponderClient <FE host>"; @@ -60,6 +62,11 @@ public class ResponderClient extends CLI { } String response = server.addResource(resourceID, resourceName, duration); System.out.println(response); + if (response.contains("Fail")) { + TestLogger.log("[FAILED: " + response + "]"); + } else { + TestLogger.log("[SUCCESS: " + response + "]"); + } } catch (NumberFormatException e) { System.out.println("invalid duration: " + durationStr); } diff --git a/src/main/java/derms/frontend/DERMSServerImpl.java b/src/main/java/derms/frontend/DERMSServerImpl.java index 1877cef..2a5dfa9 100644 --- a/src/main/java/derms/frontend/DERMSServerImpl.java +++ b/src/main/java/derms/frontend/DERMSServerImpl.java @@ -5,10 +5,6 @@ package derms.frontend; //import model.Resource; import java.util.*; import java.util.stream.Collectors; -import java.util.Optional; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; @@ -23,6 +19,7 @@ import javax.jws.soap.SOAPBinding.Style; //import interfaces.DERMSInterface; import derms.Request; import derms.Response; +import derms.util.TestLogger; @WebService(endpointInterface = "derms.frontend.DERMSInterface") public class DERMSServerImpl implements DERMSInterface { diff --git a/src/main/java/derms/frontend/FE.java b/src/main/java/derms/frontend/FE.java index ee0a323..b3e100f 100644 --- a/src/main/java/derms/frontend/FE.java +++ b/src/main/java/derms/frontend/FE.java @@ -52,7 +52,7 @@ public class FE { System.out.println("Rm:" + RmNumber + "has bug"); // sendMulticastFaultMessageToRms(errorMessage); sendUnicastToSequencer(errorMessage); - TestLogger.log("FE: {BYZANTINE: REPLICA" + RmNumber + "}"); + //TestLogger.log("FE: {BYZANTINE: INFORM REPLICA" + RmNumber + "}"); } @Override @@ -62,7 +62,7 @@ public class FE { System.out.println("Rm:" + RmNumber + "is down"); // sendMulticastFaultMessageToRms(errorMessage); sendUnicastToSequencer(errorMessage); - TestLogger.log("FE: {CRASH: REPLICA" + RmNumber + "}"); + //TestLogger.log("FE: {CRASH: INFORM REPLICA" + RmNumber + "}"); } @Override diff --git a/src/main/java/derms/replica1/Replica1.java b/src/main/java/derms/replica1/Replica1.java index 64565e6..dd5b545 100644 --- a/src/main/java/derms/replica1/Replica1.java +++ b/src/main/java/derms/replica1/Replica1.java @@ -5,6 +5,7 @@ import derms.ReplicaManager; import derms.Request; import derms.Response; import derms.replica2.DermsLogger; +import derms.util.TestLogger; import derms.util.ThreadPool; import java.io.IOException; @@ -94,6 +95,7 @@ public class Replica1 implements Replica { log.info("Finished shutting down."); // [TEST] Restart process without byzantine failure or crash + TestLogger.log("REPLICA 1: {RESTARTED}"); startProcess(0, 0); } diff --git a/src/main/java/derms/replica2/Replica2.java b/src/main/java/derms/replica2/Replica2.java index 73a66b2..cf21d74 100644 --- a/src/main/java/derms/replica2/Replica2.java +++ b/src/main/java/derms/replica2/Replica2.java @@ -1,6 +1,7 @@ package derms.replica2; import derms.*; +import derms.util.TestLogger; import derms.util.ThreadPool; import sun.reflect.generics.reflectiveObjects.NotImplementedException; @@ -177,6 +178,7 @@ public class Replica2 implements Replica { shutdown(); // [TEST] Restart process without byzantine failure or crash + TestLogger.log("REPLICA 2: {RESTARTED}"); startProcess(0, 0); } diff --git a/src/main/java/derms/replica3/Replica3.java b/src/main/java/derms/replica3/Replica3.java index b7cf8ef..9e262e3 100644 --- a/src/main/java/derms/replica3/Replica3.java +++ b/src/main/java/derms/replica3/Replica3.java @@ -13,6 +13,7 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import derms.replica3.Logger; +import derms.util.TestLogger; public class Replica3 implements Replica{ static final InetSocketAddress announceGroup = new InetSocketAddress("225.5.5.5", 5555); @@ -130,6 +131,7 @@ public class Replica3 implements Replica{ shutdown(); // [TEST] Restart process without byzantine failure or crash + TestLogger.log("REPLICA 3: {RESTARTED}"); startProcess(0, 0); } diff --git a/src/main/java/derms/util/LogComparator.java b/src/main/java/derms/util/LogComparator.java index 6b629a6..da3736c 100644 --- a/src/main/java/derms/util/LogComparator.java +++ b/src/main/java/derms/util/LogComparator.java @@ -7,7 +7,21 @@ public class LogComparator { public static boolean compareLineCounts(String actualFilePath, String expectedFilePath) throws IOException { long actualLineCount = Files.lines(Paths.get(actualFilePath)).count(); long expectedLineCount = Files.lines(Paths.get(expectedFilePath)).count(); - + System.out.println("XXXXXXXXX ACTUAL LINE: " + actualLineCount); + System.out.println("XXXXXXXXX EXPECTED: " + expectedLineCount); return actualLineCount == expectedLineCount; } +public static boolean containsSuccess(String filePath) throws IOException { + return Files.lines(Paths.get(filePath)).anyMatch(line -> line.contains("SUCCESS")); +} + +public static boolean compareFiles(String actualFilePath, String expectedFilePath) throws IOException { + boolean lineCountsMatch = compareLineCounts(actualFilePath, expectedFilePath); + boolean actualContainsSuccess = containsSuccess(actualFilePath); + System.out.println("XXXXXXXXX ACTUAL SUCCESS: " + actualContainsSuccess); + boolean expectedContainsSuccess = containsSuccess(expectedFilePath); + System.out.println("XXXXXXXXX EXPECTED SUCCESS: " + expectedContainsSuccess); + + return lineCountsMatch && actualContainsSuccess && expectedContainsSuccess; +} }
\ No newline at end of file diff --git a/src/test/java/derms/test/SystemTest.java b/src/test/java/derms/test/SystemTest.java index 5354b54..6ee1f35 100644 --- a/src/test/java/derms/test/SystemTest.java +++ b/src/test/java/derms/test/SystemTest.java @@ -8,6 +8,7 @@ import derms.replica1.DERMSServerPublisher; import org.junit.jupiter.api.*; import java.io.*; +import java.net.MalformedURLException; import java.nio.file.*; import java.util.*; import derms.util.*; @@ -18,7 +19,10 @@ import static org.junit.jupiter.api.Assertions.*; class SystemTest { private static final String TEST_LOG_PATH = "SystemTest.log"; - private static final String EXPECTED_LOG_PATH = "TestExpected.log"; + private static final String EXPECTED_LOG_PATH_NORM = "TestExpected.log"; + private static final String EXPECTED_LOG_PATH_BYZ = "TestExpectedByz.log"; + private static final String EXPECTED_LOG_PATH_CRASH = "TestExpectedCrash.log"; + private static final String EXPECTED_LOG_PATH_COMBINED = "TestExpectedCombined.log"; // [TODO] // input IP and NET config @@ -60,7 +64,7 @@ class SystemTest { DERMSServerPublisher.stop(); } - @Test + /* @Test void testNormal() throws IOException { // Replica 1 String[] argsRM = {"1", "MTL", IP, "0", "0"}; @@ -75,10 +79,10 @@ class SystemTest { addCommand.add("MTL1001", "ambulance", "10"); // Compare the number of lines in the log files, to determine if they match or not - assertTrue(LogComparator.compareLineCounts(TEST_LOG_PATH, EXPECTED_LOG_PATH)); - } + assertTrue(LogComparator.compareFiles(TEST_LOG_PATH, EXPECTED_LOG_PATH_NORM)); + } */ - @Test + /* @Test void testByzantine() throws IOException { // Replica 1 String[] argsRM = {"1", "MTL", IP, "1", "0"}; @@ -93,10 +97,10 @@ class SystemTest { addCommand.add("MTL1001", "ambulance", "10"); // Compare the number of lines in the log files, to determine if they match or not - assertTrue(LogComparator.compareLineCounts(TEST_LOG_PATH, EXPECTED_LOG_PATH)); - } + assertTrue(LogComparator.compareFiles(TEST_LOG_PATH, EXPECTED_LOG_PATH_BYZ)); + } */ - @Test + /* @Test void testCrash() throws IOException { // Replica 1 String[] argsRM = {"1", "MTL", IP, "0", "1"}; @@ -111,8 +115,8 @@ class SystemTest { addCommand.add("MTL1001", "ambulance", "10"); // Compare the number of lines in the log files, to determine if they match or not - assertTrue(LogComparator.compareLineCounts(TEST_LOG_PATH, EXPECTED_LOG_PATH)); - } + assertTrue(LogComparator.compareFiles(TEST_LOG_PATH, EXPECTED_LOG_PATH_CRASH)); + } */ @Test void testCombined() throws IOException { @@ -130,15 +134,52 @@ class SystemTest { ReplicaManager.main(argsRM1); ReplicaManager.main(argsRM3); - ResponderClient responderClient = new ResponderClient(IP); - ResponderClient.Add addCommand = responderClient.new Add(); - addCommand.add("MTL1001", "ambulance", "10"); + Thread thread1 = new Thread(() -> { + ResponderClient responderClient = null; + try { + responderClient = new ResponderClient(IP); + } catch (MalformedURLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } finally { + if (responderClient != null) { + ResponderClient.Add addCommand = responderClient.new Add(); + addCommand.add("MTL1001", "ambulance", "10"); + } + } + }); + + Thread thread2 = new Thread(() -> { + ResponderClient responderClient2 = null; + try { + responderClient2 = new ResponderClient(IP); + } catch (MalformedURLException e) { + e.printStackTrace(); + } finally { + if (responderClient2 != null) { + ResponderClient.Add addCommand2 = responderClient2.new Add(); + addCommand2.add("MTL1002", "ambulance", "11"); + } + } + }); - ResponderClient responderClient2 = new ResponderClient(IP); - ResponderClient.Add addCommand2 = responderClient2.new Add(); - addCommand2.add("MTL1002", "ambulance", "11"); + thread1.start(); + thread2.start(); + + try { + thread1.join(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + try { + thread2.join(); + } catch (InterruptedException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } // Compare the number of lines in the log files, to determine if they match or not - assertTrue(LogComparator.compareLineCounts(TEST_LOG_PATH, EXPECTED_LOG_PATH)); + assertTrue(LogComparator.compareFiles(TEST_LOG_PATH, EXPECTED_LOG_PATH_COMBINED)); } }
\ No newline at end of file |