summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBMatajsz <90217645+BMatajsz@users.noreply.github.com>2024-12-03 00:15:41 -0500
committerBMatajsz <90217645+BMatajsz@users.noreply.github.com>2024-12-03 00:15:41 -0500
commit69a4c73336cfe88852251b131c14034208bb4658 (patch)
treedcd3a4c85e380f33bd5bb2cfdd2bd2a5bf30df85
parentc577b64ba33fca4fb5d879dc94a491b5003b0ae9 (diff)
downloadsoen423-69a4c73336cfe88852251b131c14034208bb4658.zip
Modified replicas
-rw-r--r--src/main/java/derms/replica1/Replica1.java24
-rw-r--r--src/main/java/derms/replica2/Replica2.java24
-rw-r--r--src/main/java/derms/replica3/Replica3.java27
3 files changed, 75 insertions, 0 deletions
diff --git a/src/main/java/derms/replica1/Replica1.java b/src/main/java/derms/replica1/Replica1.java
index 7e10994..654ec44 100644
--- a/src/main/java/derms/replica1/Replica1.java
+++ b/src/main/java/derms/replica1/Replica1.java
@@ -22,6 +22,7 @@ public class Replica1 implements Replica {
private final InetAddress localAddr;
private final ResponderClient responderClient;
private final ReplicaManager replicaManager;
+ private boolean byzFailure;
public Replica1(ReplicaManager replicaManager) {
this.replicaManager = replicaManager;
@@ -46,6 +47,20 @@ public class Replica1 implements Replica {
@Override
public void startProcess(int byzantine, int crash) {
+ // [TEST] Detect crash
+ if (crash == 1) {
+ alive = false;
+ } else {
+ alive = true;
+ }
+
+ // [TEST] Detect byzantine failure
+ if (byzantine == 1) {
+ byzFailure = true;
+ } else {
+ byzFailure = false;
+ }
+
pool.execute(DERMSServer::new);
alive = true;
log.info(getClass().getSimpleName() + " started.");
@@ -54,6 +69,13 @@ public class Replica1 implements Replica {
@Override
public void processRequest(Request request) {
+ // [TEST] Simulate byzantine failure (return incorrect value)
+ if (byzFailure == true) {
+ Response response = new Response(request, replicaManager.getReplicaId(), "BYZANTINE FAILURE", false);
+ replicaManager.sendResponseToFE(response);
+ return;
+ }
+
String status = responderClient.addResource(
request.getResourceID(),
request.getResourceType(),
@@ -70,6 +92,8 @@ public class Replica1 implements Replica {
ThreadPool.shutdown(pool, log);
alive = false;
log.info("Finished shutting down.");
+
+ // [TEST] Restart process without byzantine failure or crash
startProcess(0, 0);
}
diff --git a/src/main/java/derms/replica2/Replica2.java b/src/main/java/derms/replica2/Replica2.java
index 9383cf5..5f24e24 100644
--- a/src/main/java/derms/replica2/Replica2.java
+++ b/src/main/java/derms/replica2/Replica2.java
@@ -24,6 +24,7 @@ public class Replica2 implements Replica {
private final ReplicaManager replicaManager;
private final ExecutorService pool;
private boolean alive = false;
+ private boolean byzFailure;
public Replica2(City city, ReplicaManager replicaManager) throws IOException {
this.city = city;
@@ -58,6 +59,20 @@ public class Replica2 implements Replica {
@Override
public void startProcess(int byzantine, int crash) {
+ // [TEST] Detect crash
+ if (crash == 1) {
+ alive = false;
+ } else {
+ alive = true;
+ }
+
+ // [TEST] Detect byzantine failure
+ if (byzantine == 1) {
+ byzFailure = true;
+ } else {
+ byzFailure = false;
+ }
+
try {
pool.execute(new ResourceAvailability.Server(localAddr, resources));
} catch (IOException e) {
@@ -113,6 +128,13 @@ public class Replica2 implements Replica {
public void processRequest(Request request) {
log.info(request.toString());
+ // [TEST] Simulate byzantine failure (return incorrect value)
+ if (byzFailure == true) {
+ Response response = new Response(request, replicaManager.getReplicaId(), "BYZANTINE FAILURE", false);
+ replicaManager.sendResponseToFE(response);
+ return;
+ }
+
String status = "";
try {
switch (request.getFunction()) {
@@ -153,6 +175,8 @@ public class Replica2 implements Replica {
@Override
public void restart() {
shutdown();
+
+ // [TEST] Restart process without byzantine failure or crash
startProcess(0, 0);
}
diff --git a/src/main/java/derms/replica3/Replica3.java b/src/main/java/derms/replica3/Replica3.java
index ca01fdf..b7cf8ef 100644
--- a/src/main/java/derms/replica3/Replica3.java
+++ b/src/main/java/derms/replica3/Replica3.java
@@ -27,6 +27,7 @@ public class Replica3 implements Replica{
// private final Logger log;
private boolean alive;
+ private boolean byzFailure;
private final ReplicaManager replicaManager;
public Replica3(City city, ReplicaManager replicaManager) throws IOException {
@@ -42,6 +43,7 @@ public class Replica3 implements Replica{
// log.config("Local address is "+localAddr.toString());
this.alive = true;
+ this.byzFailure = false;
}
public Replica3(String city, ReplicaManager replicaManager) throws IOException {
@@ -53,6 +55,20 @@ public class Replica3 implements Replica{
@Override
public void startProcess(int byzantine, int crash) {
+ // [TEST] Detect crash
+ if (crash == 1) {
+ alive = false;
+ } else {
+ alive = true;
+ }
+
+ // [TEST] Detect byzantine failure
+ if (byzantine == 1) {
+ byzFailure = true;
+ } else {
+ byzFailure = false;
+ }
+
// TODO
// log.info(getClass().getSimpleName() + " started.");
System.out.println("process started");
@@ -61,6 +77,14 @@ public class Replica3 implements Replica{
@Override
public void processRequest(Request request) {
// log.info(request.toString());
+
+ // [TEST] Simulate byzantine failure (return incorrect value)
+ if (byzFailure == true) {
+ Response response = new Response(request, replicaManager.getReplicaId(), "BYZANTINE FAILURE", false);
+ replicaManager.sendResponseToFE(response);
+ return;
+ }
+
System.out.println("process request and good");
String status = "";
try {
@@ -104,6 +128,8 @@ public class Replica3 implements Replica{
public void restart() {
// TODO
shutdown();
+
+ // [TEST] Restart process without byzantine failure or crash
startProcess(0, 0);
}
@@ -112,6 +138,7 @@ public class Replica3 implements Replica{
private void shutdown() {
// TODO
+ alive = false;
}
public synchronized String addResource(String resourceID, String resourceName, int duration) {