[pve-devel] applied: [PATCH common 3/3] tests: update to utc flag and add daylight savings test

Thomas Lamprecht t.lamprecht at proxmox.com
Wed Oct 31 15:11:16 CET 2018


Am 10/31/2018 um 10:54 AM schrieb Wolfgang Bumiller:
> Signed-off-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
> ---
>  test/calendar_event_test.pl | 35 +++++++++++++++++++++++++++++++++--
>  1 file changed, 33 insertions(+), 2 deletions(-)
> 
> diff --git a/test/calendar_event_test.pl b/test/calendar_event_test.pl
> index 0defafa..abbd74c 100755
> --- a/test/calendar_event_test.pl
> +++ b/test/calendar_event_test.pl
> @@ -3,12 +3,17 @@
>  use lib '../src';
>  use strict;
>  use warnings;
> +use POSIX ();
>  use Data::Dumper;
>  use Time::Local;
>  use Test::More;
>  
>  use PVE::CalendarEvent;
>  
> +# Time tests should run in a controlled setting
> +$ENV{TZ} = 'UTC';
> +POSIX::tzset();
> +
>  my $alldays = [0,1,2,3,4,5,6];
>  my $tests = [
>      [
> @@ -183,6 +188,7 @@ foreach my $test (@$tests) {
>      my $timespec;
>      eval { $timespec = PVE::CalendarEvent::parse_calendar_event($t); };
>      my $err = $@;
> +    delete $timespec->{utc};
>  
>      if ($expect->{error}) {
>  	chomp $err if $err;
> @@ -197,11 +203,36 @@ foreach my $test (@$tests) {
>  
>      foreach my $nt (@$nextsync) {
>  	my ($last, $expect_next) = @$nt;
> -
>  	my $msg = "next event '$t' $last => ${expect_next}";
> -	my $next = PVE::CalendarEvent::compute_next_event($timespec, $last, 1);
> +	$timespec->{utc} = 1;
> +	my $next = PVE::CalendarEvent::compute_next_event($timespec, $last);
>  	is($next, $expect_next, $msg);
>      }
>  };
>  
> +sub tztest {
> +    my ($calspec, $last) = @_;
> +    my $spec = PVE::CalendarEvent::parse_calendar_event($calspec);
> +    return PVE::CalendarEvent::compute_next_event($spec, $last);
> +}
> +
> +# Test loop termination at CEST/CET switch (cannot happen here in UTC)
> +is(tztest('mon..fri', timelocal(0, 0, 0, 28, 9, 2018)),
> +                      timelocal(0, 0, 0, 29, 9, 2018));
> +is(tztest('mon..fri UTC', timelocal(0, 0, 0, 28, 9, 2018)),
> +                          timelocal(0, 0, 0, 29, 9, 2018));
> +
> +# Now in the affected time zone
> +$ENV{TZ} = ':Europe/Vienna';
> +POSIX::tzset();
> +is(tztest('mon..fri', timelocal(0, 0, 0, 28, 9, 2018)),
> +                      timelocal(0, 0, 0, 29, 9, 2018));
> +# Specifically requesting UTC in the calendar spec means the resulting output
> +# time as seen locally (timelocal() as opposed to timegm()) is shifted by 1
> +# hour.
> +is(tztest('mon..fri UTC', timelocal(0, 0, 0, 28, 9, 2018)),
> +                          timelocal(0, 0, 1, 29, 9, 2018));
> +$ENV{TZ} = 'UTC';
> +POSIX::tzset();
> +
>  done_testing();
> 

applied, thanks!




More information about the pve-devel mailing list