1*6777b538SAndroid Build Coastguard Worker#!/usr/bin/env python 2*6777b538SAndroid Build Coastguard Worker# Copyright 2019 The Chromium Authors 3*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 4*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file. 5*6777b538SAndroid Build Coastguard Worker 6*6777b538SAndroid Build Coastguard Worker"""Simple script for xvfb_unittest to launch. 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard WorkerThis script outputs formatted data to stdout for the xvfb unit tests 9*6777b538SAndroid Build Coastguard Workerto read and compare with expected output. 10*6777b538SAndroid Build Coastguard Worker""" 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Workerfrom __future__ import print_function 13*6777b538SAndroid Build Coastguard Worker 14*6777b538SAndroid Build Coastguard Workerimport os 15*6777b538SAndroid Build Coastguard Workerimport signal 16*6777b538SAndroid Build Coastguard Workerimport sys 17*6777b538SAndroid Build Coastguard Workerimport time 18*6777b538SAndroid Build Coastguard Worker 19*6777b538SAndroid Build Coastguard Worker 20*6777b538SAndroid Build Coastguard Workerdef print_signal(sig, *_): 21*6777b538SAndroid Build Coastguard Worker # print_function does not guarantee its output won't be interleaved 22*6777b538SAndroid Build Coastguard Worker # with other logging elsewhere, but it does guarantee its output 23*6777b538SAndroid Build Coastguard Worker # will appear intact. Because the tests parse via starts_with, prefix 24*6777b538SAndroid Build Coastguard Worker # with a newline. These tests were previously flaky due to output like 25*6777b538SAndroid Build Coastguard Worker # > Signal: 1 <other messages>. 26*6777b538SAndroid Build Coastguard Worker print('\nSignal :{}'.format(sig)) 27*6777b538SAndroid Build Coastguard Worker 28*6777b538SAndroid Build Coastguard Worker 29*6777b538SAndroid Build Coastguard Workerif __name__ == '__main__': 30*6777b538SAndroid Build Coastguard Worker signal.signal(signal.SIGTERM, print_signal) 31*6777b538SAndroid Build Coastguard Worker signal.signal(signal.SIGINT, print_signal) 32*6777b538SAndroid Build Coastguard Worker 33*6777b538SAndroid Build Coastguard Worker # test the subprocess display number. 34*6777b538SAndroid Build Coastguard Worker print('\nDisplay :{}'.format(os.environ.get('DISPLAY', 'None'))) 35*6777b538SAndroid Build Coastguard Worker 36*6777b538SAndroid Build Coastguard Worker if len(sys.argv) > 1 and sys.argv[1] == '--sleep': 37*6777b538SAndroid Build Coastguard Worker time.sleep(2) # gives process time to receive signal. 38