[SCM] debian-live/autotesting branch, master, updated. 199031cc84d81f35169514b4ba7d107d39d22218
Brendan M. Sleight (none)
bms at brum.
Wed Jul 1 21:58:42 UTC 2009
The following commit has been merged in the master branch:
commit 199031cc84d81f35169514b4ba7d107d39d22218
Author: Brendan M. Sleight <bms at brum.(none)>
Date: Wed Jul 1 22:57:15 2009 +0100
Complete re-write of autotesting. Driven by xml config and packaged.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..43eb3c1
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,18 @@
+all: install
+
+install: autotesting
+
+autotesting:
+ mkdir -p $(DESTDIR)/usr/bin
+ cp ./autotesting.py $(DESTDIR)/usr/bin/autotesting
+ chmod a+x $(DESTDIR)/usr/bin/autotesting
+ mkdir -p $(DESTDIR)/usr/share/autotesting
+ cp ./README $(DESTDIR)/usr/share/autotesting/README
+ mkdir -p $(DESTDIR)/usr/share/autotesting/tests
+ cp -r ./tests/* $(DESTDIR)/usr/share/autotesting/tests/
+
+clean:
+
+remove:
+ rm $(DESTDIR)/usr/bin/autotesting
+ rm -r $(DESTDIR)/usr/share/autotesting
diff --git a/README b/README
new file mode 100644
index 0000000..01f7ce3
--- /dev/null
+++ b/README
@@ -0,0 +1,99 @@
+AUTOTESTING README
+==================
+
+autotesting --tests=TESTS.XML
+
+This readme outlines the different tags used in TESTS.XML.
+
+EXAMPLE TESTS.XML
+=================
+
+<autotesting>
+ </tests>
+ <test>
+ <download>http://127.0.0.1/autotesting/debian-live-501-i386-xfce-desktop.iso</download>
+ <title>Debian Live (xfce)</title>
+ <description>Debian Live. Daily build of squeeze xfce iso.</description>
+ <background>http://git.debian.org/?p=debian-live/homepage.git;a=blob_plain;f=images/debian-live.png</background>
+ <frequency>daily</frequency>
+ <qemu>
+ <xscreen>800x600x24</xscreen>
+ <binary>qemu</binary>
+ <options>-cdrom</options>
+ <pause>10</pause>
+ <sendkeys>kp_enter</sendkeys>
+ <!-- Time to run qmeu -->
+ <time>600</time>
+ </qemu>
+ <output>
+ <!-- Number of test sets to keep -->
+ <keep>4</keep>
+ <root>/home/bms/autotesting/tests/</root>
+ <local>example-live/squeeze/xfce/</local>
+ <video>autotesting.ogv</video>
+ <screenshots>
+ <final>final-screenshot.png</final>
+ <montage>montage-of-video-frames.png</montage>
+ </screenshots>
+ </output>
+ </test>
+ </tests>
+</autotesting>
+
+
+LOOKING AT EACH TAG
+===================
+
+<download>http://127.0.0.1/autotesting/debian-live-501-i386-xfce-desktop.iso</download>
+The location of the image to be tested. This can be an iso or an USB image (img) or in fact anything that can be booted with qemu.
+
+<title>Debian Live (xfce)</title>
+<description>Debian Live. Daily build of squeeze xfce iso.</description>
+The title and description tags are used in the opening titles of the video and also useful when scanning a long tests.xml file.
+
+<background>http://git.debian.org/?p=debian-live/homepage.git;a=blob_plain;f=images/debian-live.png</background>
+The location of the background graphic used in the video.
+
+<frequency>daily</frequency>
+This can be daily, weekly or monthly. Daily, means that the test will be run every time. Weekly - the test will only be done if the current day is a Sunday. Monthly - the test will only be done on the 1st day of a month,
+
+<xscreen>800x600x24</xscreen>
+The width, height and colour depth of the xserver (Xvfb) in which to run qemu. Not at the minimum dimensions required for qemu are 800x600.
+
+<binary>qemu</binary>
+The qemu binary. This could be for example qemu-ppc64 or qemu-arm, to test images for different architectures.
+
+<options>-cdrom</options>
+The option to pass to qemu in conjunction with the image we are testing. In this example we are testing a iso, so we need the "-cdrom" option. For an img file you would use -hda.
+
+<pause>10</pause>
+Time to pause before sending keys presses.
+
+<sendkeys>kp_enter</sendkeys>
+Some iso and img require some user interaction to star the booting, normally just a enter being pressed. Useful for selecting different options from the grub menu. Use the qmeu sendkey command, send "kp_enter" - a keypad enter. To send multiple key presses, use a comma separated list. <sendkeys>down,down,kp_enter</sendkeys>.
+
+<time>600</time>
+Let qemu run for 600 seconds.
+
+<keep>4</keep>
+Number of test sets to keep. If frequency is weekly, and keep is 4, then any test set older than 4 weeks will be deleted.
+
+<root>/home/bms/autotesting/tests/</root>
+<local>example-live/squeeze/xfce/</local>
+A new directory will be created at /root/prefix/DATE/, in this example /home/bms/autotesting/tests/example-live/squeeze/xfce/2009-07-01/ and the output files will be stored in this directory. Another directory /root/current/prefix/ will be created, with symlinks to the latest output files, e.g. /home/bms/autotesting/tests/current/example-live/squeeze/xfce/.
+
+<video>autotesting.ogv</video>
+The output video file stored in the output directories (see <root> and <local>). File is a theora video, created by the wonderful application - recordmydeskptop.
+
+<final>final-screenshot.png</final>
+<montage>montage-of-video-frames.png</montage>
+The output file names stored in the output directories (see <root> and <local>) of a final screenshot of qemu and a montage of frames from the video. These can give a good idea of how successful the test was rather than viewing the whole video.
+
+
+REQUIRED APPLICATIONS
+=====================
+
+I will be trying to package autotesting - however for reference this following applications are required:-
+
+python, python-amara, wget, Xvfb, xloadimage, qemu, recordmydesktop, ffmpeg, imagemagick, gmessage
+
diff --git a/README.debian b/README.debian
deleted file mode 100644
index 7dc56fc..0000000
--- a/README.debian
+++ /dev/null
@@ -1,152 +0,0 @@
-AUTOTESTING
-
-SUMMARY
-=======
-
-Outline how the AutoTesting server is set up to enable images to be automatically tested.
-
-
-What is AutoTesting
-===================
-
-A project to Autotest LiveCD images. The output of the autotesting is to create video recordings of booting live images "This will be really
-great for doing QA on the images, so that we know before downloading if a latest-and-greatest sid image is even booting/working correctly :)"
-
-
-Ingredients
-===========
-
-1 x Xen instance of 128MB, 20 GB Hard Drive Space.
-1 x Debian minimal installation
-1 x IP Address
-
-
-OVERVIEW
-========
-
-Automated tasks
-===============
-
-Every [Day/Week/Month] a predetermined list of images are downloaded and tested.
-
-
-Producing Videos - video-qemu-booting-iso.sh
-=============================================
-
-The videos are produced by booting the LiveCD using qemu. Where qemu is being displayed on a VNC session. This VNC session is being recorded by
-vncrec. After qemu has run for a time, it is terminated, the recorded session is replayed and piped thought ffmpeg2theora to produce a video.
-
-At the start of the qemu session a number of simulated key presses are sent to LiveCD, (default "spc,l,i,v,e,spc,kp_enter"), via a telnet port
-which is only accessible from 127.0.0.1
-
-
-Producing a Batch of Videos - run-batch-autotesting.sh
-======================================================
-
-This script will download a list of images, check the MD5SUM, run video-qemu-booting-iso.sh against each image. The output from
-video-qemu-booting.sh will be moved to a place on the webserver path, together will a some source files to make a suitable webpage.
-
-
-Cron Scripts - autotesting.cron.txt
-===================================
-
-This does five tasks.
-1 - Run the daily-cron-script.sh.
-2 - Every week run-batch-autotesting against the week.lst of isos to test weekly.
-3 - Every month run-batch-autotesting against the monthly.lst of isos to test monthly.
-4 - Every day run clean-old-files.sh to keep disk space low.
-5 - Every hour - touch the /var/www/index.wml and /var/www/*/index.wml and make index.html
-
-
-Cron Scripts - daily-cron-script.sh
-===================================
-
-run-batch-autotesting against the daily.lst
-run-batch-autotesting against the lenny_live_beta1.lst
-run-batch-autotesting against the webconverger.lst
-run local_build_debian-live.sh to locally build some images. Then run-batch-autotesting against the local.lst
- [I would expect this to be disabled on final autotesting machine]
-
-
-INSTALLATION
-============
-
-Packages Required
-=================
-
-From debian.org:
-apache2-mpm-prefork apache2-utils apache2.2-common bc build-essential expect ffmpeg2theora git-core imagemagick live-helper openssh-server qemu
-socat sudo vnc4server wml xtightvncviewer
-
-From debian-multimedia.org: (Use a local mirror)
-ffmpeg
-
-From Debian Unoffical:
-vncrec-twibright
-
-
-User Required
-=============
-
-adduser autotesting
-addgroup autotesting www-data
-
-Add the following line to /etc/suders:
-autotesting ALL = NOPASSWD: ALL
-
-
-Directory Structure
-===================
-
-mkdir -p /home/autotesting/debian-live
-mkdir -p /home/autotesting/iso/daily
-mkdir -p /home/autotesting/iso/weekly
-mkdir -p /home/autotesting/iso/monthly
-mkdir -p /home/autotesting/log/local
-mkdir -p /home/autotesting/log/daily
-mkdir -p /home/autotesting/log/weekly
-mkdir -p /home/autotesting/log/monthly
-mkdir -p /home/autotesting/log/local
-mkdir -p /home/autotesting/video/daily
-mkdir -p /home/autotesting/video/weekly
-mkdir -p /home/autotesting/video/monthly
-mkdir -p /home/autotesting/video/local
-mkdir /var/www/debian-live/
-mkdir /var/www/webconverger/
-mkdir /var/www/local-build/
-mkdir /var/www/jar/
-
-
-Git Autotesting
-===============
-
-git clone git://git.debian.org/git/debian-live/autotesting.git
-cp -R /home/autotesting/homepage/* /var/www/
-cp /home/autotesting/homepage/index.wml /var/www/debian-live/
-cp /home/autotesting/homepage/index.wml /var/www/webconverger/
-cp /home/autotesting/homepage/index.wml /var/www/local-build/
-
-(The above copyinf to /var/www looks ugly now I have documented it and should be fixed...)
-
-
-Java Playback - Your Cup of Coffee ?
-====================================
-
-The webpages are set up, simular to wikipedia to play theora video via java plugin. I am aware use of java may not be suitable for everyone.
-wget http://www.flumotion.net/jar/cortado/cortado-ovt-stripped-0.2.2.jar -O /var/www/jar/cortado.jar
-The most important thing is that the video are very free, so if java is not to everyone liking another player cna be choosen.
-
-
-Crontab
-=======
-
-As user autotesting:
-crontab -l /home/autotesting/debian-live/autotesting.cron.txt
-
-
-Summary
-=======
-
-Hopefully this documents how I set up an autotesting server, allowing replication. I am more than willing to add more detail.
-
-Brendan M. Sleight - bms(a.t]barwap.com
diff --git a/autotesting.cron.txt b/autotesting.cron.txt
deleted file mode 100644
index 2c14f92..0000000
--- a/autotesting.cron.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-0 0 * * * /bin/echo "New Day " >/home/autotesting/log/daily/autotesting.log
-0 1 * * * /bin/bash /home/autotesting/debian-live/autotesting/daily-cron-script.sh
-
-0 0 * * 5 /bin/echo "New Week " >/home/autotesting/log/weekly/autotesting.log
-0 9 * * 5 /bin/bash /home/autotesting/debian-live/autotesting/run-batch-autotesting.sh /home/autotesting/debian-live/autotesting/weekly.lst /home/autotesting/iso/weekly/ /home/autotesting/video/weekly/ /var/www/debian-live/i386/ >>/home/autotesting/log/weekly/autotesting.log 2>&1
-
-0 0 15 * * /bin/echo "New Month " >/home/autotesting/log/daily/autotesting.log
-0 17 15 * * /bin/bash /home/autotesting/debian-live/autotesting/run-batch-autotesting.sh /home/autotesting/debian-live/autotesting/monthly.lst /home/autotesting/iso/monthly/ /home/autotesting/video/monthly/ /var/www/debian-live/i386/ >>/home/autotesting/log/monthly/autotesting.log 2>&1
-
-0 0 * * * /bin/bash /home/autotesting/debian-live/autotesting/clean-old-files.sh
-
-# webwml
-0 */1 * * * cd /var/www && touch ./index.wml ./*/index.wml && make > /dev/null 2>&1
diff --git a/autotesting.py b/autotesting.py
new file mode 100644
index 0000000..423cd6e
--- /dev/null
+++ b/autotesting.py
@@ -0,0 +1,285 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+#
+# autotesting - automatically test by video qemu booting.
+# Copyright (C) Brendan M. Sleight, et al. <bms at barwap.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+from optparse import OptionParser
+import amara, datetime, os, shutil, subprocess, telnetlib, tempfile, time
+
+def displayNumber():
+ """Really a global we can change later to something better.
+ like automaticaly get the next free display number. """
+ return ":8"
+
+def log(message):
+ """ Print [date] message """
+ now = datetime.datetime.now()
+ print "[" + str(now) + "] " + str(message)
+
+def cronCheak(frequency):
+ """Check if the frequency (e.g. daily, weekly, mounthly is due to
+ be run at this time
+ returns boolean.
+ """
+ now = datetime.datetime.now()
+ if frequency == "Daily" or frequency == "daily":
+ return True
+ elif frequency == "Weekly" or frequency == "weekly":
+ if now.weekday() == 0:
+ return True
+ elif frequency == "Monthly" or frequency == "monthly":
+ if now.day == 1:
+ return True
+ return False
+
+def dateBasedOnFrequency(frequency, keep):
+ now = datetime.datetime.now()
+ if frequency == "Daily" or frequency == "daily":
+ days=1
+ elif frequency == "Weekly" or frequency == "weekly":
+ days=7
+ elif frequency == "Monthly" or frequency == "monthly":
+ # No date delta of month so near enough ...
+ days=30
+ old = now - datetime.timedelta(days=days*keep)
+ return old
+
+def parseTest(xml):
+ """ Get the xml file and load as a object usign amara
+ returns amaraObject"""
+ tests = amara.parse(xml)
+ return tests.autotesting.tests
+
+def wget(url):
+ """ Use wget to download a file
+ return fileObject"""
+ log("Downloading " + url)
+ tmpFile = tempfile.NamedTemporaryFile(prefix="autotesting_wget_")
+ L = ['wget', '-nv', str(url), '-O', tmpFile.name]
+ # Maybe do something with the retcode in the future.
+ retcode = subprocess.call(L)
+ return tmpFile
+
+def getDownloads(downloadURL, backgroundURL):
+ """ Create two temp files and download the main downlaod and
+ the background
+ return tempfile, tempfile"""
+ background = wget(str(backgroundURL))
+ download = wget(str(downloadURL))
+ return download, background
+
+def authorityFile():
+ """ Return a file containing "localhost"
+ """
+ authority = tempfile.NamedTemporaryFile(prefix="autotesting_authority_")
+ authority.write("localhost\n")
+ authority.close()
+ return authority
+
+def startXvfb(display, xscreen, background):
+ """Start a Xvfb instance. The host display for qemu to run inside.
+ then set the background image. Return ths PID of Xvfb
+ return interger"""
+ log("Starting Xvfb")
+ authority = authorityFile()
+ xvfbCommand = ["Xvfb", display, "-auth", authority.name, "-screen", "0", xscreen]
+ xvfb = subprocess.Popen(xvfbCommand)
+ log("Setting Xvfb background")
+ xloadimage = ["xloadimage", "-display", display, "-onroot", "-fullscreen", background]
+ retcode = subprocess.call(xloadimage)
+ return xvfb
+
+def waitUntilEncodingFinished(recordMyDesktop):
+ log("Waiting for recordmydesktop encoding to finish")
+ while recordMyDesktop.poll()!=0:
+ print ".. ",
+ time.sleep(1)
+ print " "
+
+def kill(process, message):
+ log(message)
+ kill = ["kill", str(process.pid)]
+ retcode = subprocess.call(kill)
+
+def startRecordMyDesktop(display):
+ log("Starting Record My Desktop")
+ video = tempfile.NamedTemporaryFile(prefix="autotesting_video_", suffix=".ogv")
+ recordmydesktopCommand = ["recordmydesktop", "--no-cursor", "-display",
+ display ,"--no-sound", "--overwrite", "-o" ,video.name]
+ recordmydesktop = subprocess.Popen(recordmydesktopCommand)
+ return recordmydesktop, video
+
+def xmessage(display, title, message, time, font):
+ xloadimage = ["gmessage", "-display", display, "-timeout", time,
+ "-font", font, "-button", "", "-title", title,
+ "-center", "\n" + message]
+ retcode = subprocess.call(xloadimage)
+
+def openingTitles(display, test):
+ log("Showing Opening Titles")
+ time.sleep(2)
+ xmessage(display, str(test.title), "Autotesting of: " + str(test.title), "3", "monospace 14")
+ xmessage(display, str(test.title), str(test.description), "3", "monospace 12")
+ xmessage(display, str(test.title), "Created at " + str(datetime.datetime.now()), "2", "monospace 10")
+
+def runningQemu(display, test, qemuDownload):
+ """ Start qemu running, with a local telnet port at 55555 listening acting as the qemu monitor
+ returns subprocess.process"""
+ telnet = ("127.0.0.1", "55555")
+ address, port = telnet
+ monitor = "telnet:" + address + ":" + port + ",server,nowait"
+ qemuBinary = str(test.qemu.binary)
+ log("Starting " + qemuBinary)
+ if not qemuBinary.startswith("qemu"):
+ log("WARNING! : " + qemuBinary + " does not start with qemu, using qemu instead.")
+ qemuBinary = "qemu"
+ qemuCommand = [qemuBinary, "-monitor", monitor, "-full-screen", str(test.qemu.options), str(qemuDownload)]
+ qemu = subprocess.Popen(qemuCommand, env={"DISPLAY": display})
+ sendkeysToQemu(test, telnet)
+ log("Running qemu for " + str(test.qemu.time) + " seconds")
+ time.sleep(int(str(test.qemu.time)))
+ return qemu
+
+def sendkeysToQemu(test, telnet):
+ """Using telnet to send commands to qemu monitor
+ """
+ address, port = telnet
+ log("Sending keys after pause of " + str(test.qemu.pause) + " seconds")
+ time.sleep(int(str(test.qemu.pause)))
+ tn = telnetlib.Telnet(address, port)
+ sendkeys = str(test.qemu.sendkeys)
+ for key in sendkeys.split(','):
+ log("qemu sendkey " + key)
+ tn.write("sendkey " + key + "\n")
+ time.sleep(1)
+
+
+def captureScreenshot(display):
+ """ Capture screen shot on display
+ return fileObject"""
+ log("Capture screenshot")
+ finalImage = tempfile.NamedTemporaryFile(prefix="autotesting_video_", suffix=".png")
+ captureCommand = ["import", "-display", display, "-window", "root", finalImage.name]
+ retcode = subprocess.call(captureCommand)
+ return finalImage
+
+def createMontage(video, test):
+ """ Make 16 frames of the video at 1/16, 2/16, 3/16 .... 16/16 of
+ way through the video. The make a montage of these frames in to
+ one image.
+ return fileObject"""
+ log("Creating Montage")
+ montage = tempfile.NamedTemporaryFile(prefix="autotesting_video_", suffix=".png")
+ videoLength = int(str(test.qemu.pause)) + int(str(test.qemu.time))
+ # Time for opening titles
+ videoLength = videoLength + 2 + 3 + 3 + 2
+ listFrames = []
+ listFramesNames = []
+ for count in range(16):
+ ss = 0.0625 * count * videoLength
+ frame = tempfile.NamedTemporaryFile(prefix="autotesting_frame_", suffix=".jpg")
+ frameName = frame.name + "%d.jpg"
+ frameNameOut = frame.name + "1.jpg"
+ ffmpeg = ["ffmpeg", "-i", video.name, "-an", "-ss", str(ss), "-t",
+ "01", "-r", "1", "-y", frameName]
+ retcode = subprocess.call(ffmpeg)
+ shutil.move(frameNameOut, frame.name)
+ listFramesNames.append(frame.name)
+ listFrames.append(frame)
+ montageCommand = ["montage", "-geometry", "180x135+4+4", "-frame", "5"]
+ for frame in listFramesNames:
+ montageCommand.append(frame)
+ montageCommand.append(montage.name)
+ retcode = subprocess.call(montageCommand)
+ return montage
+
+def storeFile(tmpFile, copyLocation, symLocation):
+ shutil.copyfile(tmpFile, copyLocation)
+ try:
+ os.remove(symLocation)
+ except:
+ pass
+ os.symlink(copyLocation, symLocation)
+
+def fileOutputs(test, video, finalImage, montage):
+ """ Move files to the correct place (as per XML tags)
+ including symlinks to current.
+ """
+ log("Moving files to the correct place.")
+ root=str(test.output.root)
+ local=str(test.output.local)
+ today=str(datetime.date.today())
+ mainDir = root + "/" + local + "/" + today + "/"
+ dateDirs = root + "/" + local + "/"
+ currentDir = root + "/current/" + local + "/"
+ try:
+ os.makedirs(mainDir)
+ except:
+ pass
+ try:
+ os.makedirs(currentDir)
+ except:
+ pass
+ storeFile(video.name, mainDir + str(test.output.video),
+ currentDir + str(test.output.video))
+ storeFile(finalImage.name, mainDir + str(test.output.screenshots.final),
+ currentDir + str(test.output.screenshots.final))
+ storeFile(montage.name, mainDir + str(test.output.screenshots.montage),
+ currentDir + str(test.output.screenshots.montage))
+ keepDate = dateBasedOnFrequency(str(test.frequency), int(str(test.output.keep)))
+ log("Removing old Autotesting output before " + keepDate.strftime("%A %B %d %I:%M:%S %p %Y"))
+ for f in os.listdir(dateDirs):
+ fp = dateDirs + f
+ if (time.mktime(keepDate.timetuple()) - os.path.getmtime(fp) ) > 0:
+ # Remove the old file
+ shutil.rmtree(fp)
+ log("Removing - " + fp)
+
+def main():
+ usage = "usage: %prog [options] --tests=TESTS.XML \n %prog --help for all options"
+ parser = OptionParser(usage, version="%prog ")
+ parser.add_option("-t", "--tests", dest="tests",
+ help="complete the autotesting definined in the xml template")
+ (options, args) = parser.parse_args()
+ if not options.tests :
+ parser.error("Must pass a list of tests to complete.")
+
+ # Main loop
+ display = displayNumber()
+ tests = parseTest(options.tests)
+ for test in tests.test:
+ if cronCheak(str(test.frequency)):
+ log("Starting Autotesting of: " + str(test.title))
+ (download, background) = getDownloads(str(test.download), str(test.background))
+ xvfb = startXvfb(display, str(test.qemu.xscreen), background.name)
+ (recordMyDesktop, video) = startRecordMyDesktop(display)
+ openingTitles(display, test)
+ qemu = runningQemu(display, test, download.name)
+ finalImage = captureScreenshot(display)
+ kill(qemu, "Killing qemu")
+ kill(recordMyDesktop, "Killing recordmysdesktop")
+ waitUntilEncodingFinished(recordMyDesktop)
+ kill(xvfb, "Killing Xvfb")
+ # Put video, montage in right place remvoe old versions etc.
+ montage = createMontage(video, test)
+ fileOutputs(test, video, finalImage, montage)
+ log("Finished Autotesting of: " + str(test.title))
+ log("*****************************")
+
+if __name__ == "__main__":
+ main()
diff --git a/autotesting.sh b/autotesting.sh
deleted file mode 100755
index 5c45ad9..0000000
--- a/autotesting.sh
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/bin/sh
-#
-# Script to be run video-qemu-boot-iso.sh via cron job
-#
-
-while getopts p:v:q:t: opt
-do
- case "$opt" in
- p) VQBI="$OPTARG";;
- q) QEMU_BIN="$OPTARG";;
- t) TIME_Q="$OPTARG";;
- v) VQUALITY="$OPTARG";;
-
-
- \?) # unknown flag
- echo >&2 \
- "usage: $0 [-p path to video-qemu-booting-iso.sh ] [-q alternative qemu binary name] [-t time to run qemu] /foo/bar/iso.directory/ /foo/bar/video.directory/ "
- exit 1;;
- esac
-done
-shift `expr $OPTIND - 1`
-
-if [ -z "$1" ] && [ -z "$2" ] && [ -z "$3" ]; then
- cat << EOF
-usage: $0 [-p path to video-qemu-booting-iso.sh ] [-q alternative qemu binary name] [-t time to run qemu] [-v (0 to 10) encoding quality for video] /foo/bar/iso.directory/ /foo/bar/video.directory/
-
- This script runs the video-qemu-booting-iso.sh for each iso in a directory.
-
- This script will take _along_ time to run. Approx 1 hour per iso.
- Basically for time to run = number of isos x time to run qmeu x 3 seconds
- For testing the set-up use -t with a small value e.g. -t 10
-
- The use of -q could allow qemu-ppc be used once Debian bug #388735 is resolved.
-EOF
- exit 0
-fi
-
-ISODIR=$1
-VIDEODIR=$2
-
-VQBI="${VQBI:-video-qemu-booting-iso.sh}"
-QEMU_BIN="${QEMU:-qemu}" #qemu_0.8.4-etch1
-TIME_Q="${TIME_Q:-1200}"
-VQUALITY="${VQUALITY:-5}"
-
-for ISO in $ISODIR/*.iso
-do
- ISOBN=$(basename $ISO)
- VIDEO=$VIDEODIR$ISOBN.ogg
- echo "Running $VQBI -t $TIME_Q -q $QEMU_BIN -v $VQUALITY $ISO $VIDEO"
- $VQBI -t $TIME_Q -q $QEMU_BIN -v $VQUALITY $ISO $VIDEO
-done
-echo "Finished Autotesting"
diff --git a/clean-old-files.sh b/clean-old-files.sh
deleted file mode 100755
index f2e195e..0000000
--- a/clean-old-files.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-#
-# Remove old files
-find /home/autotesting/*/daily/ -not -type d -ctime +4 -print0 | xargs --null --no-run-if-empty rm -f
-find /var/www/debian-live/i386/*-sid-* -not -type d -ctime +4 -print0 | xargs --null --no-run-if-empty rm -f
-find /var/www/webconverger/i386/* -not -type d -ctime +4 -print0 | xargs --null --no-run-if-empty rm -f
-find /var/www/local-build/debian-live/i386/* -not -type d -ctime +4 -print0 | xargs --null --no-run-if-empty rm -f
-find /var/www/lenny_live_beta1/i386/* -not -type d -ctime +4 -print0 | xargs --null --no-run-if-empty rm -f
-
-find /home/autotesting/*/weekly/ -not -type d -ctime +28 -print0 | xargs --null --no-run-if-empty rm -f
-find /var/www/debian-live/i386/*-lenny-* -not -type d -ctime +28 -print0 | xargs --null --no-run-if-empty rm -f
-
-find /home/autotesting/*/monthly/ -not -type d -ctime +124 -print0 | xargs --null --no-run-if-empty rm -f
-find /var/www/debian-live/i386/*-etch-* -not -type d -ctime +4 -print0 | xargs --null --no-run-if-empty rm -f
-
-# Remove empty directories
-find /var/www/*/ -depth -type d -empty -exec rmdir {} \;
diff --git a/daily-cron-script.sh b/daily-cron-script.sh
deleted file mode 100755
index 8f6ec25..0000000
--- a/daily-cron-script.sh
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-#
-# Neater then one long cron line
-#
-
-BASEDIR="/home/autotesting"
-
-cd ${BASEDIR}/debian-live/autotesting
-
-exec >${BASEDIR}/log/daily/autotesting.log 2>&1
-echo "New Day $(date)"
-
-# lenny_live_beta1.lst
-./run-batch-autotesting.sh lenny_live_beta1.lst ${BASEDIR}/iso/daily/ ${BASEDIR}/video/daily/ /var/www/lenny_live_beta1/i386/
-
-# Test "daily" images
-./run-batch-autotesting.sh daily.lst ${BASEDIR}/iso/daily/ ${BASEDIR}/video/daily/ /var/www/debian-live/i386/
-
-# Test webcoverger
-./run-batch-autotesting.sh webconverger.lst ${BASEDIR}/iso/daily/ ${BASEDIR}/video/daily/ /var/www/webconverger/i386/ webc-3.2.mini.iso.MD5SUM
-
-# Build our own images
-exec >${BASEDIR}/log/daily/autobuild.log 2>&1
-for DIST in etch lenny sid
-do
- ./local_build_debian-live.sh ${BASEDIR}/iso/local/debian-live ${DIST} xfce
-done
-
-# Test our own images
-exec >>${BASEDIR}/log/daily/autotesting.log 2>&1
-./run-batch-autotesting.sh local.lst ${BASEDIR}/iso/local/ ${BASEDIR}/video/local/ /var/www/local-build/debian-live/i386/
diff --git a/daily.lst b/daily.lst
deleted file mode 100644
index f0d43f1..0000000
--- a/daily.lst
+++ /dev/null
@@ -1,4 +0,0 @@
-http://live.debian.net/cdimage/daily-builds/current/i386/debian-live-sid-i386-standard.iso
-http://live.debian.net/cdimage/daily-builds/current/i386/debian-live-sid-i386-xfce-desktop.iso
-http://live.debian.net/cdimage/daily-builds/current/i386/debian-live-sid-i386-gnome-desktop.iso
-http://live.debian.net/cdimage/daily-builds/current/i386/debian-live-sid-i386-kde-desktop.img
diff --git a/debian/changelog b/debian/changelog
new file mode 100644
index 0000000..1a1e879
--- /dev/null
+++ b/debian/changelog
@@ -0,0 +1,6 @@
+autotesting (0.0.1-1) unstable; urgency=low
+
+ * Initial release
+
+ -- Brendan M. Sleight <bms at barwap.com> Wed, 01 Jul 2009 21:03:14 +0100
+
diff --git a/debian/compat b/debian/compat
new file mode 100644
index 0000000..7f8f011
--- /dev/null
+++ b/debian/compat
@@ -0,0 +1 @@
+7
diff --git a/debian/control b/debian/control
new file mode 100644
index 0000000..1e4f133
--- /dev/null
+++ b/debian/control
@@ -0,0 +1,14 @@
+Source: autotesting
+Section: unknown
+Priority: optional
+Maintainer: Brendan M. Sleight <bms at barwap.com>
+Build-Depends: debhelper (>= 7)
+Standards-Version: 3.7.3
+Homepage: <insert the upstream URL, if relevant>
+
+Package: autotesting
+Architecture: any
+Depends: python, python-amara, wget, Xvfb, xloadimage, qemu, recordmydesktop, ffmpeg, imagemagick, gmessage
+Description: automatically test by video qemu booting
+ autotesting is a script which records qemu booting. Designed to be run
+ as a cron job. Mainly used for testing liveCD images.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644
index 0000000..b260705
--- /dev/null
+++ b/debian/copyright
@@ -0,0 +1,38 @@
+This package was debianized by Brendan M. Sleight <bms at barwap.com> on
+Wed, 01 Jul 2009 21:03:14 +0100.
+
+It was downloaded from debian-live repositories
+
+Upstream Author(s):
+
+ Brendan M. Sleight <bms at barwap.com>
+
+Copyright:
+
+ <Copyright (C) 2009 Brendan M. Sleight >
+
+License:
+
+ This package is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This package is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this package; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+On Debian systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
+
+The Debian packaging is (C) 2009, Brendan M. Sleight <bms at barwap.com> and
+is licensed under the GPL, see above.
+
+
+# Please also look if there are files or directories which have a
+# different copyright/license attached and list them here.
diff --git a/debian/dirs b/debian/dirs
new file mode 100644
index 0000000..e28b830
--- /dev/null
+++ b/debian/dirs
@@ -0,0 +1,4 @@
+usr/bin
+usr/share/autotesting
+usr/share/autotesting/tests
+
diff --git a/debian/docs b/debian/docs
new file mode 100644
index 0000000..e845566
--- /dev/null
+++ b/debian/docs
@@ -0,0 +1 @@
+README
diff --git a/debian/manpage.1 b/debian/manpage.1
new file mode 100644
index 0000000..a945e07
--- /dev/null
+++ b/debian/manpage.1
@@ -0,0 +1,48 @@
+.\" Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH AUTOTESTING SECTION "July 1, 2009"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh disable hyphenation
+.\" .hy enable hyphenation
+.\" .ad l left justify
+.\" .ad b justify to both left and right margins
+.\" .nf disable filling
+.\" .fi enable filling
+.\" .br insert line break
+.\" .sp <n> insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+autotesting \- automatically test by video qemu booting
+.SH SYNOPSIS
+.B autotesting
+.RI [ options ] " files" ...
+.br
+.SH DESCRIPTION
+This manual page documents briefly the
+.B autotesting.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
+.\" respectively.
+\fBautotesting\fP is a script which records qemu booting. Designed to be run as a cron job. Mainly used for testing liveCD images.
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+.TP
+.B \-t, \-\-tests=TESTS.XML
+Run the tests defined in TESTS.XML.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.br
+.SH AUTHOR
+autotesting was written by Brendan M. Sleight.
+.PP
+This manual page was written by Brendan M. Sleight <bms at barwap.com>,
+for the Debian project (but may be used by others).
diff --git a/debian/rules b/debian/rules
new file mode 100755
index 0000000..687d163
--- /dev/null
+++ b/debian/rules
@@ -0,0 +1,91 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+
+configure: configure-stamp
+configure-stamp:
+ dh_testdir
+ # Add here commands to configure the package.
+
+ touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp
+ dh_testdir
+
+ # Add here commands to compile the package.
+ # $(MAKE)
+ #docbook-to-man debian/autotesting.sgml > autotesting.1
+
+ touch $@
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp configure-stamp
+
+ # Add here commands to clean up after the build process.
+ $(MAKE) clean
+
+ dh_clean
+
+install: build
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ # Add here commands to install the package into debian/autotesting.
+ $(MAKE) DESTDIR=$(CURDIR)/debian/autotesting install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installchangelogs
+ dh_installdocs
+ dh_installexamples
+# dh_install
+# dh_installmenu
+# dh_installdebconf
+# dh_installlogrotate
+# dh_installemacsen
+# dh_installpam
+# dh_installmime
+# dh_python
+# dh_installinit
+# dh_installcron
+# dh_installinfo
+ dh_installman -p autotesting debian/manpage.1
+ dh_link
+ dh_strip
+ dh_compress
+ dh_fixperms
+# dh_perl
+# dh_makeshlibs
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/homepage/Makefile b/homepage/Makefile
deleted file mode 100644
index de18c90..0000000
--- a/homepage/Makefile
+++ /dev/null
@@ -1,36 +0,0 @@
-# Makefile
-
-WORKDIR = $(shell echo $(PWD))
-DESTDIR = $(shell echo $(PWD) | sed -e 's/\.wml//')
-SUBDIRS =
-
-INCLUDES = $(WORKDIR)/includes
-
-WMK = /usr/bin/wmk
-WMKOPT = -I $(INCLUDES) -D IMGROOT=$(WORKDIR)/images -D DOCROOT="" --all
-
-WMLFILES = $(wildcard *.wml)
-HTMLFILES = $(patsubst %.wml,%.html,$(WMLFILES))
-
-existing-SUBS := $(shell for dir in $(wildcard $(SUBS)) ''; do test -d $$dir && echo $$dir; done)
-existing-SUBS-build := $(addsuffix -build,$(existing-SUBS))
-existing-SUBS-clean := $(addsuffix -clean,$(existing-SUBS))
-existing-SUBS-cleandest := $(addsuffix -cleandest,$(existing-SUBS))
-
-
-all: make
-
-$(existing-SUBS-build):
- $(MAKE) -C $(subst -build,,$@)
-
-make:
- $(existing-SUBS-build)
- $(WMK) $(WMKOPT)
- rm -fv screenshots/*_sm.png
-
-$(existing-SUBS-clean):
- $(MAKE) -C $(subst -clean,,$@) clean
-
-clean: $(existing-SUBS-clean)
- rm -f $(HTMLFILES)
- rm -fv screenshots/*_sm.png
diff --git a/homepage/images/style.css b/homepage/images/style.css
deleted file mode 100644
index 36b9411..0000000
--- a/homepage/images/style.css
+++ /dev/null
@@ -1,302 +0,0 @@
-/* Stylesheet for mentors.debian.net */
-/* (c) 2005,2006 the mentors.debian.net team */
-
-body
-{
- font-family: sans-serif;
- font-size: 10pt;
- background-color: #ffffff;
- margin: 0;
- padding: 0;
-}
-
-img
-{
- border: 0;
-}
-
-.screenshot-right
-{
- padding: 15px;
- float: right;
-}
-
-.screenshot
-{
- padding: 5px;
-}
-
-h1,h2
-{
- font-family: "Bitstream Vera Serif", Georgia, Palatino, serif;
- font-weight: normal;
- color: #d70751;
- margin: 0.5em 0 0.2em 0;
- padding: 0 0 0 0;
-}
-
-h1
-{
- font-size: 170%;
- color: #000000;
-}
-
-h2
-{
- font-size: 140%;
- color: #808080;
-}
-
-
-#floatmenu
-{
- float: left;
- margin: 0.5ex;
- padding: 0.5ex;
- width: 20ex;
-}
-
-/* Menu item */
-.menuitem
-{
- padding: 0.1em 0.2em 0.1em 0.2em;
- background-color: #f0f0f0;
- border: 1px solid #d0d0d0;
- border-left: 3px solid #d70751;
- margin: 0.5em 0 0 0;
- text-transform: uppercase;
-}
-
-.menuitem-active
-{
- padding: 0.1em 0.2em 0.1em 0.2em;
- background-color: #f0f0f0;
- border: 1px solid #d0d0d0;
- border-left: 3px solid #d70751;
- margin: 0.5em 0 0 0;
- text-transform: uppercase;
- font-weight: bolder;
-}
-
-.menusubitem
-{
- margin: 0 0 0 1em;
- font-size: 9pt;
- line-height: 2em;
-}
-
-.menusubitem-active
-{
- margin: 0 0 0 1em;
- font-size: 9pt;
- line-height: 2em;
- font-weight: bolder;
-}
-
-/*
-.menuitem a
-{
- text-decoration: none;
-}
-*/
-
-/* The currently running CGI is highlighted */
-.currentcgi
-{
- border: 1px solid red;
-}
-
-#maincontent
-{
- margin: 0.5ex 0.5ex 0.5ex 22ex;
- padding: 0 0 0 1ex;
- _border-left: 1px dotted red;
-}
-
-#header
-{
- background-color: #f0f0f0;
- color: #707070;
- padding: 0.5ex;
- min-height: 75px; /* the top area is at least as large as the debian logo */
- /* does not work with the IE but you won't see me write hacks to
- * support buggy browsers */
- border-bottom: 1px solid #b0b0b0;
-}
-
-#debianlogo
-{
- float: left;
- position: absolute;
- top: 5px;
- left: 5px;
-}
-#headertitle
-{
- font-family: "Bitstream Vera Serif", Georgia, Palatino, serif;
- font-size: 300%;
- margin: 0;
- margin-left: 70px; /* indentation from the debian logo on the lft */
- padding: 0;
- font-weight: 100;
-}
-#headertitle a
-{
- text-decoration: none;
- font-weight: 100;
-}
-
-#headersubtitle
-{
- padding: 0;
- margin: 0;
- margin-left: 70px; /* indentation from the debian logo on the lft */
- font-size: 110%;
- font-weight: 500;
-}
-
-#footer
-{
- background-color: #f0f0f0;
- color: #707070;
- padding: 0.2em 1em 0.2em 1em;
- margin: 2em 0 0 0;
- text-align: center;
- clear: both;
- border-top: 1px solid #b0b0b0;
-}
-
-#navigation
-{
- padding: 0.2em 1em 0.2em 1em;
- background: #e0e0e0;
-}
-
-#navigation > .right
-{
- position: absolute;
- right: 1em;
-}
-
-p,form
-{
- color: #606060;
- margin: 0.3ex 0em 1ex 0;
- padding: 0 0 0 0;
-}
-
-pre
-{
- color: #606060;
- background-color: #f0f0f0;
-}
-
-a
-{
- color: #606060;
- text-decoration: underline;
-}
-
-a:hover
-{
- _border-bottom: 1px solid #000000;
- background-color: #f0f0f0;
-}
-
-ul
-{
- color: #606060;
-}
-
-/*
-ul
-{
- _background: #e0ffe0;
- _margin: 0 0 0 0 0em;
- padding: 0 0 0 1em;
-}
-
-li
-{
- _background: #ffe0e0;
- _list-style: none;
- padding: 0;
- margin: 0;
-}
-*/
-
-table
-{
- border-collapse: collapse;
- margin: 0.5em 0 0.5em 0;
-}
-
-/*
-tr
-{
-}
-*/
-
-td
-{
- vertical-align: top;
- color: #606060;
- padding: 0.1em 1em 0.1em 0.1em;
- margin: 0;
-}
-
-/* Table rows with light lines seperating the rows */
-td.lines
-{
- border-top: 1px solid #e8e8e8;
- border-bottom: 1px solid #e8e8e8;
-}
-
-th
-{
- color: #606060;
- font-weight: bolder;
- text-align: left;
- vertical-align: top;
- padding-right: 1em;
-}
-
-/*
-fieldset
-{
- _border: 1px solid #808080;
-}
-
-legend
-{
- padding: 0.2em 0.5em;
- border: 1px solid #808080;
- color: #808080;
- _font-size: 90%;
- _text-align: right;
-}
-*/
-
-.warning
-{
- color: red;
- font-weight: bolder;
-}
-
-.ok
-{
- color: green;
- font-weight: bolder;
-}
-
-.donate
-{
- color: #606060;
- font-size: 10pt;
- font-size: 9pt;
- text-align: center;
- margin: 2em 1em 2em 1em;
- border: 1px solid #d0d0d0;
- padding: 0.2em 1em 0.2em 1em;
-}
-
diff --git a/homepage/includes/body.wmi b/homepage/includes/body.wmi
deleted file mode 100644
index 1cf5cf0..0000000
--- a/homepage/includes/body.wmi
+++ /dev/null
@@ -1,7 +0,0 @@
-# includes/body.wmi
-
-<div id="maincontent">
-
-<<MAIN__BODY>>
-
-</div>
diff --git a/homepage/includes/common.wmi b/homepage/includes/common.wmi
deleted file mode 100644
index 0550248..0000000
--- a/homepage/includes/common.wmi
+++ /dev/null
@@ -1,13 +0,0 @@
-# includes/common.wmi
-
-<define-tag webmaster whitespace=delete>
- Autotesting LiveCD Org
-</define-tag>
-
-<define-tag webmasterhtml whitespace=delete>
- Autotesting LiveCD Org
-</define-tag>
-
-<define-tag full-url whitespace=delete>
-http://autotesting.livecd.org/
-<define-tag>
diff --git a/homepage/includes/footer.wmi b/homepage/includes/footer.wmi
deleted file mode 100644
index cf8b36d..0000000
--- a/homepage/includes/footer.wmi
+++ /dev/null
@@ -1,16 +0,0 @@
-# includes/footer.wmi
-
-<div id="footer">
- <webmasterhtml> — <br //>
-
- Last modified:
- <:
- @stat = stat($WML_SRC_FILENAME);
- print scalar localtime($stat[9]);
- :>
- -
- Last compiled:
- <:
- print scalar localtime();
- :>
-</div>
diff --git a/homepage/includes/header.wmi b/homepage/includes/header.wmi
deleted file mode 100644
index 004dc48..0000000
--- a/homepage/includes/header.wmi
+++ /dev/null
@@ -1,7 +0,0 @@
-# includes/header.wmi
-
-<div id="header">
- <div id="logo"><a href="/"><img src="images/logo.png" alt="AutoTesting.LiveCD.org logo" /></a></div>
- <div id="headertitle"><a href="/">Autotesting.LiveCD.org</a></div>
- <div id="headersubtitle">Testing Live Systems!</div>
-</div>
diff --git a/homepage/includes/link.wmi b/homepage/includes/link.wmi
deleted file mode 100644
index 0bea729..0000000
--- a/homepage/includes/link.wmi
+++ /dev/null
@@ -1,40 +0,0 @@
-# includes/link.wmi
-
-<define-tag mailto endtag=required whitespace=delete>
- <a href="mailto:<EMAIL "%0">" title="<EMAIL "%0">">%body</a>
-</define-tag>
-
-<define-tag link endtag=required whitespace=delete>
- <a href="<URL "%0">">%body</a>
-</define-tag>
-
-<define-tag EMAIL whitespace=delete>
- <ifeq "%0" "daniel" "daniel at debian.org">
-</define-tag>
-
-<define-tag URL whitespace=delete>
- <if "%0" "" "$(DOCROOT)">
- <ifeq "%0" "home" "$(DOCROOT)/">
- <ifeq "%0" "links" "$(DOCROOT)/links.html">
- <ifeq "%0" "debian-live" "$(DOCROOT)/debian-live/">
- <ifeq "%0" "webconverger" "$(DOCROOT)/webconverger/">
- <ifeq "%0" "local-build" "$(DOCROOT)/local-build/">
-</define-tag>
-
-<define-tag newslink whitespace=delete>
- <a href="%0">[...]</a>
-</define-tag>
-
-<define-tag screenshot-right whitespace=delete>
- <a href="$(DOCROOT)/screenshots/%0.png" title="Click for larger version">
- <img class="screenshot-right" src="$(DOCROOT)/screenshots/%0_sm.png" border="0" />
- </a>
-</define-tag>
-
-<define-tag screenshot whitespace=delete>
-<p>
- <a href="$(DOCROOT)/screenshots/%0.png" title="Click for larger version">
- <img class="screenshot" src="$(DOCROOT)/screenshots/%0_sm.png" border="0" />
- </a>
-</p>
-</define-tag>
diff --git a/homepage/includes/main.wmi b/homepage/includes/main.wmi
deleted file mode 100644
index 93ef438..0000000
--- a/homepage/includes/main.wmi
+++ /dev/null
@@ -1,40 +0,0 @@
-# includes/main.wmi
-
-#include "link.wmi"
-#include "common.wmi"
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
-<html>
- <head>
- <title><<MAIN__TITLE>></title>
- <protect><link rel="icon" href="favicon.ico" type="image/ico"></protect>
- <protect><link rel="stylesheet" type="text/css" href="images/style.css" /></protect>
- <meta name="Author" content="<webmaster>">
- <meta http-equiv="content-type" content="text/html; charset=iso-8859-15">
- <meta name="keywords" content="<<MAIN__KEYWORDS>>">
- <meta name="description" content="<<MAIN__DESCRIPTION>>">
- </head>
-
-<body>
-
-#include "header.wmi"
-#include "menu.wmi"
-#include "body.wmi"
-#include "footer.wmi"
-
-</body>
-</html>
-
-<define-tag title>
-..MAIN__TITLE>>%0<<..
-</define-tag>
-
-<define-tag keywords>
-..MAIN__KEYWORDS>>%0<<..
-</define-tag>
-
-<define-tag description>
-..MAIN__DESCRIPTION>>%0<<..
-</define-tag>
-
-..MAIN__BODY>>
diff --git a/homepage/includes/menu.wmi b/homepage/includes/menu.wmi
deleted file mode 100644
index 69ef83d..0000000
--- a/homepage/includes/menu.wmi
+++ /dev/null
@@ -1,10 +0,0 @@
-# includes/menu.wmi
-
-<div id="floatmenu">
- <div class="menuitem">Welcome</div>
- <div class="menusubitem"><link home>Home</link></div>
- <div class="menuitem">Autotesting</div>
- <div class="menusubitem"><link debian-live>Debian-Live</link></div>
- <div class="menusubitem"><link webconverger>Webconverger</link></div>
- <div class="menusubitem"><link local-build>local-builds</link></div>
-</div>
diff --git a/homepage/index.wml b/homepage/index.wml
deleted file mode 100644
index f945321..0000000
--- a/homepage/index.wml
+++ /dev/null
@@ -1,59 +0,0 @@
-#!wml
-#include "main.wmi"
-
-<title "Autotesting LiveCD Org">
-<description "Autotesting LiveCD Images">
-<keywords "Autotesting, LiveCD">
-
-<h1>About</h1>
-
-<p>
-
- A project to Autotest LiveCD images. The output of the autotesting is to create video recordings of booting live
-images "This will be really great for doing QA on the images, so that we know before downloading if a
-latest-and-greatest sid image is even booting/working correctly :)"
-
-</p>
-
-
-<:{
-use File::Find;
-use File::Basename;
-
-$dir = "./";
-$search_path="index\.html";
-$search_pattern_part2=".(current).";
-
-find({ wanted => \&filter, follow => 1 }, $dir);
-
-sub filter() {
- $filename = $_;
- $fullname = $File::Find::name;
- if ($fullname =~ /$search_path/i) {
- if($fullname =~ /$search_pattern_part2/i) {
- push (@current, $fullname)
- }
- else {
- push (@other, $fullname)
- }
- last;
- }
- }
-
-print "<h2>Current Videos</h2>";
-foreach(sort @current) {
- print "</p><a href=\"$_\">$_</a> </p>\n";
-}
-
-print "<h2>Older Videos</h2>";
-foreach(sort @other) {
- if ($_ !~ /\.\/index\.html/) {
- print "</p><a href=\"$_\">$_</a> </p>\n";
- }
-}
-
-
-
-}:>
-
-
diff --git a/homepage/video-page.wml b/homepage/video-page.wml
deleted file mode 100644
index 6f724e9..0000000
--- a/homepage/video-page.wml
+++ /dev/null
@@ -1,129 +0,0 @@
-#!wml
-#include <main.wmi>
-
-<title "Autotesting LiveCD Org">
-<description "Autotesting LiveCD Images">
-<keywords "Autotesting, LiveCD">
-
-
-<define-tag dlurl whitespace=delete>
-<:{
-sub GetSetting
-{
- my ($cfg_value,$cfg_filename,$cfg_default)=@_;
- open(CFGFILE,"<$cfg_filename") or die "Can't open configuration file $cfg_filename.";
- my @cf=<CFGFILE>;
- foreach $cfg_line (@cf)
- {
- if (index($cfg_line,"#")==0) { next; } # Lines starting with a hash mark are comments
- my @ln=split("=",$cfg_line);
- if ($ln[0] =~ /$cfg_value/i) {
- chomp $ln[1];
- return $ln[1];
- }
- }
- close CFGFILE;
- return $cfg_default; # Return default if we can't find the value
-}
-my $url = GetSetting('url','details.txt','http://debian-live.alioth.debian.org/');
-print "$url";
-}:>
-</define-tag>
-
-<define-tag built whitespace=delete>
-<:{
-my $built = GetSetting('built','details.txt','Sometime-Ago');
-print "$built";
-}:>
-</define-tag>
-
-<define-tag tested whitespace=delete>
-<:{
-my $tested = GetSetting('tested','details.txt','Today');
-print "$tested";
-}:>
-</define-tag>
-
-<define-tag tested-long whitespace=delete>
-<:{
-my $tested_long = GetSetting('tested_long','details.txt','Today');
-print "$tested_long";
-}:>
-</define-tag>
-
-<define-tag basename whitespace=delete>
-<:{
-my $basename = GetSetting('image','details.txt','.iso');
-print "$basename";
-}:>
-</define-tag>
-
-#video-booting.theora_${TODAY}.ogg"
-
-
-<h1>Autesting of <basename></h1>
-<p>Download: <a href=<dlurl>><dlurl></a><p>
-<p>Build: <built></p>
-<p>Tested: <tested-long></p>
-
-<h2>Final Frame</h2>
-<:{
-my $tested = GetSetting('tested','details.txt','Today');
-print "$tested";
-print "<img src=\"./final-screenshot_", $tested, ".jpg\" border=\"0\" >"
-}:>
-
-
-<h2>Video</h2>
-
-<p>Below is a video of the booting of this image within qemu.</p>
-
-<p>Please note - Java or gjc is required to play the video via the <a href=http://www.flumotion.net/cortado/>
-Cortado Java applet</a>. This applet plays the <a href=http://en.wikipedia.org/wiki/Theora>theora</a> encoded video.
-</p>
-<p>Bug: At the moment seek button or the seek bar does not work. It is worth watching in the whole video (1 minute).
-Note the first part of the boot up can appear slow, this is to avoid a qemu bug. </p>
-
-
-<script language="javascript">
- function doPlay() {document.applets[0].doPlay();}
- function doPause() {document.applets[0].doPause();}
- function doSeek(pos) {document.applets[0].doSeek(pos);}
-</script>
- <applet code="com.fluendo.player.Cortado.class" archive="http://autotesting.livecd.org/jar/cortado.jar" width="800" height="600"/>
-<:{
- use Cwd;
- my $dir = getcwd;
- ($absolut) = $dir =~ m|/var/www(/.*)$|;
- my $tested = GetSetting('tested','details.txt','Today');
- print "$tested";
- print "<param name=\"url\" value=\"http://autotesting.livecd.org$absolut/video-booting.theora_", $tested , ".ogg\"/>";
-}:>
- <param name="local" value="false"/>
- <param name="seekable" value="false"/>
- <param name="keepaspect" value="true" />
- <param name="video" value="true" />
- <param name="audio" value="false" />
- <param name="showStatus" value="true" />
- <param name="bufferSize" value="500" />
- <param name="statusHeight" VALUE="36" />
- <param name="autoPlay" VALUE="false" />
- <param name="duration" VALUE="140" />
- </applet>
-<p>
-<button onClick="doPlay()">
-Play
-</button>
-
-<button onClick="doPause()">
-Pause
-</button>
-
-<:{
-my $tested = GetSetting('tested','details.txt','Today');
-print "$tested";
-print "<p>The <a href=./video-booting.theora_", $tested, ".ogg>video is available for download</a> for offline viewing.<p>"
-
-}:>
-
-
diff --git a/lenny_live_beta1.lst b/lenny_live_beta1.lst
deleted file mode 100644
index 172c91b..0000000
--- a/lenny_live_beta1.lst
+++ /dev/null
@@ -1,4 +0,0 @@
-http://cdimage.debian.org/cdimage/lenny_live_beta1/i386/usb-hdd/debian-live-lenny-i386-standard.img
-http://cdimage.debian.org/cdimage/lenny_live_beta1/i386/usb-hdd/debian-live-lenny-i386-gnome-desktop.img
-http://cdimage.debian.org/cdimage/lenny_live_beta1/i386/usb-hdd/debian-live-lenny-i386-kde-desktop.img
-http://cdimage.debian.org/cdimage/lenny_live_beta1/i386/usb-hdd/debian-live-lenny-i386-xfce-desktop.img
diff --git a/local.lst b/local.lst
deleted file mode 100644
index 6640d9e..0000000
--- a/local.lst
+++ /dev/null
@@ -1,3 +0,0 @@
-/home/autotesting/iso/local/debian-live-sid-i386-xfce.iso
-/home/autotesting/iso/local/debian-live-lenny-i386-xfce.iso
-/home/autotesting/iso/local/debian-live-etch-i386-xfce.iso
diff --git a/local_build_debian-live.sh b/local_build_debian-live.sh
deleted file mode 100755
index 9ad1838..0000000
--- a/local_build_debian-live.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-#
-# Locally build a debian-live image.
-# as crontab from root
-# Kick auotesting to test..
-# debian-live-sid-i386-xfce.iso
-
-if [ -z "$1" ] && [ -z "$2" ]
-then
- echo " Usage $0 build.iso distribution packages-list "
- exit
-fi
-
-if [ -z "$3" ]
-then
- echo "blank packages-lists"
- PACKAGES_LISTS=""
-else
- PACKAGES_LISTS="--packages-lists $3"
-fi
-
-TODAY=$(date +"%F")
-TMP_DIR=/tmp/local_build_$$/
-mkdir $TMP_DIR
-#chmod a+w $TMP_DIR
-cd $TMP_DIR
-
-lh_config --distribution $2 $PACKAGES_LISTS
-sudo lh_build
-cp ./binary.iso ${1}-${2}-i386-${3}.iso
-sudo lh_clean
-sudo rm $TMP_DIR -R
-
-
diff --git a/monthly.lst b/monthly.lst
deleted file mode 100644
index 4256508..0000000
--- a/monthly.lst
+++ /dev/null
@@ -1,4 +0,0 @@
-http://live.debian.net/cdimage/monthly-builds/current/i386/debian-live-etch-i386-standard.iso
-http://live.debian.net/cdimage/monthly-builds/current/i386/debian-live-etch-i386-xfce-desktop.iso
-http://live.debian.net/cdimage/monthly-builds/current/i386/debian-live-etch-i386-gnome-desktop.iso
-http://live.debian.net/cdimage/monthly-builds/current/i386/debian-live-etch-i386-kde-desktop.img
diff --git a/openlogo-live-nd.png b/openlogo-live-nd.png
deleted file mode 100644
index aa4f81d..0000000
Binary files a/openlogo-live-nd.png and /dev/null differ
diff --git a/run-batch-autotesting.sh b/run-batch-autotesting.sh
deleted file mode 100755
index 4a0ac5b..0000000
--- a/run-batch-autotesting.sh
+++ /dev/null
@@ -1,149 +0,0 @@
-#!/bin/sh
-#
-# run-batch-autotesting.sh #
-# #
-# Copyleft (c) 2008 Brendan M. Sleight #
-# <bmsleight at barwap._REMOVE_SPAM_TRAP.com> #
-# #
-# This script is licensed under the GNU GPL v2 or later. #
-# #
-# On Debian systems, this license can be obtained via #
-# /usr/share/common-licenses/GPL #
-#
-# Download the list of images and run video-qemu-booting against each download.
-#
-# Usage: run-batch-autotesting.sh filelist.txt isolocation videos
-# e.g: run-batch-autotesting.sh dailylist.txt daily/ video/daily/
-# Hence can be run Daily, weekly or month using different lists
-# Another script can do the tidy up.
-#
-# We make be downloading an iso on the 21st Jan, built on the
-# 20th or even the 1st Jan. This needs to be identified in the
-# someway - mayeb the filename.
-# iso-file-name_Built_02-Apr-2008_tested_03-Apr-2008.ogg
-#
-# 0 - Check lockfile
-# 1 - For each iso [each file in in Auotest-iso-urls.lst]
-# 1a - Remove the old iso
-# 1b - if file does not exist or datestamp local iso iso is before today:
-# 1b - Download the new-current-iso and related md5sum-file
-# 1c - check md5sum, if md5sum ok:
-# 1d - Video-qemu-booting-iso iso-name date-iso-name.ogg/.jpg
-# 1e - ????
-# 2 - Profit
-#
-#
-
-VIDEO_QEMU_BOOTING="/home/autotesting/debian-live/autotesting/video-qemu-booting-iso.sh"
-
-if [ -z "$1" ] && [ -z "$2" ] && [ -z "$3" ] && [ -z "$4" ]
-then
- echo "usage: $0 directory/ "
- echo
- echo " e.g: run-batch-autotesting.sh dailylist.txt iso/daily/ video/daily/ debian-live/i386/ MD5SUM-FILE"
- exit
-fi
-
-URLLIST=$1
-DIRECTORY=$2
-VIDEO_DIRECTORY=$3
-WEB_ROOT=$4
-
-if [ -z "$5" ]
-then
- MD5SUM_FILE="MD5SUMS"
-else
- MD5SUM_FILE="$5"
-fi
-
-if [ -f /tmp/run-batch-autotesting.lock ]
-then
- echo "Lock file /tmp/run-batch-autotesting.lock present indicating $0 is already running"
- exit
-fi
-
-echo "Lock file present indicating $0 is running" >/tmp/run-batch-autotesting.lock
-
-for URL in $(cat $URLLIST)
-do
- BASE_NAME=$(basename $URL)
- PART_URL=$(dirname $URL)
- MD5SUMS="$PART_URL/$MD5SUM_FILE"
- HAS_FILE_UPDATED_TODAY=$(find $DIRECTORY/ -ctime -0 \! -type d | grep "$BASE_NAME")
-
- if [ -n "$HAS_FILE_UPDATED_TODAY" ]
- then
- echo "$BASE_NAME already downloaded today "
- echo " - skipping download and testing. To retest please remove file or set ctime>1 day"
- continue
- fi
-
- case "${URL}" in
- http*)
- echo "Downloading $URL"
- rm $DIRECTORY/$BASE_NAME 2>/dev/null
- rm $DIRECTORY/$MD5SUM_FILE 2>/dev/null
- wget --no-verbose --tries=3 --timeout=60 --directory-prefix=$DIRECTORY $URL
- wget --no-verbose --tries=3 --timeout=60 --directory-prefix=$DIRECTORY $MD5SUMS
- MD5SUM_LOCAL=$(md5sum $DIRECTORY/$BASE_NAME | cut --fields=1 --delimiter=\ )
- MD5SUM_REMOTE=$(cat $DIRECTORY/$MD5SUM_FILE | grep "$BASE_NAME" | head -n 1 | cut --fields=1 --delimiter=\ )
- ;;
- *)
- echo "Local file - assuming already in place"
- MD5SUM_LOCAL="ok"
- MD5SUM_REMOTE="$MD5SUM_LOCAL"
- ;;
- esac
-
- if [ $MD5SUM_LOCAL != $MD5SUM_REMOTE ]
- then
- echo "$BASE_NAME - md5sums different, remote: $MD5SUM_REMOTE, local: $MD5SUM_LOCAL. "
- echo " Skip testing."
- continue
- fi
-
- DATE_IMAGE_BUILT=$(ls -lh --time-style long-iso $DIRECTORY/$BASE_NAME |tr -s " "|cut -d" " -f6)
- DATE_DOWNLOADED=$(ls -lc --time-style long-iso $DIRECTORY/$BASE_NAME |tr -s " "|cut -d" " -f6)
- TODAY=$(date +"%F")
- TODAY_LONG=$(date )
- mkdir "$VIDEO_DIRECTORY/${BASE_NAME}"
- VIDEO_NAME="$VIDEO_DIRECTORY/${BASE_NAME}/Built_${DATE_IMAGE_BUILT}_Tested_${TODAY}_.ogg"
- LOG_FILE="$VIDEO_DIRECTORY/${BASE_NAME}/Built_${DATE_IMAGE_BUILT}_Tested_${TODAY}_log.txt"
- echo "AutoTesting $BASE_NAME $VIDEO_NAME"
- $VIDEO_QEMU_BOOTING -g 1280x960 -t 420 -v 5 $DIRECTORY/$BASE_NAME $VIDEO_NAME >$LOG_FILE 2>&1
- echo "Finished Autotesting $BASE_NAME"
- echo
- echo "----"
- echo
- echo "* Moving to webserver"
- LN_S_ROOT="$WEB_ROOT/$BASE_NAME/built_${DATE_IMAGE_BUILT}/Tested_${TODAY}"
- LN_S_CURRENT="$WEB_ROOT/$BASE_NAME/current"
- # making directories if required.
- mkdir -p "$LN_S_ROOT"
- rm $LN_S_CURRENT -rf
- mkdir -p "$LN_S_CURRENT"
- # get rid of the old current
- cp $VIDEO_NAME "$LN_S_ROOT/video-booting.theora_${TODAY}.ogg"
- mv $VIDEO_NAME "$LN_S_CURRENT/video-booting.theora_${TODAY}.ogg"
- cp $VIDEO_NAME.montage.jpg "$LN_S_ROOT/video-booting-montage_${TODAY}.jpg"
- mv $VIDEO_NAME.montage.jpg "$LN_S_CURRENT/video-booting-montage_${TODAY}.jpg"
- cp $VIDEO_NAME.end.jpg "$LN_S_ROOT/final-screenshot_${TODAY}.jpg"
- mv $VIDEO_NAME.end.jpg "$LN_S_CURRENT/final-screenshot_${TODAY}.jpg"
- echo "----"
- cp /home/autotesting/debian-live/autotesting/homepage/video-page.wml "$LN_S_ROOT/index.wml"
- cp /home/autotesting/debian-live/autotesting/homepage/video-page.wml "$LN_S_CURRENT/index.wml"
- DETAILS_TXT="$VIDEO_DIRECTORY/${BASE_NAME}/Built_${DATE_IMAGE_BUILT}_Tested_${TODAY}__details.txt"
- echo "# Setting used for index.wml" >$DETAILS_TXT
- echo "url=${URL}" >>$DETAILS_TXT
- echo "image=${BASE_NAME}" >>$DETAILS_TXT
- echo "built=${DATE_IMAGE_BUILT}" >>$DETAILS_TXT
- echo "tested=${TODAY}" >>$DETAILS_TXT
- echo "tested_long=\"${TODAY_LONG}\" " >>$DETAILS_TXT
- cp $DETAILS_TXT "$LN_S_ROOT/details.txt"
- mv $DETAILS_TXT "$LN_S_CURRENT/details.txt"
- echo
-done
-
-
-
-rm /tmp/run-batch-autotesting.lock
diff --git a/tests/local-test_morphix-lightgui.xml b/tests/local-test_morphix-lightgui.xml
new file mode 100644
index 0000000..df62b23
--- /dev/null
+++ b/tests/local-test_morphix-lightgui.xml
@@ -0,0 +1,32 @@
+<autotesting>
+ <tests>
+ <test>
+ <download>http://127.0.0.1/autotesting/lightgui-basemod-2.6.23-2008-02-10_0018-latest.iso</download>
+ <title>Morphix LightGUI</title>
+ <description>Morphix. Daily build of LightGUI iso.</description>
+ <background>http://www.morphix.org/templates/MorphixORG/images/mambo_header.jpg</background>
+ <frequency>daily</frequency>
+ <qemu>
+ <xscreen>800x600x24</xscreen>
+ <binary>qemu</binary>
+ <options>-cdrom</options>
+ <!-- Time to pause before sending keys presses -->
+ <pause>10</pause>
+ <sendkeys>down,down,kp_enter</sendkeys>
+ <!-- Time to run qmeu -->
+ <time>600</time>
+ </qemu>
+ <output>
+ <!-- Number of test sets to keep -->
+ <keep>4</keep>
+ <root>/home/bms/autotesting/tests/</root>
+ <local>morphix/lightGUI/</local>
+ <video>autotesting.ogv</video>
+ <screenshots>
+ <final>final-screenshot.png</final>
+ <montage>montage-of-video-frames.png</montage>
+ </screenshots>
+ </output>
+ </test>
+ </tests>
+</autotesting>
diff --git a/tests/morphix-lightgui.xml b/tests/morphix-lightgui.xml
new file mode 100644
index 0000000..ef5f866
--- /dev/null
+++ b/tests/morphix-lightgui.xml
@@ -0,0 +1,32 @@
+<autotesting>
+ <tests>
+ <test>
+ <download>http://distro.ibiblio.org/pub/linux/distributions/morphix/autobuilds/iso/lightgui-basemod-2.6.23-2008-02-10_0018-latest.iso</download>
+ <title>Morphix LightGUI</title>
+ <description>Morphix. Daily build of LightGUI iso.</description>
+ <background>http://www.morphix.org/templates/MorphixORG/images/mambo_header.jpg</background>
+ <frequency>daily</frequency>
+ <qemu>
+ <xscreen>800x600x24</xscreen>
+ <binary>qemu</binary>
+ <options>-cdrom</options>
+ <!-- Time to pause before sending keys presses -->
+ <pause>10</pause>
+ <sendkeys>down,down,kp_enter</sendkeys>
+ <!-- Time to run qmeu -->
+ <time>600</time>
+ </qemu>
+ <output>
+ <!-- Number of test sets to keep -->
+ <keep>4</keep>
+ <root>/home/bms/autotesting/tests/</root>
+ <local>morphix/lightGUI/</local>
+ <video>autotesting.ogv</video>
+ <screenshots>
+ <final>final-screenshot.png</final>
+ <montage>montage-of-video-frames.png</montage>
+ </screenshots>
+ </output>
+ </test>
+ </tests>
+</autotesting>
diff --git a/video-qemu-booting-iso.sh b/video-qemu-booting-iso.sh
deleted file mode 100755
index 3e5b835..0000000
--- a/video-qemu-booting-iso.sh
+++ /dev/null
@@ -1,275 +0,0 @@
-#!/bin/sh
-#
-# video-qemu-booting-iso.sh #
-# #
-# Copyleft (c) 2007 Brendan M. Sleight #
-# <bmsleight at barwap._REMOVE_SPAM_TRAP.com> #
-# #
-# This script is licensed under the GNU GPL v2 or later. #
-# #
-# On Debian systems, this license can be obtained via #
-# /usr/share/common-licenses/GPL #
-# #
-# Required packages/applications :- #
-# bash, expect, ffmpeg2thoera, imagemagick, #
-# qemu, vncserver, vncrec-twibright #
-# #
-# Requires /etc/vnc.conf to be ammended. #
-# #
-# #
-
-
-lock_file_check ()
-{
-if [ -f /tmp/video-qemu-booting-iso.lock ]
-then
- echo "Lock file /tmp/video-qemu-booting-iso.lock present indicating $0 is already running"
- exit
-fi
-VNCCONF=$(cat /etc/vnc.conf | grep "^\$vncStartup")
-if [ "$VNCCONF" != "\$vncStartup = \"~/.vnc/xstartup\";" ]
- then
- echo "Requires vnc.conf to have the line:- "
- echo "\$vncStartup = \"~/.vnc/xstartup\";"
- echo "Else two lots of windowm mangers will launched in the extra vnc sessions."
- exit
-fi
-echo "Lock file /tmp/video-qemu-booting-iso.lock present indicating $0 is running" >/tmp/video-qemu-booting-iso.lock
-}
-
-Random () {
- tr -c -d '0-9' < /dev/urandom | dd bs=1 count=5 2>/dev/null
-}
-
-get_global_variables ()
-{
-PASSWD="$(Random).$(Random).$(Random).$(Random).$(Random)"
-HOSTNAME=$(hostname)
-OLD_DISPLAY="$DISPLAY"
-TODAY=$(date +"%F")
-TMP_DIR="$(mktemp -d vqbi.XXXXXXXXX)"
-IPADDRESS="127.0.0.1"
-}
-
-get_options_and_defaults ()
-{
- SENDKEYS="${SENDKEYS:-spc,l,i,v,e,spc,kp_enter}"
- QEMU_MONITOR_PORT="${QEMU_MONITOR_PORT:-4444}"
- GEOMETRY="${GEOMETRY:-1280x960}"
- CONVERT_DIM="${CONVERT_DIM:-800x600}"
- FFMPEG_DIM_SCALE=$(echo "$CONVERT_DIM" | sed s/x/\ -y\ /g)
- FFMPEG_DIM_SCALE="-x $FFMPEG_DIM_SCALE"
- TIME_Q="${TIME_Q:-600}"
- VQUALITY="${VQUALITY:-5}"
- QEMU_BIN="${QEMU_BIN:-qemu}" #qemu_0.8.4-etch1
-}
-
-set_up_workspace ()
-{
-mkdir $TMP_DIR 2>/dev/null
-rm ~/.vnc/passwd
-
-cat<<EOF > ~/.vnc/xstartup
-#!/bin/sh
-xsetroot -solid grey
-EOF
-chmod 755 ~/.vnc/xstartup
-
-cat<<EOF > $TMP_DIR/vnc.exp
-spawn vncpasswd
-expect "Password:" { send "$PASSWD\r" }
-expect "Verify:" { send "$PASSWD\r" }
-interact
-puts "\nVNC Password changed\n"
-EOF
-
-expect $TMP_DIR/vnc.exp >/dev/null 2>/dev/null
-echo "VNC Password changed"
-}
-
-start_vnc_sessions ()
-{
-vncserver -depth 24 -Protocol3.3 -geometry $GEOMETRY -localhost >$TMP_DIR/vncserver.txt 2>&1
-VNSERVER_QEMU=$(cat $TMP_DIR/vncserver.txt | grep 'New' | awk '{ print $6}' )
-VNCSERVER_QMEU_NUMBER=$(cat $TMP_DIR/vncserver.txt | grep 'New' | cut -d: -f3)
-echo "Launched vncserver $VNSERVER_QEMU"
-vncserver -depth 24 -Protocol3.3 -geometry 1600x1200 -localhost >$TMP_DIR/vncserver.txt 2>&1
-VNSERVER_VNCREC=$(cat $TMP_DIR/vncserver.txt | grep 'New' | awk '{ print $6}' )
-VNCSERVER_VNCREC_NUMBER=$(cat $TMP_DIR/vncserver.txt | grep 'New' | cut -d: -f3)
-echo "Launched vncserver $VNSERVER_VNCREC"
-}
-
-start_vnc_record ()
-{
-export DISPLAY="$VNSERVER_VNCREC"
-export VNCREC_MOVIE_FRAMERATE
-echo "Starting vncrec, recording :$VNCSERVER_QMEU_NUMBER. Local display :$VNCSERVER_VNCREC_NUMBER"
-vncrec -display :$VNCSERVER_VNCREC_NUMBER -passwd ~/.vnc/passwd -depth 24 -shared -truecolor -viewonly -encoding raw -record $TMP_DIR/qemu.1.vnc :$VNCSERVER_QMEU_NUMBER &
-#sleep 20
-}
-
-start_qemu ()
-{
-export DISPLAY=$VNSERVER_QEMU
-echo "Starting qemu, within Display $VNSERVER_QEMU"
-IMAGE_TYPE=$(echo "$ISO" | sed -e 's/.*[.]//g')
-if [ "$IMAGE_TYPE" = "img" ]
-then
- QEMU_OPTS="-hda"
-else
- QEMU_OPTS="-cdrom"
-fi
-$QEMU_BIN -full-screen $QEMU_OPTS $ISO -monitor telnet:$IPADDRESS:$QEMU_MONITOR_PORT,server,nowait &
-sleep 100 # This is important. Im not sure why, vnc catch-up time maybe, but it just works :), remove at your peril
-
-i=1
-REACHED_LAST_KB=""
-while [ -z $REACHED_LAST_KB ]
-do
- sleep 2
- KEY=$(echo $SENDKEYS | cut -d, -f$i)
- if [ "$KEY" != "" ]
- then
- echo "sendkey $KEY" | socat - TCP4:$IPADDRESS:$QEMU_MONITOR_PORT
- else
- REACHED_LAST_KB="Y"
- fi
- i=$(($i+1))
-done
-sleep 1
-}
-
-let_qemu_run ()
-{
-echo "Sleeping for $TIME_Q seconds whilst qemu runs"
-sleep $TIME_Q
-}
-
-stop_qemu ()
-{
-echo "Capture final screen-shot"
-import -window root $VIDEO.end.jpg
-echo "Stopping vncrec and qemu"
-killall vncrec
-killall $QEMU_BIN
-}
-
-stop_vncservers ()
-{
-echo "Stopping vncservers"
-vncserver -kill :$VNCSERVER_QMEU_NUMBER >/dev/null 2>&1
-vncserver -kill :$VNCSERVER_VNCREC_NUMBER >/dev/null 2>&1
-}
-
-gen_video ()
-{
-#Need to runs some tests to ensure vncrec -movie does temriante at end of session.
-echo "Generating video from recorded vnc stream. "
-vncrec -movie $TMP_DIR/qemu.1.vnc 2>/dev/null | ffmpeg2theora $FFMPEG_DIM_SCALE --videoquality $VQUALITY --inputfps 40 --artist "AutoTesting.livecd.org" --title "Video of Qemu booting $ISO" --date "$TODAY" -o $VIDEO - 2>/dev/null
-#vnc2swf-edit -o $VIDEO.swf -l -c -s 0.703125 -t video $TMP_DIR/qemu.1.vnc
-#VIDEO_NO_EXT=${VIDEO%.*}
-#mv $VIDEO.html ${VIDEO_NO_EXT}_View_swf_Video_.html
-}
-
-gen_video_preview ()
-{
-MONTAGE_DIR=/tmp/tp.$$.dir.montage
-mkdir $MONTAGE_DIR
-ffmpeg -i $VIDEO -vcodec copy $TMP_DIR/duration.ogg 2>$TMP_DIR/ffmpeg.log
-DURATION_H=$(cat $TMP_DIR/ffmpeg.log | grep Duration | cut -d ' ' -f 4 | sed s/,// | cut -d ':' -f 1)
-DURATION_M=$(cat $TMP_DIR/ffmpeg.log | grep Duration | cut -d ' ' -f 4 | sed s/,// | cut -d ':' -f 2)
-DURATION_S=$(cat $TMP_DIR/ffmpeg.log | grep Duration | cut -d ' ' -f 4 | cut -d '.' -f 1 | sed s/,// | cut -d ':' -f 3)
-LENGTH=$(($DURATION_H*3600+$DURATION_M*60+$DURATION_S))
-echo "Duration of Video $LENGTH $DURATION_H $DURATION_M $DURATION_S"
-COUNTER=0
-END=5
-COUNT=1
-# Generate a Frame every 0.5 secs for the start of the video
-while [ $COUNTER -lt $END ]; do
- HALFSECS=$(echo $COUNTER/2|bc -l)
- ffmpeg -i $VIDEO -an -ss $HALFSECS -t 01 -r 1 -y -s 320x240 $TMP_DIR/video%d.jpg 2>/dev/null
- mv $TMP_DIR/video1.jpg $MONTAGE_DIR/$COUNT.jpg
- LIST="$LIST $MONTAGE_DIR/$COUNT.jpg"
- COUNT=$(($COUNT + 1))
- COUNTER=$(($COUNTER + 1))
-done
-SPLIT=$(($LENGTH/12))
-COUNTER="$SPLIT"
-while [ $COUNTER -lt $LENGTH ]; do
- ffmpeg -i $VIDEO -an -ss $COUNTER -t 01 -r 1 -y $TMP_DIR/video%d.jpg 2>/dev/null
- mv $TMP_DIR/video1.jpg $MONTAGE_DIR/$COUNT.jpg
- LIST="$LIST $MONTAGE_DIR/$COUNT.jpg"
- COUNT=$(($COUNT + 1))
- COUNTER=$(($COUNTER+$SPLIT))
-done
-montage -geometry 180x135+4+4 -frame 5 $LIST $VIDEO.montage.jpg
-rm -R $MONTAGE_DIR
-rmdir $MONTAGE_DIR
-}
-
-clean_up ()
-{
-DISPLAY="$OLD_DISPLAY"
-export DISPLAY="$OLD_DISPLAY"
-rm $TMP_DIR -r
-rm /tmp/video-qemu-booting-iso.lock
-}
-
-
-while getopts s:p:g:d:t:v:q:n opt
-do
- case "$opt" in
- s) SENDKEYS="$OPTARG";;
- p) QEMU_MONITOR_PORT="$OPTARG";;
- g) GEOMETRY="$OPTARG";;
- d) CONVERT_DIM="$OPTARG";;
- t) TIME_Q="$OPTARG";;
- v) VQUALITY="$OPTARG";;
- q) QEMU_BIN="$OPTARG";;
- n) NOPREVIEW="true";;
-
-
- \?) # unknown flag
- echo >&2 \
- "usage: $0 [-s \"keys,to,send,to,qemu\"] [-p port_number for qemu-monitor] [-g geometry of vncsession] [-d dimensions of video] [-t time to run qemu] [-v (0 to 10) encoding quality for video] [-q alternative qemu binary name] [-n] IsoToTest.iso Video.ogg "
- exit 1;;
- esac
-done
-shift `expr $OPTIND - 1`
-
-if [ -z "$1" ] && [ -z "$2" ]; then
- echo "usage: $0 [-s \"keys,to,send,to,qemu\"] [-p port_number for qemu-monitor] [-g geometry of vncsession] [-d dimensions of video] [-t time to run qemu] [-v (0 to 10) encoding quality for video] [-q alternative qemu binary name] [-n Do not gernerate a preview of the video.ogg.jpg] IsoToTest.iso Video.ogg "
- echo
- echo " This script boots a livecd using qemu and records a video of the process. "
- echo
- echo " It is worth noting that this script takes a long time to run and heavy usage of CPU."
- echo " There is heavy usage of the qemu, imagemagik tools. "
- echo " For every second of running qemu the script it can take up to 3s to compile the video."
- echo " For example using -t 1200 will about one hour."
- echo
- echo " Minimum geometry for qemu -g 1024x768"
- echo
- echo " Launches a couple of vncserver session, kills other vncrec and qemu sessions running."
- exit
-fi
-
-ISO=$1
-VIDEO=$2
-
-lock_file_check
-get_options_and_defaults
-get_global_variables
-set_up_workspace
-start_vnc_sessions
-start_vnc_record
-start_qemu
-let_qemu_run
-stop_qemu
-gen_video
-if [ "$NOPREVIEW" = "true" ]; then
- echo "Skipping jpg preview"
-else
- gen_video_preview
-fi
-stop_vncservers
-clean_up
diff --git a/webconverger.lst b/webconverger.lst
deleted file mode 100644
index bf19ae8..0000000
--- a/webconverger.lst
+++ /dev/null
@@ -1 +0,0 @@
-http://custom.webconverger.com/webc-3.3b.mini.iso
diff --git a/weekly.lst b/weekly.lst
deleted file mode 100644
index a88658c..0000000
--- a/weekly.lst
+++ /dev/null
@@ -1,4 +0,0 @@
-http://live.debian.net/cdimage/weekly-builds/current/i386/debian-live-lenny-i386-standard.iso
-http://live.debian.net/cdimage/weekly-builds/current/i386/debian-live-lenny-i386-xfce-desktop.iso
-http://live.debian.net/cdimage/weekly-builds/current/i386/debian-live-lenny-i386-gnome-desktop.iso
-http://live.debian.net/cdimage/weekly-builds/current/i386/debian-live-lenny-i386-kde-desktop.img
--
debian-live/autotesting
More information about the debian-live-changes
mailing list