File: switch.t

package info (click to toggle)
libuuid-perl 0.37-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,092 kB
  • sloc: ansic: 2,374; perl: 580; makefile: 5
file content (88 lines) | stat: -rw-r--r-- 1,742 bytes parent folder | download
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#
# start with persist on.
#
use strict;
use warnings;
use Test::More;
use MyNote;
use Config;
use File::Temp;
use Time::HiRes ();

use vars qw(@OPTS $tmpdir $fn0 $fn1);

BEGIN {
    $tmpdir = File::Temp->newdir(CLEANUP => 0);
    $fn0 = File::Temp::tempnam($tmpdir, 'UUID.test.');
    $fn1 = File::Temp::tempnam($tmpdir, 'UUID.test.');
    @OPTS = ('uuid1', ':mac=random', ':persist='.$fn0);
}

use UUID @OPTS;

my ($ts0, $ts1);

ok 1, 'loaded';

ok -d $tmpdir, 'tmpdir exists';
ok !-e $fn0,   'start persist missing';
ok !-e $fn1,   'later persist missing';

uuid1();

ok -e $fn0, 'start persist found';
$ts0 = gettime($fn0);
#note $ts0;

UUID::_persist(undef);
uuid1();

$ts1 = gettime($fn0);
is $ts1, $ts0, 'start persist unchanged';

UUID::_persist($fn1);
uuid1();

ok -e $fn1, 'later persist found';
$ts1 = gettime($fn1);
cmp_ok $ts1, '>', $ts0, 'later larger than start';

UUID::_persist($fn0);
uuid1();

$ts0 = gettime($fn0);
cmp_ok $ts0, '>', $ts1, 'latest largest';

# close state so Win32 can cleanup
UUID::_persist(undef);
unlink $fn0;
unlink $fn1;
rmdir  $tmpdir;

done_testing;

sub gettime {
    my ($fn) = @_;
    open my $fh, '<', $fn or return 0;
    #clock: 3735 tv: 0000001707180262 00390359 adj: 00000000
    my $dat = <$fh>;
    undef $fh;
    note $dat;
    my @vals = (split /\s+/, $dat)[3,4,6];

    # sleep here so the timestamps actually change.
    if (Time::HiRes::d_nanosleep()) {
        Time::HiRes::nanosleep(10_000_000); # 10ms
    }
    elsif (Time::HiRes::d_usleep()) {
        Time::HiRes::usleep(10_000); # 10ms
    }
    elsif ($Config{d_select}) {
        select undef, undef, undef, 0.01; # 10ms
    }
    else {
        sleep 1;
    }

    return sprintf '%d.%07d', $vals[0], $vals[1]*10+$vals[2];
}