Skip to content

Commit 6fb01a0

Browse files
committed
Add Server Uptime to Performance as numbers tables
Modified server occupied number to use new uptime calculation instead of relying on downtime calculation Affects issues: - Close #3696
1 parent c10029b commit 6fb01a0

25 files changed

Lines changed: 112 additions & 25 deletions

File tree

Plan/common/src/main/java/com/djrapitops/plan/delivery/domain/mutators/TPSMutator.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,28 @@ public long serverDownTime() {
120120
return downTime;
121121
}
122122

123+
public long serverUptime() {
124+
long lastDate = -1;
125+
long uptime = 0;
126+
tpsData.sort(new TPSComparator());
127+
128+
for (TPS tps : tpsData) {
129+
long date = tps.getDate();
130+
if (lastDate == -1) {
131+
lastDate = date;
132+
continue;
133+
}
134+
135+
long diff = date - lastDate;
136+
if (diff < TimeUnit.MINUTES.toMillis(2L)) {
137+
uptime += diff;
138+
}
139+
lastDate = date;
140+
}
141+
142+
return uptime;
143+
}
144+
123145
public long serverOccupiedTime() {
124146
long lastDate = -1;
125147
long activeTime = 0;

Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/json/OnlineActivityOverviewJSONCreator.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import com.djrapitops.plan.gathering.domain.TPS;
2626
import com.djrapitops.plan.identification.ServerUUID;
2727
import com.djrapitops.plan.settings.config.PlanConfig;
28-
import com.djrapitops.plan.settings.config.paths.DisplaySettings;
2928
import com.djrapitops.plan.settings.config.paths.TimeSettings;
3029
import com.djrapitops.plan.storage.database.DBSystem;
3130
import com.djrapitops.plan.storage.database.Database;
@@ -188,11 +187,6 @@ private Map<String, Object> createNumbersMap(ServerUUID serverUUID) {
188187
numbers.put("session_length_7d_avg", sessionLengthAvgWeek);
189188
numbers.put("session_length_24h_avg", sessionLengthAvgDay);
190189

191-
TPSMutator tpsMutator = new TPSMutator(db.query(TPSQueries.fetchTPSDataOfServer(monthAgo, now, serverUUID)));
192-
numbers.put("average_tps", decimalFormatter.apply(tpsMutator.averageTPS()));
193-
numbers.put("low_tps_spikes", tpsMutator.lowTpsSpikeCount(config.get(DisplaySettings.GRAPH_TPS_THRESHOLD_MED)));
194-
numbers.put("downtime", tpsMutator.serverDownTime());
195-
196190
return numbers;
197191
}
198192

Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/json/PerformanceJSONCreator.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,10 @@ private Map<String, Object> createNumbersMap(List<TPS> tpsData) {
9898
numbers.put("server_downtime_7d", tpsDataWeek.serverDownTime());
9999
numbers.put("server_downtime_24h", tpsDataDay.serverDownTime());
100100

101+
numbers.put("server_uptime_30d", tpsDataMonth.serverUptime());
102+
numbers.put("server_uptime_7d", tpsDataWeek.serverUptime());
103+
numbers.put("server_uptime_24h", tpsDataDay.serverUptime());
104+
101105
numbers.put("players_30d", format(tpsDataMonth.averagePlayers()));
102106
numbers.put("players_7d", format(tpsDataWeek.averagePlayers()));
103107
numbers.put("players_24h", format(tpsDataDay.averagePlayers()));

Plan/common/src/main/java/com/djrapitops/plan/delivery/rendering/json/SessionsOverviewJSONCreator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ private Map<String, Object> createInsightsMap(ServerUUID serverUUID) {
7171

7272
Map<String, Object> insights = new HashMap<>();
7373

74-
long uptime = TimeUnit.DAYS.toMillis(30L) - tpsMutator.serverDownTime();
74+
long uptime = tpsMutator.serverUptime();
7575
long occupied = tpsMutator.serverOccupiedTime();
7676
insights.put("server_occupied", occupied);
7777
insights.put("server_occupied_perc", percentage.apply(Percentage.calculate(occupied, uptime, -1)));

Plan/common/src/main/java/com/djrapitops/plan/delivery/webserver/resolver/json/NetworkPerformanceJSONResolver.java

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
import javax.inject.Singleton;
5151
import java.util.*;
5252
import java.util.concurrent.TimeUnit;
53+
import java.util.function.Function;
5354
import java.util.stream.Collectors;
5455

5556
/**
@@ -160,9 +161,9 @@ private Map<String, Object> createNumbersMap(Map<Integer, List<TPS>> tpsData) {
160161
numbers.put("low_tps_spikes_7d", tpsDataWeek.lowTpsSpikeCount(tpsThreshold));
161162
numbers.put("low_tps_spikes_24h", tpsDataDay.lowTpsSpikeCount(tpsThreshold));
162163

163-
long downtimeMonth = getTotalDowntime(mutatorsOfServersMonth);
164-
long downtimeWeek = getTotalDowntime(mutatorsOfServersWeek);
165-
long downtimeDay = getTotalDowntime(mutatorsOfServersDay);
164+
long downtimeMonth = getTotal(mutatorsOfServersMonth, TPSMutator::serverDownTime);
165+
long downtimeWeek = getTotal(mutatorsOfServersWeek, TPSMutator::serverDownTime);
166+
long downtimeDay = getTotal(mutatorsOfServersDay, TPSMutator::serverDownTime);
166167
numbers.put("server_downtime_30d", downtimeMonth);
167168
numbers.put("server_downtime_7d", downtimeWeek);
168169
numbers.put("server_downtime_24h", downtimeDay);
@@ -177,6 +178,23 @@ private Map<String, Object> createNumbersMap(Map<Integer, List<TPS>> tpsData) {
177178
numbers.put("avg_server_downtime_24h", "-");
178179
}
179180

181+
long uptimeMonth = getTotal(mutatorsOfServersMonth, TPSMutator::serverUptime);
182+
long uptimeWeek = getTotal(mutatorsOfServersWeek, TPSMutator::serverUptime);
183+
long uptimeDay = getTotal(mutatorsOfServersDay, TPSMutator::serverUptime);
184+
numbers.put("server_uptime_30d", uptimeMonth);
185+
numbers.put("server_uptime_7d", uptimeWeek);
186+
numbers.put("server_uptime_24h", uptimeDay);
187+
188+
if (!tpsData.isEmpty()) {
189+
numbers.put("avg_server_uptime_30d", uptimeMonth / tpsData.size());
190+
numbers.put("avg_server_uptime_7d", uptimeWeek / tpsData.size());
191+
numbers.put("avg_server_uptime_24h", uptimeDay / tpsData.size());
192+
} else {
193+
numbers.put("avg_server_uptime_30d", "-");
194+
numbers.put("avg_server_uptime_7d", "-");
195+
numbers.put("avg_server_uptime_24h", "-");
196+
}
197+
180198
numbers.put("players_30d", format(tpsDataMonth.averagePlayers()));
181199
numbers.put("players_7d", format(tpsDataWeek.averagePlayers()));
182200
numbers.put("players_24h", format(tpsDataDay.averagePlayers()));
@@ -199,10 +217,10 @@ private Map<String, Object> createNumbersMap(Map<Integer, List<TPS>> tpsData) {
199217
return numbers;
200218
}
201219

202-
private long getTotalDowntime(Map<Integer, TPSMutator> mutatorsOfServersMonth) {
220+
private long getTotal(Map<Integer, TPSMutator> mutatorsOfServersMonth, Function<TPSMutator, Long> transform) {
203221
long downTime = 0L;
204222
for (TPSMutator tpsMutator : mutatorsOfServersMonth.values()) {
205-
downTime += tpsMutator.serverDownTime();
223+
downTime += transform.apply(tpsMutator);
206224
}
207225
return downTime;
208226
}

Plan/common/src/main/java/com/djrapitops/plan/settings/locale/lang/HtmlLang.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ public enum HtmlLang implements Lang {
193193
LABEL_SERVER_DOWNTIME("html.label.serverDowntime", "Server Downtime"),
194194
LABEL_TOTAL_SERVER_DOWNTIME("html.label.totalServerDowntime", "Total Server Downtime"),
195195
LABEL_AVERAGE_SERVER_DOWNTIME("html.label.averageServerDowntime", "Average Downtime / Server"),
196+
LABEL_AVERAGE_SERVER_UPTIME("html.label.averageServerUptime", "Average Uptime / Server"),
196197
LABEL_DURING_LOW_TPS("html.label.duringLowTps", "During Low TPS Spikes:"),
197198
TEXT_NO_LOW_TPS("html.text.noLowTps", "No low tps spikes"),
198199
// Player Page
@@ -264,6 +265,7 @@ public enum HtmlLang implements Lang {
264265
LABEL_MAX_FREE_DISK("html.label.maxFreeDisk", "Max Free Disk"),
265266
LABEL_MIN_FREE_DISK("html.label.minFreeDisk", "Min Free Disk"),
266267
LABEL_CURRENT_UPTIME("html.label.currentUptime", "Current Uptime"),
268+
LABEL_SERVER_UPTIME("html.label.serverUptime", "Server Uptime"),
267269
LABEL_TOTAL("html.label.total", "Total"),
268270
LABEL_ALPHABETICAL("html.label.alphabetical", "Alphabetical"),
269271
LABEL_SORT_BY("html.label.sortBy", "Sort By"),

Plan/common/src/main/resources/assets/plan/locale/locale_CN.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,7 @@ html:
316316
averagePlaytime: "平均游玩时间"
317317
averageRamUsage: "平均内存使用量"
318318
averageServerDowntime: "平均停机时间/服务器"
319+
averageServerUptime: "Average Uptime / Server"
319320
averageSessionLength: "平均会话时长"
320321
averageSessions: "平均会话"
321322
averageTps: "平均 TPS"
@@ -580,6 +581,7 @@ html:
580581
serverPlaytime30days: "最近 30 天内的服务器游玩时间"
581582
serverPossiblyOffline: "可能处于离线状态"
582583
serverSelector: "服务器选择器"
584+
serverUptime: "Server Uptime"
583585
servers: "服务器"
584586
serversTitle: "服务器"
585587
session: "会话次数"

Plan/common/src/main/resources/assets/plan/locale/locale_CS.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,7 @@ html:
316316
averagePlaytime: "Průměr herní doby"
317317
averageRamUsage: "Průměrné využití RAM"
318318
averageServerDowntime: "Průměrná doba vypnutí / Serveru"
319+
averageServerUptime: "Average Uptime / Server"
319320
averageSessionLength: "Průměrná délka připojení"
320321
averageSessions: "Průměr připojení"
321322
averageTps: "Průměr TPS"
@@ -580,6 +581,7 @@ html:
580581
serverPlaytime30days: "Herní čas serveru za 30 dní"
581582
serverPossiblyOffline: "Pravděpodobně offline"
582583
serverSelector: "Výběr serveru"
584+
serverUptime: "Server Uptime"
583585
servers: "Servery"
584586
serversTitle: "SERVERY"
585587
session: "Relace"

Plan/common/src/main/resources/assets/plan/locale/locale_DE.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,7 @@ html:
316316
averagePlaytime: "Durschnittliche Spielzeit"
317317
averageRamUsage: "Average RAM Usage"
318318
averageServerDowntime: "Average Downtime / Server"
319+
averageServerUptime: "Average Uptime / Server"
319320
averageSessionLength: "Durschnittliche Sitzungslänge"
320321
averageSessions: "Durchschnittliche Sessions"
321322
averageTps: "Durschnittliche TPS"
@@ -580,6 +581,7 @@ html:
580581
serverPlaytime30days: "Server Spielzeit für 30 Tage"
581582
serverPossiblyOffline: "Possibly offline"
582583
serverSelector: "Server selector"
584+
serverUptime: "Server Uptime"
583585
servers: "Server"
584586
serversTitle: "SERVER"
585587
session: "Sitzung"

Plan/common/src/main/resources/assets/plan/locale/locale_EN.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,7 @@ html:
316316
averagePlaytime: "Average Playtime"
317317
averageRamUsage: "Average RAM Usage"
318318
averageServerDowntime: "Average Downtime / Server"
319+
averageServerUptime: "Average Uptime / Server"
319320
averageSessionLength: "Average Session Length"
320321
averageSessions: "Average Sessions"
321322
averageTps: "Average TPS"
@@ -580,6 +581,7 @@ html:
580581
serverPlaytime30days: "Server Playtime for 30 days"
581582
serverPossiblyOffline: "Possibly offline"
582583
serverSelector: "Server selector"
584+
serverUptime: "Server Uptime"
583585
servers: "Servers"
584586
serversTitle: "SERVERS"
585587
session: "Session"

0 commit comments

Comments
 (0)