• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

alibaba / jetcache / #427

27 Apr 2025 08:09AM UTC coverage: 88.802% (-0.04%) from 88.839%
#427

push

areyouok
ci: change version to 2.7.8

4758 of 5358 relevant lines covered (88.8%)

0.89 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

96.15
/jetcache-core/src/main/java/com/alicp/jetcache/support/StatInfoLogger.java
1
package com.alicp.jetcache.support;
2

3
import org.slf4j.Logger;
4
import org.slf4j.LoggerFactory;
5

6
import java.text.SimpleDateFormat;
7
import java.util.Collections;
8
import java.util.Date;
9
import java.util.List;
10
import java.util.OptionalInt;
11
import java.util.function.Consumer;
12

13
/**
14
 * Created on 2016/12/6.
15
 *
16
 * @author huangli
17
 */
18
public class StatInfoLogger implements Consumer<StatInfo> {
19

20
    private static Logger logger = LoggerFactory.getLogger(StatInfoLogger.class);
1✔
21
    private boolean verboseLog;
22

23
    protected int maxNameLength = 65;
1✔
24

25
    public StatInfoLogger(boolean verboseLog) {
1✔
26
        this.verboseLog = verboseLog;
1✔
27
    }
1✔
28

29
    @Override
30
    public void accept(StatInfo statInfo) {
31
        List<CacheStat> stats = statInfo.getStats();
1✔
32
        Collections.sort(stats, (o1, o2) -> {
1✔
33
            if (o1.getCacheName() == null) {
1✔
34
                return -1;
×
35
            } else if (o2.getCacheName() == null) {
1✔
36
                return 1;
×
37
            } else {
38
                return o1.getCacheName().compareTo(o2.getCacheName());
1✔
39
            }
40
        });
41
        StringBuilder sb;
42
        if (verboseLog) {
1✔
43
            sb = logVerbose(statInfo);
1✔
44
        } else {
45
            sb = logStatSummary(statInfo);
1✔
46
        }
47
        logger.info(sb.toString());
1✔
48
    }
1✔
49

50
    private StringBuilder logTitle(int initSize, StatInfo statInfo) {
51
        StringBuilder sb = new StringBuilder(initSize);
1✔
52
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS");
1✔
53
        sb.append("jetcache stat from ").append(sdf.format(new Date(statInfo.getStartTime())))
1✔
54
                .append(" to ").append(sdf.format(statInfo.getEndTime())).append("\n");
1✔
55
        return sb;
1✔
56
    }
57

58
    private void printSepLine(StringBuilder sb, String title) {
59
        title.chars().forEach((c) -> {
1✔
60
            if (c == '|') {
1✔
61
                sb.append('+');
1✔
62
            } else {
63
                sb.append('-');
1✔
64
            }
65
        });
1✔
66
        sb.append('\n');
1✔
67
    }
1✔
68

69
    private StringBuilder logStatSummary(StatInfo statInfo) {
70
        StringBuilder sb = logTitle(2048, statInfo);
1✔
71

72
        List<CacheStat> stats = statInfo.getStats();
1✔
73
        OptionalInt maxCacheNameLength = stats.stream().mapToInt((s) -> getName(s.getCacheName()).length()).max();
1✔
74
        int len = Math.max(5, maxCacheNameLength.orElse(0));
1✔
75

76
        String title = String.format("%-" + len + "s|%10s|%7s|%14s|%14s|%14s|%14s|%11s|%11s", "cache", "qps", "rate", "get", "hit", "fail", "expire", "avgLoadTime", "maxLoadTime");
1✔
77
        sb.append(title).append('\n');
1✔
78
        printSepLine(sb, title);
1✔
79
        for (CacheStat s : stats) {
1✔
80
            sb.append(String.format("%-" + len + "s", getName(s.getCacheName()))).append('|');
1✔
81
            sb.append(String.format("%,10.2f", s.qps())).append('|');
1✔
82
            sb.append(String.format("%6.2f%%", s.hitRate() * 100)).append('|');
1✔
83
            sb.append(String.format("%,14d", s.getGetCount())).append('|');
1✔
84
            sb.append(String.format("%,14d", s.getGetHitCount())).append('|');
1✔
85
            sb.append(String.format("%,14d", s.getGetFailCount())).append('|');
1✔
86
            sb.append(String.format("%,14d", s.getGetExpireCount())).append('|');
1✔
87
            sb.append(String.format("%,11.1f", s.avgLoadTime())).append('|');
1✔
88
            sb.append(String.format("%,11d", s.getMaxLoadTime())).append('\n');
1✔
89
        }
1✔
90
        printSepLine(sb, title);
1✔
91
        return sb;
1✔
92
    }
93

94
    private String getName(String name) {
95
        if (name == null) {
1✔
96
            return null;
×
97
        }
98
        if (name.length() > maxNameLength) {
1✔
99
            return "..." + name.substring(name.length() - maxNameLength + 3);
×
100
        } else {
101
            return name;
1✔
102
        }
103
    }
104

105

106
    private StringBuilder logVerbose(StatInfo statInfo) {
107
        StringBuilder sb = logTitle(8192, statInfo);
1✔
108
        List<CacheStat> stats = statInfo.getStats();
1✔
109

110
        for (CacheStat s : stats) {
1✔
111
            String title = String.format("%-10s|%10s|%14s|%14s|%14s|%14s|%14s|%9s|%7s|%7s", "oper", "qps/tps", "count", "success/hit", "fail", "miss", "expired", "avgTime", "minTime", "maxTime");
1✔
112

113
            printSepLine(sb, title);
1✔
114

115
            sb.append(s.getCacheName()).append("(hit rate ").append(String.format("%.3f", s.hitRate() * 100)).append("%)").append('\n');
1✔
116
            sb.append(title).append('\n');
1✔
117

118
            printSepLine(sb, title);
1✔
119

120
            sb.append(String.format("%-10s", "get")).append('|');
1✔
121
            sb.append(String.format("%,10.2f", s.qps())).append('|');
1✔
122
            sb.append(String.format("%,14d", s.getGetCount())).append('|');
1✔
123
            sb.append(String.format("%,14d", s.getGetHitCount())).append('|');
1✔
124
            sb.append(String.format("%,14d", s.getGetFailCount())).append('|');
1✔
125
            sb.append(String.format("%,14d", s.getGetMissCount())).append('|');
1✔
126
            sb.append(String.format("%,14d", s.getGetExpireCount())).append('|');
1✔
127
            sb.append(String.format("%,9.1f", s.avgGetTime())).append('|');
1✔
128
            sb.append(String.format("%,7d", s.getMinGetTime() == Long.MAX_VALUE ? 0 : s.getMinGetTime())).append('|');
1✔
129
            sb.append(String.format("%,7d", s.getMaxGetTime())).append('\n');
1✔
130

131
            sb.append(String.format("%-10s", "put")).append('|');
1✔
132
            sb.append(String.format("%,10.2f", s.putTps())).append('|');
1✔
133
            sb.append(String.format("%,14d", s.getPutCount())).append('|');
1✔
134
            sb.append(String.format("%,14d", s.getPutSuccessCount())).append('|');
1✔
135
            sb.append(String.format("%,14d", s.getPutFailCount())).append('|');
1✔
136
            sb.append(String.format("%14s", "N/A")).append('|');
1✔
137
            sb.append(String.format("%14s", "N/A")).append('|');
1✔
138
            sb.append(String.format("%,9.1f", s.avgPutTime())).append('|');
1✔
139
            sb.append(String.format("%,7d", s.getMinPutTime() == Long.MAX_VALUE ? 0 : s.getMinPutTime())).append('|');
1✔
140
            sb.append(String.format("%,7d", s.getMaxPutTime())).append('\n');
1✔
141

142
            sb.append(String.format("%-10s", "remove")).append('|');
1✔
143
            sb.append(String.format("%,10.2f", s.removeTps())).append('|');
1✔
144
            sb.append(String.format("%,14d", s.getRemoveCount())).append('|');
1✔
145
            sb.append(String.format("%,14d", s.getRemoveSuccessCount())).append('|');
1✔
146
            sb.append(String.format("%,14d", s.getRemoveFailCount())).append('|');
1✔
147
            sb.append(String.format("%14s", "N/A")).append('|');
1✔
148
            sb.append(String.format("%14s", "N/A")).append('|');
1✔
149
            sb.append(String.format("%,9.1f", s.avgRemoveTime())).append('|');
1✔
150
            sb.append(String.format("%,7d", s.getMinRemoveTime() == Long.MAX_VALUE ? 0 : s.getMinRemoveTime())).append('|');
1✔
151
            sb.append(String.format("%,7d", s.getMaxRemoveTime())).append('\n');
1✔
152

153
            sb.append(String.format("%-10s", "load")).append('|');
1✔
154
            sb.append(String.format("%,10.2f", s.loadQps())).append('|');
1✔
155
            sb.append(String.format("%,14d", s.getLoadCount())).append('|');
1✔
156
            sb.append(String.format("%,14d", s.getLoadSuccessCount())).append('|');
1✔
157
            sb.append(String.format("%,14d", s.getLoadFailCount())).append('|');
1✔
158
            sb.append(String.format("%14s", "N/A")).append('|');
1✔
159
            sb.append(String.format("%14s", "N/A")).append('|');
1✔
160
            sb.append(String.format("%,9.1f", s.avgLoadTime())).append('|');
1✔
161
            sb.append(String.format("%,7d", s.getMinLoadTime() == Long.MAX_VALUE ? 0 : s.getMinLoadTime())).append('|');
1✔
162
            sb.append(String.format("%,7d", s.getMaxLoadTime())).append('\n');
1✔
163

164
        }
1✔
165
        return sb;
1✔
166
    }
167
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc