tweaked checksum test to work in differing timezones

This commit is contained in:
Frank Cizmich
2015-01-21 14:25:09 -02:00
parent 63c953834c
commit f52271e999

View File

@@ -389,41 +389,59 @@ $ni = make_nibble_iter(
select => $chunk_checksum, select => $chunk_checksum,
); );
# The following tests need a trick to make the timestamp column consistent
# across different test servers.
# Sakila uses '2006-02-15 11:44:00' for this column, which is converted to
# a different epoch vaule in different timezones, resulting in different
# checksum values according to the tz of the server where sakila was created.
# save original value, just in case
my ($orig_datetime) = $dbh->selectrow_array("SELECT last_update FROM sakila.country LIMIT 1");
# get locat datetime for UTC 2006-02-15 11:44:00
my ($local_datetime_for_fixed_timestamp) = $dbh->selectrow_array("SELECT FROM_UNIXTIME(1140003840)");
$dbh->do("UPDATE sakila.country SET last_update = '$local_datetime_for_fixed_timestamp'");
# now the following checksums are fixed, no matter the test server timezone
# where the sakila database was created
my $row = $ni->next(); my $row = $ni->next();
is_deeply( is_deeply(
$row, $row,
[25, '303d7b91'], [25, 'a947cb12'],
"SELECT chunk checksum 1 FROM sakila.country" "SELECT chunk checksum 1 FROM sakila.country"
) or diag(Dumper($row)); ) or diag(Dumper($row));
$row = $ni->next(); $row = $ni->next();
is_deeply( is_deeply(
$row, $row,
[25, '5a5d203a'], [25, 'c32790b9'],
"SELECT chunk checksum 2 FROM sakila.country" "SELECT chunk checksum 2 FROM sakila.country"
) or diag(Dumper($row)); ) or diag(Dumper($row));
$row = $ni->next(); $row = $ni->next();
is_deeply( is_deeply(
$row, $row,
[25, '7328e41c'], [25, 'ea52549f'],
"SELECT chunk checksum 3 FROM sakila.country" "SELECT chunk checksum 3 FROM sakila.country"
) or diag(Dumper($row)); ) or diag(Dumper($row));
$row = $ni->next(); $row = $ni->next();
is_deeply( is_deeply(
$row, $row,
[25, '7ef0c3e0'], [25, 'e78a7363'],
"SELECT chunk checksum 4 FROM sakila.country" "SELECT chunk checksum 4 FROM sakila.country"
) or diag(Dumper($row)); ) or diag(Dumper($row));
$row = $ni->next(); $row = $ni->next();
is_deeply( is_deeply(
$row, $row,
[9, '40067b8e'], [9, 'd97ccb0d'],
"SELECT chunk checksum 5 FROM sakila.country" "SELECT chunk checksum 5 FROM sakila.country"
) or diag(Dumper($row)); ) or diag(Dumper($row));
# revert timestamp to original value, in case other tests use it
$dbh->do("UPDATE sakila.country SET last_update = '$orig_datetime'");
# ######################################################################### # #########################################################################
# exec_nibble callback and explain_sth # exec_nibble callback and explain_sth
# ######################################################################### # #########################################################################