#331 Unify erroneous state between libtaskotron and resultsdb
Closed: Invalid None Opened 8 years ago by jsedlak.

[[ https://docs.qadevel.cloud.fedoraproject.org/libtaskotron/latest/docs/library.html#module-libtaskotron.check | Taskotron documentation ]] says that when check crashes, outcome should be CRASHED. But when I tried to submit that into resultsdb, it shows:

[libtaskotron] 15:07:29 INFO    Posting 1 results to ResultsDB...
[resultsdb_api] 15:07:29 WARNING Received HTTP failure status code 400 for request: http://192.168.122.1:5001/api/v1.0/results
[libtaskotron] 15:07:29 ERROR   u"outcome must be one of ('PASSED', 'INFO', 'FAILED', 'ERROR', 'WAIVED', 'NEEDS_INSPECTION', 'ABORTED') (HTTP 400)"
[libtaskotron] 15:07:29 ERROR   Failed to store ResulsDB: `docker-1.10.2-6.git0f5ac89.fc23` `dockerautotest` `CRASHED`

If I instead try to set outcome to ERROR, libtaskotron fails with:

[libtaskotron] 15:51:46 CRITICAL Traceback (most recent call last):
  File "/usr/bin/runtask", line 9, in <module>
    load_entry_point('libtaskotron==0.4.10', 'console_scripts', 'runtask')()
  File "/usr/lib/python2.7/site-packages/libtaskotron/main.py", line 163, in main
    overlord.start()
  File "/usr/lib/python2.7/site-packages/libtaskotron/overlord.py", line 95, in start
    runner.execute()
  File "/usr/lib/python2.7/site-packages/libtaskotron/executor.py", line 56, in execute
    self._run()
  File "/usr/lib/python2.7/site-packages/libtaskotron/executor.py", line 89, in _run
    self._do_actions()
  File "/usr/lib/python2.7/site-packages/libtaskotron/executor.py", line 127, in _do_actions
    self._do_single_action(action)
  File "/usr/lib/python2.7/site-packages/libtaskotron/executor.py", line 148, in _do_single_action
    self.arg_data)
  File "/usr/lib/python2.7/site-packages/libtaskotron/directives/python_directive.py", line 214, in process
    output = self.execute(task, method_name, input_data)
  File "/usr/lib/python2.7/site-packages/libtaskotron/directives/python_directive.py", line 155, in execute
    output = task_method(**kwargs)
  File "run_dockerautotest.py", line 97, in runtest
    details = parser.to_check_detail(json_data)
  File "run_dockerautotest.py", line 140, in to_check_detail
    details.append(self.parse_single_result(operation))
  File "run_dockerautotest.py", line 126, in parse_single_result
    detail.outcome = self.status_map[result['status_code']]
  File "/usr/lib/python2.7/site-packages/libtaskotron/check.py", line 131, in outcome
    raise exc.TaskotronValueError('Unknown outcome keyword: %s' % value)
TaskotronValueError: Unknown outcome keyword: ERROR

[libtaskotron] 15:51:49 CRITICAL Traceback (most recent call last):
  File "/usr/bin/runtask", line 9, in <module>
    load_entry_point('libtaskotron==0.4.10', 'console_scripts', 'runtask')()
  File "/usr/lib/python2.7/site-packages/libtaskotron/main.py", line 163, in main
    overlord.start()
  File "/usr/lib/python2.7/site-packages/libtaskotron/overlord.py", line 95, in start
    runner.execute()
  File "/usr/lib/python2.7/site-packages/libtaskotron/minion.py", line 198, in execute
    self._run()
  File "/usr/lib/python2.7/site-packages/libtaskotron/minion.py", line 125, in _run
    self.exitcode = self.ssh.cmd(' '.join(task_cmd))
  File "/usr/lib/python2.7/site-packages/libtaskotron/remote_exec.py", line 150, in cmd
    (cmd, self.username, self.hostname, retcode))
TaskotronRemoteProcessError: Command "cd /var/tmp/taskotron/taskdir && runtask --arch x86_64 --item docker-1.9.1-6.git6ec29ef.fc23 --jobid -1 --type koji_build --uuid 20160303_151136_397995 --local dockerautotest.yml" on root@192.168.122.58 exited with code 1

Decide what erroneous state to use and unify that in libtasktotron and resultsdb.


This ticket had assigned some Differential requests:
D771
D770

We don't have ERROR in libtaskotron. @jskladan, what is the purpose of that?

I believe @jsedlak is correct in setting CRASHED when the test suite crashes and he captures that in his python wrapper. Which means we should implement that in #resultsdb. Thoughts?

Login to comment on this ticket.

Metadata