Megatest
NB// Megatest code has been moved to http://www.kiatoa.com/fossils/megatest
Copy the megatest/tests directory and modify megatest.config and possibly runconfigs.config. Compile and install megatest into your path somewhere. Copy utils/nbfake into your path somewhere and make sure it is executable.
Now you should be able to run megatest from the tests directory by running "make".
Real documentation will appear here over time :)
Watching the runs proceed
Use the "watch" utility. Or try the dashboard:
watch megatest -list-runs % Every 2.0s: megatest -list-runs % Sun Mar 13 20:26:42 2011 Run: none/nfs/ubuntu/2011WW10.7 Test: runfirst(summer) State: COMPLETED Status: PASS Runtime: 20s Time: 03/13/2011 16:48:07 Host: zeus Test: runfirst(winter) State: COMPLETED Status: PASS Runtime: 20s Time: 03/13/2011 16:48:07 Host: zeus Test: runfirst(fall) State: COMPLETED Status: PASS Runtime: 20s Time: 03/13/2011 16:48:08 Host: zeus Test: runfirst(spring) State: COMPLETED Status: PASS Runtime: 20s Time: 03/13/2011 16:48:08 Host: zeus Test: sqlitespeed State: COMPLETED Status: FAIL Runtime: 0s Time: 03/13/2011 16:48:21 Host: zeus cpuload: 0.0 diskfree: 25449356 uname: Linux 2.6.32-30-generic #59-Ubuntu SMP Tue Mar 1 21:30:21 UTC 2011 unknown unknown GNU/Linux rundir: /tmp/none/nfs/ubuntu/2011WW10.7/sqlitespeed
Features
- Flexible test specification. Use perl, ruby, shell, scheme, expect, tcl or whatever you like to write your tests. There is no specialized test scripting language.
- Test dependencies, the "waiton" keyword will prevent a test from launching until the tests that it depends on have completed with "PASS" status.
- Process and machine monitoring while the test is running. The test execution process "calls home" every 10 seconds with the memory and diskspace usage on the machine where the test is running.
- Configurable hierarchy for your tests. I used sysname, fsname and datapath for organizing my test runs but you can set up for what ever key words work for your situation.
- A remote launching script (nbfake) is included which seems to work pretty well (it is just an ssh command which I admit I had to resort to google to figure out) and has also been tested with another network batch job running tool and worked fine.
- Easy test debugging with the -xterm command. If you have x-forwarding set up via ssh you can use the -xterm switch to bring up an xterm with the target environment for debugging your tests.
- Uses the sqlite3 database backend with a very simple schema. Writing your own dashboard or bolting on additional automation should be very easy.
- Test iteration. Add entries to the items section of your testconfig file and the test will be run with all combinations of your items.
- Disk space management. Add paths to your disks to the disks section of your megatest.config file and megatest will create the run area on the disk with the most space and link it back to your "runs" directory.