blob: 938c6bed95342c79f4d9dbbb867878d50923c07d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
{ pkgs, ... }:
{
name = "timezone";
meta.maintainers = [ ];
nodes = {
node_eutz =
{ pkgs, ... }:
{
time.timeZone = "Europe/Amsterdam";
};
node_nulltz =
{ pkgs, ... }:
{
time.timeZone = null;
};
};
testScript =
{ nodes, ... }:
''
node_eutz.wait_for_unit("dbus.socket")
with subtest("static - Ensure timezone change gives the correct result"):
node_eutz.fail("timedatectl set-timezone Asia/Tokyo")
date_result = node_eutz.succeed('date -d @0 "+%Y-%m-%d %H:%M:%S"')
assert date_result == "1970-01-01 01:00:00\n", "Timezone seems to be wrong"
node_nulltz.wait_for_unit("dbus.socket")
with subtest("imperative - Ensure timezone defaults to UTC"):
date_result = node_nulltz.succeed('date -d @0 "+%Y-%m-%d %H:%M:%S"')
print(date_result)
assert (
date_result == "1970-01-01 00:00:00\n"
), "Timezone seems to be wrong (not UTC)"
with subtest("imperative - Ensure timezone adjustment produces expected result"):
node_nulltz.succeed("timedatectl set-timezone Asia/Tokyo")
# Adjustment should be taken into account
date_result = node_nulltz.succeed('date -d @0 "+%Y-%m-%d %H:%M:%S"')
print(date_result)
assert date_result == "1970-01-01 09:00:00\n", "Timezone was not adjusted"
# Stop systemd-timedated.service to clear /etc/localtime read cache
node_nulltz.systemctl("stop systemd-timedated.service")
timedatectl_result = node_nulltz.succeed("timedatectl status")
print(timedatectl_result)
assert "Asia/Tokyo" in timedatectl_result, "'timedatectl status' output is missing 'Asia/Tokyo'"
with subtest("imperative - Ensure /etc/localtime symlink includes '/zoneinfo/' like icu expects"):
# https://github.com/unicode-org/icu/blob/release-78.3/icu4c/source/common/putil.cpp#L686-L695
readlink_result = node_nulltz.succeed("readlink --no-newline /etc/localtime")
print(readlink_result)
assert "/zoneinfo/" in readlink_result, f"/etc/localtime symlink is missing '/zoneinfo/': {readlink_result}"
with subtest("imperative - Ensure timezone adjustment persists across reboot"):
# Adjustment should persist across a reboot
node_nulltz.shutdown()
node_nulltz.wait_for_unit("dbus.socket")
date_result = node_nulltz.succeed('date -d @0 "+%Y-%m-%d %H:%M:%S"')
print(date_result)
assert (
date_result == "1970-01-01 09:00:00\n"
), "Timezone adjustment was not persisted"
'';
}
|