Index: Makefile
==================================================================
--- Makefile
+++ Makefile
@@ -19,40 +19,42 @@
# rm .o ; make install CSCOPTS='-profile' ; ... ; chicken-profile | less
SHELL=/bin/bash
PREFIX=$(PWD)
CSCOPTS=
INSTALL=install
-SRCFILES = common.scm items.scm launch.scm \
- ods.scm runconfig.scm server.scm configf.scm \
- db.scm keys.scm margs.scm megatest-version.scm \
- process.scm runs.scm tasks.scm tests.scm genexample.scm \
- http-transport.scm filedb.scm tdb.scm \
- client.scm mt.scm \
- ezsteps.scm lock-queue.scm sdb.scm \
- rmt.scm api.scm subrun.scm \
- portlogger.scm archive.scm env.scm diff-report.scm cgisetup/models/pgdb.scm
+SRCFILES = common.scm items.scm launch.scm ods.scm runconfig.scm \
+ server.scm configf.scm db.scm keys.scm margs.scm \
+ megatest-version.scm process.scm runs.scm tasks.scm \
+ tests.scm genexample.scm http-transport.scm filedb.scm \
+ tdb.scm client.scm mt.scm ezsteps.scm lock-queue.scm \
+ sdb.scm rmt.scm api.scm subrun.scm portlogger.scm \
+ archive.scm env.scm diff-report.scm \
+ cgisetup/models/pgdb.scm
# module source files
-MSRCFILES = ftail.scm rmtmod.scm commonmod.scm
-
-
-# Eggs to install (straightforward ones)
-EGGS=matchable readline apropos base64 regex-literals format regex-case test coops trace csv \
-dot-locking posix-utils posix-extras directory-utils hostinfo tcp-server rpc csv-xml fmt \
-json md5 awful http-client spiffy uri-common intarweb spiffy-request-vars \
-spiffy-directory-listing ssax sxml-serializer sxml-modifications iup canvas-draw sqlite3
-
-GUISRCF = dashboard-context-menu.scm dashboard-tests.scm dashboard-guimonitor.scm gutils.scm dcommon.scm tree.scm vg.scm
+# ftail.scm rmtmod.scm commonmod.scm removed
+MSRCFILES = ducttape-lib.scm pkts.scm stml2.scm cookie.scm mutils.scm \
+ mtargs.scm commonmod.scm
+
+GUISRCF = dashboard-context-menu.scm dashboard-tests.scm \
+ dashboard-guimonitor.scm gutils.scm dcommon.scm tree.scm \
+ vg.scm
OFILES = $(SRCFILES:%.scm=%.o)
GOFILES = $(GUISRCF:%.scm=%.o)
MOFILES = $(addprefix mofiles/,$(MSRCFILES:%.scm=%.o))
+# compiled import files
+MOIMPFILES = $(MSRCFILES:%.scm=%.import.o)
-mofiles/%.o : %.scm
- mkdir -p mofiles
- csc $(CSCOPTS) -J -c $< -o mofiles/$*.o
+%.import.o : %.import.scm
+ csc $(CSCOPTS) -unit $*.import -c $*.import.scm -o $*.import.o
+
+mofiles/%.o %.import.scm : %.scm
+ @[ -e mofiles ] || mkdir -p mofiles
+ csc $(CSCOPTS) -I $* -J -c $< -o mofiles/$*.o
+ @touch $*.import.scm # ensure it is touched after the .o is made
ADTLSCR=mt_laststep mt_runstep mt_ezstep
HELPERS=$(addprefix $(PREFIX)/bin/,$(ADTLSCR))
DEPLOYHELPERS=$(addprefix deploytarg/,$(ADTLSCR))
MTESTHASH=$(shell fossil info|grep checkout:| awk '{print $$2}')
@@ -61,23 +63,22 @@
$(error MTESTHASH is broken!)
endif
CSIPATH=$(shell which csi)
CKPATH=$(shell dirname $(shell dirname $(CSIPATH)))
-# ARCHSTR=$(shell uname -m)_$(shell uname -r)
-# BASH_MACHTYPE=$(shell bash -c "echo \$$MACHTYPE")
-# ARCHSTR=$(BASH_MACHTYPE)_$(shell lsb_release -sr)
ARCHSTR=$(shell if [[ -e /usr/bin/sw_vers ]]; then /usr/bin/sw_vers -productVersion; else lsb_release -sr; fi)
# ARCHSTR=$(shell bash -c "echo \$$MACHTYPE")
PNGFILES = $(shell cd docs/manual;ls *png)
#all : $(PREFIX)/bin/.$(ARCHSTR) mtest dboard mtut ndboard
all : $(PREFIX)/bin/.$(ARCHSTR) mtest dboard mtut tcmt
-mtest: $(OFILES) readline-fix.scm megatest.o $(MOFILES) mofiles/ftail.o mofiles/rmtmod.o mofiles/commonmod.o
- csc $(CSCOPTS) $(OFILES) $(MOFILES) megatest.o -o mtest
+# megatest.o : ducttape-lib.import.o
+
+mtest: $(OFILES) readline-fix.scm megatest.o $(MOFILES) $(MOIMPFILES)
+ csc $(CSCOPTS) $(OFILES) $(MOFILES) $(MOIMPFILES) megatest.o -o mtest
showmtesthash:
@echo $(MTESTHASH)
dboard : $(OFILES) $(GOFILES) dashboard.scm $(MOFILES)
@@ -110,23 +111,23 @@
ods.o \
portlogger.o \
process.o \
rmt.o \
mofiles/rmtmod.o \
- mofiles/commonmod.o \
rpc-transport.o \
runconfig.o \
runs.o \
server.o \
tasks.o \
tdb.o \
tests.o \
- subrun.o \
+ subrun.o
+# mofiles/commonmod.o \
tcmt : $(TCMTOBJS) tcmt.scm
- csc $(CSCOPTS) $(TCMTOBJS) tcmt.scm -o tcmt
+ csc $(CSCOPTS) $(TCMTOBJS) $(MOFILES) $(MOIMPFILES) tcmt.scm -o tcmt
# install documentation to $(PREFIX)/docs
# DOES NOT REBUILD DOCS
#
$(PREFIX)/share/docs/megatest_manual.html : docs/manual/megatest_manual.html
@@ -141,43 +142,76 @@
$(PREFIX)/share/db/mt-pg.sql : mt-pg.sql
mkdir -p $(PREFIX)/share/db
$(INSTALL) mt-pg.sql $(PREFIX)/share/db/mt-pg.sql
-#multi-dboard : multi-dboard.scm $(OFILES) $(GOFILES)
-# csc $(CSCOPTS) $(OFILES) $(GOFILES) multi-dboard.scm -o multi-dboard
-
-#
-# $(PREFIX)/bin/revtagfsl : utils/revtagfsl.scm
-# csc utils/revtagfsl.scm -o $(PREFIX)/bin/revtagfsl
-
# Special dependencies for the includes
-tests.o db.o launch.o runs.o dashboard-tests.o dashboard-context-menu.o dashboard-guimonitor.o dashboard-main.o monitor.o dashboard.o \
-archive.o megatest.o : db_records.scm
+common.o : mofiles/commonmod.o
+
+tests.o db.o launch.o runs.o dashboard-tests.o \
+dashboard-context-menu.o dashboard-guimonitor.o dashboard-main.o \
+monitor.o dashboard.o archive.o megatest.o : db_records.scm
+
tests.o runs.o dashboard.o dashboard-tests.o dashboard-context-menu.o dashboard-main.o : run_records.scm
+
db.o ezsteps.o keys.o launch.o megatest.o monitor.o runs-for-ref.o runs.o tests.o : key_records.scm
+
tests.o tasks.o dashboard-tasks.o : task_records.scm
+
runs.o : test_records.scm
+
megatest.o : megatest-fossil-hash.scm
+
rmt.scm client.scm common.scm configf.scm dashboard-guimonitor.scm dashboard-tests.scm dashboard.scm db.scm dcommon.scm ezsteps.scm fs-transport.scm http-transport.scm index-tree.scm items.scm keys.scm launch.scm megatest.scm monitor.scm mt.scm newdashboard.scm runconfig.scm runs.scm server.scm tdb.scm tests.scm tree.scm : common_records.scm
+
common_records.scm : altdb.scm
+
+mofiles/stml2.o : mofiles/cookie.o
+configf.o : mofiles/commonmod.o
+
vg.o dashboard.o : vg_records.scm
+
dcommon.o : run_records.scm
-# Temporary while transitioning to new routine
-# runs.o : run-tests-queue-classic.scm run-tests-queue-new.scm
+
+mofiles/stml2.o : mofiles/cookie.o
+
+# special include based modules
+mofiles/pkts.o : pkts/pkts.scm
+# mofiles/mtargs.o : mtargs/mtargs.scm
+# mofiles/mtconfigf.o : mtconfigf/mtconfigf.scm
+# mofiles/ulex.o : ulex/ulex.scm
+mofiles/mutils.o : mutils/mutils.scm
+mofiles/cookie.o : stml2/cookie.scm
+mofiles/stml2.o : stml2/stml2.scm
# for the modularized stuff
-mofiles/rmtmod.o : mofiles/commonmod.o
+rmt.o : mofiles/ducttape-lib.o mofiles/pkts.o mofiles/stml2.o mofiles/mutils.o mofiles/mtargs.o
megatest-fossil-hash.scm : $(SRCFILES) megatest.scm *_records.scm
echo "(define megatest-fossil-hash \"$(MTESTHASH)\")" > megatest-fossil-hash.new
if ! diff -q megatest-fossil-hash.new megatest-fossil-hash.scm ; then echo copying .new to .scm;cp -f megatest-fossil-hash.new megatest-fossil-hash.scm;fi
$(OFILES) $(GOFILES) : common_records.scm
-%.o : %.scm $(MOFILES)
- csc $(CSCOPTS) -c $< $(MOFILES)
+# This having the full list of MOFILES cause everything to be rebuilt every time.
+#
+# %.o : %.scm $(MOFILES)
+# csc $(CSCOPTS) -c $< $(MOFILES)
+#
+%.o : %.scm
+ csc $(CSCOPTS) -c $<
+
+# specific rules for .o files that genuninely depend on mofiles/something
+#
+megatest.o : megatest.scm stml2.o mutils.o commonmod.o
+ csc $(CSCOPTS) -c megatest.scm stml2.o mutils.o commonmod.o
+
+common.o : megatest.scm mofiles/commonmod.o common.scm
+ csc $(CSCOPTS) -c common.scm mofiles/commonmod.o
+
+configf.o : configf.scm mofiles/commonmod.o
+ csc $(CSCOPTS) -c configf.scm mofiles/commonmod.o
$(PREFIX)/bin/.$(ARCHSTR)/mtest : mtest utils/mk_wrapper
@echo Installing to PREFIX=$(PREFIX)
$(INSTALL) mtest $(PREFIX)/bin/.$(ARCHSTR)/mtest
utils/mk_wrapper $(PREFIX) mtest $(PREFIX)/bin/megatest
@@ -221,21 +255,10 @@
$(PREFIX)/bin/tcmt : $(PREFIX)/bin/.$(ARCHSTR)/tcmt utils/mk_wrapper
utils/mk_wrapper $(PREFIX) tcmt $(PREFIX)/bin/tcmt
chmod a+x $(PREFIX)/bin/tcmt
-# $(PREFIX)/bin/.$(ARCHSTR)/mdboard : multi-dboard
-# $(INSTALL) multi-dboard $(PREFIX)/bin/.$(ARCHSTR)/mdboard
-
-# $(PREFIX)/bin/mdboard : $(PREFIX)/bin/.$(ARCHSTR)/mdboard utils/mk_wrapper
-# utils/mk_wrapper $(PREFIX) mdboard $(PREFIX)/bin/mdboard
-# chmod a+x $(PREFIX)/bin/mdboard
-
-# $(HELPERS) : utils/%
-# $(INSTALL) $< $@
-# chmod a+x $@
-
$(PREFIX)/bin/mt_laststep : utils/mt_laststep
$(INSTALL) $< $@
chmod a+x $@
$(PREFIX)/bin/mt_runstep : utils/mt_runstep
@@ -272,14 +295,10 @@
$(PREFIX)/bin/mtrunner : utils/mtrunner
$(INSTALL) $< $@
chmod a+x $@
-# $(PREFIX)/bin/refdb : refdb
-# $(INSTALL) $< $@
-# chmod a+x $@
-
deploytarg/nbfake : utils/nbfake
$(INSTALL) $< $@
chmod a+x $@
deploytarg/viewscreen : utils/viewscreen
@@ -307,13 +326,10 @@
$(PREFIX)/bin/nbfind $(PREFIX)/bin/mtrunner $(PREFIX)/bin/viewscreen $(PREFIX)/bin/mt_xterm \
$(PREFIX)/share/docs/megatest_manual.html $(PREFIX)/bin/remrun \
$(PREFIX)/share/docs/megatest_manual.html $(PREFIX)/bin/remrun $(PREFIX)/bin/mtutil \
$(PREFIX)/bin/tcmt $(PREFIX)/share/db/mt-pg.sql \
$(PREFIX)/share/js/jquery-3.1.0.slim.min.js
-# $(PREFIX)/bin/.$(ARCHSTR)/ndboard
-
-# $(PREFIX)/bin/newdashboard
$(PREFIX)/bin/.$(ARCHSTR) :
mkdir -p $(PREFIX)/bin/.$(ARCHSTR)
mkdir -p $(PREFIX)/bin/.$(ARCHSTR)/lib
@@ -326,56 +342,49 @@
$(MTQA_FOSSIL) :
fossil clone https://www.kiatoa.com/fossils/megatest_qa $(MTQA_FOSSIL)
clean :
- rm -f $(OFILES) $(GOFILES) $(MOFILES) $(TCMTOBJS) $(PREFIX)/megatest $(PREFIX)/dashboard mtest mtutil mtut tcmt ftail.import.scm readline-fix.scm serialize-env dboard dboard.o megatest.o dashboard.o megatest-fossil-hash.* altdb.scm mofiles/*.o vg.o
+ rm -f $(OFILES) $(GOFILES) $(MOFILES) $(TCMTOBJS) \
+ $(PREFIX)/megatest $(PREFIX)/dashboard mtest mtutil mtut \
+ tcmt readline-fix.scm serialize-env dboard dboard.o \
+ megatest.o dashboard.o megatest-fossil-hash.* altdb.scm \
+ mofiles/*.o vg.o cookie.o dashboard-main.o \
+ ducttape-lib.o ftail.o mutils.o pkts.o rmtmod.o stml2.o \
+ tcmt.o
rm -rf share
-#======================================================================
-# Make the records files
-#======================================================================
-
-# vg_records.scm : records.sh
-# ./records.sh
-
#======================================================================
# Deploy section (not complete yet)
#======================================================================
+
+# Eggs to install (straightforward ones)
+EGGS=matchable readline aokpropos base64 regex-literals format \
+regex-case test coops trace csv dot-locking posix-utils posix-extras \
+directory-utils hostinfo tcp-server rpc csv-xml fmt json md5 awful \
+http-client spiffy uri-common intarweb spiffy-request-vars \
+spiffy-directory-listing ssax sxml-serializer sxml-modifications iup \
+canvas-draw sqlite3
$(DEPLOYHELPERS) : utils/mt_*
$(INSTALL) $< $@
chmod a+X $@
deploytarg/apropos.so : Makefile
chicken-install -p deploytarg -deploy -keep-installed $(EGGS)
-# for i in apropos base64 canvas-draw csv-xml directory-utils dot-locking extras fmt format hostinfo http-client intarweb json md5 message-digest posix posix-extras readline regex regex-case s11n spiffy spiffy-request-vars sqlite3 srfi-1 srfi-18 srfi-69 tcp test uri-common check-errors synch matchable sql-null tcp-server rpc blob-utils string-utils variable-item defstruct uri-generic sendfile opensll openssl lookup-table list-utils stack; do \
-# chicken-install -prefix deploytarg -deploy $$i;done
-
-# deploytarg/libsqlite3.so :
-# CSC_OPTIONS="-Ideploytarg -Ldeploytarg" $CHICKEN_INSTALL -prefix deploytarg -deploy sqlite3
-
deploy : deploytarg/mtest deploytarg/dboard $(DEPLOYHELPERS) deploytarg/nbfake deploytarg/remrun deploytarg/viewsceen deploytarg/nbfind deploytarg/apropos.so
-# deploytarg/libiupcd.so : $(CKPATH)/lib/libiupcd.so
-# for i in iup im cd av call sqlite; do \
-# cp $(CKPATH)/lib/lib$$i* deploytarg/ ; \
-# done
-# cp $(CKPATH)/include/*.h deploytarg
-
# puts deployed megatest in directory "megatest"
deploytarg/mtest : $(OFILES) megatest.o deploytarg/apropos.so
csc -deploy $(CSCOPTS) $(OFILES) megatest.scm -o deploytarg
mv deploytarg/deploytarg deploytarg/mtest
deploytarg/dboard : $(OFILES) $(GOFILES) dashboard.scm deploytarg/apropos.so
csc -deploy $(OFILES) $(GOFILES) dashboard.scm -o deploytarg
mv deploytarg/deploytarg deploytarg/dboard
-# DATASHAREO=configf.o common.o process.o tree.o dcommon.o margs.o launch.o gutils.o db.o synchash.o server.o \
-# megatest-version.o tdb.o ods.o mt.o keys.o
datashare-testing/sd : datashare.scm $(OFILES)
csc $(CSCOPTS) datashare.scm $(OFILES) -o datashare-testing/sd
datashare-testing/sdat: sharedat.scm $(OFILES)
csc $(CSCOPTS) sharedat.scm $(OFILES) -o datashare-testing/sdat
@@ -402,17 +411,10 @@
rm datashare-testing/sretrieve
rm datashare-testing/spublish
sauth : sauth-init datashare-testing/sauthorize datashare-testing/sretrieve datashare-testing/spublish
-
-# base64 dot-locking \
-# csv-xml z3
-
-# "(define (toplevel-command . a) #f)"
-# if egrep 'version.*3.0' $(shell dirname $(shell dirname $(shell which csi)))/lib/chicken/7/readline.setup-info;then \
-
readline-fix.scm :
if [[ $(shell chicken-status | grep readline | awk '{print $4}' | cut -d. -f1) -gt 3 ]];then \
echo "(define *use-new-readline* #f)" > readline-fix.scm; \
else \
echo "(define *use-new-readline* #t)" > readline-fix.scm;\
@@ -426,28 +428,75 @@
fi
if csi -ne '(use postgresql)';then \
echo "(use postgresql)(hash-table-set! *available-db* 'postgresql #t)" >> altdb.scm;\
fi
-portlogger-example : portlogger-example.scm api.o archive.o client.o common.o configf.o dashboard-tests.o dashboard-context-menu.o db.o dcommon.o ezsteps.o filedb.o genexample.o gutils.o http-transport.o items.o keys.o launch.o lock-queue.o margs.o megatest-version.o mt.o ods.o portlogger.o process.o rmt.o rpc-transport.o runconfig.o runs.o sdb.o server.o synchash.o tasks.o tdb.o tests.o tree.o
- csc $(CSCOPTS) portlogger-example.scm api.o archive.o client.o common.o configf.o dashboard-tests.o dashboard-context-menu.o db.o dcommon.o ezsteps.o filedb.o genexample.o gutils.o http-transport.o items.o keys.o launch.o lock-queue.o margs.o megatest-version.o mt.o ods.o portlogger.o process.o rmt.o rpc-transport.o runconfig.o runs.o sdb.o server.o synchash.o tasks.o tdb.o tests.o tree.o
-
-# create a pdf dot graphviz diagram from notations in rmt.scm
-rmt.pdf : rmt.scm
- grep ';;DOT' rmt.scm | sed -e 's/.*;;DOT //' > rmt.dot;dot -Tpdf rmt.dot -o rmt.pdf
-
buildmanual:
cd docs/manual && make
-wikipage=plan
-editwiki:
- cd docs/manual && ../../utils/editwiki $(wikipage)
-
viewmanual:
arora docs/manual/megatest_manual.html
targets:
@grep : Makefile | perl -ne '/^([A-Za-z0-9_-]+):/ && print "$$1\n"'
unit :
cd tests;make unit
+
+#======================================================================
+# Attic
+#======================================================================
+
+# portlogger-example : portlogger-example.scm api.o archive.o client.o common.o configf.o dashboard-tests.o dashboard-context-menu.o db.o dcommon.o ezsteps.o filedb.o genexample.o gutils.o http-transport.o items.o keys.o launch.o lock-queue.o margs.o megatest-version.o mt.o ods.o portlogger.o process.o rmt.o rpc-transport.o runconfig.o runs.o sdb.o server.o synchash.o tasks.o tdb.o tests.o tree.o
+# csc $(CSCOPTS) portlogger-example.scm api.o archive.o client.o common.o configf.o dashboard-tests.o dashboard-context-menu.o db.o dcommon.o ezsteps.o filedb.o genexample.o gutils.o http-transport.o items.o keys.o launch.o lock-queue.o margs.o megatest-version.o mt.o ods.o portlogger.o process.o rmt.o rpc-transport.o runconfig.o runs.o sdb.o server.o synchash.o tasks.o tdb.o tests.o tree.o
+
+# create a pdf dot graphviz diagram from notations in rmt.scm
+# rmt.pdf : rmt.scm
+# grep ';;DOT' rmt.scm | sed -e 's/.*;;DOT //' > rmt.dot;dot -Tpdf rmt.dot -o rmt.pdf
+
+# wikipage=plan
+# editwiki:
+# cd docs/manual && ../../utils/editwiki $(wikipage)
+
+# base64 dot-locking \
+# csv-xml z3
+
+# "(define (toplevel-command . a) #f)"
+# if egrep 'version.*3.0' $(shell dirname $(shell dirname $(shell which csi)))/lib/chicken/7/readline.setup-info;then \
+
+# DATASHAREO=configf.o common.o process.o tree.o dcommon.o margs.o launch.o gutils.o db.o synchash.o server.o \
+# megatest-version.o tdb.o ods.o mt.o keys.o
+
+# deploytarg/libiupcd.so : $(CKPATH)/lib/libiupcd.so
+# for i in iup im cd av call sqlite; do \
+# cp $(CKPATH)/lib/lib$$i* deploytarg/ ; \
+# done
+# cp $(CKPATH)/include/*.h deploytarg
+
+# for i in apropos base64 canvas-draw csv-xml directory-utils dot-locking extras fmt format hostinfo http-client intarweb json md5 message-digest posix posix-extras readline regex regex-case s11n spiffy spiffy-request-vars sqlite3 srfi-1 srfi-18 srfi-69 tcp test uri-common check-errors synch matchable sql-null tcp-server rpc blob-utils string-utils variable-item defstruct uri-generic sendfile opensll openssl lookup-table list-utils stack; do \
+# chicken-install -prefix deploytarg -deploy $$i;done
+
+# deploytarg/libsqlite3.so :
+# CSC_OPTIONS="-Ideploytarg -Ldeploytarg" $CHICKEN_INSTALL -prefix deploytarg -deploy sqlite3
+
+#======================================================================
+# Make the records files
+#======================================================================
+
+# vg_records.scm : records.sh
+# ./records.sh
+
+# $(PREFIX)/bin/.$(ARCHSTR)/mdboard : multi-dboard
+# $(INSTALL) multi-dboard $(PREFIX)/bin/.$(ARCHSTR)/mdboard
+
+# $(PREFIX)/bin/mdboard : $(PREFIX)/bin/.$(ARCHSTR)/mdboard utils/mk_wrapper
+# utils/mk_wrapper $(PREFIX) mdboard $(PREFIX)/bin/mdboard
+# chmod a+x $(PREFIX)/bin/mdboard
+
+# $(HELPERS) : utils/%
+# $(INSTALL) $< $@
+# chmod a+x $@
+
+# ARCHSTR=$(shell uname -m)_$(shell uname -r)
+# BASH_MACHTYPE=$(shell bash -c "echo \$$MACHTYPE")
+# ARCHSTR=$(BASH_MACHTYPE)_$(shell lsb_release -sr)
Index: TODO
==================================================================
--- TODO
+++ TODO
@@ -13,25 +13,49 @@
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Megatest. If not, see .
+NOTE: This file gets copied occasionally into the wiki as "Roadmap".
+ Do not make changes in the wiki, they will be lost!
+
TODO
====
+WW14
+. Streamline compilation - DONE, all non-official egg modules are now bundled.
+
+WW15
+. syscheck; touch file in home, tmp, runs, links and start xterm
+. pull in ftfplan (not integrated, just code pulled in)
+. fill newview matrix with data, filter pipeline gui elements
+. improve [script], especially indent handling
+
+WW16
+. split db into megatest.db (runs etc.) db/.db
+. release basic newview implementation
+
+WW18
+. release split db implementation
+. mtutil calls from dashboard (for remote control)
+. logs browser (esp. for surfacing mtutil related activities)
+
+WW19
+. break command line into sections; all, run control, queries, utilities etc.
+
+WW20
. Switch to using simple runs query everywhere
. Add end_time to runs and add a rollup call that sets state, status and end_time
-
-
+Future
+. Switch to scsh-process pipeline management for job execution/control
+. Use call-with-environment-variables more.
Migration to inmem db plus per run db
-------------------------------------
. Re-work the dbstruct data structure?
.. Move main.db to global?
.. [ run-id.db inmemdb last-mod last-read last-sync inuse ]
-. Re-work all queries to use run-id to dereference server
. Open main.db directly in calls to -runtests etc. No need to talk remote?
-. remove common:faux-lock
Index: common.scm
==================================================================
--- common.scm
+++ common.scm
@@ -22,16 +22,18 @@
format dot-locking csv-xml z3 udp ;; sql-de-lite
hostinfo md5 message-digest typed-records directory-utils stack
matchable regex posix (srfi 18) extras ;; tcp
(prefix nanomsg nmsg:)
(prefix sqlite3 sqlite3:)
- pkts (prefix dbi dbi:)
+ (prefix dbi dbi:)
)
(declare (unit common))
(declare (uses commonmod))
-(import commonmod)
+(import (prefix commonmod cmod:))
+
+(import pkts)
(include "common_records.scm")
;; (require-library margs)
@@ -873,16 +875,11 @@
(define (assoc/default key lst . default)
(let ((res (assoc key lst)))
(if res (cadr res)(if (null? default) #f (car default)))))
(define (common:get-testsuite-name)
- (or (configf:lookup *configdat* "setup" "area-name") ;; megatest is a flexible tool, testsuite is too limiting a description.
- (configf:lookup *configdat* "setup" "testsuite" )
- (getenv "MT_TESTSUITE_NAME")
- (if (string? *toppath* )
- (pathname-file *toppath*)
- #f))) ;; (pathname-file (current-directory)))))
+ (cmod:get-testsuite-name *toppath* *configdat*))
;; safe getting of toppath
(define (common:get-toppath areapath)
(or *toppath*
(if areapath
@@ -1732,11 +1729,19 @@
(handle-exceptions
exn
#f
(with-output-to-file fullpath (lambda ()(pp dat)))))
#f))
-
+
+(define (common:raw-get-remote-host-load remote-host)
+ (handle-exceptions
+ exn
+ #f ;; more specific handling of errors needed
+ (with-input-from-pipe
+ (conc "ssh " remote-host " cat /proc/loadavg")
+ (lambda ()(list (read)(read)(read))))))
+
;; get cpu load by reading from /proc/loadavg, return all three values
;;
(define (common:get-cpu-load remote-host)
(handle-exceptions
exn
Index: commonmod.scm
==================================================================
--- commonmod.scm
+++ commonmod.scm
@@ -21,12 +21,35 @@
(declare (unit commonmod))
(module commonmod
*
-(import scheme chicken data-structures extras)
-(import (prefix sqlite3 sqlite3:) posix typed-records srfi-18)
+(import scheme chicken data-structures extras files)
+(import (prefix sqlite3 sqlite3:) posix typed-records srfi-18 srfi-69)
+
+(define (just-testing)
+ (print "JUST TESTING"))
+
+(define (lookup cfgdat section var)
+ (if (hash-table? cfgdat)
+ (let ((sectdat (hash-table-ref/default cfgdat section '())))
+ (if (null? sectdat)
+ #f
+ (let ((match (assoc var sectdat)))
+ (if match ;; (and match (list? match)(> (length match) 1))
+ (cadr match)
+ #f))
+ ))
+ #f))
+
+(define (get-testsuite-name toppath configdat)
+ (or (lookup configdat "setup" "area-name")
+ (lookup configdat "setup" "testsuite")
+ (get-environment-variable "MT_TESTSUITE_NAME")
+ (if (string? toppath)
+ (pathname-file toppath)
+ #f)))
;; (define (debug:print . params) #f)
;; (define (debug:print-info . params) #f)
;;
;; (define (set-functions dbgp dbgpinfo)
Index: configf.scm
==================================================================
--- configf.scm
+++ configf.scm
@@ -9,11 +9,11 @@
;; (at your option) any later version.
;;
;; Megatest 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.
+;; GNnU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with Megatest. If not, see .
;;======================================================================
@@ -25,10 +25,13 @@
(use regex regex-case matchable) ;; directory-utils)
(declare (unit configf))
(declare (uses process))
(declare (uses env))
(declare (uses keys))
+(declare (uses commonmod))
+
+(import (prefix commonmod cmod:))
(include "common_records.scm")
;; return list (path fullpath configname)
(define (find-config configname #!key (toppath #f))
@@ -499,33 +502,24 @@
(let ((configdat (if configfile
(read-config configfile #f #t environ-patt: environ-patt post-section-procs: (list (cons "^fields$" set-fields)) #f))))
(if toppath (change-directory curr-dir))
(list configdat toppath configfile fname))))
-(define (configf:lookup cfgdat section var)
- (if (hash-table? cfgdat)
- (let ((sectdat (hash-table-ref/default cfgdat section '())))
- (if (null? sectdat)
- #f
- (let ((match (assoc var sectdat)))
- (if match ;; (and match (list? match)(> (length match) 1))
- (cadr match)
- #f))
- ))
- #f))
-
;; use to have definitive setting:
;; [foo]
;; var yes
;;
;; (configf:var-is? cfgdat "foo" "var" "yes") => #t
;;
(define (configf:var-is? cfgdat section var expected-val)
(equal? (configf:lookup cfgdat section var) expected-val))
-(define config-lookup configf:lookup)
+;; (define config-lookup configf:lookup)
(define configf:read-file read-config)
+
+(define (configf:lookup cfgdat section var)
+ (cmod:lookup cfgdat section var))
;; safely look up a value that is expected to be a number, return
;; a default (#f unless provided)
;;
(define (configf:lookup-number cfdat section varname #!key (default #f))
ADDED cookie.scm
Index: cookie.scm
==================================================================
--- /dev/null
+++ cookie.scm
@@ -0,0 +1,23 @@
+;;======================================================================
+;; Copyright 2019, Matthew Welland.
+;;
+;; This file is part of Megatest.
+;;
+;; Megatest 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 3 of the License, or
+;; (at your option) any later version.
+;;
+;; Megatest 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 Megatest. If not, see .
+
+;;======================================================================
+
+(declare (unit cookie))
+
+(include "stml2/cookie.scm")
Index: dashboard.scm
==================================================================
--- dashboard.scm
+++ dashboard.scm
@@ -23,11 +23,11 @@
(require-library iup)
(import (prefix iup iup:))
(use canvas-draw)
(import canvas-draw-iup)
-(use ducttape-lib)
+(import ducttape-lib)
(use sqlite3 srfi-1 posix regex regex-case srfi-69 typed-records sparse-vectors) ;; defstruct
(import (prefix sqlite3 sqlite3:))
(declare (uses common))
(declare (uses margs))
@@ -2684,11 +2684,11 @@
(start-time (current-milliseconds))
(tot-runs #f))
(if (eq? runnum 0)(dashboard:update-runs-data rdat))
(set! tot-runs (vector-length (dboard:rdat-runsbynum rdat)))
(let loop ((rn runnum))
- (if (and (< (- (current-milliseconds) start-time) 500)
+ (if (and (< (- (current-milliseconds) start-time) 250)
(< rn tot-runs))
(let* ((newrn (if (>= runnum (vector-length (dboard:rdat-runsbynum rdat)))
0 ;; start over
(+ rn 1)))) ;; (+ runnum 1)))
(dashboard:update-run-data rn rdat)
ADDED dbmod.scm
Index: dbmod.scm
==================================================================
--- /dev/null
+++ dbmod.scm
@@ -0,0 +1,39 @@
+;;======================================================================
+;; Copyright 2017, Matthew Welland.
+;;
+;; This file is part of Megatest.
+;;
+;; Megatest 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 3 of the License, or
+;; (at your option) any later version.
+;;
+;; Megatest 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 Megatest. If not, see .
+
+;;======================================================================
+
+(declare (unit commonmod))
+
+(module commonmod
+ *
+
+(import scheme chicken data-structures extras)
+(import (prefix sqlite3 sqlite3:) posix typed-records srfi-18)
+
+(define (just-testing)
+ (print "JUST TESTING"))
+
+;; (define (debug:print . params) #f)
+;; (define (debug:print-info . params) #f)
+;;
+;; (define (set-functions dbgp dbgpinfo)
+;; (set! debug:print dbgp)
+;; (set! debug:print-info dbgpinfo))
+
+)
Index: diff-report.scm
==================================================================
--- diff-report.scm
+++ diff-report.scm
@@ -21,11 +21,11 @@
(declare (uses rmt))
(include "common_records.scm")
(use matchable)
(use fmt)
-(use ducttape-lib)
+(import ducttape-lib)
(define css "")
(define (diff:tests-mindat->hash tests-mindat)
(let* ((res (make-hash-table)))
(for-each
Index: docs/manual/megatest_manual.html
==================================================================
--- docs/manual/megatest_manual.html
+++ docs/manual/megatest_manual.html
@@ -900,10 +900,69 @@
sqlite3 database. Megatest has been used with the Intel Netbatch and
lsf (also known as openlava) batch systems and it should be
straightforward to use it with other similar systems.
+
+
+
Overview
+
+
+
Stand-alone Megatest Area
+
A single, stand-alone, Megatest based testsuite or "area" is
+sufficient for most validation, automation and build problems.
+
+
+
+
+
+
Megatest is designed as a distributed or decoupled system. This means
+you can run the areas stand-alone with no additional
+infrastructure. I.e. there are no databases, web servers or other
+centralized resources needed. However as your needs grow you can
+integrate multiple areas into a bigger system.
+
+
Component Descriptions
+
+-
+
+Multi-area dashboard and xterm. A gui (the dashboard) is usually the
+ best option for controlling and launching runs but all operations
+ can also be done from the commandline. Note: The not yet released
+ multi-area dashboard replaces the old dashboard for browsing and
+ controlling runs but for managing a single area the old dashboard
+ works very well.
+
+
+-
+
+Area/testsuite. This is your testsuite or automation definition and
+ consists of the information in megatest.config, runconfigs.config
+ and your testconfigs along with any custom scripting that can’t be
+ done with the native Megatest features.
+
+
+-
+
+If your testsuite or build automation is too large to run on a
+ single instance you can distribute your jobs into a compute server
+ pool. The only current requirements are password-less ssh access and
+ a network filesystem.
+
+
+
+
+
+
+
Full System Architecture
+
+
+
+
+
+
+
Installation
@@ -2307,10 +2366,95 @@
Propagate environment to next step
$MT_MEGATEST -env2file .ezsteps/${stepname}
+
+
Full example with ezsteps, logpro rules, scripts etc.
+
+
# You can include a common file
+#
+[include #{getenv MT_RUN_AREA_HOME}/global-testconfig.inc]
+
+# Use "var" for a scratch pad
+#
+[var]
+dumpsql select * from data;
+sepstr .....................................
+
+# NOT IMPLEMENTED YET!
+#
+[ezsteps-addendum]
+prescript something.sh
+postscript something2.sh
+
+# Add additional steps here. Format is "stepname script"
+[ezsteps]
+importdb loaddb prod.db prod.sql
+dumpprod dumpdata prod.db "#{get var dumpsql}"
+diff (echo "prod#{get var sepstr}test";diff --side-by-side \
+ dumpprod.log reference.log ;echo DIFFDONE)
+
+[scripts]
+loaddb #!/bin/bash
+ sqlite3 $1 <<EOF
+ .mode tabs
+ .import $2 data
+ .q
+ EOF
+
+dumpdata #!/bin/bash
+ sqlite3 $1 <<EOF
+ .separator ,
+ $2
+ .q
+ EOF
+
+# Test requirements are specified here
+[requirements]
+waiton setup
+priority 0
+
+# Iteration for your test is controlled by the items section
+# The complicated if is needed to allow processing of the config for the dashboard when there are no actual runs.
+[items]
+THINGNAME [system generatethings.sh | sort -u]
+
+# Logpro rules for each step can be captured here in the testconfig
+# note: The ;; after the stepname and the leading whitespace are required
+#
+[logpro]
+inputdb ;;
+ (expect:ignore in "LogFileBody" < 99 "Ignore error in comments" #/^\/\/.*error/)
+ (expect:warning in "LogFileBody" = 0 "Any warning" #/warn/)
+ (expect:required in "LogFileBody" > 0 "Some data found" #/^[a-z]{3,4}[0-9]+_r.*/)
+
+diff ;;
+ (expect:ignore in "LogFileBody" < 99 "Ignore error in comments" #/^\/\/.*error/)
+ (expect:warning in "LogFileBody" = 0 "Any warning" #/warn/)
+ (expect:error in "LogFileBody" = 0 "< or > indicate missing entry" (list #/(<|>)/ #/error/i))
+ (expect:error in "LogFileBody" = 0 "Difference in data" (list #/\s+\|\s+/ #/error/i))
+ (expect:required in "LogFileBody" > 0 "DIFFDONE Marker found" #/DIFFDONE/)
+ (expect:required in "LogFileBody" > 0 "Some things found" #/^[a-z]{3,4}[0-9]+_r.*/)
+
+# NOT IMPLEMENTED YET!
+#
+## Also: enhance logpro to take list of command files: file1,file2...
+[waivers]
+createprod{target=%78/%/%/%} ;;
+ (disable:required "DIFFDONE Marker found")
+ (disable:error "Some error")
+ (expect:waive in "LogFileBody" < 99 "Waive if failed due to version" #/\w+3\.6.*/)
+
+# test_meta is a section for storing additional data on your test
+[test_meta]
+author matt
+owner matt
+description Compare things
+tags tagone,tagtwo
+reviewed never
+
Triggers
In your testconfig or megatest.config triggers can be specified
@@ -2990,10 +3134,10 @@