cl-test-grid / cl-test-grid

Collaborative testing of Common Lisp libraries

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Would be nice to have a way to run only a subset of the Lisps at a time...

nklein opened this issue · comments

I have eight different Lisp implementations in my run-agent.lisp right now. When I kick of a test-grid run, my computer fan runs for two or three days straight. It'd be nice to be able to run just a subset of the Lisp implementations.

I hacked my run-agent.sh to look like this:

...
# Start your run-agent.lisp script. We suppose
# Quicklisp is installed and added to the init
# file of your lisp.

LISPS=""

if [ ! -z "$1" ]; then
   LISPS="$@"
fi

# (EDIT THE PATH TO CCL)
/usr/local/src/ccl/dx86cl64 \
    --eval "(defparameter *command-line-lisps* '(${LISPS}))" \
    --load run-agent.lisp \
    --eval "(quit)"

And, then edited my run-agent.lisp to look like this:

...
(defvar *command-line-lisps* nil)
(defparameter *all-lisps* (list *abcl*
                                *ccl-1.10-x86*
                                *ccl-1.10-x86-64*
                                *ccl-1.11-x86*
                                *ccl-1.11-x86-64*
                                *sbcl*
                                *ecl-bytecode*
                                *ecl-lisp-to-c*))

;; create agent instance
(defparameter *agent*
  (test-grid-agent:make-agent
   :lisps (or (mapcar #'symbol-value *command-line-lisps*)
              *all-lisps*)
   ...))

There are probably better ways to do it... and this doesn't take into account the mutual-exclusion locking that you do... and it might not play well with any historical stuff you do if you expect the list of lisps to be consistent from run-to-run. But, it lets me pick which implementations to test without having to edit any of the files.

Hi, thanks for sharing your example.

I often need to change the lisps too. But a way to run a subset of lisps is provided, in the sense that the main entry points of c-test-grid agent are tg-agent:make-agent and tg-agent:main. And they accept parameters (in particular the lisps we want to run are passed as parameter to tg-agent:make-agent)

The run-agent.sample.lisp and run-agent.sh.sample files are just examples of how to pass parameters to the main entry points; in other words these are just config file samples.

I mean, when I need to change the lisps to run, I just edit run-agent.lisp, and comment out unnecessary lisps. The same way I do other configuration choices.

So, I am closing this issue. I won't commit this feature to the run-agent.lisp, to avoid complicating it.

Thanks for you example.