$SPAD/src/input monitortest.input

Timothy Daly December 3, 2016

Abstract

Contents

2

— testmon.lisp —

(defun foo1 () (print 'foo1))
(defun foo2 () (print 'foo2))
(defun foo3 () (foo1) (foo2) (print 'foo3))
(defun foo4 () (print 'foo4))

———-

— * —

)set break resume
)sys rm -f testmon.lisp
)sys rm -f monitortest.output
)spool monitortest.output
)set message test on
)set message auto off
)clear all
\begin{chunk}{*}
--S 1 of 26
)sys cp ../../src/input/monitortest.input.pamphlet .
--R
--E 1

———-

— * —

--S 2 of 26
)lisp (tangle "monitortest.input.pamphlet" "testmon.lisp" "testmon.lisp")
--R
--RValue = NIL
--E 2

———-

First we load the file containing the code we would like to monitor. — * —

--S 3 of 26
)lisp (load "testmon.lisp")
--R
--RValue = T
--E 3

———-

Next we monitor the file — * —

--S 4 of 26
)lisp (monitor-file "testmon.lisp")
--R
--Rmonitoring "testmon.lisp"
--RValue = NIL
--E 4

———-

Now we call a function from the file and bump its count — * —

--S 5 of 26
)lisp (foo1)
--R
--R
--RFOO1
--RValue = FOO1
--E 5

———-

and call another function to bump its count — * —

--S 6 of 26
)lisp (foo2)
--R
--R
--RFOO2
--RValue = FOO2
--E 6

———-

and a third function that calls the other two (bump all three counts) — * —

--S 7 of 26
)lisp (foo3)
--R
--R
--RFOO1
--RFOO2
--RFOO3
--RValue = FOO3
--E 7

———-

Now we check that the results are correct — * —

--S 8 of 26
)lisp (monitor-results)
--R
--R
--R#S(MONITOR-DATA NAME FOO1 COUNT 2 MONITORP T SOURCEFILE "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO2 COUNT 2 MONITORP T SOURCEFILE "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO3 COUNT 1 MONITORP T SOURCEFILE "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO4 COUNT 0 MONITORP T SOURCEFILE "testmon.lisp")
--RValue = (NIL NIL NIL NIL)
--E 8

———-

Stop counting calls to foo2 — * —

--S 9 of 26
)lisp (monitor-disable 'foo2)
--R
--RValue = NIL
--E 9

———-

Invoke foo2 thru foo3 — * —

--S 10 of 26
)lisp (foo3)
--R
--R
--RFOO1
--RFOO2
--RFOO3
--RValue = FOO3
--E 10

———-

Notice that foo1 and foo3 were bumped but not foo2 — * —

--S 11 of 26
)lisp (monitor-results)
--R
--R
--R#S(MONITOR-DATA NAME FOO1 COUNT 3 MONITORP T SOURCEFILE "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO2 COUNT 2 MONITORP NIL SOURCEFILE
--R      "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO3 COUNT 2 MONITORP T SOURCEFILE "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO4 COUNT 0 MONITORP T SOURCEFILE "testmon.lisp")

--RValue = (NIL NIL NIL NIL)
--E 11

———-

Temporarily stop all monitoring — * —

--S 12 of 26
)lisp (monitor-disable)
--R
--RThe function FOO2 is not traced.
--RValue = NIL
--E 12

———-

Check that nothing changes — * —

--S 13 of 26
)lisp (foo3)
--R
--R
--RFOO1
--RFOO2
--RFOO3
--RValue = FOO3
--E 13

———-

No count has changed — * —

--S 14 of 26
)lisp (monitor-results)
--R
--R
--R#S(MONITOR-DATA NAME FOO1 COUNT 3 MONITORP NIL SOURCEFILE
--R      "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO2 COUNT 2 MONITORP NIL SOURCEFILE
--R      "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO3 COUNT 2 MONITORP NIL SOURCEFILE
--R      "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO4 COUNT 0 MONITORP NIL SOURCEFILE
--R      "testmon.lisp")
--RValue = (NIL NIL NIL NIL)
--E 14

———-

Monitor only calls to foo1 — * —

--S 15 of 26
)lisp (monitor-enable 'foo1)
--R
--RValue = T
--E 15

———-

foo3 calls foo1 — * —

--S 16 of 26
)lisp (foo3)
--R
--R
--RFOO1
--RFOO2
--RFOO3
--RValue = FOO3
--E 16

———-

foo1 has changed but not foo2 or foo3 — * —

--S 17 of 26
)lisp (monitor-results)
--R
--R
--R#S(MONITOR-DATA NAME FOO1 COUNT 4 MONITORP T SOURCEFILE "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO2 COUNT 2 MONITORP NIL SOURCEFILE
--R      "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO3 COUNT 2 MONITORP NIL SOURCEFILE
--R      "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO4 COUNT 0 MONITORP NIL SOURCEFILE
--R      "testmon.lisp")
--RValue = (NIL NIL NIL NIL)
--E 17

———-

Monitor everybody — * —

--S 18 of 26
)lisp (monitor-enable)

--R
--RValue = NIL
--E 18

———-

Check that everybody changes — * —

--S 19 of 26
)lisp (foo3)
--R
--R
--RFOO1
--RFOO2
--RFOO3
--RValue = FOO3
--E 19

———-

Everybody was bumped — * —

--S 20 of 26
)lisp (monitor-results)
--R
--R
--R#S(MONITOR-DATA NAME FOO1 COUNT 5 MONITORP T SOURCEFILE "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO2 COUNT 3 MONITORP T SOURCEFILE "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO3 COUNT 3 MONITORP T SOURCEFILE "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO4 COUNT 0 MONITORP T SOURCEFILE "testmon.lisp")
--RValue = (NIL NIL NIL NIL)
--E 20

———-

What functions were tested? — * —

--S 21 of 26
)lisp (monitor-tested)
--R
--RValue = (FOO1 FOO2 FOO3)
--E 21

———-

What functions were not tested? — * —

--S 22 of 26
)lisp (monitor-untested)
--R
--RValue = (FOO4)
--E 22

———-

Untrace the whole world, monitoring cannot restart — * —

--S 23 of 26
)lisp (monitor-end)
--R
--RValue = NIL
--E 23

———-

— * —

--S 24 of 26
)lisp (monitor-results)
--R
--R
--R#S(MONITOR-DATA NAME FOO1 COUNT 5 MONITORP T SOURCEFILE "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO2 COUNT 3 MONITORP T SOURCEFILE "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO3 COUNT 3 MONITORP T SOURCEFILE "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO4 COUNT 0 MONITORP T SOURCEFILE "testmon.lisp")
--RValue = (NIL NIL NIL NIL)
--E 24

———-

Check that the functions still work — * —

--S 25 of 26
)lisp (foo3)
--R
--R
--RFOO1
--RFOO2
--RFOO3
--RValue = FOO3
--E 25

———-

Check that monitoring is not occurring — * —

--S 26 of 26
)lisp (monitor-results)
--R
--R
--R#S(MONITOR-DATA NAME FOO1 COUNT 5 MONITORP T SOURCEFILE "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO2 COUNT 3 MONITORP T SOURCEFILE "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO3 COUNT 3 MONITORP T SOURCEFILE "testmon.lisp")
--R#S(MONITOR-DATA NAME FOO4 COUNT 0 MONITORP T SOURCEFILE "testmon.lisp")
--RValue = (NIL NIL NIL NIL)
--E 26
)spool
)lisp (bye)

———-

References^{[1] nothing}

11