Yet more ansible muckery, to get test results
Looks like the code I copied from standard-test-roles has changed; let's reincorporate it. In particular, there is now an annoying step that pulls logs and artifacts from remote-host:/tmp/artifacts . Well, that doesn't exist in our case because /tmp may not survive reboots. Workaround: after completion of each test, push our local (master) artifacts to remote. And, fix a typo in results.yml Signed-off-by: Ed Santiago <santiago@redhat.com>
This commit is contained in:
		
							parent
							
								
									f86ac1f054
								
							
						
					
					
						commit
						5dd1bdae66
					
				| @ -1,21 +1,36 @@ | ||||
| --- | ||||
| # Copied from standard-test-basic | ||||
| - name: check results | ||||
|   local_action: shell egrep "^(FAIL|ERROR)" "{{ artifacts }}/test.log" | ||||
|   register: test_fails | ||||
|   # Never fail at this step. Just store result of tests. | ||||
|   failed_when: False | ||||
| # ...and, 2020-05-13, updated, looks like they changed the whole thing around | ||||
| - name: Check the results | ||||
|   local_action: | ||||
|     module: shell | ||||
|     cmd: | | ||||
|       log="{{ artifacts }}/test.log" | ||||
|       if [ ! -f "$log" ]; then | ||||
|           echo ERROR | ||||
|           echo "Test results not found." 1>&2 | ||||
|       elif grep ^ERROR "$log" 1>&2; then | ||||
|           echo ERROR | ||||
|       elif grep ^FAIL "$log" 1>&2; then | ||||
|           echo FAIL | ||||
|       elif grep -q ^PASS "$log"; then | ||||
|           echo PASS | ||||
|       else | ||||
|           echo ERROR | ||||
|           echo "No test results found." 1>&2 | ||||
|       fi | ||||
|   register: test_results | ||||
| 
 | ||||
| - name: preserve results | ||||
| - name: Set role result | ||||
|   set_fact: | ||||
|     role_result_failed: "{{ (test_fails.stdout|d|length > 0) or (test_fails.stderr|d|length > 0) }}" | ||||
|     role_result_msg: "{{ test_fails.stdout|d('tests failed.') }}" | ||||
|     role_result: "{{ test_results.stdout }}" | ||||
|     role_message: "{{ test_results.stderr|d('test execution error.') }}" | ||||
| 
 | ||||
| - name: display results | ||||
|   vars: | ||||
|     msg: | | ||||
|        Tests failed: {{ role_result_failed|d('Undefined') }} | ||||
|        Tests msg: {{ role_result_msg|d('None') }} | ||||
|        role_result:  {{ role_result|d('Undefined') }} | ||||
|        {{ role_message|d('[No error messages found]') }} | ||||
|   debug: | ||||
|     msg: "{{ msg.split('\n') }}" | ||||
|   failed_when: "role_result_failed|bool" | ||||
|   failed_when: role_message|d("") != "" | ||||
|  | ||||
| @ -71,3 +71,17 @@ | ||||
|     - test.bats.log | ||||
|     - test.summary.log | ||||
|     - helper.sh | ||||
| 
 | ||||
| # AAAAARGH! | ||||
| # | ||||
| # Fedora gating tests are failing, because str-common-final/tasks/main.yml | ||||
| # tries to pull test.log and other logs from $remote_host:/tmp/artifacts . | ||||
| # Those don't exist, because I track status and artifacts locally, because | ||||
| # with the reboot I can't rely on /tmp being preserved. | ||||
| # I see no way to tell str-common-final to skip this step; so let's just | ||||
| # push logs over upon completion of each subtest. | ||||
| - name: keep remote artifacts synced | ||||
|   synchronize: | ||||
|     src:  "{{ artifacts }}/" | ||||
|     dest: "{{ remote_artifacts|d('/tmp/artifacts') }}/" | ||||
|     mode: push | ||||
|  | ||||
| @ -21,7 +21,7 @@ | ||||
|     local_action: command truncate --size=0 {{ artifacts }}/test.log | ||||
| 
 | ||||
|   - name: clear test results (results.yml) | ||||
|     local_action: copy content="requires:\n" dest={{ artifacts }}/results.yml | ||||
|     local_action: copy content="results:\n" dest={{ artifacts }}/results.yml | ||||
| 
 | ||||
|   # These are the actual tests: set cgroups vN, then run root/rootless tests. | ||||
|   - name: set cgroups and run podman tests | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user