|
1 | 1 | import os
|
2 | 2 | import unittest
|
3 | 3 | from .helpers.ptrack_helpers import ProbackupTest, ProbackupException
|
| 4 | +import subprocess |
| 5 | +from time import sleep |
4 | 6 |
|
5 | 7 |
|
6 | 8 | module_name = 'time_stamp'
|
@@ -72,3 +74,154 @@ def test_server_date_style(self):
|
72 | 74 |
|
73 | 75 | # Clean after yourself
|
74 | 76 | self.del_test_dir(module_name, fname)
|
| 77 | + |
| 78 | + @unittest.skip("skip") |
| 79 | + # @unittest.expectedFailure |
| 80 | + def test_dst_timezone_handling(self): |
| 81 | + """for manual testing""" |
| 82 | + fname = self.id().split('.')[3] |
| 83 | + backup_dir = os.path.join(self.tmp_path, module_name, fname, 'backup') |
| 84 | + node = self.make_simple_node( |
| 85 | + base_dir=os.path.join(module_name, fname, 'node'), |
| 86 | + initdb_params=['--data-checksums'], |
| 87 | + pg_options={'autovacuum': 'off'}) |
| 88 | + |
| 89 | + self.init_pb(backup_dir) |
| 90 | + self.add_instance(backup_dir, 'node', node) |
| 91 | + self.set_archiving(backup_dir, 'node', node) |
| 92 | + node.slow_start() |
| 93 | + |
| 94 | + print(subprocess.Popen( |
| 95 | + ['sudo', 'timedatectl', 'set-timezone', 'US/Detroit'], |
| 96 | + stdout=subprocess.PIPE, |
| 97 | + stderr=subprocess.PIPE).communicate()) |
| 98 | + |
| 99 | + subprocess.Popen( |
| 100 | + ['sudo', 'timedatectl', 'set-ntp', 'false'], |
| 101 | + stdout=subprocess.PIPE, |
| 102 | + stderr=subprocess.PIPE).communicate() |
| 103 | + |
| 104 | + subprocess.Popen( |
| 105 | + ['sudo', 'timedatectl', 'set-time', '2020-05-25 12:00:00'], |
| 106 | + stdout=subprocess.PIPE, |
| 107 | + stderr=subprocess.PIPE).communicate() |
| 108 | + |
| 109 | + # FULL |
| 110 | + output = self.backup_node(backup_dir, 'node', node, return_id=False) |
| 111 | + self.assertNotIn("backup ID in control file", output) |
| 112 | + |
| 113 | + # move to dst |
| 114 | + subprocess.Popen( |
| 115 | + ['sudo', 'timedatectl', 'set-time', '2020-10-25 12:00:00'], |
| 116 | + stdout=subprocess.PIPE, |
| 117 | + stderr=subprocess.PIPE).communicate() |
| 118 | + |
| 119 | + # DELTA |
| 120 | + output = self.backup_node( |
| 121 | + backup_dir, 'node', node, backup_type='delta', return_id=False) |
| 122 | + self.assertNotIn("backup ID in control file", output) |
| 123 | + |
| 124 | + subprocess.Popen( |
| 125 | + ['sudo', 'timedatectl', 'set-time', '2020-12-01 12:00:00'], |
| 126 | + stdout=subprocess.PIPE, |
| 127 | + stderr=subprocess.PIPE).communicate() |
| 128 | + |
| 129 | + # DELTA |
| 130 | + self.backup_node(backup_dir, 'node', node, backup_type='delta') |
| 131 | + |
| 132 | + output = self.show_pb(backup_dir, as_json=False, as_text=True) |
| 133 | + self.assertNotIn("backup ID in control file", output) |
| 134 | + |
| 135 | + subprocess.Popen( |
| 136 | + ['sudo', 'timedatectl', 'set-ntp', 'true'], |
| 137 | + stdout=subprocess.PIPE, |
| 138 | + stderr=subprocess.PIPE).communicate() |
| 139 | + |
| 140 | + sleep(10) |
| 141 | + |
| 142 | + self.backup_node(backup_dir, 'node', node, backup_type='delta') |
| 143 | + |
| 144 | + output = self.show_pb(backup_dir, as_json=False, as_text=True) |
| 145 | + self.assertNotIn("backup ID in control file", output) |
| 146 | + |
| 147 | + subprocess.Popen( |
| 148 | + ['sudo', 'timedatectl', 'set-timezone', 'US/Moscow'], |
| 149 | + stdout=subprocess.PIPE, |
| 150 | + stderr=subprocess.PIPE).communicate() |
| 151 | + |
| 152 | + # Clean after yourself |
| 153 | + self.del_test_dir(module_name, fname) |
| 154 | + |
| 155 | + @unittest.skip("skip") |
| 156 | + def test_dst_timezone_handling_backward_compatibilty(self): |
| 157 | + """for manual testing""" |
| 158 | + fname = self.id().split('.')[3] |
| 159 | + backup_dir = os.path.join(self.tmp_path, module_name, fname, 'backup') |
| 160 | + node = self.make_simple_node( |
| 161 | + base_dir=os.path.join(module_name, fname, 'node'), |
| 162 | + initdb_params=['--data-checksums'], |
| 163 | + pg_options={'autovacuum': 'off'}) |
| 164 | + |
| 165 | + self.init_pb(backup_dir) |
| 166 | + self.add_instance(backup_dir, 'node', node) |
| 167 | + self.set_archiving(backup_dir, 'node', node) |
| 168 | + node.slow_start() |
| 169 | + |
| 170 | + subprocess.Popen( |
| 171 | + ['sudo', 'timedatectl', 'set-timezone', 'US/Detroit'], |
| 172 | + stdout=subprocess.PIPE, |
| 173 | + stderr=subprocess.PIPE).communicate() |
| 174 | + |
| 175 | + subprocess.Popen( |
| 176 | + ['sudo', 'timedatectl', 'set-ntp', 'false'], |
| 177 | + stdout=subprocess.PIPE, |
| 178 | + stderr=subprocess.PIPE).communicate() |
| 179 | + |
| 180 | + subprocess.Popen( |
| 181 | + ['sudo', 'timedatectl', 'set-time', '2020-05-25 12:00:00'], |
| 182 | + stdout=subprocess.PIPE, |
| 183 | + stderr=subprocess.PIPE).communicate() |
| 184 | + |
| 185 | + # FULL |
| 186 | + self.backup_node(backup_dir, 'node', node, old_binary=True, return_id=False) |
| 187 | + |
| 188 | + # move to dst |
| 189 | + subprocess.Popen( |
| 190 | + ['sudo', 'timedatectl', 'set-time', '2020-10-25 12:00:00'], |
| 191 | + stdout=subprocess.PIPE, |
| 192 | + stderr=subprocess.PIPE).communicate() |
| 193 | + |
| 194 | + # DELTA |
| 195 | + output = self.backup_node( |
| 196 | + backup_dir, 'node', node, backup_type='delta', old_binary=True, return_id=False) |
| 197 | + |
| 198 | + subprocess.Popen( |
| 199 | + ['sudo', 'timedatectl', 'set-time', '2020-12-01 12:00:00'], |
| 200 | + stdout=subprocess.PIPE, |
| 201 | + stderr=subprocess.PIPE).communicate() |
| 202 | + |
| 203 | + # DELTA |
| 204 | + self.backup_node(backup_dir, 'node', node, backup_type='delta') |
| 205 | + |
| 206 | + output = self.show_pb(backup_dir, as_json=False, as_text=True) |
| 207 | + self.assertNotIn("backup ID in control file", output) |
| 208 | + |
| 209 | + subprocess.Popen( |
| 210 | + ['sudo', 'timedatectl', 'set-ntp', 'true'], |
| 211 | + stdout=subprocess.PIPE, |
| 212 | + stderr=subprocess.PIPE).communicate() |
| 213 | + |
| 214 | + sleep(10) |
| 215 | + |
| 216 | + self.backup_node(backup_dir, 'node', node, backup_type='delta') |
| 217 | + |
| 218 | + output = self.show_pb(backup_dir, as_json=False, as_text=True) |
| 219 | + self.assertNotIn("backup ID in control file", output) |
| 220 | + |
| 221 | + subprocess.Popen( |
| 222 | + ['sudo', 'timedatectl', 'set-timezone', 'US/Moscow'], |
| 223 | + stdout=subprocess.PIPE, |
| 224 | + stderr=subprocess.PIPE).communicate() |
| 225 | + |
| 226 | + # Clean after yourself |
| 227 | + self.del_test_dir(module_name, fname) |
0 commit comments