Merge lp:~fader/checkbox-qa/expanded-test-coverage into lp:checkbox-qa

Proposed by Ronald McCollam
Status: Needs review
Proposed branch: lp:~fader/checkbox-qa/expanded-test-coverage
Merge into: lp:checkbox-qa
Diff against target: None lines
To merge this branch: bzr merge lp:~fader/checkbox-qa/expanded-test-coverage
Reviewer Review Type Date Requested Status
Zygmunt Krynicki (community) Needs Information
Review via email: mp+10648@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Ronald McCollam (fader) wrote :

Added a number of tests

9. By Ronald McCollam

Added scripts I forgot to copy in before; removed notes to send information to OEM team list

Revision history for this message
Zygmunt Krynicki (zyga) wrote :

Hi, is this still relevant?

review: Needs Information

Unmerged revisions

9. By Ronald McCollam

Added scripts I forgot to copy in before; removed notes to send information to OEM team list

8. By Ronald McCollam <fader@baltar>

Added manual tests for extending audio coverage.

7. By Ronald McCollam <fader@baltar>

Imported disk benchmark test from OEM team.

6. By Ronald McCollam <fader@baltar>

Imported firewire and fingerprint reader tests from OEM team.

5. By Ronald McCollam <fader@baltar>

Imported compiz test from OEM team; initial DVD playback test.

4. By Ronald McCollam <fader@baltar>

Fixed pipeline issues in audio silence detection

3. By Ronald McCollam <fader@baltar>

Added audio suite and numerous audio tests, including silence detection

2. By Ronald McCollam <fader@baltar>

