1#!/usr/bin/env python3 2import sys 3import os.path 4 5HOME = os.path.expanduser("~/") 6 7#the glx tests: 8GLX_SPHERES = ["/usr/bin/glxspheres64"] 9GLX_GEARS = ["/usr/bin/glxgears", "-geometry", "1240x900"] 10 11#the plain X11 tests: 12X11_PERF = ["/usr/bin/x11perf", "-resize", "-all"] 13XTERM_TEST = ["/usr/bin/xterm", "-geometry", "160x60", "-e", "while true; do dmesg; done"] 14FAKE_CONSOLE_USER_TEST = ["/usr/bin/xterm", "-geometry", "160x60", "-e", "PYTHONPATH=`pwd` ./tests/xpra/test_apps/simulate_console_user.py"] 15 16#the screensaver tests: 17XSCREENSAVERS_PATH = "/usr/libexec/xscreensaver" 18 19#games 20NEXUIZ_TEST = ["/usr/bin/nexuiz-glx", "-benchmark", "demos/demo1", "-nosound"] 21XONOTIC_TEST = ["/usr/bin/xonotic-glx", "-benchmark", "demos/the-big-keybench"] 22 23VLC_BIN = "/usr/bin/vlc" 24MPLAYER_BIN = "/usr/bin/mplayer" 25GTKPERF_TEST = "bash -c 'while true; do gtkperf -a; done'" 26MPLAYER_SOUND_LOOP_TEST = "%s -loop 0 ./test.mp3" % MPLAYER_BIN 27VLC_SOUND_TEST = (VLC_BIN, "-L", "--audio-visual=visual", "./test.mp3") 28VLC_VIDEO_TEST = (VLC_BIN, "-L", "./test.avi") 29MPLAYER_VIDEO_TEST = "%s -loop 0 ./test.avi" % MPLAYER_BIN 30 31#ugly code duplicated from setup.py! 32def get_xorg_bin(): 33 # Detect Xorg Binary 34 if os.path.exists("/usr/libexec/Xorg.bin"): 35 #fedora 21? 36 return "/usr/libexec/Xorg.bin" 37 elif os.path.exists("/usr/libexec/Xorg"): 38 #fedora 22 39 return "/usr/libexec/Xorg" 40 else: 41 #look for it in $PATH: 42 for x in os.environ.get("PATH").split(os.pathsep): 43 xorg = os.path.join(x, "Xorg") 44 if os.path.isfile(xorg): 45 return xorg 46 return None 47 48class Config(): 49 def __init__(self): 50 def screensaver(x): 51 for d in [os.path.join(sys.prefix, "bin"), XSCREENSAVERS_PATH, "/usr/bin", "/usr/local/bin"]: 52 f = os.path.join(d, x) 53 if os.path.exists(f) and os.path.isfile(f): 54 return f 55 return None 56 57 ALL_SCREENSAVER_TESTS = [screensaver(x) for x in ["rss-glx-lattice", "rss-glx-plasma", "deluxe", "eruption", "memscroller", "moebiusgears", "polytopes"]] 58 #SOME_SCREENSAVER_TESTS = [screensaver(x) for x in ["memscroller", "eruption", "xmatrix"]] 59 SOME_SCREENSAVER_TESTS = [screensaver(x) for x in ["memscroller", "moebiusgears", "polytopes", "rss-glx-lattice"]] 60 61 #our selection: 62 self.TEST_CANDIDATES = [screensaver("deluxe")] 63 self.TEST_CANDIDATES = self.X11_TESTS + SOME_SCREENSAVER_TESTS + self.GAMES_TESTS 64 self.TEST_CANDIDATES = self.GLX_TESTS + self.X11_TESTS + ALL_SCREENSAVER_TESTS + self.GAMES_TESTS 65 self.TEST_CANDIDATES = self.GLX_TESTS + self.X11_TESTS + ALL_SCREENSAVER_TESTS + self.SOUND_TESTS + self.VIDEO_TESTS + self.GAMES_TESTS 66 67 #now we filter all the test commands and only keep the valid ones: 68 print("Checking for test commands:") 69 self.X11_TEST_COMMANDS = [] 70 for x in self.TEST_CANDIDATES: 71 if x is None: 72 continue 73 if type(x) in (list, tuple) and not os.path.exists(x[0]): 74 print("* WARNING: cannot find %s - removed from tests" % str(x)) 75 else: 76 print("* adding test: %s" % str(x)) 77 self.X11_TEST_COMMANDS.append(x) 78 79 CUSTOM_PARAMS = "" 80 TEST_CANDIDATES = [] 81 X11_TEST_COMMANDS = [] 82 83 IP = "127.0.0.1" #this is your IP 84 PORT = 10000 #the port to test on 85 DISPLAY_NO = 10 #the test DISPLAY no to use 86 START_SERVER = True #if False, you are responsible for starting it 87 #and the data will not be available 88 89 #tools we use: 90 IPTABLES_CMD = ["sudo", "/usr/sbin/iptables"] 91 TRICKLE_BIN = "/usr/bin/trickle" 92 TCBENCH = "/opt/VirtualGL/bin/tcbench" 93 TCBENCH_LOG = "./tcbench.log" 94 XORG_BIN = get_xorg_bin() 95 VGLRUN_BIN = "/usr/bin/vglrun" 96 97 XORG_CONFIG = "%s/xorg.conf" % HOME 98 XORG_LOG = "%s/Xorg.%s.log" % (HOME, DISPLAY_NO) 99 PREVENT_SLEEP_COMMAND = ["xdotool", "keydown", "Shift_L", "keyup", "Shift_L"] 100 101 SETTLE_TIME = 3 #how long to wait before we start measuring 102 MEASURE_TIME = 120 #run for N seconds 103 COLLECT_STATS_TIME = 10 #collect statistics every N seconds 104 SERVER_SETTLE_TIME = 3 #how long we wait for the server to start 105 DEFAULT_TEST_COMMAND_SETTLE_TIME = 1 #how long we wait after starting the test command 106 #this is the default value, some tests may override this below 107 108 TEST_XPRA = True 109 TEST_VNC = False #WARNING: VNC not tested recently, probably needs updating 110 USE_IPTABLES = False #this requires iptables to be setup so we can use it for accounting 111 USE_VIRTUALGL = False #allows us to run GL games and benchmarks using the GPU 112 PREVENT_SLEEP = True 113 114 STARTING_TEST = 0 #the index of the first test to run 115 LIMIT_TESTS = 999 #the limit of tests to be run 116 MAX_ERRORS = 100 #allow this many tests to cause errors before aborting 117 XPRA_USE_PASSWORD = False 118 119 NO_SHAPING = (0, 0, 0) 120 #TRICKLE_SHAPING_OPTIONS = [NO_SHAPING] 121 #TRICKLE_SHAPING_OPTIONS = [NO_SHAPING, (1024, 1024, 20)] 122 #TRICKLE_SHAPING_OPTIONS = [(1024, 1024, 20), (128, 32, 40), (0, 0, 0)] 123 #TRICKLE_SHAPING_OPTIONS = [NO_SHAPING, (1024, 256, 20), (1024, 256, 300), (128, 32, 100), (32, 8, 200)] 124 #TRICKLE_SHAPING_OPTIONS = [NO_SHAPING, (1024, 256, 20), (256, 64, 50), (128, 32, 100), (32, 8, 200)] 125 TRICKLE_SHAPING_OPTIONS = [NO_SHAPING] 126 127 GLX_TESTS = [GLX_SPHERES, GLX_GEARS] 128 129 #X11_TESTS = [X11_PERF, FAKE_CONSOLE_USER_TEST, GTKPERF_TEST] 130 X11_TESTS = [X11_PERF, XTERM_TEST, FAKE_CONSOLE_USER_TEST, GTKPERF_TEST] 131 132 #some commands (games especially) may need longer to startup: 133 TEST_COMMAND_SETTLE_TIME = {} 134 135 #games tests: 136 #for more info, see here: http://dri.freedesktop.org/wiki/Benchmarking 137 TEST_COMMAND_SETTLE_TIME[NEXUIZ_TEST[0]] = 10 138 TEST_COMMAND_SETTLE_TIME[XONOTIC_TEST[0]] = 20 139 GAMES_TESTS = [NEXUIZ_TEST, XONOTIC_TEST] 140 141 #sound tests 142 VIDEO_TESTS = [] 143 SOUND_TESTS = [] 144 if not os.path.exists("test.mp3"): 145 print("test.mp3 not found, the corresponding sound mplayer sound and vlc video tests are disabled") 146 else: 147 SOUND_TESTS.append(MPLAYER_SOUND_LOOP_TEST) 148 VIDEO_TESTS.append(VLC_SOUND_TEST) 149 150 #video tests 151 if not os.path.exists("test.avi"): 152 print("test.avi not found, vlc and mplayer video tests are disabled") 153 else: 154 VIDEO_TESTS.append(VLC_VIDEO_TEST) 155 VIDEO_TESTS.append(MPLAYER_VIDEO_TEST) 156 157 XPRA_FORCE_XDUMMY = False 158 159 #XPRA_QUALITY_OPTIONS = [40, 90] 160 #XPRA_QUALITY_OPTIONS = [80] 161 XPRA_QUALITY_OPTIONS = [10, 40, 80, 90] 162 163 #XPRA_COMPRESSORS_OPTIONS = ["lz4", "zlib", "lzo", "zlib,lzo", "all", "none"] 164 XPRA_COMPRESSORS_OPTIONS = ["all"] 165 166 #XPRA_COMPRESSION_LEVEL_OPTIONS = [0, 3, 9] 167 #XPRA_COMPRESSION_LEVEL_OPTIONS = [0, 3] 168 XPRA_COMPRESSION_LEVEL_OPTIONS = [None] 169 170 #XPRA_PACKET_ENCODERS_OPTIONS = ["rencode", "bencode", "yaml"] 171 XPRA_PACKET_ENCODERS_OPTIONS = ["rencode"] 172 173 #XPRA_CONNECT_OPTIONS = [("ssh", None), ("tcp", None), ("unix-domain", None)] 174 XPRA_CONNECT_OPTIONS = [("tcp", None)] 175 #if XPRA_VERSION_NO>=[0, 7]: 176 # XPRA_CONNECT_OPTIONS.append(("tcp", "AES")) 177 178 #XPRA_TEST_ENCODINGS = ["png", "x264", "mmap"] 179 #XPRA_TEST_ENCODINGS = ["png", "jpeg", "x264", "vpx", "mmap"] 180 #XPRA_TEST_ENCODINGS = ["png", "rgb", "jpeg", "h264", "vp8", "vp9", "mmap"] 181 XPRA_TEST_ENCODINGS = ["webp", "jpeg", "auto"] 182 183 #XPRA_ENCODING_QUALITY_OPTIONS = {"jpeg" : XPRA_QUALITY_OPTIONS, 184 # "x264" : XPRA_QUALITY_OPTIONS+[-1]} 185 XPRA_ENCODING_QUALITY_OPTIONS = {"jpeg" : [-1], "x264" : [-1]} 186 187 XPRA_ENCODING_SPEED_OPTIONS = {"rgb24" : [-1, 0, 100]} 188 189 #XPRA_OPENGL_OPTIONS = {"x264" : [True, False], 190 # "vpx" : [True, False]} 191 #only test default opengl setting: 192 XPRA_OPENGL_OPTIONS = {} 193 194 #XPRA_CLIENT_TYPES = ["python2", "html5"] 195 XPRA_CLIENT_TYPES = ["python2", "html5"] 196 XPRA_HTML5_BROWSERS = ( 197 ["firefox", "-P", "Test"], 198 ["google-chrome", "--user-data-dir=~/Downloads/TEMP"], 199 ) 200 201 XPRA_MDNS = False 202 TEST_SOUND = False 203 204 TEST_NAMES = {GTKPERF_TEST: "gtkperf", 205 MPLAYER_SOUND_LOOP_TEST : "mplayer sound", 206 VLC_SOUND_TEST : "vlc sound visual", 207 MPLAYER_VIDEO_TEST : "mplayer video", 208 VLC_VIDEO_TEST : "vlc video", 209 } 210 211 XVNC_BIN = "/usr/bin/Xvnc" 212 XVNC_SERVER_START_COMMAND = [XVNC_BIN, "--rfbport=%s" % PORT, 213 "+extension", "GLX", 214 "--SecurityTypes=None", 215 "--SendCutText=0", "--AcceptCutText=0", "--AcceptPointerEvents=0", "--AcceptKeyEvents=0", 216 "-screen", "0", "1240x900x24", 217 ":%s" % DISPLAY_NO] 218 XVNC_SERVER_STOP_COMMANDS = [["killall Xvnc"]] #stopped via kill - beware, this will kill *all* Xvnc sessions! 219 VNCVIEWER_BIN = "/usr/bin/vncviewer" 220 221 #VNC_ENCODINGS = ["Tight", "ZRLE", "hextile", "raw", "auto"] 222 VNC_ENCODINGS = ["auto"] 223 #VNC_ZLIB_OPTIONS = [-1, 3, 6, 9] 224 VNC_ZLIB_OPTIONS = [-1, 9] 225 #VNC_COMPRESSION_OPTIONS = [0, 3, 8, 9] 226 VNC_COMPRESSION_OPTIONS = [0, 3] 227 #VNC_JPEG_OPTIONS = [-1, 0, 8] 228 VNC_JPEG_OPTIONS = [-1, 4] 229 230 def print_options(self): 231 print("\nCurrent Settings:") 232 print("-"*80) 233 print("CUSTOM_PARAMS: %s" % self.CUSTOM_PARAMS) 234 print("GLX_TESTS: %s" % self.GLX_TESTS) 235 print("X11_TESTS: %s" % self.X11_TESTS) 236 print("GAMES_TESTS: %s" % self.GAMES_TESTS) 237 print("VIDEO_TESTS %s" % self.VIDEO_TESTS) 238 print("SOUND_TESTS %s" % self.SOUND_TESTS) 239 print("TEST_NAMES: %s" % self.TEST_NAMES) 240 print("TEST_CANDIDATES: %s" % self.TEST_CANDIDATES) 241 print("X11_TEST_COMMANDS: %s" % self.X11_TEST_COMMANDS) 242 print("TEST_COMMAND_SETTLE_TIME: %s" % self.TEST_COMMAND_SETTLE_TIME) 243 print("IP: %s" % self.IP) 244 print("PORT: %s" % self.PORT) 245 print("DISPLAY_NO: %s" % self.DISPLAY_NO) 246 print("START_SERVER: %s" % self.START_SERVER) 247 print("SETTLE_TIME: %s" % self.SETTLE_TIME) 248 print("MEASURE_TIME: %s" % self.MEASURE_TIME) 249 print("COLLECT_STATS_TIME: %s" % self.COLLECT_STATS_TIME) 250 print("SERVER_SETTLE_TIME: %s" % self.SERVER_SETTLE_TIME) 251 print("DEFAULT_TEST_COMMAND_SETTLE_TIME: %s" % self.DEFAULT_TEST_COMMAND_SETTLE_TIME) 252 print("TEST_XPRA: %s" % self.TEST_XPRA) 253 print("TEST_VNC: %s" % self.TEST_VNC) 254 print("USE_IPTABLES: %s" % self.USE_IPTABLES) 255 print("USE_VIRTUALGL: %s" % self.USE_VIRTUALGL) 256 print("PREVENT_SLEEP: %s" % self.PREVENT_SLEEP) 257 print("LIMIT_TESTS: %s" % self.LIMIT_TESTS) 258 print("MAX_ERRORS: %s" % self.MAX_ERRORS) 259 print("NO_SHAPING: %s" % str(self.NO_SHAPING)) 260 print("TRICKLE_SHAPING_OPTIONS: %s" % self.TRICKLE_SHAPING_OPTIONS) 261 print("XPRA_USE_PASSWORD: %s" % self.XPRA_USE_PASSWORD) 262 print("XPRA_FORCE_XDUMMY: %s" % self.XPRA_FORCE_XDUMMY) 263 print("XPRA_QUALITY_OPTIONS: %s" % self.XPRA_QUALITY_OPTIONS) 264 print("XPRA_COMPRESSORS_OPTIONS: %s" % self.XPRA_COMPRESSORS_OPTIONS) 265 print("XPRA_COMPRESSION_LEVEL_OPTIONS: %s" % self.XPRA_COMPRESSION_LEVEL_OPTIONS) 266 print("XPRA_PACKET_ENCODERS_OPTIONS: %s" % self.XPRA_PACKET_ENCODERS_OPTIONS) 267 print("XPRA_CONNECT_OPTIONS: %s" % self.XPRA_CONNECT_OPTIONS) 268 print("XPRA_TEST_ENCODINGS: %s" % self.XPRA_TEST_ENCODINGS) 269 print("XPRA_ENCODING_QUALITY_OPTIONS: %s" % self.XPRA_ENCODING_QUALITY_OPTIONS) 270 print("XPRA_ENCODING_SPEED_OPTIONS: %s" % str(self.XPRA_ENCODING_SPEED_OPTIONS)) 271 print("XPRA_OPENGL_OPTIONS: %s" % self.XPRA_OPENGL_OPTIONS) 272 print("XPRA_MDNS: %s" % self.XPRA_MDNS) 273 print("XPRA_CLIENT_TYPES: %s" % self.XPRA_CLIENT_TYPES) 274 print("XPRA_HTML5_BROWSERS: %s" % (self.XPRA_HTML5_BROWSERS,)) 275 print("TEST_SOUND: %s" % self.TEST_SOUND) 276 print("XVNC_BIN: %s" % self.XVNC_BIN) 277 print("XVNC_SERVER_START_COMMAND: %s" % self.XVNC_SERVER_START_COMMAND) 278 print("XVNC_SERVER_STOP_COMMANDS: %s" % self.XVNC_SERVER_STOP_COMMANDS) 279 print("VNCVIEWER_BIN: %s" % self.VNCVIEWER_BIN) 280 print("VNC_ENCODINGS: %s" % self.VNC_ENCODINGS) 281 print("VNC_ZLIB_OPTIONS: %s" % self.VNC_ZLIB_OPTIONS) 282 print("VNC_COMPRESSION_OPTIONS: %s" % self.VNC_COMPRESSION_OPTIONS) 283 print("VNC_JPEG_OPTIONS: %s" % self.VNC_JPEG_OPTIONS) 284 print("-"*80) 285