[Avocado-devel] setting timeout in mux variants
Brian J. Murrell
brian at interlinx.bc.ca
Sat Jun 29 15:53:59 UTC 2019
In a small scale test:
from avocado import Test
from time import sleep
class MyTest(Test):
def setUp(self):
print "setUp(), timeout=%s" % self.timeout
def test(self):
print "test()"
sleep(9)
With the following yaml file:
timeout: 10
tests: !mux
one:
timeout: 5
two:
timeout: 7
three:
things work as expected:
$ avocado run --mux-yaml foo.yaml -- foo.py
JOB ID : 1388d2ac1d6c752007456f4a5bf18c0bf066d8ff
JOB LOG : /home/brian/daos/daos/avocado/job-results/job-2019-06-29T11.49-1388d2a/job.log
(1/3) foo.py:MyTest.test;one-a087: INTERRUPTED (5.10 s)
(2/3) foo.py:MyTest.test;two-0ee9: INTERRUPTED (7.12 s)
(3/3) foo.py:MyTest.test;three-6700: PASS (9.10 s)
RESULTS : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 2 | CANCEL 0
JOB TIME : 22.04 s
JOB HTML : /home/brian/daos/daos/avocado/job-results/job-2019-06-29T11.49-1388d2a/results.html
When I try to scale that multiple-timeout use-case up as such:
hosts:
test_machines:
- boro-A
- boro-B
- boro-C
- boro-D
- boro-E
- boro-F
- boro-G
- boro-H
# Note that subtests below can set their own timeout so this
# should be a general average of all tests not including outliers
# (I'm looking at you "rebuild tests")
timeout: 600
server_config:
name: daos_server
daos_tests:
num_clients:
num_clients: 1
num_replicas:
num_replicas: 1
Tests: !mux
test_r_0-24:
daos_test: r
test_name: rebuild tests
args: -s3 -u subtests="0-24"
timeout: 1500
test_r_25:
daos_test: r
test_name: rebuild tests
args: -s3 -u subtests="25"
test_r_26:
daos_test: r
test_name: rebuild tests
args: -s3 -u subtests="26"
test_r_27:
daos_test: r
test_name: rebuild tests
args: -s3 -u subtests="27"
test_r_28:
daos_test: r
test_name: rebuild tests
args: -s3 -u subtests="28"
test_r_29:
daos_test: r
test_name: rebuild tests
args: -s3 -u subtests="29"
test_r_30:
daos_test: r
test_name: rebuild tests
args: -s3 -u subtests="30"
test_r_31:
daos_test: r
test_name: rebuild tests
args: -s3 -u subtests="31"
test_d:
daos_test: d
test_name: DAOS degraded-mode tests
test_m:
daos_test: m
test_name: Management tests
test_p:
daos_test: p
test_name: Pool tests
test_c:
daos_test: c
test_name: DAOS container tests
test_e:
daos_test: e
test_name: DAOS epoch tests
test_i:
daos_test: i
test_name: IO test
test_A:
daos_test: A
test_name: DAOS Array tests
test_C:
daos_test: C
test_name: DAOS capability tests
test_o:
daos_test: o
test_name: Epoch recovery tests
test_R:
daos_test: R
test_name: DAOS MD replication tests
test_O:
daos_test: O
test_name: OID Allocator tests
timeout: 900
I get the following error:
2019-06-29 13:22:07,152 output L0655 DEBUG| Process Process-1:
2019-06-29 13:22:07,152 output L0655 DEBUG| Traceback (most recent call last):
2019-06-29 13:22:07,152 output L0655 DEBUG| File "/usr/lib64/python2.7/multiprocessing/process.py", line 258, in _bootstrap
2019-06-29 13:22:07,152 output L0655 DEBUG| self.run()
2019-06-29 13:22:07,152 output L0655 DEBUG| File "/usr/lib64/python2.7/multiprocessing/process.py", line 114, in run
2019-06-29 13:22:07,152 output L0655 DEBUG| self._target(*self._args, **self._kwargs)
2019-06-29 13:22:07,152 output L0655 DEBUG| File "/usr/lib/python2.7/site-packages/avocado/core/runner.py", line 327, in _run_test
2019-06-29 13:22:07,153 output L0655 DEBUG| instance = loader.load_test(test_factory)
2019-06-29 13:22:07,153 output L0655 DEBUG| File "/usr/lib/python2.7/site-packages/avocado/core/loader.py", line 338, in load_test
2019-06-29 13:22:07,153 output L0655 DEBUG| test_instance = test_class(**test_parameters)
2019-06-29 13:22:07,153 output L0655 DEBUG| File "/var/lib/jenkins/jenkins-1/docker_1/workspace/daos-stack_daos_PR-697 at 6/src/tests/ftest/util/apricot/apricot/test.py", line 150, in __init__
2019-06-29 13:22:07,154 output L0655 DEBUG| super(TestWithServers, self).__init__(*args, **kwargs)
2019-06-29 13:22:07,154 output L0655 DEBUG| File "/var/lib/jenkins/jenkins-1/docker_1/workspace/daos-stack_daos_PR-697 at 6/src/tests/ftest/util/apricot/apricot/test.py", line 57, in __init__
2019-06-29 13:22:07,154 output L0655 DEBUG| super(Test, self).__init__(*args, **kwargs)
2019-06-29 13:22:07,154 output L0655 DEBUG| File "/usr/lib/python2.7/site-packages/avocado/core/test.py", line 238, in __init__
2019-06-29 13:22:07,155 output L0655 DEBUG| self.timeout = self.params.get("timeout", default=default_timeout)
2019-06-29 13:22:07,155 output L0655 DEBUG| File "/usr/lib/python2.7/site-packages/avocado/core/varianter.py", line 186, in get
2019-06-29 13:22:07,155 output L0655 DEBUG| value = self._get(key, path, default)
2019-06-29 13:22:07,155 output L0655 DEBUG| File "/usr/lib/python2.7/site-packages/avocado/core/varianter.py", line 205, in _get
2019-06-29 13:22:07,155 output L0655 DEBUG| return param.get_or_die(path, key)
2019-06-29 13:22:07,155 output L0655 DEBUG| File "/usr/lib/python2.7/site-packages/avocado/core/varianter.py", line 300, in get_or_die
2019-06-29 13:22:07,155 output L0655 DEBUG| for _ in ret]))
2019-06-29 13:22:07,156 output L0655 DEBUG| ValueError: Multiple leaves contain the key 'timeout'; ['/run=>600', '/run=>600', '/run=>600', '/run=>600', '/run/daos_tests/Tests/test_r_0-24=>1500']
I'm wondering why the first/small-scale example of this above works but
the larger/real-world one does not.
Any ideas?
Cheers,
b.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: This is a digitally signed message part
URL: <http://listman.redhat.com/archives/avocado-devel/attachments/20190629/1cd8778b/attachment.sig>
More information about the Avocado-devel
mailing list