Coverage Summary for Class: PeerScoringReporterUtil (co.rsk.scoring)
Class |
Class, %
|
Method, %
|
Line, %
|
PeerScoringReporterUtil |
0%
(0/1)
|
0%
(0/6)
|
0%
(0/27)
|
1 package co.rsk.scoring;
2
3 import com.fasterxml.jackson.core.JsonProcessingException;
4 import com.fasterxml.jackson.databind.ObjectMapper;
5
6 import java.util.List;
7 import java.util.Optional;
8 import java.util.function.Function;
9
10 public class PeerScoringReporterUtil {
11
12 private PeerScoringReporterUtil() {
13 }
14
15 public static PeerScoringReputationSummary buildReputationSummary(List<PeerScoringInformation> peerScoringInformationList) {
16
17 return new PeerScoringReputationSummary(
18 peerScoringInformationList.size(),
19 sumBy(peerScoringInformationList, PeerScoringInformation::getSuccessfulHandshakes),
20 sumBy(peerScoringInformationList, PeerScoringInformation::getFailedHandshakes),
21 sumBy(peerScoringInformationList, PeerScoringInformation::getInvalidNetworks),
22 sumBy(peerScoringInformationList, PeerScoringInformation::getRepeatedMessages),
23 sumBy(peerScoringInformationList, PeerScoringInformation::getValidBlocks),
24 sumBy(peerScoringInformationList, PeerScoringInformation::getValidTransactions),
25 sumBy(peerScoringInformationList, PeerScoringInformation::getInvalidBlocks),
26 sumBy(peerScoringInformationList, PeerScoringInformation::getInvalidTransactions),
27 sumBy(peerScoringInformationList, PeerScoringInformation::getInvalidMessages),
28 sumBy(peerScoringInformationList, PeerScoringInformation::getTimeoutMessages),
29 sumBy(peerScoringInformationList, PeerScoringInformation::getUnexpectedMessages),
30 sumBy(peerScoringInformationList, PeerScoringInformation::getInvalidHeader),
31 sumBy(peerScoringInformationList, PeerScoringInformation::getScore),
32 sumBy(peerScoringInformationList, PeerScoringInformation::getPunishments),
33 sumBy(peerScoringInformationList, PeerScoringInformation::goodReputationCount),
34 sumBy(peerScoringInformationList, PeerScoringInformation::badReputationCount)
35 );
36 }
37
38 private static int sumBy(List<PeerScoringInformation> peerScoringInformationList, Function<PeerScoringInformation, Integer> mapper) {
39 if(peerScoringInformationList == null || peerScoringInformationList.isEmpty()) {
40 return 0;
41 }
42 Optional<Integer> result = peerScoringInformationList.stream()
43 .map(mapper)
44 .reduce((a, b) -> a + b);
45
46 return result.isPresent() ? result.get() : 0;
47 }
48
49 public static String detailedReputationString(List<PeerScoringInformation> peerScoringInformationList) throws JsonProcessingException {
50 return new ObjectMapper().writeValueAsString(peerScoringInformationList);
51 }
52
53 public static String reputationSummaryString(List<PeerScoringInformation> peerScoringInformationList) throws JsonProcessingException {
54 return new ObjectMapper().writeValueAsString(buildReputationSummary(peerScoringInformationList));
55 }
56 }