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

alibaba / jetcache / #405

16 Apr 2024 05:58AM UTC coverage: 0.0% (-88.9%) from 88.866%
#405

push

areyouok
add encoding to fix coverage report

0 of 5353 relevant lines covered (0.0%)

0.0 hits per line

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

0.0
/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);
×
21
    private boolean verboseLog;
22

23
    protected int maxNameLength = 65;
×
24

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

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

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

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

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

72
        List<CacheStat> stats = statInfo.getStats();
×
73
        OptionalInt maxCacheNameLength = stats.stream().mapToInt((s) -> getName(s.getCacheName()).length()).max();
×
74
        int len = Math.max(5, maxCacheNameLength.orElse(0));
×
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");
×
77
        sb.append(title).append('\n');
×
78
        printSepLine(sb, title);
×
79
        for (CacheStat s : stats) {
×
80
            sb.append(String.format("%-" + len + "s", getName(s.getCacheName()))).append('|');
×
81
            sb.append(String.format("%,10.2f", s.qps())).append('|');
×
82
            sb.append(String.format("%6.2f%%", s.hitRate() * 100)).append('|');
×
83
            sb.append(String.format("%,14d", s.getGetCount())).append('|');
×
84
            sb.append(String.format("%,14d", s.getGetHitCount())).append('|');
×
85
            sb.append(String.format("%,14d", s.getGetFailCount())).append('|');
×
86
            sb.append(String.format("%,14d", s.getGetExpireCount())).append('|');
×
87
            sb.append(String.format("%,11.1f", s.avgLoadTime())).append('|');
×
88
            sb.append(String.format("%,11d", s.getMaxLoadTime())).append('\n');
×
89
        }
×
90
        printSepLine(sb, title);
×
91
        return sb;
×
92
    }
93

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

105

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

110
        for (CacheStat s : stats) {
×
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");
×
112

113
            printSepLine(sb, title);
×
114

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

118
            printSepLine(sb, title);
×
119

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

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

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

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

164
        }
×
165
        return sb;
×
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