Skip to content

Commit c3ba910

Browse files
committed
Small optimisation.
1 parent 15b91b7 commit c3ba910

File tree

6 files changed

+80
-35
lines changed

6 files changed

+80
-35
lines changed

simulator/src/main/java/byzzbench/simulator/protocols/hbft/message/CommitMessage.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,6 @@ public String getType() {
2626

2727
@Override
2828
public long getRound() {
29-
return this.sequenceNumber * 2;
29+
return this.sequenceNumber * 3 - 1;
3030
}
3131
}

simulator/src/main/java/byzzbench/simulator/protocols/hbft/message/PrepareMessage.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ public String getType() {
2424

2525
@Override
2626
public long getRound() {
27-
return this.sequenceNumber * 2 - 1;
27+
return this.sequenceNumber * 3 - 2;
2828
}
2929
}

simulator/src/main/java/byzzbench/simulator/protocols/hbft/message/ReplyMessage.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package byzzbench.simulator.protocols.hbft.message;
22

33
import byzzbench.simulator.transport.MessagePayload;
4+
import byzzbench.simulator.transport.messages.MessageWithRound;
45
import byzzbench.simulator.protocols.hbft.SpeculativeHistory;
56
import lombok.Data;
67
import lombok.EqualsAndHashCode;
@@ -11,7 +12,7 @@
1112
@Data
1213
@EqualsAndHashCode(callSuper = true)
1314
@With
14-
public class ReplyMessage extends MessagePayload {
15+
public class ReplyMessage extends MessagePayload implements MessageWithRound {
1516
private final long viewNumber;
1617
private final long timestamp;
1718
private final long sequenceNumber;
@@ -25,4 +26,9 @@ public class ReplyMessage extends MessagePayload {
2526
public String getType() {
2627
return "REPLY";
2728
}
29+
30+
@Override
31+
public long getRound() {
32+
return this.sequenceNumber * 3;
33+
}
2834
}

simulator/src/main/java/byzzbench/simulator/protocols/hbft/mutator/PrepareMessageMutatorFactory.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,8 @@ public void accept(FaultContext serializable) {
192192
// mutatedMessage.sign(message.getSignedBy());
193193
// messageEvent.setPayload(mutatedMessage);
194194
// }
195-
// },
195+
// }
196+
//,
196197
// new MessageMutationFault("hbft-prepare-different-digest", "Change digest", List.of(PrepareMessage.class)) {
197198
// @Override
198199
// public void accept(FaultContext serializable) {

simulator/src/main/java/byzzbench/simulator/protocols/hbft/mutator/ViewChangeMessageFactory.java

+65-27
Original file line numberDiff line numberDiff line change
@@ -314,33 +314,33 @@ public List<MessageMutationFault> mutators() {
314314
// messageEvent.setPayload(mutatedMessage);
315315
// }
316316
// },
317-
new MessageMutationFault("hbft-view-change-remove-first-request-and-d", "Remove first request and decrement seq", List.of(ViewChangeMessage.class)) {
318-
@Override
319-
public void accept(FaultContext serializable) {
320-
Optional<Event> event = serializable.getEvent();
321-
if (event.isEmpty()) {
322-
throw invalidMessageTypeException;
323-
}
324-
if (!(event.get() instanceof MessageEvent messageEvent)) {
325-
throw invalidMessageTypeException;
326-
}
327-
if (!(messageEvent.getPayload() instanceof ViewChangeMessage message)) {
328-
throw invalidMessageTypeException;
329-
}
330-
SortedMap<Long, RequestMessage> requests = message.getRequestsR();
331-
if (requests != null && requests.size() > 1) {
332-
long key = requests.firstKey();
333-
requests.remove(key);
334-
Entry<Long, RequestMessage> firstReq = requests.firstEntry();
335-
requests.remove(firstReq.getKey());
336-
requests.put(firstReq.getKey() - 1, firstReq.getValue());
337-
ViewChangeMessage mutatedMessage = message.withRequestsR(requests);
338-
mutatedMessage.sign(message.getSignedBy());
339-
messageEvent.setPayload(mutatedMessage);
340-
}
317+
// new MessageMutationFault("hbft-view-change-remove-first-request-and-d", "Remove first request and decrement seq", List.of(ViewChangeMessage.class)) {
318+
// @Override
319+
// public void accept(FaultContext serializable) {
320+
// Optional<Event> event = serializable.getEvent();
321+
// if (event.isEmpty()) {
322+
// throw invalidMessageTypeException;
323+
// }
324+
// if (!(event.get() instanceof MessageEvent messageEvent)) {
325+
// throw invalidMessageTypeException;
326+
// }
327+
// if (!(messageEvent.getPayload() instanceof ViewChangeMessage message)) {
328+
// throw invalidMessageTypeException;
329+
// }
330+
// SortedMap<Long, RequestMessage> requests = message.getRequestsR();
331+
// if (requests != null && requests.size() > 1) {
332+
// long key = requests.firstKey();
333+
// requests.remove(key);
334+
// Entry<Long, RequestMessage> firstReq = requests.firstEntry();
335+
// requests.remove(firstReq.getKey());
336+
// requests.put(firstReq.getKey() - 1, firstReq.getValue());
337+
// ViewChangeMessage mutatedMessage = message.withRequestsR(requests);
338+
// mutatedMessage.sign(message.getSignedBy());
339+
// messageEvent.setPayload(mutatedMessage);
340+
// }
341341

342-
}
343-
}
342+
// }
343+
// }
344344
// new MessageMutationFault("hbft-view-change-decrement-last-request-seqNum", "Decrement last request seqNum", List.of(ViewChangeMessage.class)) {
345345
// @Override
346346
// public void accept(FaultContext serializable) {
@@ -462,7 +462,7 @@ public void accept(FaultContext serializable) {
462462

463463
// }
464464
// }
465-
,
465+
// ,
466466
new MessageMutationFault("hbft-view-change-first-req-in-R", "Change first request in R", List.of(ViewChangeMessage.class)) {
467467
@Override
468468
public void accept(FaultContext serializable) {
@@ -629,6 +629,44 @@ public void accept(FaultContext serializable) {
629629
// messageEvent.setPayload(mutatedMessage);
630630
// }
631631
// }
632+
//,
633+
// new MessageMutationFault("hbft-view-change-random-req-in-R", "Change random request in R", List.of(ViewChangeMessage.class)) {
634+
// @Override
635+
// public void accept(FaultContext serializable) {
636+
// Optional<Event> event = serializable.getEvent();
637+
// if (event.isEmpty()) {
638+
// throw invalidMessageTypeException;
639+
// }
640+
// if (!(event.get() instanceof MessageEvent messageEvent)) {
641+
// throw invalidMessageTypeException;
642+
// }
643+
// if (!(messageEvent.getPayload() instanceof ViewChangeMessage message)) {
644+
// throw invalidMessageTypeException;
645+
// }
646+
// String senderId = messageEvent.getSenderId();
647+
// Replica sender = serializable.getScenario().getReplicas().get(senderId);
648+
// SortedMap<Long, RequestMessage> requests = message.getRequestsR();
649+
// List<Long> keysetAsArray = new ArrayList<Long>(requests.keySet());
650+
// if (requests != null && !requests.isEmpty()) {
651+
// Long randReqKey = keysetAsArray.get(random.nextInt(keysetAsArray.size()));
652+
// RequestMessage randReq = requests.get(keysetAsArray.get(random.nextInt(keysetAsArray.size())));
653+
// if (sender instanceof HbftJavaReplica replica) {
654+
// SortedMap<Long, RequestMessage> specRequests = replica.getSpeculativeRequests();
655+
// for (Long key : specRequests.keySet()) {
656+
// if (!specRequests.get(key).equals(randReq)) {
657+
// requests.remove(randReqKey);
658+
// requests.put(randReqKey, specRequests.get(key));
659+
// ViewChangeMessage mutatedMessage = message.withRequestsR(requests);
660+
// mutatedMessage.sign(message.getSignedBy());
661+
// messageEvent.setPayload(mutatedMessage);
662+
// break;
663+
// }
664+
// }
665+
// }
666+
// }
667+
668+
// }
669+
// }
632670

633671
);
634672
}

simulator/src/main/resources/application.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ springdoc:
1616

1717
# ByzzBench configuration
1818
byzzbench:
19-
autostart: false # Whether to start running scenarios automatically on startup
20-
numScenarios: 20000
19+
autostart: true # Whether to start running scenarios automatically on startup
20+
numScenarios: 10000
2121
#outputPath: /tmp/byzzbench # The path to write the output to
2222
outputSchedules: buggy # which schedules to write to file? one of 'all', 'buggy' or 'none'
2323

@@ -29,8 +29,8 @@ byzzbench:
2929
deliverTimeoutWeight: 25 # The weight for scheduler to trigger a timeout
3030
deliverMessageWeight: 99 # The weight for scheduler to deliver a message
3131
deliverClientRequestWeight: 99 # The weight for scheduler to deliver a client request to a replica
32-
dropMessageWeight: 0 # The weight for scheduler to drop a message
33-
mutateMessageWeight: 0 # The weight for scheduler to mutate a message
32+
dropMessageWeight: 25 # The weight for scheduler to drop a message
33+
mutateMessageWeight: 50 # The weight for scheduler to mutate a message
3434
params: # additional parameters for the scheduler
3535
# ByzzFuzz
3636
numRoundsWithProcessFaults: 2

0 commit comments

Comments
 (0)