From a5d56e3b5443263b53b0487c81125123411bd0cf Mon Sep 17 00:00:00 2001 From: Philip Hands Date: Wed, 11 May 2016 17:11:01 +0200 Subject: move cucumber things under cucumber/ --- .../features/support/helpers/display_helper.rb | 48 ++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 cucumber/features/support/helpers/display_helper.rb (limited to 'cucumber/features/support/helpers/display_helper.rb') diff --git a/cucumber/features/support/helpers/display_helper.rb b/cucumber/features/support/helpers/display_helper.rb new file mode 100644 index 00000000..b4dce733 --- /dev/null +++ b/cucumber/features/support/helpers/display_helper.rb @@ -0,0 +1,48 @@ + +class Display + + def initialize(domain, x_display) + @domain = domain + @x_display = x_display + end + + def active? + p = IO.popen(["xprop", "-display", @x_display, + "-name", "#{@domain} (1) - Virt Viewer", + :err => ["/dev/null", "w"]]) + Process.wait(p.pid) + $?.success? + end + + def start + @virtviewer = IO.popen(["virt-viewer", "--direct", + "--kiosk", + "--reconnect", + "--connect", "qemu:///system", + "--display", @x_display, + @domain, + :err => ["/dev/null", "w"]]) + # We wait for the display to be active to not lose actions + # (e.g. key presses via sikuli) that come immediately after + # starting (or restoring) a vm + try_for(20, { :delay => 0.1, :msg => "virt-viewer failed to start"}) { + active? + } + end + + def stop + return if @virtviewer.nil? + Process.kill("TERM", @virtviewer.pid) + @virtviewer.close + rescue IOError + # IO.pid throws this if the process wasn't started yet. Possibly + # there's a race when doing a start() and then quickly running + # stop(). + end + + def restart + stop + start + end + +end -- cgit v1.2.3-70-g09d2