* Add a method Machine::sleep to sleep N seconds in virtual (guest)
time rather than host real time. svn path=/nixos/trunk/; revision=25491
This commit is contained in:
parent
8db3bdc4fc
commit
60b6eb7579
|
@ -467,10 +467,12 @@ sub screenshot {
|
|||
# testing the existence of /tmp/.X11-unix/X0 is insufficient.
|
||||
sub waitForX {
|
||||
my ($self, $regexp) = @_;
|
||||
retry sub {
|
||||
my ($status, $out) = $self->execute("xwininfo -root > /dev/null 2>&1");
|
||||
return 1 if $status == 0;
|
||||
}
|
||||
$self->nest("waiting for the X11 server", sub {
|
||||
retry sub {
|
||||
my ($status, $out) = $self->execute("xwininfo -root > /dev/null 2>&1");
|
||||
return 1 if $status == 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
@ -484,12 +486,14 @@ sub getWindowNames {
|
|||
|
||||
sub waitForWindow {
|
||||
my ($self, $regexp) = @_;
|
||||
retry sub {
|
||||
my @names = $self->getWindowNames;
|
||||
foreach my $n (@names) {
|
||||
return 1 if $n =~ /$regexp/;
|
||||
$self->nest("waiting for a window to appear", sub {
|
||||
retry sub {
|
||||
my @names = $self->getWindowNames;
|
||||
foreach my $n (@names) {
|
||||
return 1 if $n =~ /$regexp/;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
@ -518,4 +522,11 @@ sub sendChars {
|
|||
}
|
||||
|
||||
|
||||
# Sleep N seconds (in virtual guest time, not real time).
|
||||
sub sleep {
|
||||
my ($self, $time) = @_;
|
||||
$self->succeed("sleep $time");
|
||||
}
|
||||
|
||||
|
||||
1;
|
||||
|
|
|
@ -46,7 +46,7 @@ with pkgs;
|
|||
|
||||
# More DNS-SD.
|
||||
$one->execute("avahi-publish -s \"This is a test\" _test._tcp 123 one=1 &");
|
||||
sleep 5;
|
||||
$one->sleep(5);
|
||||
print STDERR
|
||||
$two->mustSucceed("avahi-browse -r -t _test._tcp | tee out");
|
||||
$two->mustSucceed("test `wc -l < out` -gt 0");
|
||||
|
|
|
@ -13,8 +13,8 @@
|
|||
''
|
||||
$machine->waitForX;
|
||||
$machine->execute("firefox file://${pkgs.valgrind}/share/doc/valgrind/html/index.html &");
|
||||
$machine->waitForWindow(/Valgrind.*Shiretoko/);
|
||||
sleep 40; # wait until Firefox has finished loading the page
|
||||
$machine->waitForWindow(qr/Valgrind/);
|
||||
$machine->sleep(40); # wait until Firefox has finished loading the page
|
||||
$machine->screenshot("screen");
|
||||
'';
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
$machine->waitForWindow(qr/messages.*KWrite/);
|
||||
$machine->waitForWindow(qr/Valgrind.*Konqueror/);
|
||||
|
||||
sleep 5;
|
||||
$machine->sleep(5);
|
||||
|
||||
$machine->screenshot("screen");
|
||||
'';
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
$machine->waitForJob("tty1");
|
||||
$machine->sendChars("alice\n");
|
||||
$machine->waitUntilSucceeds("pgrep login");
|
||||
$machine->execute("sleep 2"); # urgh: wait for `Password:'
|
||||
$machine->sleep(2); # urgh: wait for `Password:'
|
||||
$machine->sendChars("foobar\n");
|
||||
$machine->waitUntilSucceeds("pgrep -u alice bash");
|
||||
$machine->sendChars("touch done\n");
|
||||
|
@ -27,7 +27,7 @@
|
|||
subtest "virtual console switching", sub {
|
||||
$machine->sendKeys("alt-f10");
|
||||
$machine->waitUntilSucceeds("[ \$(fgconsole) = 10 ]");
|
||||
$machine->execute("sleep 2"); # allow fbcondecor to catch up (not important)
|
||||
$machine->sleep(2); # allow fbcondecor to catch up (not important)
|
||||
$machine->screenshot("syslog");
|
||||
};
|
||||
|
||||
|
@ -35,10 +35,10 @@
|
|||
# ownership as needed.
|
||||
subtest "device permissions", sub {
|
||||
$machine->succeed("chvt 1");
|
||||
$machine->execute("sleep 1"); # urgh
|
||||
$machine->sleep(1); # urgh
|
||||
$machine->succeed("getfacl /dev/snd/timer | grep -q alice");
|
||||
$machine->succeed("chvt 2");
|
||||
$machine->execute("sleep 1"); # urgh
|
||||
$machine->sleep(1); # urgh
|
||||
$machine->fail("getfacl /dev/snd/timer | grep -q alice");
|
||||
};
|
||||
|
||||
|
|
|
@ -56,18 +56,18 @@ rec {
|
|||
$server->waitUntilSucceeds("grep -q 'Foo.*entered the game' /tmp/log");
|
||||
$server->waitUntilSucceeds("grep -q 'Bar.*entered the game' /tmp/log");
|
||||
|
||||
sleep 10; # wait for a while to get a nice screenshot
|
||||
$server->sleep(10); # wait for a while to get a nice screenshot
|
||||
|
||||
$client1->block();
|
||||
|
||||
sleep 20;
|
||||
$server->sleep(20);
|
||||
|
||||
$client1->screenshot("screen1");
|
||||
$client2->screenshot("screen2");
|
||||
|
||||
$client1->unblock();
|
||||
|
||||
sleep 10;
|
||||
$server->sleep(10);
|
||||
|
||||
$client1->screenshot("screen3");
|
||||
$client2->screenshot("screen4");
|
||||
|
|
|
@ -69,7 +69,7 @@
|
|||
$client->waitForX;
|
||||
$client->execute("konqueror http://webserver/projects/test &");
|
||||
$client->waitForWindow(qr/Test.*Konqueror/);
|
||||
sleep 30; # loading takes a long time
|
||||
$client->sleep(30); # loading takes a long time
|
||||
|
||||
$client->screenshot("screen");
|
||||
'';
|
||||
|
|
Loading…
Reference in a new issue