MCPcopy Create free account
hub / github.com/apache/impala / TEST

Function TEST

be/src/util/time-test.cc:32–135  ·  view source on GitHub ↗

Basic tests for the time formatting APIs in util/time.h.

Source from the content-addressed store, hash-verified

30namespace impala {
31 // Basic tests for the time formatting APIs in util/time.h.
32TEST(TimeTest, Basic) {
33 const Timezone& utc_tz = cctz::utc_time_zone();
34 EXPECT_EQ("1970-01-01 00:00:00", ToUtcStringFromUnix(0));
35 EXPECT_EQ("1970-01-01 00:00:00.000", ToUtcStringFromUnixMillis(0));
36 EXPECT_EQ("1970-01-01 00:00:00.001", ToUtcStringFromUnixMillis(1));
37 EXPECT_EQ("1970-01-01 00:00:00", ToUtcStringFromUnixMillis(0, TimePrecision::Second));
38 EXPECT_EQ("1970-01-01 00:00:00.000000", ToUtcStringFromUnixMicros(0));
39 EXPECT_EQ("1970-01-01 00:00:00.000001", ToUtcStringFromUnixMicros(1));
40 EXPECT_EQ("1970-01-01 00:00:00.000", ToUtcStringFromUnixMicros(0,
41 TimePrecision::Millisecond));
42 EXPECT_EQ("1970-01-01 00:00:00", ToUtcStringFromUnixMicros(0, TimePrecision::Second));
43 EXPECT_EQ("1970-01-01 00:00:00.000000", ToStringFromUnixMicros(0, utc_tz));
44 EXPECT_EQ("1970-01-01 00:00:00.000001", ToStringFromUnixMicros(1, utc_tz));
45 EXPECT_EQ("1970-01-01 00:00:00.000", ToStringFromUnixMicros(0, utc_tz,
46 TimePrecision::Millisecond));
47 EXPECT_EQ("1970-01-01 00:00:00.000", ToStringFromUnixMicros(999, utc_tz,
48 TimePrecision::Millisecond));
49 EXPECT_EQ("1970-01-01 00:00:00", ToStringFromUnixMicros(0, utc_tz,
50 TimePrecision::Second));
51 EXPECT_EQ("1970-01-01 00:00:00", ToStringFromUnixMicros(999999, utc_tz,
52 TimePrecision::Second));
53
54 EXPECT_EQ("1970-01-01 00:01:00", ToUtcStringFromUnix(60));
55 EXPECT_EQ("1970-01-01 01:00:00", ToUtcStringFromUnix(3600));
56 // Check we are handling negative times - time before the Unix epoch
57 EXPECT_EQ("1969-12-31 23:59:59", ToUtcStringFromUnix(-1));
58
59 // The earliest date-time that can be represented with the high-resolution
60 // chrono::system_clock is 1677-09-21 00:12:44 UTC, which is
61 // -9223372036854775808 (INT64_MIN) nanoseconds before the Unix epoch.
62 EXPECT_EQ("1677-09-21 00:12:44",
63 ToUtcStringFromUnix(INT64_MIN / NANOS_PER_SEC));
64 EXPECT_EQ("1677-09-21 00:12:43.146",
65 ToUtcStringFromUnixMillis(INT64_MIN / NANOS_PER_MICRO / MICROS_PER_MILLI));
66 EXPECT_EQ("1677-09-21 00:12:43.145225",
67 ToUtcStringFromUnixMicros(INT64_MIN / NANOS_PER_MICRO));
68 EXPECT_EQ("1677-09-21 00:12:43.145225",
69 ToStringFromUnixMicros(INT64_MIN / NANOS_PER_MICRO, utc_tz));
70
71 // The latest date-time that can be represented with the high-resoliution
72 // chrono::system_clock is 2262-04-11 23:47:16 UTC, which is
73 // 9223372036854775807 (INT64_MAX) nanoseconds since the Unix epoch.
74 EXPECT_EQ("2262-04-11 23:47:16",
75 ToUtcStringFromUnix(INT64_MAX / NANOS_PER_SEC));
76 EXPECT_EQ("2262-04-11 23:47:16.854",
77 ToUtcStringFromUnixMillis(INT64_MAX / NANOS_PER_MICRO / MICROS_PER_MILLI));
78 EXPECT_EQ("2262-04-11 23:47:16.854775",
79 ToUtcStringFromUnixMicros(INT64_MAX / NANOS_PER_MICRO));
80 EXPECT_EQ("2262-04-11 23:47:16.854775",
81 ToStringFromUnixMicros(INT64_MAX / NANOS_PER_MICRO, utc_tz));
82
83 EXPECT_EQ("1969-12-31 23:59:59.999", ToUtcStringFromUnixMillis(-1));
84 EXPECT_EQ("1969-12-31 23:59:59.001", ToUtcStringFromUnixMillis(-999));
85 EXPECT_EQ("1969-12-31 23:59:59.000", ToUtcStringFromUnixMillis(-1000));
86 EXPECT_EQ("1969-12-31 23:59:58.001", ToUtcStringFromUnixMillis(-1999));
87 EXPECT_EQ("1969-12-31 23:59:58.000", ToUtcStringFromUnixMillis(-2000));
88 EXPECT_EQ("1969-12-31 23:59:57.999", ToUtcStringFromUnixMillis(-2001));
89

Callers

nothing calls this directly

Calls 2

UnixMillisFunction · 0.85
UnixMicrosFunction · 0.85

Tested by

no test coverage detected