Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
* across all matched tables, then computes gap = requested - finished.
*/
public class JobWarmUpStats {
private static final DateTimeFormatter TIME_FMT = DateTimeFormatter.ofPattern("HH:mm:ss");
private static final DateTimeFormatter DATETIME_FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

// Aggregated requested
public long requestedSegmentNum5m;
Expand Down Expand Up @@ -277,7 +277,7 @@ private static String formatEpochMs(long epochMs) {
}
try {
return LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMs), ZoneId.systemDefault())
.format(TIME_FMT);
.format(DATETIME_FMT);
} catch (Exception e) {
return "";
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,7 @@ public void testGetJobInfoClusterLevelEventDrivenJobShowsSyncStats() {
stats.finishIndexSize30m = 512;
stats.failSegmentNum30m = 1;
stats.lastTriggerTs = 5000;
stats.lastFinishTs = 4800;
stats.progressTriggerTs = 4200;
stats.computeGap();

Expand All @@ -380,6 +381,10 @@ public void testGetJobInfoClusterLevelEventDrivenJobShowsSyncStats() {
Assertions.assertEquals(4, segNum.get("finish_30m").getAsLong());
Assertions.assertEquals(2, segNum.get("gap_30m").getAsLong());
Assertions.assertEquals(800, detailStats.get("trigger_gap_ms").getAsLong());
String dateTimePattern = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}";
Assertions.assertTrue(detailStats.get("last_trigger_ts").getAsString().matches(dateTimePattern));
Assertions.assertTrue(detailStats.get("last_finish_ts").getAsString().matches(dateTimePattern));
Assertions.assertTrue(detailStats.get("progress_trigger_ts").getAsString().matches(dateTimePattern));
Assertions.assertFalse(detailStats.has("window"));

List<String> summary = job.getJobInfo(stats, false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,10 @@
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;

Expand All @@ -31,6 +35,7 @@
* - JobWarmUpStats: aggregate requested/finished, compute gap, serialize
*/
public class WarmUpStatsTest {
private static final DateTimeFormatter DATETIME_FMT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

// ==================== TableWarmUpWindowedStats ====================

Expand Down Expand Up @@ -313,6 +318,29 @@ public void testToJsonStringZeroTimestamps() {
Assertions.assertEquals(0, segNum.get("gap_5m").getAsLong());
}

@Test
public void testToJsonStringFormatsTimestampsWithDate() {
long lastTriggerTs = 1700000000000L;
long lastFinishTs = 1700000001000L;
long progressTriggerTs = 1699999999000L;

JobWarmUpStats job = new JobWarmUpStats();
job.lastTriggerTs = lastTriggerTs;
job.lastFinishTs = lastFinishTs;
job.progressTriggerTs = progressTriggerTs;

JsonObject root = JsonParser.parseString(job.toJsonString()).getAsJsonObject();

Assertions.assertEquals(formatExpectedDateTime(lastTriggerTs),
root.get("last_trigger_ts").getAsString());
Assertions.assertEquals(formatExpectedDateTime(lastFinishTs),
root.get("last_finish_ts").getAsString());
Assertions.assertEquals(formatExpectedDateTime(progressTriggerTs),
root.get("progress_trigger_ts").getAsString());
Assertions.assertTrue(root.get("last_trigger_ts").getAsString()
.matches("\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}"));
}

@Test
public void testToSummaryJsonStringMergesDataAndIndexSize() {
JobWarmUpStats job = new JobWarmUpStats();
Expand Down Expand Up @@ -494,4 +522,9 @@ public void testClusterLevelEventDrivenJobAggregatesStatsByJobId() {
Assertions.assertEquals(1000, stats.lastTriggerTs);
Assertions.assertEquals(1200, stats.lastFinishTs);
}

private static String formatExpectedDateTime(long epochMs) {
return LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMs), ZoneId.systemDefault())
.format(DATETIME_FMT);
}
}
Loading