Added KMS and Xorg suites; VT switch test for KMS and some xrandr tests for Xorg.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file 'README-audio'
2--- README-audio 1970-01-01 00:00:00 +0000
3+++ README-audio 2009-08-24 14:57:07 +0000
4@@ -0,0 +1,44 @@
5+Something like the below could be used to generate a set of tests for
6+each detected audio device. I'm not yet convinced this is the right
7+approach though -- it might be better to rely on user interaction for
8+this, as it's difficult to determine the capabilities and inputs/outputs
9+of various sound devices programmatically.
10+
11+----------------------------------------
12+
13+#!/usr/bin/env python
14+
15+f = open('/proc/asound/cards')
16+cards = f.readlines()
17+
18+tests = open('./audio_tests.txt', 'w')
19+
20+# Annoyingly, /proc/asound/cards lists each card on two lines.
21+linectr = 0
22+cardctr = 0
23+while linectr < len(cards):
24+ tests.write("type: test\n")
25+ tests.write("plugin: manual\n")
26+ tests.write("name: alsa_record_playback_card" + str(linectr) + "\n")
27+ tests.write("requires:\n alsa.type == 'record'\n alsa.type == 'playback'\n")
28+ tests.write("command: alsa_record_playback\n")
29+ tests.write("description:\n")
30+ tests.write(" This test is for the following sound device:\n")
31+ tests.write(" .\n")
32+ tests.write(" " + cards[linectr].strip() + "\n")
33+ tests.write(" " + cards[linectr+1].strip() + "\n")
34+ tests.write(" .\n")
35+ tests.write(" Connect a microphone to the microphone port of this \\\n")
36+ tests.write(" device, if applicable. Connect speakers or headphones \\\n")
37+ tests.write(" to this device, if applicable.\\\n")
38+ tests.write(" .\n")
39+ tests.write(" Click the Test button, then speak into the microphone. \\\n")
40+ tests.write(" After a few seconds, your speech will be played back to \\\n")
41+ tests.write(" you.\n")
42+ tests.write(" .\n")
43+ tests.write(" Did you hear your speech played back?\n\n")
44+ linectr = linectr + 2
45+ cardctr = cardctr + 1
46+
47+f.close()
48+tests.close()
49
50=== added file 'scripts/audio_detect_silence'
51--- scripts/audio_detect_silence 1970-01-01 00:00:00 +0000
52+++ scripts/audio_detect_silence 2009-08-24 14:31:19 +0000
53@@ -0,0 +1,42 @@
54+#!/bin/bash
55+
56+OUTPUT=`mktemp -u`.wav
57+GST_COMMAND="gst-launch audiotestsrc wave=sine freq=512 ! audioconvert ! audioresample ! gconfaudiosink"
58+#SOX_COMMAND="rec -q -r 44100 -p | sox -p $OUTPUT silence -l 1 00:00:00.5 -45d -1 00:00:00.5 -45d"
59+REC_COMMAND="rec -q -r 44100 $OUTPUT"
60+SOX_COMMAND="sox $OUTPUT $OUTPUT.1.wav silence -l 1 00:00:00.5 -45d -1 00:00:00.5 -45d"
61+
62+# Start playing a sine wave
63+$GST_COMMAND &
64+GST_PID=$!
65+
66+# Listen for it on the audio input
67+$REC_COMMAND &
68+REC_PID=$!
69+
70+# Wait a bit, then stop playing
71+sleep 2
72+kill $REC_PID $GST_PID
73+
74+# Look for silence
75+$SOX_COMMAND
76+
77+# See if the filesize > 80 bytes on the output file
78+# (80 bytes is the largest wav file that will be generated for silence,
79+# so if we have that size we detected nothing but silence)
80+FILESIZE=`stat -c%s "$OUTPUT.1.wav"`
81+rm "$OUTPUT" "$OUTPUT.1.wav"
82+if [ "$FILESIZE" == "" ]
83+then
84+ echo "Unable to find output file." >&2
85+ exit 2
86+fi
87+
88+if [ "$FILESIZE" -lt "81" ]
89+then
90+ echo "No audio detected." >&2
91+ exit 1
92+else
93+ echo "$FILESIZE bytes of audio recorded."
94+ exit 0
95+fi
96
97=== added file 'scripts/compiz-check'
98--- scripts/compiz-check 1970-01-01 00:00:00 +0000
99+++ scripts/compiz-check 2009-08-24 14:42:52 +0000
100@@ -0,0 +1,968 @@
101+#!/bin/bash
102+# Compiz-Check -- script to test if your system is able to run Compiz
103+#
104+# Copyright (c) 2008 Nick Bauermeister <Forlong@gmx.de>
105+#
106+# This program is free software. Feel free to redistribute and/or
107+# modify it under the terms of the GNU General Public License v3
108+# as published by the Free Software Foundation.
109+#
110+# This program is distributed in the hope that it will be useful
111+# but comes WITHOUT ANY WARRANTY; without even the implied warranty
112+# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
113+# See the GNU General Public License for more details.
114+
115+VERSION="0.4.5-4"
116+
117+usage()
118+{
119+ printf "\nAbout:\n"
120+ printf "%6s Compiz-Check will check if your system satisfies all requirements to\n"
121+ printf "%6s run Compiz properly.\n"
122+ printf "%6s It will also help you trace back the problem(s) you may be facing.\n\n"
123+ printf "%6s Visit\033[1m http://forlong.blogage.de/article/pages/Compiz-Check \033[0m\n"
124+ printf "%6s for further information.\n\n"
125+ printf "Usage:\n"
126+ printf "%6s Run this script without any arguments.\n\n"
127+ printf "Available arguments:\n"
128+ printf " -h or --help %8s List available arguments and usage (this message).\n"
129+ printf " -v or --version %5s Print version of Compiz-Check in use.\n\n"
130+}
131+
132+banana()
133+{
134+ printf "//\\ \nV%2s\\ \n \\%2s\\ \n%2s\\ \033[1;33m.\`-.\n%3s|\\ \`. \`.\n%3s( \\%2s\`. \`-.%24s_,.-:\\ \n%4s\\ \\%3s\`.%2s\`-._%13s__..--' ,-';/\n%5s\\ \`.%3s\`-.%3s\`-..___..---'%3s_.--' ,'/\n%6s\`. \`.%4s\`-._%8s__..--'%4s,' /\n%8s\`. \`-_%4s \`\`--..''%6s _.-' ,'\n%10s\`-_ \`-.___%8s__,--'%3s,'\n%13s\`-.__%2s\`----'''%4s__.-'\n%18s\`--..____..--'\033[0m\n\n"
135+}
136+
137+if [ $# != 0 ]; then
138+ case $1 in
139+ -h | --help)
140+ usage
141+ exit 0
142+ ;;
143+ -v | --version)
144+ echo $VERSION
145+ exit 0
146+ ;;
147+ --banana)
148+ banana
149+ exit 0
150+ ;;
151+ *)
152+ printf "Error, unknown option: \"$1\"\nRun \033[1m$0 --help\033[0m for details.\n"
153+ exit 1
154+ ;;
155+ esac
156+fi
157+
158+# Exit when running as root
159+if [ "$(whoami)" = root ]; then
160+ printf "\n Do not run this script as root, because it might distort its outcome.\n Aborting.\n\n"
161+ exit 1
162+fi
163+
164+# Needed for lspci, because it's not in the $PATH of every distro
165+export PATH=$PATH:/sbin:/usr/sbin
166+
167+# Can't handle more than one graphics card or X server at a time
168+if [ $(lspci | grep VGA -c) -gt 1 ]; then
169+ ERROR_DEVICE="graphics chip"
170+elif [ $(xdpyinfo | grep -i dimensions: -c) -gt 1 ]; then
171+ ERROR_DEVICE="running X server"
172+fi
173+
174+if [ ! -z "$ERROR_DEVICE" ]; then
175+ printf "\n More than one $ERROR_DEVICE detected -- sorry, the script can not handle that.\n Aborting.\n\n"
176+ exit 1
177+fi
178+
179+# Skip system checks if they are harmful or useless
180+SKIP=yes
181+
182+# Coloured output (there are other emphases hardcoded in the script, so
183+# it would be pretty useless changing those here)
184+UNKNOWN="\033[1;31mUnknown\033[0m"
185+OK=" \033[1;32mOK\033[0m "
186+FAIL="\033[1;31mFAIL\033[0m"
187+SKIPPING="\033[33mSKIP\033[0m"
188+WARN="\033[33mWARN\033[0m"
189+
190+# General distribution info file
191+DIST_INFO="/etc/lsb-release"
192+
193+# Detect distribution
194+# If your distro is not on this list, contact me.
195+detect_distro()
196+{
197+ if [ -d /etc/linuxmint ]; then
198+ DISTRIB_ID="Linux Mint"
199+ return 0
200+ elif [ -r $DIST_INFO ]; then
201+ . $DIST_INFO
202+ fi
203+
204+ if [ -z $DISTRIB_ID ]; then
205+ unset DISTRIB_RELEASE
206+ if [ -f /etc/arch-release ]; then
207+ DISTRIB_ID="Arch Linux"
208+ elif [ -r /etc/knoppix-version ]; then
209+ DISTRIB_ID="Knoppix"
210+ DISTRIB_RELEASE="($(cat /etc/knoppix_version))"
211+ elif [ -r /etc/sidux-version ]; then
212+ DISTRIB_ID="Sidux"
213+ DISTRIB_RELEASE="($(cat /etc/sidux-version | awk '{print $4}'))"
214+ elif [ -r /etc/debian_version ]; then
215+ DISTRIB_ID="Debian GNU/Linux"
216+ DISTRIB_RELEASE="($(cat /etc/debian_version))"
217+ elif [ -r /etc/fedora-release ]; then
218+ DISTRIB_ID="$(cat /etc/redhat-release)"
219+ elif [ -r /etc/gentoo-release ]; then
220+ DISTRIB_ID="Gentoo"
221+ DISTRIB_RELEASE="($(cat /etc/gentoo-release | awk '{print $5}'))"
222+ elif [ -f /etc/lfs-version ]; then
223+ DISTRIB_ID="Linux from scratch"
224+ elif [ -r /etc/pclinuxos-release ]; then
225+ DISTRIB_ID="PCLinuxOS"
226+ elif [ -f /etc/mandriva-release ] || [ -f /etc/mandrake-release ]; then
227+ DISTRIB_ID="Mandriva"
228+ elif [ -f /etc/redhat-release ]; then
229+ DISTRIB_ID="RedHat"
230+ elif [ -r /etc/vector-version ]; then
231+ DISTRIB_ID="VectorLinux"
232+ DISTRIB_RELEASE="($(cat /etc/vector-version))"
233+ elif [ -r /etc/slackware-version ]; then
234+ DISTRIB_ID="$(cat /etc/slackware-version)"
235+ elif [ -f /etc/release ]; then
236+ DISTRIB_ID="Solaris"
237+ elif [ -r /etc/SuSE-release ]; then
238+ DISTRIB_ID="$(grep -i suse /etc/SuSE-release)"
239+ elif [ -f /etc/yellowdog-release ]; then
240+ DISTRIB_ID="YellowDog Linux"
241+ elif [ -f /etc/zenwalk-version ]; then
242+ DISTRIB_ID="Zenwalk"
243+ else
244+ DISTRIB_ID="Unknown"
245+ fi
246+ fi
247+}
248+
249+# Detect desktop environment in use
250+detect_de()
251+{
252+ if [ ! -z $GNOME_DESKTOP_SESSION_ID ]; then
253+ DE=GNOME
254+ elif [ "$KDE_SESSION_VERSION" = 4 ]; then
255+ DE=KDE4
256+ elif [ "$KDE_FULL_SESSION" = true ]; then
257+ DE=KDE
258+ elif xprop -root _DT_SAVE_MODE | grep ' = \"xfce4\"$' >/dev/null 2>&1 ; then
259+ DE=Xfce
260+ else
261+ DE=Unknown
262+ fi
263+}
264+
265+# Detect graphics card
266+detect_video()
267+{
268+ if lspci | grep -q VGA ; then
269+ VIDEO=$(lspci | grep VGA | sed 's/.*: //')
270+ else
271+ VIDEO=$UNKNOWN # TODO abort?
272+ fi
273+}
274+
275+XSET=$(command -v xset)
276+
277+# Detect location of the Xorg log file
278+if [ ! -z $XSET ]; then
279+ XORG_LOG=$($XSET q | grep "Log file" | awk '{print $3}')
280+fi
281+
282+# Fallback Xorg log
283+if [ -z $XORG_LOG ]; then
284+ if [ -f /var/log/Xorg.0.log ]; then
285+ XORG_LOG=/var/log/Xorg.0.log
286+ fi
287+fi
288+
289+# advise to look for proprietary drivers in Ubuntu
290+detect_driver_manager()
291+{
292+ if [ $(echo "$DISTRIB_RELEASE" | sed 's/\.//g') -gt 710 ] && [ $DE = GNOME ] || [ $DE = Xfce ]; then
293+ DRVS_MNGR=hardy-gtk
294+ elif [ $(echo "$DISTRIB_RELEASE" | sed 's/\.//g') -gt 710 ] && [ $DE = KDE ]; then
295+ DRVS_MNGR=hardy-kde
296+ elif [ "$DISTRIB_RELEASE" = "7.10" ] && [ $DE = GNOME ] || [ $DE = Xfce ]; then
297+ DRVS_MNGR=gutsy-gtk
298+ elif [ "$DISTRIB_RELEASE" = "7.10" ] && [ $DE = KDE ]; then
299+ DRVS_MNGR=gutsy-kde
300+ elif [ "$DISTRIB_RELEASE" = "7.04" ] && [ $DE = GNOME ] || [ $DE = Xfce ]; then
301+ DRVS_MNGR=feisty-gtk
302+ fi
303+}
304+
305+# Drivers known to work with Compiz
306+WHITELIST="nvidia intel i810 ati radeon fglrx"
307+
308+# Drivers taken from Hardy's /usr/lib/xorg/modules/drivers/ directory
309+# plus radeonhd, vboxvideo, nouveau and the proprietary one's.
310+# Contact me, if your driver is not on this list.
311+KNOWN_DRIVERS="$WHITELIST apm ark chips cirrus cyrix fbdev glint i128
312+ i740 imstt mga mtx neomagic newport nsc nv openchrome
313+ rendition s3virge savage siliconmotion sis sisusb tdfx
314+ tga trident tseng vesa vga via vmware vboxvideo voodoo
315+ radeonhd s3 nouveau"
316+
317+# Detect driver in use.
318+# TODO not really satisfied with this. Just because the module is
319+# loaded doesn't necessarily mean the driver is properly working.
320+detect_driver()
321+{
322+ if [ -z $XORG_LOG ]; then
323+ DRV=$SKIPPING
324+ CHECKS=$SKIP
325+ SKIP_MESSAGE="Unable to locate your Xorg log"
326+ return 1
327+ elif [ ! -r $XORG_LOG ]; then
328+ DRV=$SKIPPING
329+ CHECKS=$SKIP
330+ SKIP_MESSAGE="No permission to read $XORG_LOG"
331+ return 1
332+ fi
333+
334+ for i in $KNOWN_DRIVERS ; do
335+ if grep Loading $XORG_LOG | grep -q "${i}_drv\.so" &&
336+ ! grep Unloading $XORG_LOG | grep -q "${i}_drv\.so" ; then
337+ DRV=$i
338+ fi
339+ done
340+
341+ if [ -z $DRV ]; then
342+ DRV=$UNKNOWN
343+ return 0
344+ fi
345+
346+# glxinfo might kill X if vesa or vga are in use (LP#119341)
347+# 'LIBGL_ALWAYS_INDIRECT=1 glxinfo' kills X on openchrome driver
348+# according to user feedback (same for unichrome)
349+# nv driver blocks AIGLX
350+ case $DRV in
351+ vesa | vga | nv)
352+ CHECKS=$SKIP
353+ SKIP_MESSAGE="$DRV driver in use"
354+ ERROR_MESSAGE="The $DRV driver is not capable of running Compiz, you need to install\n the proper driver for your graphics card."
355+ if [ "$DISTRIB_ID" = Ubuntu ]; then
356+ detect_driver_manager
357+ fi
358+ ;;
359+ unichrome | openchrome)
360+ CHECKS=$SKIP
361+ SKIP_MESSAGE="$DRV driver in use" #TODO ERROR_MESSAGE
362+ ;;
363+ esac
364+}
365+
366+# Detect rendering method
367+detect_rendering()
368+{
369+ XVINFO=$(command -v xvinfo)
370+
371+ if [ ! -z $XVINFO ]; then
372+ if $XVINFO | grep -q Xgl ; then
373+ RENDER=Xgl
374+ return 0
375+ fi
376+ fi
377+
378+ if xdpyinfo | grep -q NV-GLX ; then
379+ RENDER=Nvidia
380+ return 0
381+ fi
382+
383+ AIGLX_STAT="AIGLX enabled\|AIGLX disabled"
384+
385+ if [ -z $XORG_LOG ] || [ ! -r $XORG_LOG ]; then
386+ RENDER=$SKIPPING
387+ return 1
388+ elif grep "$AIGLX_STAT" $XORG_LOG | tail -1 | grep -q "AIGLX enabled" ; then
389+ RENDER=AIGLX
390+ return 0
391+ fi
392+
393+ if [ -z $XVINFO ]; then
394+ RENDER=$SKIPPING
395+ CHECKS=$SKIP
396+ SKIP_MESSAGE="Unable to check for Xgl, could not run xvinfo"
397+ else
398+ RENDER="\033[31mNone\033[0m"
399+ CHECKS=$SKIP # Checks can be OK nonetheless
400+ SKIP_MESSAGE="No rendering method in use (AIGLX, Xgl or Nvidia)"
401+ fi
402+}
403+
404+GLXINFO=$(command -v glxinfo)
405+
406+# Check for texture_from_pixmap
407+check_tfp()
408+{
409+ if [ "$RENDER" = Xgl ]; then
410+ TFP=$SKIPPING
411+ return 0
412+ elif [ -z $GLXINFO ]; then
413+ TFP=$SKIPPING
414+ SKIP_MESSAGE="glxinfo not installed"
415+ ERROR_MESSAGE="The program glxinfo is needed to perform a number of crucial tests."
416+ if [ -e /etc/debian_version ]; then
417+ DIST_HELP="You need to install the package \033[1mmesa-utils\033[0m\n Type e.g. \033[1msudo apt-get install mesa-utils\033[0m to install it."
418+ elif [ -e /etc/mandriva-release ]; then
419+ DIST_HELP="You need to install \033[1mmesa-demos\033[0m\n"
420+ fi
421+ return 0
422+ fi
423+
424+ if [ $(glxinfo 2>/dev/null | grep GLX_EXT_texture_from_pixmap -c) -gt 2 ]; then
425+ TFP=$OK
426+ elif [ $(LIBGL_ALWAYS_INDIRECT=1 glxinfo 2>/dev/null | grep GLX_EXT_texture_from_pixmap -c) -gt 2 ]; then
427+ TFP=$OK
428+ else
429+ TFP=$FAIL
430+ fi
431+}
432+
433+# Check for non power of two texture support
434+check_npo2()
435+{
436+ if [ "$RENDER" = Xgl ] || [ -z $GLXINFO ]; then
437+ NPO2=$SKIPPING
438+ elif glxinfo 2>/dev/null | egrep -q '(GL_ARB_texture_non_power_of_two|GL_NV_texture_rectangle|GL_EXT_texture_rectangle|GL_ARB_texture_rectangle)' ; then
439+ NPO2=$OK
440+ else
441+ NPO2=$FAIL
442+ fi
443+}
444+
445+# Check for composite extension
446+check_composite()
447+{
448+ if xdpyinfo -queryExtensions | grep -q Composite ; then
449+ COMP=$OK
450+ else
451+ COMP=$FAIL
452+ fi
453+}
454+
455+# Check for FBConfig
456+check_fbconfig()
457+{
458+ if [ -z $GLXINFO ]; then
459+ FBC=$SKIPPING
460+ elif glxinfo 2>/dev/null | grep -q GLX.*fbconfig ; then
461+ FBC=$OK
462+ elif [ "$DRV" = via ]; then
463+ FBC=$SKIPPING # 'glxinfo -i' kills X on some setups using the via driver
464+ elif glxinfo -i 2>/dev/null | grep -q GLX.*fbconfig ; then
465+ FBC=$OK
466+ else
467+ FBC=$FAIL
468+ fi
469+}
470+
471+# Check if fglrx driver supports composite
472+check_fglrx()
473+{
474+ if [ "$DRV" = fglrx ]; then
475+ FGLRXINFO=$(command -v fglrxinfo)
476+ if [ ! -z "$FGLRXINFO" ]; then
477+ if $FGLRXINFO | grep -q mesa ; then
478+ STATUS=$FAIL
479+ ERROR="Fglrx driver not properly installed, you are using the Mesa driver."
480+ return 0
481+ else
482+ DIGITS=$($FGLRXINFO | grep version | sed 's/[a-Z:(.)]//g')
483+ for i in $DIGITS ; do
484+ if [ $i -gt 100000 ]; then
485+ FGLRX_VERSION=$i
486+ fi
487+ done
488+ FGLRX_COMPOSITE=206958 # 2.0.6958 first release to support AIGLX
489+ if [ ! -z $FGLRX_VERSION ]; then
490+ if [ $FGLRX_VERSION -lt $FGLRX_COMPOSITE ] && [ "$RENDER" != Xgl ]; then
491+ STATUS=$FAIL
492+ ERROR="The version of fglrx in use needs Xgl to work with Compiz."
493+ ERROR_MESSAGE="Older versions of fglrx do not support AIGLX, so you have to use Xgl in order\n to make Compiz run with this driver.\n You can either install Xgl or a newer version of the fglrx driver."
494+ if [ "$DISTRIB_ID" = Ubuntu ]; then
495+ if [ $(echo "$DISTRIB_RELEASE" | sed 's/\.//g') -gt 704 ]; then
496+ DIST_HELP="Type \033[1msudo apt-get install xserver-xgl\033[0m to install Xgl."
497+ fi
498+ fi
499+ return 0
500+ fi
501+ return 1
502+ fi
503+ STATUS=$SKIPPING
504+ SKIP_MESSAGE="Unable to detect fglrx driver version in use."
505+ return 0
506+ fi
507+ fi
508+ STATUS=$FAIL
509+ ERROR="Fglrx driver not properly installed. Could not run fglrxinfo."
510+ return 0
511+ fi
512+
513+ return 1
514+}
515+
516+if [ -z $XDG_CONFIG_DIRS ]; then
517+ XDG_CONFIG_DIRS=/etc/xdg
518+fi
519+
520+if [ -z $XDG_CONFIG_HOME ]; then
521+ XDG_CONFIG_HOME=$HOME/.config
522+fi
523+
524+COMPIZ_MNGR_HOME=$XDG_CONFIG_HOME/compiz/compiz-manager
525+
526+# Check if checks are skipped (by compiz-manager, not here!)
527+check_skip()
528+{
529+ OLD_IFS=$IFS
530+ IFS=:
531+ for m in $XDG_CONFIG_DIRS
532+ do
533+ test -r $m/compiz/compiz-manager && . $m/compiz/compiz-manager
534+ done
535+ IFS=$OLD_IFS
536+ unset OLD_IFS
537+
538+ if [ -r $COMPIZ_MNGR_HOME ]; then
539+ . $COMPIZ_MNGR_HOME
540+ fi
541+
542+ if [ "$SKIP_CHECKS" = yes ]; then
543+ return 1
544+ fi
545+
546+ return 0
547+}
548+
549+# Check max texture size compared to resolution in use
550+check_resolution()
551+{
552+ if [ -z $GLXINFO ]; then
553+ STATUS=$SKIPPING
554+ return 0
555+ fi
556+
557+ TEXTURE_LIMIT=$(glxinfo -l 2>/dev/null | grep GL_MAX_TEXTURE_SIZE | sed 's/.*=[^0-9]//g')
558+ RESOLUTION=$(xdpyinfo | grep -i dimensions: | sed 's/[^0-9]*pixels.*(.*).*//' | sed 's/[^0-9x]*//')
559+ VRES=$(echo $RESOLUTION | sed 's/.*x//')
560+ HRES=$(echo $RESOLUTION | sed 's/x.*//')
561+
562+ if [ -z $TEXTURE_LIMIT ]; then
563+ STATUS=$SKIPPING
564+ SKIP_MESSAGE="Unable to detect maximum 3D texture size"
565+ return 0
566+ elif [ $VRES -gt $TEXTURE_LIMIT ] || [ $HRES -gt $TEXTURE_LIMIT ]; then
567+ STATUS=$FAIL
568+ ERROR="Your current resolution is too high to run Compiz."
569+ ERROR_MESSAGE="Your resolution is \033[1m${RESOLUTION}\033[0m but the maximum 3D texture size that your\n graphics card is capable of is \033[1m${TEXTURE_LIMIT}x${TEXTURE_LIMIT}\033[0m. Thus Compiz will not be able to run\n on this setup. You have to decrease the resolution first (in case you are\n using a dual-head setup, try disabling one monitor and run the script again)."
570+ return 0
571+ fi
572+
573+ return 1
574+}
575+
576+
577+# Check if there is already another compositing manager running
578+check_compositor()
579+{
580+ XCOMPMGR_PID=$(ps -o pid= -C xcompmgr)
581+ METACITY_PID=$(ps -o pid= -C metacity)
582+ XFWM_PID=$(ps -o pid= -C xfwm4)
583+
584+ if [ ! -z $XCOMPMGR_PID ]; then
585+ OTHER_COMP=true
586+ COMP_MSG="It has been detected, that you are currently running \033[1mxcompmgr\033[0m, which is a\n standalone compositing manager."
587+ QUERY_XCOMPMGR=yes
588+ elif [ ! -z $METACITY_PID ]; then
589+ METACITY=$(command -v metacity)
590+ if [ ! -z $METACITY ]; then
591+ if [ $($METACITY --version | grep metacity | awk '{print $2}' | sed 's/\.//g') -gt 2200 ]; then
592+ GCONFTOOL=$(command -v gconftool-2)
593+ if [ ! -z $GCONFTOOL ]; then
594+ if $GCONFTOOL -a /apps/metacity/general | grep -q compositing_manager &&
595+ [ "$($GCONFTOOL -g /apps/metacity/general/compositing_manager)" = true ]; then
596+ OTHER_COMP=true
597+ WM_COMP=GNOME
598+ QUERY_METACITY=yes
599+ fi
600+ fi
601+ fi
602+ fi
603+ elif [ ! -z $XFWM_PID ]; then
604+ if [ -r $XDG_CONFIG_HOME/xfce4/mcs_settings/wmtweaks.xml ]; then
605+ if grep UseCompositing $XDG_CONFIG_HOME/xfce4/mcs_settings/wmtweaks.xml | grep -q 'value="1"' &&
606+ ! ps -ef | grep xfwm4 | grep -q compositor=off ; then
607+ OTHER_COMP=true
608+ WM_COMP=Xfce
609+ QUERY_XFWM=yes
610+ fi
611+ fi
612+ fi
613+
614+ if [ ! -z $OTHER_COMP ]; then
615+ ERROR="Another compositing manager in use."
616+ if [ ! -z $WM_COMP ]; then
617+ COMP_MSG="The default window manager of $WM_COMP has its own compositing manager to\n provide basic desktop effects."
618+ fi
619+ ERROR_MESSAGE="${COMP_MSG}\n If this one is in use, Compiz will not be able to run."
620+ return 0
621+ fi
622+
623+ return 1
624+}
625+
626+# Hardy blacklists laptops using ati/radeon driver (LP#201330)
627+check_laptop_ati()
628+{
629+ if [ "$DISTRIB_ID $DISTRIB_RELEASE" = "Ubuntu 8.04" ]; then
630+ if [ "$DRV" = ati ] || [ "$DRV" = radeon ] ; then
631+ if laptop-detect && check_skip ; then
632+ ERROR="Laptop using $DRV driver."
633+ ERROR_MESSAGE="It has been detected, that you are running a laptop with an ATI chip.\n The $DRV driver supports Compiz out-of-the-box but because of a nasty bug\n in the driver that causes X to freeze on some cards, this particular\n combination had to be blacklisted in Ubuntu \"Hardy Heron\".\n\n In case you already used Compiz successfully on Ubuntu 7.10 (Gutsy), it is\n safe to skip the blacklist."
634+ QUERY_SKIP=yes
635+ return 0
636+ fi
637+ fi
638+ fi
639+
640+ return 1
641+}
642+
643+# Check if "Composite" has been disabled in the xorg.conf
644+check_cmpst_xorg()
645+{
646+ if [ "$COMP" = "$OK" ]; then
647+ return 1
648+ fi
649+
650+ # Detect location of the Xorg log file
651+ if [ ! -z $XSET ]; then
652+ XORG_CONF=$($XSET q | grep "Config file" | awk '{print $3}')
653+ fi
654+
655+ # Fallback xorg.conf
656+ if [ -z $XORG_CONF ]; then
657+ if [ -f /etc/X11/xorg.conf ]; then
658+ XORG_CONF=/etc/X11/xorg.conf
659+ else
660+ return 1
661+ fi
662+ fi
663+
664+ if [ ! -r $XORG_CONF ]; then
665+ SKIP_MESSAGE="No permission to read $XORG_CONF"
666+ return 1
667+ else
668+ CMPST=$(grep -i "Composite" $XORG_CONF)
669+ if echo $CMPST | grep -qi "0" ; then
670+ COMPST_STAT='"0"'
671+ COMPST_FIX='"1"'
672+ elif echo $CMPST | grep -qi "Disable" ; then
673+ COMPST_STAT='"Disable"'
674+ COMPST_FIX='"Enable"'
675+ elif echo $CMPST | grep -qi "false" ; then
676+ COMPST_STAT='"false"'
677+ COMPST_FIX='"true"'
678+ fi
679+ fi
680+
681+ case $DE in
682+ GNOME)
683+ EDITOR=gedit
684+ ;;
685+ KDE4 | KDE)
686+ EDITOR=kate
687+ ;;
688+ Xfce)
689+ EDITOR=mousepad
690+ ;;
691+ esac
692+
693+ if [ ! -z $COMPST_STAT ]; then
694+ ERROR="Composite manually disabled"
695+ ERROR_MESSAGE="It has been detected that the \"Composite\" option of your ${XORG_CONF}\n has been set to $COMPST_STAT"
696+ if [ "$DRV" = fglrx ] && [ $FGLRX_VERSION -lt $FGLRX_COMPOSITE ]; then
697+ return 0
698+ fi
699+ if [ ! -z $EDITOR ] && [ -x $EDITOR ]; then
700+ DIST_HELP="Open the file being root, e.g. \033[1msudo $EDITOR $XORG_CONF\033[0m\n Then change $COMPST_STAT to $COMPST_FIX and save. Finally restart X and try again."
701+ else
702+ DIST_HELP="Open the file being root and change $COMPST_STAT to $COMPST_FIX\n Then restart X and try again."
703+ fi
704+ return 0
705+ fi
706+
707+ return 1
708+}
709+
710+# Check for Software Rasterizer
711+check_rasterizer()
712+{
713+ if glxinfo 2>/dev/null | grep -q 'OpenGL renderer string: Software Rasterizer' ; then
714+ ERROR="Software Rasterizer in use" #TODO add $ERROR_MESSAGE
715+ return 0
716+ else
717+ return 1
718+ fi
719+}
720+
721+DISCLAIMER="You can skip this blacklist -- but keep in mind that you did so.\n Do not complain if you encounter any problems with Compiz afterwards."
722+
723+# Check if driver in use is on the whitelist
724+check_whitelist()
725+{
726+ for i in $WHITELIST ; do
727+ if [ "$DRV" = "$i" ]; then
728+ return 1
729+ fi
730+ done
731+
732+ if [ "$DRV" = "$UNKNOWN" ]; then
733+ DRV_MSG="Unknown driver in use."
734+ else
735+ DRV_MSG="Detected driver is not on the whitelist."
736+ fi
737+
738+ if [ "$TFP" = "$OK" -o "$SKIPPING" ] && [ "$NPO2" = "$OK" -o "$SKIPPING" ] &&
739+ [ "$COMP" = "$OK" ] && [ "$FBC" = "$OK" -o "$SKIPPING" ]; then
740+ if ! check_skip ; then
741+ return 1
742+ fi
743+ STATUS=$WARN
744+ WARNING=$DRV_MSG
745+ ERROR_MESSAGE="Your driver is not widely known to work with Compiz and thus may be\n blacklisted on certain distributions.\n\n $DISCLAIMER"
746+ QUERY_SKIP=yes
747+ return 0
748+ elif [ "$DRV" = vmware ] || [ "$DRV" = vboxvideo ]; then
749+ STATUS=$FAIL
750+ ERROR="$DRV driver in use"
751+ ERROR_MESSAGE="Compiz can not be run in a virtual environment."
752+ return 0
753+ fi
754+
755+ STATUS=$FAIL
756+ ERROR=$DRV_MSG
757+ ERROR_MESSAGE="Your driver is not known (most probably not able) to work with Compiz.\n See http://wiki.compiz-fusion.org/Hardware for details."
758+
759+ if [ "$DISTRIB_ID" = Ubuntu ]; then
760+ detect_driver_manager
761+ fi
762+
763+ return 0
764+}
765+
766+# PCI IDs that may be blacklist on certain distributions
767+# List taken from Gutsy
768+GUTSY_BLACKLIST="1002:5954 1002:5854 1002:5955 1002:4153 8086:2982 8086:2992
769+ 8086:29a2 8086:2a02 8086:2a12 8086:2972 1002:3152 1002:3150
770+ 1002:5462 1002:5653"
771+# Blacklisted IDs on Intrepid
772+BLACKLISTED_PCIIDS="$GUTSY_BLACKLIST 8086:1132 8086:2e02 8086:3577 8086:2562"
773+
774+# My own private PCI IDs (added for testing reasons)
775+# Please let me know if I really was that stupid to let those in here.
776+#BLACKLISTED_PCIIDS="$BLACKLISTED_PCIIDS 1002:4152 1002:4e50"
777+
778+# Check if PCI ID in use is on the blacklist
779+check_pciid()
780+{
781+ if [ "$DISTRIB_ID" = Ubuntu ] && [ "$DISTRIB_RELEASE" = "8.04" ]; then
782+ return 1
783+ fi
784+
785+ for PCIID in $BLACKLISTED_PCIIDS ; do
786+ if $(lspci -n | grep -q "$PCIID") && check_skip ; then
787+ STATUS=$WARN
788+ WARNING="PCI ID \033[1m${PCIID}\033[0m detected."
789+ ERROR_MESSAGE="Your particular graphics chip may be blacklisted on certain distributions.\n However that does not necessarily mean you will not be able to run Compiz.\n\n $DISCLAIMER"
790+ QUERY_SKIP=yes
791+ return 0
792+ fi
793+ done
794+
795+ return 1
796+}
797+
798+# Check for needed xdg files in Ubuntu
799+check_xdg()
800+{
801+ if [ "$DISTRIB_ID" = Ubuntu ]; then
802+ if [ $(echo "$DISTRIB_RELEASE" | sed 's/\.//g') -gt 704 ]; then
803+ XDG_COMPIZ=/etc/xdg/compiz
804+ if [ ! -e $XDG_COMPIZ/compiz-manager ] && [ -e /usr/bin/compiz.real ]; then
805+ check_skip
806+ if [ "$COMPIZ_BIN_PATH" = /usr/bin/ ] && [ "$COMPIZ_NAME" = compiz.real ] &&
807+ [ "$PLUGIN_PATH" = /usr/lib/compiz/ ]; then
808+ return 1
809+ else
810+ STATUS=$WARN
811+ WARNING="No path to Compiz found."
812+ ERROR_MESSAGE="In case you did not compile Compiz manually, this will result in Compiz\n failing to run."
813+ if [ -d $XDG_COMPIZ ]; then
814+ BACKUP=$(echo $(ls $XDG_COMPIZ | grep "compiz-manager\.") | awk '{print $1}')
815+ fi
816+ if [ ! -z $BACKUP ] ; then
817+ DIST_HELP="You can try to fix this, by typing the following command in the terminal:\n\033[1msudo mv $XDG_COMPIZ/$BACKUP $XDG_COMPIZ/compiz-manager\033[0m"
818+ fi
819+ return 0
820+ fi
821+ fi
822+ fi
823+ fi
824+
825+ return 1
826+}
827+
828+# Check if Nvidia card in use has enough memory
829+check_nvidia_mem()
830+{
831+ if [ "$DRV" = nvidia ]; then
832+ if [ "$RENDER" = Xgl ]; then
833+ STATUS=$SKIPPING
834+ SKIP_MESSAGE="Xgl on Nvidia chip."
835+ return 0
836+ fi
837+ NVIDIA_SETTINGS=$(command -v nvidia-settings)
838+ if [ ! -z $NVIDIA_SETTINGS ] ; then
839+ MEM=$($NVIDIA_SETTINGS -q VideoRam | egrep Attribute\ \'VideoRam\'\ .*: | cut -d: -f3 | sed 's/[^0-9]//g')
840+ NVIDIA_MEMORY=65536 # 64MB
841+ if [ "$MEM" -lt $NVIDIA_MEMORY ] && check_skip ; then
842+ STATUS=$WARN
843+ WARNING="Nvidia card has not enough memory ($MEM KB) to run Compiz properly."
844+ ERROR_MESSAGE="It is not recommended to run Compiz on a Nvidia chip with such a low amount\n of memory. Because of that, your hardware may be blacklisted on certain\n distributions.\n\n $DISCLAIMER"
845+ QUERY_SKIP=yes
846+ return 0
847+ fi
848+ return 1
849+ fi
850+ STATUS=$SKIPPING
851+ SKIP_MESSAGE="Could not check the amount of memory on your Nvidia chip."
852+ ERROR_MESSAGE="That does \033[1mnot\033[0m mean, you will not be able to use Compiz.\n If everything else went OK you are most probably fine.\n\n In case you want the script to check this step as well, install the program\n \033[1mnvidia-settings\033[0m on your system."
853+ return 0
854+ fi
855+
856+ return 1
857+}
858+
859+# Check for proprietary driver (Ubuntu only)
860+check_prop_driver()
861+{
862+ printf "Check if there's an alternate (proprietary) driver available? (Y/n) "
863+ read REPLY
864+ case $REPLY in
865+ "" | y | Y | yes | Yes)
866+ case $DRVS_MNGR in
867+ hardy-gtk)
868+ exec gksu jockey-gtk & exit 0
869+ ;;
870+ hardy-kde)
871+ exec kdesu jockey-kde & exit 0
872+ ;;
873+ gutsy-gtk)
874+ exec gksu restricted-manager & exit 0
875+ ;;
876+ gutsy-kde)
877+ exec kdesu resrticted-manager-kde & exit 0
878+ ;;
879+ feisty-gtk)
880+ exec gksu restricted-manager & exit 0
881+ ;;
882+ esac
883+ ;;
884+ n | N | no | No)
885+ exit 0
886+ ;;
887+ *)
888+ check_prop_driver
889+ ;;
890+ esac
891+}
892+
893+# Query if the user wants to skip checks in compiz-manager
894+query_skip_checks()
895+{
896+ printf "Do you want to skip blacklist checks by Compiz? (y/N) "
897+ read REPLY
898+ case $REPLY in
899+ y | Y | yes | Yes)
900+ mkdir -p $XDG_CONFIG_HOME/compiz
901+ echo SKIP_CHECKS=yes >> $COMPIZ_MNGR_HOME
902+ ;;
903+ "" | n | N | no | No)
904+ exit 0
905+ ;;
906+ *)
907+ query_skip_checks
908+ ;;
909+ esac
910+}
911+
912+# Query if the user wants to kill xcompmgr
913+query_xcompmgr()
914+{
915+ printf "Do you want to disable xcompmgr? (Y/n) "
916+ read REPLY
917+ case $REPLY in
918+ "" | y | Y | yes | Yes)
919+ kill $XCOMPMGR_PID
920+ ;;
921+ n | N | no | No)
922+ exit 0
923+ ;;
924+ *)
925+ query_xcompmgr
926+ ;;
927+ esac
928+}
929+
930+# Query to disable Metacity's compositing manager
931+query_metacity_comp()
932+{
933+ printf "Do you want to disable GNOME's compositing manager? (Y/n) "
934+ read REPLY
935+ case $REPLY in
936+ "" | y | Y | yes | Yes)
937+ $GCONFTOOL -s -t bool /apps/metacity/general/compositing_manager false
938+ kill -9 $METACITY_PID 2>/dev/null
939+ exec $METACITY --replace &
940+ ;;
941+ n | N | no | No)
942+ exit 0
943+ ;;
944+ *)
945+ query_metacity_comp
946+ ;;
947+ esac
948+}
949+
950+# Query if the user wants to disable Xfwm's compsitor
951+query_xfwm_comp()
952+{
953+ printf "Do you want to disable Xfce's compositing manager? (Y/n) "
954+ read REPLY
955+ case $REPLY in
956+ "" | y | Y | yes | Yes)
957+ kill $XFWM_PID
958+ sleep 1
959+ exec xfwm4 --compositor=off --daemon &
960+ exit 0
961+ ;;
962+ n | N | no | No)
963+ exit 0
964+ ;;
965+ *)
966+ query_xfwm_comp
967+ ;;
968+ esac
969+}
970+
971+# Ask user to print additional info (Starship Troopers style).
972+more_info()
973+{
974+ printf "Would you like to know more? (Y/n) "
975+ read REPLY
976+ case $REPLY in
977+ "" | y | Y | yes | Yes)
978+ return 0
979+ ;;
980+ n | N | no | No)
981+ return 1
982+ ;;
983+ *)
984+ more_info
985+ ;;
986+ esac
987+}
988+
989+# --- Output starts here ---
990+
991+# System info
992+printf "\nGathering information about your system...\n\n"
993+detect_distro
994+printf " Distribution: %9s\033[1m${DISTRIB_ID} ${DISTRIB_RELEASE}\033[0m\n"
995+detect_de
996+printf " Desktop environment: %2s\033[1m${DE}\033[0m\n"
997+detect_video
998+printf " Graphics chip: %8s\033[1m${VIDEO}\033[0m\n"
999+detect_driver
1000+printf " Driver in use: %8s\033[1m${DRV}\033[0m\n"
1001+detect_rendering
1002+printf " Rendering method: %5s\033[1m${RENDER}\033[0m\n"
1003+
1004+# System checks
1005+printf "\nChecking if it's possible to run Compiz on your system..."
1006+if [ "$CHECKS" = yes ]; then
1007+ printf "%2s[${SKIPPING}]\n\n"
1008+else
1009+ printf "\n\n Checking for texture_from_pixmap..."
1010+ check_tfp
1011+ printf "%15s[${TFP}]\n"
1012+ printf " Checking for non power of two support..."
1013+ check_npo2
1014+ printf "%10s[${NPO2}]\n"
1015+ printf " Checking for composite extension..."
1016+ check_composite
1017+ printf "%15s[${COMP}]\n"
1018+ printf " Checking for FBConfig..."
1019+ check_fbconfig
1020+ printf "%26s[${FBC}]\n"
1021+fi
1022+
1023+# Hardware checks
1024+printf " Checking for hardware/setup problems..."
1025+if [ "$CHECKS" = yes ]; then
1026+ printf "%11s[${SKIPPING}]\n\n"
1027+elif check_compositor || check_laptop_ati || check_cmpst_xorg || check_rasterizer ; then
1028+ printf "%11s[${FAIL}]\n\n"
1029+elif check_fglrx || check_whitelist || check_resolution || check_xdg || check_pciid || check_nvidia_mem ; then
1030+ printf "%11s[${STATUS}]\n\n"
1031+else
1032+ printf "%11s[${OK}]\n\n"
1033+fi
1034+
1035+# Print error or warning (if any)
1036+# The $ERROR, $WARNING and $SKIP_MESSAGE outputs are supposed to be a
1037+# short description of the respective error.
1038+if [ "x$ERROR" != "x" ]; then
1039+ printf "There has been (at least) one error detected with your setup:\n \033[31mError:\033[0m $ERROR \n\n"
1040+elif [ "x$WARNING" != "x" ]; then
1041+ printf "Something potential problematic has been detected with your setup:\n \033[33mWarning:\033[0m $WARNING \n\n"
1042+elif [ "x$SKIP_MESSAGE" != "x" ]; then
1043+ printf "At least one check had to be skipped:\n \033[33mError:\033[0m $SKIP_MESSAGE \n\n"
1044+fi
1045+
1046+# Interactive output begins here
1047+if [ "x$ERROR_MESSAGE" != "x" ] && more_info ; then
1048+ printf "\n $ERROR_MESSAGE \n\n"
1049+ if [ ! -z $QUERY_SKIP ]; then
1050+ query_skip_checks
1051+ elif [ ! -z $QUERY_XCOMPMGR ]; then
1052+ query_xcompmgr
1053+ elif [ ! -z $QUERY_METACITY ]; then
1054+ query_metacity_comp
1055+ elif [ ! -z $QUERY_XFWM ]; then
1056+ query_xfwm_comp
1057+ elif [ "x$DRVS_MNGR" != "x" ]; then
1058+ check_prop_driver
1059+ elif [ "x$DIST_HELP" != "x" ]; then
1060+ printf " $DIST_HELP \n\n"
1061+ fi
1062+fi
1063+
1064+# If there was an error, return an error code
1065+if [ "x$ERROR" != "x" ]; then
1066+ exit 1
1067+fi
1068+exit 0
1069
1070=== added file 'scripts/cycle_vts.py'
1071--- scripts/cycle_vts.py 1970-01-01 00:00:00 +0000
1072+++ scripts/cycle_vts.py 2009-08-24 13:12:46 +0000
1073@@ -0,0 +1,21 @@
1074+#!/bin/bash
1075+
1076+# NB: This script must be run with root privileges in order to have any effect!
1077+
1078+CURRENT_VT=`/bin/fgconsole`
1079+
1080+if [ "$CURRENT_VT" == "" ]
1081+then
1082+ echo "Unable to determine current virtual terminal." >&2
1083+ exit 1
1084+fi
1085+
1086+if [ "$CURRENT_VT" -ne "1" ]
1087+then
1088+ chvt 1
1089+else
1090+ chvt 2
1091+fi
1092+
1093+sleep 2
1094+chvt "$CURRENT_VT"
1095
1096=== added file 'scripts/disk_bench_test.py'
1097--- scripts/disk_bench_test.py 1970-01-01 00:00:00 +0000
1098+++ scripts/disk_bench_test.py 2009-08-24 14:48:22 +0000
1099@@ -0,0 +1,18 @@
1100+#!/usr/bin/python
1101+import sys
1102+from subprocess import Popen, PIPE
1103+
1104+def main():
1105+ output = Popen('hdparm -tT /dev/sda',
1106+ stdout=PIPE, shell=True).communicate()[0]
1107+
1108+ for line in output.splitlines()[-2:]:
1109+ line = line.lstrip()
1110+ line = ("%s %s"
1111+ % (line[:line.find(':')],
1112+ line[line.rfind('='):]))
1113+ print line
1114+
1115+
1116+if __name__ == "__main__":
1117+ sys.exit(main())
1118
1119=== added file 'scripts/run_compiz_check.py'
1120--- scripts/run_compiz_check.py 1970-01-01 00:00:00 +0000
1121+++ scripts/run_compiz_check.py 2009-08-24 14:42:52 +0000
1122@@ -0,0 +1,20 @@
1123+#!/usr/bin/python
1124+import os, sys, re
1125+from subprocess import Popen, PIPE
1126+
1127+def main():
1128+ """
1129+ Run compiz check and return any error code
1130+ """
1131+ compiz_check = os.path.join(os.path.dirname(__file__), 'compiz-check')
1132+ process = Popen(compiz_check, stdout=PIPE)
1133+ output = process.communicate()[0]
1134+
1135+ # Remove colored output (not handled correctly in checkbox report)
1136+ output = re.sub(r'\[([0-8])?(;3[0-7])?(;4[0-7])?m', '', output)
1137+ print output
1138+
1139+ return process.returncode
1140+
1141+if __name__ == "__main__":
1142+ sys.exit(main())
1143
1144=== added file 'scripts/run_disk_bench_test'
1145--- scripts/run_disk_bench_test 1970-01-01 00:00:00 +0000
1146+++ scripts/run_disk_bench_test 2009-08-24 14:48:22 +0000
1147@@ -0,0 +1,3 @@
1148+#!/bin/bash
1149+
1150+gksudo disk_bench_test.py
1151
1152=== added file 'scripts/xrandr_cycle.py'
1153--- scripts/xrandr_cycle.py 1970-01-01 00:00:00 +0000
1154+++ scripts/xrandr_cycle.py 2009-08-24 13:12:46 +0000
1155@@ -0,0 +1,86 @@
1156+#!/usr/bin/env python
1157+
1158+import subprocess
1159+import time
1160+import sys
1161+
1162+device_context = '' # track what device's modes we are looking at
1163+modes = [] # keep track of all the devices and modes discovered
1164+current_modes = [] # remember the user's current settings for cleanup later
1165+failures = 0 # count the number of failed modesets
1166+failure_messages = [] # remember which modes failed
1167+success_messages = [] # remember which modes succeeded
1168+
1169+# Run xrandr and ask it what devices and modes are supported
1170+xrandrinfo = subprocess.Popen('xrandr -q', shell=True, stdout=subprocess.PIPE)
1171+output = xrandrinfo.communicate()[0].split('\n')
1172+
1173+
1174+# The results from xrandr are given in terms of the available display devices.
1175+# One device can have zero or more associated modes. Unfortunately xrandr
1176+# indicates this through indentation and is kinda wordy, so we have to keep
1177+# track of the context we see mode names in as we parse the results.
1178+
1179+for line in output:
1180+ # I haven't seen any blank lines in xrandr's output in my tests, but meh
1181+ if line == '':
1182+ break;
1183+
1184+ # luckily the various data from xrandr are separated by whitespace...
1185+ foo = line.split()
1186+
1187+ # Check to see if the second word in the line indicates a new context
1188+ # -- if so, keep track of the context of the device we're seeing
1189+ if len(foo) >= 2: # throw out any weirdly formatted lines
1190+ if foo[1] == 'disconnected':
1191+ # we have a new context, but it should be ignored
1192+ device_context = ''
1193+ if foo[1] == 'connected':
1194+ # we have a new context that we want to test
1195+ device_context = foo[0]
1196+ elif device_context != '': # we've previously seen a 'connected' device
1197+ # mode names seem to always be of the format [horiz]x[vert]
1198+ # (there can be non-mode information inside of a device context!)
1199+ if foo[0].find('x') != -1:
1200+ modes.append( (device_context, foo[0]) )
1201+ # we also want to remember what the current mode is, which xrandr
1202+ # marks with a '*' character, so we can set things back the way
1203+ # we found them at the end:
1204+ if foo[1].find('*') != -1:
1205+ current_modes.append( (device_context, foo[0]) )
1206+
1207+
1208+# Now we have a list of the modes we need to test. So let's do just that.
1209+
1210+for mode in modes:
1211+ cmd = 'xrandr --output ' + mode[0] + ' --mode ' + mode[1]
1212+ retval = subprocess.call(cmd, shell=True)
1213+ if retval != 0:
1214+ failures = failures + 1
1215+ message = 'Failed to set mode ' + mode[1] + ' for output ' + mode[0]
1216+ failure_messages.append(message)
1217+ else:
1218+ message = 'Set mode ' + mode[1] + ' for output ' + mode[0]
1219+ success_messages.append(message)
1220+ time.sleep(3) # let the hardware recover a bit
1221+
1222+
1223+# Put things back the way we found them
1224+
1225+for mode in current_modes:
1226+ cmd = 'xrandr --output ' + mode[0] + ' --mode ' + mode[1]
1227+ subprocess.call(cmd, shell=True)
1228+
1229+
1230+# Output some fun facts and knock off for the day
1231+
1232+for message in failure_messages:
1233+ print >> sys.stderr, message
1234+
1235+for message in success_messages:
1236+ print message
1237+
1238+if failures != 0:
1239+ exit(1)
1240+else:
1241+ exit(0)
1242
1243=== added file 'tests/audio.txt'
1244--- tests/audio.txt 1970-01-01 00:00:00 +0000
1245+++ tests/audio.txt 2009-08-24 14:57:07 +0000
1246@@ -0,0 +1,113 @@
1247+type: test
1248+plugin: manual
1249+name: list_audio_devices
1250+requires:
1251+ alsa.type == 'playback'
1252+ package.name == 'alsa-base'
1253+command: cat /proc/asound/cards
1254+description:
1255+ Detecting your sound device(s):
1256+ .
1257+ $output
1258+ .
1259+ Is this correct?
1260+
1261+type: test
1262+plugin: manual
1263+name: alsa_record_playback_internal
1264+requires:
1265+ alsa.type == 'record'
1266+ alsa.type == 'playback'
1267+ package.name == 'alsa-base'
1268+command: alsa_record_playback
1269+description:
1270+ Disconnect any external microphones that you have plugged in. \
1271+ Click the Test button, then speak into your internal microphone. \
1272+ After a few seconds, your speech will be played back to you.
1273+ .
1274+ Did you hear your speech played back?
1275+
1276+type: test
1277+plugin: manual
1278+name: alsa_record_playback_external
1279+requires:
1280+ alsa.type == 'record'
1281+ alsa.type == 'playback'
1282+ package.name == 'alsa-base'
1283+command: alsa_record_playback
1284+description:
1285+ Connect a microphone to your microphone port. \
1286+ Click the Test button, then speak into the microphone. \
1287+ After a few seconds, your speech will be played back to you.
1288+ .
1289+ Did you hear your speech played back?
1290+
1291+type: test
1292+plugin: manual
1293+name: alsa_record_playback_bluetooth
1294+requires:
1295+ alsa.type == 'record'
1296+ alsa.type == 'playback'
1297+ package.name == 'alsa-base'
1298+command: alsa_record_playback
1299+description:
1300+ Pair a Bluetooth headset with your system. Then open the \
1301+ volume control application by right-clicking on the speaker \
1302+ icon in the panel and selecting "Sound Preferences". Select \
1303+ the "Input" tab and choose your Bluetooth device. Select the \
1304+ "Output" tab and choose your Bluetooth device. When you are done, \
1305+ click the Test button, then speak into the microphone. \
1306+ After a few seconds, your speech will be played back to you.
1307+ .
1308+ Did you hear your speech played back?
1309+
1310+type: test
1311+plugin: automatic
1312+name: audio_detect_silence
1313+requires:
1314+ package.name == 'sox'
1315+ alsa.type == 'record'
1316+ alsa.type == 'playback'
1317+command: audio_detect_silence
1318+description:
1319+ Play back a sound on the default output and listen for it on the default \
1320+ input. This makes the most sense when the output and input are directly \
1321+ connected, as with a patch cable.
1322+
1323+type: test
1324+plugin: manual
1325+name: alsa_record_playback_usb
1326+requires:
1327+ alsa.type == 'record'
1328+ alsa.type == 'playback'
1329+ package.name == 'alsa-base'
1330+command: alsa_record_playback
1331+description:
1332+ Connect a USB audio device to your system. Then open the \
1333+ volume control application by right-clicking on the speaker \
1334+ icon in the panel and selecting "Sound Preferences". Select \
1335+ the "Input" tab and choose your USB device. Select the \
1336+ "Output" tab and choose your USB device. When you are done, \
1337+ click the Test button, then speak into the microphone. \
1338+ After a few seconds, your speech will be played back to you.
1339+ .
1340+ Did you hear your speech played back?
1341+
1342+type: test
1343+plugin: manual
1344+name: alsa_record_playback_alternates
1345+requires:
1346+ alsa.type == 'record'
1347+ alsa.type == 'playback'
1348+ package.name == 'alsa-base'
1349+command: alsa_record_playback
1350+description:
1351+ Open the volume control application by right-clicking on the speaker \
1352+ icon in the panel and selecting "Sound Preferences". Select \
1353+ the "Input" tab and choose any alternate (non-default) device(s). Select the \
1354+ "Output" tab and choose any alternate (non-default) device(s). When you are \
1355+ done, click the Test button, then speak into the microphone. \
1356+ After a few seconds, your speech will be played back to you.
1357+ .
1358+ Did you hear your speech played back?
1359+
1360
1361=== added file 'tests/disk.txt'
1362--- tests/disk.txt 1970-01-01 00:00:00 +0000
1363+++ tests/disk.txt 2009-08-24 14:48:22 +0000
1364@@ -0,0 +1,9 @@
1365+plugin: manual
1366+name: miscellanea/disk-bench
1367+command: run_disk_bench_test
1368+description:
1369+ Disk benchmark:
1370+ $output
1371+ .
1372+ Is this ok?
1373+
1374
1375=== added file 'tests/fingerprint.txt'
1376--- tests/fingerprint.txt 1970-01-01 00:00:00 +0000
1377+++ tests/fingerprint.txt 2009-08-24 14:45:12 +0000
1378@@ -0,0 +1,31 @@
1379+plugin: manual
1380+name: fingerprint/login
1381+description:
1382+ Prerequisites: This test case assumes that there's a testing account from which test cases are run and a personal account that the tester uses to verify the fingerprint reader
1383+ .
1384+ Fingerprint unlock verification procedure:
1385+ 1.- Click on the user switcher applet
1386+ 2.- Select your user name
1387+ 3.- A window should appear that provides the ability to login either typing your password or using fingerprint authentication
1388+ 4.- Use the fingerprint reader to login
1389+ 5.- Click on the user switcher applet
1390+ 6.- Select the testing account to continue running tests
1391+ .
1392+ Did the authentication procedure work correctly?
1393+ .
1394+ Note: Please add information that might help to add fingerprint detection to oem-services-qa@lists.launchpad.net
1395+
1396+plugin: manual
1397+name: fingerprint/unlock
1398+description:
1399+ Fingerprint unlock verification procedure:
1400+ 1.- Click on the user switcher applet
1401+ 2.- Select 'Lock screen'
1402+ 3.- Press any key or move the mouse
1403+ 3.- A window should appear that provides the ability to unlock either typing your password or using fingerprint authentication
1404+ 4.- Use the fingerprint reader to unlock
1405+ 5.- Screen should be unlocked
1406+ .
1407+ Did the authentication procedure work correctly?
1408+ .
1409+ Note: Please add information that might help to add fingerprint detection to oem-services-qa@lists.launchpad.net
1410
1411=== added file 'tests/firewire.txt'
1412--- tests/firewire.txt 1970-01-01 00:00:00 +0000
1413+++ tests/firewire.txt 2009-08-24 14:45:12 +0000
1414@@ -0,0 +1,12 @@
1415+plugin: manual
1416+name: firewire/hdd
1417+description:
1418+ Firewire HDD verification procedure:
1419+ 1.- Plug a Firewire HDD into the computer
1420+ 2.- A window should be opened asking which action should be performed (open folder, photo manager, etc).
1421+ 3.- Copy some files from the internal/firewire HDD to the firewire/internal HDD
1422+ .
1423+ Do the copy operations work as expected?
1424+ .
1425+ Note: Please send any information that might help to detect a Firewire controller to oem-services-qa@lists.launchpad.net
1426+
1427
1428=== added file 'tests/kms.txt'
1429--- tests/kms.txt 1970-01-01 00:00:00 +0000
1430+++ tests/kms.txt 2009-08-24 13:12:46 +0000
1431@@ -0,0 +1,15 @@
1432+type: test
1433+plugin: manual
1434+name: chvt
1435+requires:
1436+ package.name == 'kbd'
1437+command: gksudo cycle_vts
1438+description:
1439+ Click Test to switch to another virtual terminal and then back to X. Your \
1440+ screen will change temporarily to a text console and then switch back to your \
1441+ current session.
1442+ .
1443+ Note that this test may require you to enter your password.
1444+ .
1445+ Did the screen change temporarily to a text console?
1446+
1447
1448=== added file 'tests/media.txt'
1449--- tests/media.txt 1970-01-01 00:00:00 +0000
1450+++ tests/media.txt 2009-08-24 14:42:52 +0000
1451@@ -0,0 +1,11 @@
1452+plugin: manual
1453+name: dvd-playback
1454+command: totem /media/cdrom
1455+requires:
1456+ storage.cdrom.dvd == True
1457+ package.name == 'totem'
1458+description:
1459+ Insert a DVD. Then click Test to play the DVD in Totem.
1460+ .
1461+ Did the file play?
1462+
1463
1464=== added file 'tests/networking.txt'
1465--- tests/networking.txt 1970-01-01 00:00:00 +0000
1466+++ tests/networking.txt 2009-08-24 14:31:19 +0000
1467@@ -0,0 +1,17 @@
1468+name: networking/builtin-modem
1469+command: network_chk.py
1470+description:
1471+ Built-in modem network connection procedure:
1472+ 1.- Connect the telephone line to the computer
1473+ 2.- Right click on the Network Manager applet
1474+ 3.- Select 'Edit Connections'
1475+ 4.- Select the 'DSL' tab
1476+ 5.- Click on add 'Add' button
1477+ 6.- Configure the connection parameters properly
1478+ 7.- Notify OSD should confirm that the connection has been established
1479+ 8.- Select Test to verify that it's possible to establish both http and ftp connections
1480+ .
1481+ Was the connection correctly established?
1482+ .
1483+ Note: Built-in modem detection missing for this test case. Please help on improving this by sending any information that might help to oem-services-qa@lists.launchpad.net
1484+
1485
1486=== added file 'tests/xorg.txt'
1487--- tests/xorg.txt 1970-01-01 00:00:00 +0000
1488+++ tests/xorg.txt 2009-08-24 14:42:52 +0000
1489@@ -0,0 +1,42 @@
1490+type: test
1491+plugin: manual
1492+name: xrandr_detect_modes
1493+requires:
1494+ package.name == 'x11-xserver-utils'
1495+command: xrandr
1496+description:
1497+ The following screens and video modes have been detected on your system:
1498+ .
1499+ $output
1500+ .
1501+ Is this correct?
1502+
1503+type: test
1504+plugin: manual
1505+name: xrandr_cycle
1506+depends: xrandr_detect_modes
1507+requires:
1508+ package.name == 'x11-xserver-utils'
1509+command: xrandr_cycle.py
1510+description:
1511+ Click Test to cycle through the detected video modes for your system.
1512+ .
1513+ Did the screen appear to be working for each mode?
1514+
1515+plugin: shell
1516+name: compiz-check
1517+command: run_compiz_check.py
1518+description:
1519+ Check that hardware is able to run compiz.
1520+
1521+plugin: manual
1522+name: miscellanea/external-monitor
1523+description:
1524+ Plug video output to an external monitor. Is the image displayed correctly?
1525+ .
1526+ Please repeat the test for each kind of video output supported (VGA, DVI, DisplayPort and HDMI).
1527+ .
1528+ For HDMI, please also check that sound is played in the monitor speakers.
1529+ .
1530+ Note: Please send any information that might help to detect the video outputs supported to oem-services-qa@lists.launchpad.net
1531+

Subscribers

People subscribed via source and target branches

to all changes: