[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Passing arguments to test programs during test suite
From: |
Ralf Wildenhues |
Subject: |
Re: Passing arguments to test programs during test suite |
Date: |
Fri, 15 Apr 2011 20:19:21 +0200 |
User-agent: |
Mutt/1.5.20 (2010-08-04) |
Hi Jeff,
* Daily, Jeff A wrote on Fri, Apr 15, 2011 at 08:06:56PM CEST:
> I'm using automake 1.11.1's 'parallel-tests' test suite capabilities. It's
> been fine so far. I even hacked it a little to support launching my MPI
> programs. I have some tests that run serially (without MPI) and some that
> do:
>
> TESTS = $(SERIAL_TESTS) $(PARALLEL_TESTS)
> LOG_COMPILER = \
> maybe_mpi=`if echo "$(SERIAL_TESTS)" | $(GREP) "$$p" > /dev/null; then echo
> ""; else echo "$(MPIEXEC)"; fi`; \
> $$maybe_mpi
>
> Users run the test suite using something like
>
> make check MPIEXEC="mpiexec -np 4"
>
> On one particular platform we don't use MPI but instead have our own process
> manager built into each of our programs. This means each program must be
> launched by passing command-line arguments such as "-np 4". How can I do
> this? I tried:
>
> LOG_COMPILER = \
> maybe_mpi=`if echo "$(SERIAL_TESTS)" | $(GREP) "$$p" > /dev/null; then echo
> ""; else echo "$(MPIEXEC)"; fi`; \
> tst="$$dir$$f -np 4"; \
> $$maybe_mpi
Make that last line
eval "$$maybe_mpi"
instead.
> To make things even harder, I have some test programs which take specific
> command-line arguments. I've been leaving them out of the test suite since
> I can't figure out how to pass command-line arguments to any tests let alone
> individual tests.
We should add support for that. Right now your best bet is a wrapper
script that transports its options to the programs options. That
wrapper script can be part of LOG_COMPILER.
If your MPI and non-MPI programs have different suffixes, you could make
things simpler; for example:
TEST_SUFFIXES = .t .t-mpi
T_MPI_LOG_COMPILER = $(MPIEXEC)
FWIW, we still go a simpler way and have a wrapper script for each test.
It sources a defs scriptlet (generated from $(srcdir)/defs.in) that
contains a more-or-less portable shell function to start MPI jobs.
The shell function aims to work also with batch schedulers like qsub.
Hope that helps.
Cheers,
Ralf