The run-report script can spawn a sessiond if the 'daemon' key value is
set to 'True' in the test description dictionary. If the 'daemon' key is
set to 'False', the TEST_NO_SESSIOND environment variable is set so no
sessiond can be spawned in the tests. This variable is also set when the
run-report spawn its own sessiond.
This behavior has the unfortunate side-effect of restricting any kind of
spawning and control of the sessiond via the tests.
Fix this issue by allowing the tests to spawn their own sessiond. We
need to pass an additional env dictionary to the TestWorker in order to
spawn the test with the proper environment variables set.
To indicate that a test will spawn and manage its own sessiond, the
'daemon' key value should be set to the "test" string.
Signed-off-by: Christian Babeux <christian.babeux@efficios.com>
Signed-off-by: David Goulet <dgoulet@efficios.com>
mem_ret_q.put((count, mem_stat))
class TestWorker(threading.Thread):
mem_ret_q.put((count, mem_stat))
class TestWorker(threading.Thread):
- def __init__(self, path, name):
+ def __init__(self, path, name, env):
threading.Thread.__init__(self)
self.path = path
self.name = name
threading.Thread.__init__(self)
self.path = path
self.name = name
def run(self):
bin_path_name = os.path.join(self.path, self.name)
def run(self):
bin_path_name = os.path.join(self.path, self.name)
- env = os.environ
- env['TEST_NO_SESSIOND'] = '1'
-
- test = subprocess.Popen([bin_path_name], env=env, preexec_fn = lambda: signal(SIGPIPE, SIG_DFL))
+ test = subprocess.Popen([bin_path_name], env=self.env, preexec_fn = lambda: signal(SIGPIPE, SIG_DFL))
test.wait()
# Send ret value to main thread
test.wait()
# Send ret value to main thread
print "Unable to find test file '%s'. Skipping" % (test['bin'])
return 0
print "Unable to find test file '%s'. Skipping" % (test['bin'])
return 0
- # No session daemon needed
- if not test['daemon']:
+ # Session daemon is controlled by the test
+ if test['daemon'] == "test":
+ print PRINT_ARROW + " Session daemon is controlled by the test"
+ env = os.environ
+ env['TEST_NO_SESSIOND'] = '0'
+ tw = TestWorker(".", test['bin'], env)
+ tw.start()
+ ret = test_ret_q.get(True)
+ print_test_success(ret, test['success'])
+ return 0
+ elif test['daemon'] == False:
print PRINT_ARROW + " No session daemon needed"
print PRINT_ARROW + " No session daemon needed"
- ret = start_test(test['bin'])
+ env = os.environ
+ env['TEST_NO_SESSIOND'] = '1'
+ tw = TestWorker(".", test['bin'], env)
+ tw.start()
+ ret = test_ret_q.get(True)
print_test_success(ret, test['success'])
return 0
else:
print_test_success(ret, test['success'])
return 0
else:
cpu_count, cpu_stats = get_cpu_usage(pid = dem_pid)
print_cpu_stats(cpu_stats, cpu_count)
cpu_count, cpu_stats = get_cpu_usage(pid = dem_pid)
print_cpu_stats(cpu_stats, cpu_count)
- tw = TestWorker(".", test['bin'])
+ # Sessiond was already spawned, do not let the test spawn
+ # an additional sessiond
+ env = os.environ
+ env['TEST_NO_SESSIOND'] = '1'
+
+ tw = TestWorker(".", test['bin'], env)
tw.start()
if not no_stats:
tw.start()
if not no_stats: