does concurrency work anymore?

Mark Eichin eichin at metacarta.com
Tue Jan 14 19:27:41 UTC 2003


I noticed this with a larger test using my own code, thought it might
be my own tests, but then cooked it down to this case using only the
built-in command.ExecTest and figured I should check with others:

Basically, a setting of concurrency N causes N tests to run, and then
hang things hang.  This is on Debian linux, python 2.2, qmtest 2.0x
(from CVS but most if not all of the way to 2.0.2.)  A quick strace
was unenlightening (the last thing a child does is a chdir and then:
5277  rt_sigprocmask(SIG_SETMASK, NULL, ~[KILL STOP 33], 8) = 0
5277  rt_sigsuspend(~[KILL STOP RTMIN 33] <unfinished ...>
which is something clone/thread releated.)  Does it work on other
platforms, or for other people? I've supplied below the command line
and the tests (basically, foo becomes foo1, foo2 etc to make the
concurrency-n tests distinct, but I doubt that is needed...)

maneki-neko$ qmtest run -j2 -f full concurrency-1 concurrency-2 concurrency-3 concurrency-4 concurrency-5
--- TEST RESULTS -------------------------------------------------------------

  concurrency-1                                 : PASS    

  concurrency-2                                 : PASS    


--- STATISTICS ---------------------------------------------------------------

       2        tests total
       2 (100%) tests PASS


qmtest: Interrupted.


Test concurrency-1

Class: command.ExecTest

Check a program's output and exit code.                     Help

Arguments
Program                                          echo       Help
Argument List                                    foo        Help
Standard Input                                              Help
Environment                                      None       Help
Exit Code                                        0          Help
Standard Output                                  foo        Help
Standard Error                                              Help
Target Group Pattern                             .*         Help
Prerequisite Tests                               None       Help
Resources                                        None       Help



maneki-neko$ more concurrency-?.qmt | cat
::::::::::::::
concurrency-1.qmt
::::::::::::::
<?xml version="1.0" ?>
<!DOCTYPE extension
  PUBLIC '-//Software Carpentry//QMTest Extension V0.1//EN'
  'http://www.software-carpentry.com/qm/xml/extension'>
<extension class="command.ExecTest" kind="test"><argument name="environment"><set/></argument><argument name="program"><text>echo</text></argument><argument name="resources"><set/></argument><argument name="arguments"><set><text>foo</text></set></argument><argument name="stderr"><text/></argument><argument name="stdout"><text>foo
</text></argument><argument name="prerequisites"><set/></argument><argument name="stdin"><text/></argument><argument name="exit_code"><integer>0</integer></argument><argument name="target_group"><text>.*</text></argument></extension>::::::::::::::
concurrency-2.qmt
::::::::::::::
<?xml version="1.0" ?>
<!DOCTYPE extension
  PUBLIC '-//Software Carpentry//QMTest Extension V0.1//EN'
  'http://www.software-carpentry.com/qm/xml/extension'>
<extension class="command.ExecTest" kind="test"><argument name="environment"><set/></argument><argument name="program"><text>echo</text></argument><argument name="resources"><set/></argument><argument name="arguments"><set><text>foo2</text></set></argument><argument name="stderr"><text/></argument><argument name="stdout"><text>foo2
</text></argument><argument name="prerequisites"><set/></argument><argument name="stdin"><text/></argument><argument name="exit_code"><integer>0</integer></argument><argument name="target_group"><text>.*</text></argument></extension>::::::::::::::
concurrency-3.qmt
::::::::::::::
<?xml version="1.0" ?>
<!DOCTYPE extension
  PUBLIC '-//Software Carpentry//QMTest Extension V0.1//EN'
  'http://www.software-carpentry.com/qm/xml/extension'>
<extension class="command.ExecTest" kind="test"><argument name="environment"><set/></argument><argument name="program"><text>echo</text></argument><argument name="resources"><set/></argument><argument name="arguments"><set><text>foo3</text></set></argument><argument name="stderr"><text/></argument><argument name="stdout"><text>foo3
</text></argument><argument name="prerequisites"><set/></argument><argument name="stdin"><text/></argument><argument name="exit_code"><integer>0</integer></argument><argument name="target_group"><text>.*</text></argument></extension>::::::::::::::
concurrency-4.qmt
::::::::::::::
<?xml version="1.0" ?>
<!DOCTYPE extension
  PUBLIC '-//Software Carpentry//QMTest Extension V0.1//EN'
  'http://www.software-carpentry.com/qm/xml/extension'>
<extension class="command.ExecTest" kind="test"><argument name="environment"><set/></argument><argument name="program"><text>echo</text></argument><argument name="resources"><set/></argument><argument name="arguments"><set><text>foo4</text></set></argument><argument name="stderr"><text/></argument><argument name="stdout"><text>foo4
</text></argument><argument name="prerequisites"><set/></argument><argument name="stdin"><text/></argument><argument name="exit_code"><integer>0</integer></argument><argument name="target_group"><text>.*</text></argument></extension>
::::::::::::::
concurrency-5.qmt
::::::::::::::
<?xml version="1.0" ?>
<!DOCTYPE extension
  PUBLIC '-//Software Carpentry//QMTest Extension V0.1//EN'
  'http://www.software-carpentry.com/qm/xml/extension'>
<extension class="command.ExecTest" kind="test"><argument name="environment"><set/></argument><argument name="program"><text>echo</text></argument><argument name="resources"><set/></argument><argument name="arguments"><set><text>foo5</text></set></argument><argument name="stderr"><text/></argument><argument name="stdout"><text>foo5
</text></argument><argument name="prerequisites"><set/></argument><argument name="stdin"><text/></argument><argument name="exit_code"><integer>0</integer></argument><argument name="target_group"><text>.*</text></argument></extension>



More information about the qmtest mailing list