Coverage Summary for Class: PeerScoringInformation (co.rsk.scoring)
Class |
Class, %
|
Method, %
|
Line, %
|
PeerScoringInformation |
0%
(0/1)
|
0%
(0/21)
|
0%
(0/54)
|
1 package co.rsk.scoring;
2
3 import com.google.common.annotations.VisibleForTesting;
4
5 /**
6 * PeerScoringInformation is a simple class to expose
7 * the recorded scoring information for a peer
8 * <p>
9 * Created by ajlopez on 12/07/2017.
10 */
11 public class PeerScoringInformation {
12 private final int successfulHandshakes;
13 private final int failedHandshakes;
14 private final int invalidNetworks;
15 private final int repeatedMessages;
16 private final int validBlocks;
17 private final int validTransactions;
18 private final int invalidBlocks;
19 private final int invalidTransactions;
20 private final int invalidMessages;
21 private final int timeoutMessages;
22 private final int unexpectedMessages;
23 private final int invalidHeader;
24 private final int score;
25 private final int punishments;
26 private final boolean goodReputation;
27 private final String id;
28 private final String type; //todo(techdebt) use an enum or constants
29
30 public PeerScoringInformation(int successfulHandshakes, int failedHandshakes, int invalidNetworks,
31 int repeatedMessages, int validBlocks, int validTransactions, int invalidBlocks,
32 int invalidTransactions, int invalidMessages, int timeoutMessages,
33 int unexpectedMessages, int invalidHeader, int score, int punishments,
34 boolean goodReputation, String id, String type) {
35 this.successfulHandshakes = successfulHandshakes;
36 this.failedHandshakes = failedHandshakes;
37 this.invalidNetworks = invalidNetworks;
38 this.repeatedMessages = repeatedMessages;
39 this.validBlocks = validBlocks;
40 this.validTransactions = validTransactions;
41 this.invalidBlocks = invalidBlocks;
42 this.invalidTransactions = invalidTransactions;
43 this.invalidMessages = invalidMessages;
44 this.timeoutMessages = timeoutMessages;
45 this.unexpectedMessages = unexpectedMessages;
46 this.invalidHeader = invalidHeader;
47 this.score = score;
48 this.punishments = punishments;
49 this.goodReputation = goodReputation;
50 this.id = id;
51 this.type = type;
52 }
53
54 public static PeerScoringInformation buildByScoring(PeerScoring scoring, String id, String type) {
55 int successfulHandshakes = scoring.getEventCounter(EventType.SUCCESSFUL_HANDSHAKE);
56 int failedHandshakes = scoring.getEventCounter(EventType.FAILED_HANDSHAKE);
57 int invalidNetworks = scoring.getEventCounter(EventType.INVALID_NETWORK);
58 int repeatedMessages = scoring.getEventCounter(EventType.REPEATED_MESSAGE);
59 int validBlocks = scoring.getEventCounter(EventType.VALID_BLOCK);
60 int validTransactions = scoring.getEventCounter(EventType.VALID_TRANSACTION);
61 int invalidBlocks = scoring.getEventCounter(EventType.INVALID_BLOCK);
62 int invalidTransactions = scoring.getEventCounter(EventType.INVALID_TRANSACTION);
63 int invalidMessages = scoring.getEventCounter(EventType.INVALID_MESSAGE);
64 int timeoutMessages = scoring.getEventCounter(EventType.TIMEOUT_MESSAGE);
65 int unexpectedMessages = scoring.getEventCounter(EventType.UNEXPECTED_MESSAGE);
66 int invalidHeader = scoring.getEventCounter(EventType.INVALID_HEADER);
67 int score = scoring.getScore();
68 int punishments = scoring.getPunishmentCounter();
69 boolean goodReputation = scoring.hasGoodReputation();
70
71 return new PeerScoringInformation(successfulHandshakes, failedHandshakes, invalidNetworks,
72 repeatedMessages, validBlocks, validTransactions, invalidBlocks, invalidTransactions,
73 invalidMessages, timeoutMessages, unexpectedMessages, invalidHeader, score, punishments,
74 goodReputation, id, type);
75 }
76
77 public String getId() {
78 return this.id;
79 }
80
81 @VisibleForTesting
82 public String getType() { return this.type; }
83
84 public boolean getGoodReputation() {
85 return this.goodReputation;
86 }
87
88 public int getSuccessfulHandshakes() { return this.successfulHandshakes; }
89
90 public int getFailedHandshakes() { return this.failedHandshakes; }
91
92 public int getInvalidNetworks() { return this.invalidNetworks; }
93
94 public int getRepeatedMessages() { return this.repeatedMessages; }
95
96 public int getValidBlocks() {
97 return this.validBlocks;
98 }
99
100 public int getScore() {
101 return this.score;
102 }
103
104 public int getInvalidBlocks() {
105 return this.invalidBlocks;
106 }
107
108 public int getValidTransactions() {
109 return this.validTransactions;
110 }
111
112 public int getInvalidTransactions() {
113 return this.invalidTransactions;
114 }
115
116 public int getInvalidMessages() {
117 return this.invalidMessages;
118 }
119
120 public int getUnexpectedMessages() {
121 return this.unexpectedMessages;
122 }
123
124 public int getTimeoutMessages() {
125 return this.timeoutMessages;
126 }
127
128 public int getInvalidHeader() {
129 return this.invalidHeader;
130 }
131
132 public int getPunishments() { return this.punishments; }
133
134 public int goodReputationCount() {
135 return getGoodReputation() ? 1 : 0;
136 }
137
138 public int badReputationCount() {
139 return !getGoodReputation() ? 1 : 0;
140 }
141 }
142
143