Add phoronix-test-suite job
This change adds new jobs to run and combine phoronix test suite results. Co-Authored-By: Nicolas Hicher <nhicher@redhat.com> Change-Id: If94cdbd91c8d80393a71cd5c36690563de9edcd6
This commit is contained in:
parent
75e3b15939
commit
59c5820fa6
@ -10,3 +10,4 @@ Jobs
|
||||
docker-jobs
|
||||
go-jobs
|
||||
helm-jobs
|
||||
system-jobs
|
||||
|
@ -22,4 +22,5 @@ Roles
|
||||
launchpad-roles
|
||||
puppet-roles
|
||||
python-roles
|
||||
system-roles
|
||||
translation-roles
|
||||
|
5
doc/source/system-jobs.rst
Normal file
5
doc/source/system-jobs.rst
Normal file
@ -0,0 +1,5 @@
|
||||
System Jobs
|
||||
===========
|
||||
|
||||
.. zuul:autojob:: phoronix-test-suite
|
||||
.. zuul:autojob:: phoronix-combine-results
|
7
doc/source/system-roles.rst
Normal file
7
doc/source/system-roles.rst
Normal file
@ -0,0 +1,7 @@
|
||||
System Roles
|
||||
============
|
||||
|
||||
.. zuul:autorole:: ensure-phoronix-test-suite
|
||||
.. zuul:autorole:: phoronix-test-suite
|
||||
.. zuul:autorole:: phoronix-combine-results
|
||||
.. zuul:autorole:: fetch-phoronix-results
|
5
playbooks/phoronix-test-suite/combine.yaml
Normal file
5
playbooks/phoronix-test-suite/combine.yaml
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
- hosts: all
|
||||
roles:
|
||||
- ensure-phoronix-test-suite
|
||||
- phoronix-combine-results
|
4
playbooks/phoronix-test-suite/post-combine.yaml
Normal file
4
playbooks/phoronix-test-suite/post-combine.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
- hosts: all
|
||||
roles:
|
||||
- fetch-phoronix-results
|
4
playbooks/phoronix-test-suite/post.yaml
Normal file
4
playbooks/phoronix-test-suite/post.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
- hosts: all
|
||||
roles:
|
||||
- fetch-phoronix-results
|
4
playbooks/phoronix-test-suite/run.yaml
Normal file
4
playbooks/phoronix-test-suite/run.yaml
Normal file
@ -0,0 +1,4 @@
|
||||
- hosts: all
|
||||
roles:
|
||||
- ensure-phoronix-test-suite
|
||||
- phoronix-test-suite
|
5
roles/ensure-phoronix-test-suite/README.rst
Normal file
5
roles/ensure-phoronix-test-suite/README.rst
Normal file
@ -0,0 +1,5 @@
|
||||
Install phoronix-test-suite
|
||||
|
||||
This role requires a phoronix-test-suite package, provided by these distros:
|
||||
|
||||
- Fedora
|
76
roles/ensure-phoronix-test-suite/files/user-config.xml
Normal file
76
roles/ensure-phoronix-test-suite/files/user-config.xml
Normal file
@ -0,0 +1,76 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--Phoronix Test Suite v8.6.1-->
|
||||
<?xml-stylesheet type="text/xsl" href="xsl/pts-user-config-viewer.xsl"?>
|
||||
<PhoronixTestSuite>
|
||||
<Options>
|
||||
<OpenBenchmarking>
|
||||
<AnonymousUsageReporting>FALSE</AnonymousUsageReporting>
|
||||
<IndexCacheTTL>3</IndexCacheTTL>
|
||||
<AlwaysUploadSystemLogs>FALSE</AlwaysUploadSystemLogs>
|
||||
</OpenBenchmarking>
|
||||
<General>
|
||||
<DefaultBrowser></DefaultBrowser>
|
||||
<UsePhodeviCache>TRUE</UsePhodeviCache>
|
||||
<DefaultDisplayMode>DEFAULT</DefaultDisplayMode>
|
||||
<PhoromaticServers></PhoromaticServers>
|
||||
<FullOutput>FALSE</FullOutput>
|
||||
<ColoredConsole>AUTO</ColoredConsole>
|
||||
</General>
|
||||
<Modules>
|
||||
<LoadModules>toggle_screensaver, update_checker, perf_tips, ob_auto_compare</LoadModules>
|
||||
</Modules>
|
||||
<Installation>
|
||||
<RemoveDownloadFiles>FALSE</RemoveDownloadFiles>
|
||||
<SearchMediaForCache>TRUE</SearchMediaForCache>
|
||||
<SymLinkFilesFromCache>FALSE</SymLinkFilesFromCache>
|
||||
<PromptForDownloadMirror>FALSE</PromptForDownloadMirror>
|
||||
<EnvironmentDirectory>~/.phoronix-test-suite/installed-tests/</EnvironmentDirectory>
|
||||
<CacheDirectory>~/.phoronix-test-suite/download-cache/</CacheDirectory>
|
||||
</Installation>
|
||||
<Testing>
|
||||
<SaveSystemLogs>TRUE</SaveSystemLogs>
|
||||
<SaveInstallationLogs>FALSE</SaveInstallationLogs>
|
||||
<SaveTestLogs>FALSE</SaveTestLogs>
|
||||
<RemoveTestInstallOnCompletion></RemoveTestInstallOnCompletion>
|
||||
<ResultsDirectory>~/test-results/</ResultsDirectory>
|
||||
<AlwaysUploadResultsToOpenBenchmarking>FALSE</AlwaysUploadResultsToOpenBenchmarking>
|
||||
<AutoSortRunQueue>TRUE</AutoSortRunQueue>
|
||||
<ShowPostRunStatistics>TRUE</ShowPostRunStatistics>
|
||||
</Testing>
|
||||
<TestResultValidation>
|
||||
<DynamicRunCount>TRUE</DynamicRunCount>
|
||||
<LimitDynamicToTestLength>20</LimitDynamicToTestLength>
|
||||
<StandardDeviationThreshold>3.50</StandardDeviationThreshold>
|
||||
<ExportResultsTo></ExportResultsTo>
|
||||
<MinimalTestTime>2</MinimalTestTime>
|
||||
<DropNoisyResults>FALSE</DropNoisyResults>
|
||||
</TestResultValidation>
|
||||
<BatchMode>
|
||||
<SaveResults>TRUE</SaveResults>
|
||||
<OpenBrowser>FALSE</OpenBrowser>
|
||||
<UploadResults>FALSE</UploadResults>
|
||||
<PromptForTestIdentifier>FALSE</PromptForTestIdentifier>
|
||||
<PromptForTestDescription>FALSE</PromptForTestDescription>
|
||||
<PromptSaveName>FALSE</PromptSaveName>
|
||||
<RunAllTestCombinations>TRUE</RunAllTestCombinations>
|
||||
<Configured>TRUE</Configured>
|
||||
</BatchMode>
|
||||
<Networking>
|
||||
<NoInternetCommunication>FALSE</NoInternetCommunication>
|
||||
<NoNetworkCommunication>FALSE</NoNetworkCommunication>
|
||||
<Timeout>20</Timeout>
|
||||
<ProxyAddress></ProxyAddress>
|
||||
<ProxyPort></ProxyPort>
|
||||
<ProxyUser></ProxyUser>
|
||||
<ProxyPassword></ProxyPassword>
|
||||
</Networking>
|
||||
<Server>
|
||||
<RemoteAccessPort>RANDOM</RemoteAccessPort>
|
||||
<Password></Password>
|
||||
<WebSocketPort>RANDOM</WebSocketPort>
|
||||
<AdvertiseServiceZeroConf>TRUE</AdvertiseServiceZeroConf>
|
||||
<AdvertiseServiceOpenBenchmarkRelay>TRUE</AdvertiseServiceOpenBenchmarkRelay>
|
||||
<PhoromaticStorage>~/.phoronix-test-suite/phoromatic/</PhoromaticStorage>
|
||||
</Server>
|
||||
</Options>
|
||||
</PhoronixTestSuite>
|
25
roles/ensure-phoronix-test-suite/tasks/main.yaml
Normal file
25
roles/ensure-phoronix-test-suite/tasks/main.yaml
Normal file
@ -0,0 +1,25 @@
|
||||
---
|
||||
- name: Install phoronix-test-suite
|
||||
become: yes
|
||||
package:
|
||||
name: phoronix-test-suite
|
||||
|
||||
- name: Create config directory
|
||||
file:
|
||||
path: "{{ ansible_env.HOME }}/.phoronix-test-suite"
|
||||
state: directory
|
||||
|
||||
- name: Install config
|
||||
copy:
|
||||
src: user-config.xml
|
||||
dest: "{{ ansible_env.HOME }}/.phoronix-test-suite/user-config.xml"
|
||||
|
||||
- name: Ensure test results are cleaned
|
||||
file:
|
||||
path: "{{ ansible_env.HOME }}/test-results"
|
||||
state: absent
|
||||
|
||||
- name: Create result directory
|
||||
file:
|
||||
path: "{{ ansible_env.HOME }}/test-results/"
|
||||
state: directory
|
5
roles/fetch-phoronix-results/README.rst
Normal file
5
roles/fetch-phoronix-results/README.rst
Normal file
@ -0,0 +1,5 @@
|
||||
Collect output from a phoronix-test-suite run
|
||||
|
||||
The role copies the output from a phoronix-test-suite run
|
||||
on the worker to the log root of the executor using a
|
||||
directory named after the ansible_hostname.
|
29
roles/fetch-phoronix-results/tasks/main.yaml
Normal file
29
roles/fetch-phoronix-results/tasks/main.yaml
Normal file
@ -0,0 +1,29 @@
|
||||
---
|
||||
- name: Set phoronix log path
|
||||
set_fact:
|
||||
log_path: "{{ zuul.executor.log_root }}/"
|
||||
when: log_path is not defined
|
||||
|
||||
- name: Discover the last result path
|
||||
shell: |
|
||||
set -o pipefail
|
||||
ls -td ~/test-results/* | head -n 1
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: result_path
|
||||
|
||||
- name: Collect phoronix result
|
||||
synchronize:
|
||||
src: "{{ result_path.stdout }}/"
|
||||
dest: "{{ log_path }}/phoronix-results-{{ ansible_hostname }}/"
|
||||
mode: pull
|
||||
|
||||
- name: Return site artifact location to Zuul
|
||||
zuul_return:
|
||||
data:
|
||||
zuul:
|
||||
artifacts:
|
||||
- name: "Phoronix test result"
|
||||
metadata:
|
||||
type: phoronix_result
|
||||
url: "phoronix-results-{{ ansible_hostname }}/"
|
1
roles/phoronix-combine-results/README.rst
Normal file
1
roles/phoronix-combine-results/README.rst
Normal file
@ -0,0 +1 @@
|
||||
Combine phoronix-test-suite results
|
10
roles/phoronix-combine-results/tasks/fetch-result.yaml
Normal file
10
roles/phoronix-combine-results/tasks/fetch-result.yaml
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
- name: Create result dir
|
||||
file:
|
||||
path: "{{ ansible_env.HOME }}/test-results/{{ item.url.rstrip('/')|basename }}"
|
||||
state: directory
|
||||
|
||||
- name: Fetch artifact
|
||||
get_url:
|
||||
url: "{{ item.url }}/composite.xml"
|
||||
dest: "{{ ansible_env.HOME }}/test-results/{{ item.url.rstrip('/')|basename }}/composite.xml"
|
19
roles/phoronix-combine-results/tasks/main.yaml
Normal file
19
roles/phoronix-combine-results/tasks/main.yaml
Normal file
@ -0,0 +1,19 @@
|
||||
---
|
||||
- name: Fetch previous result
|
||||
include_tasks: fetch-result.yaml
|
||||
when:
|
||||
- item.metadata is defined
|
||||
- item.metadata.type is defined
|
||||
- item.metadata.type == "phoronix_result"
|
||||
loop: "{{ zuul.artifacts }}"
|
||||
|
||||
- name: List previous result name
|
||||
command: "ls {{ ansible_env.HOME }}/test-results/"
|
||||
register: previous_results
|
||||
|
||||
- name: Merge result
|
||||
shell: |
|
||||
set -o pipefail
|
||||
yes | phoronix-test-suite merge-results {{ ' '.join(previous_results.stdout_lines) }}
|
||||
args:
|
||||
executable: /bin/bash
|
8
roles/phoronix-test-suite/README.rst
Normal file
8
roles/phoronix-test-suite/README.rst
Normal file
@ -0,0 +1,8 @@
|
||||
Runs phoronix-test-suite
|
||||
|
||||
**Role Variables**
|
||||
|
||||
.. zuul:rolevar:: phoronix_test_suites
|
||||
:default: ["pts/sysbench"]
|
||||
|
||||
The list of tests to run.
|
2
roles/phoronix-test-suite/defaults/main.yaml
Normal file
2
roles/phoronix-test-suite/defaults/main.yaml
Normal file
@ -0,0 +1,2 @@
|
||||
phoronix_test_suites:
|
||||
- pts/sysbench
|
16
roles/phoronix-test-suite/tasks/main.yaml
Normal file
16
roles/phoronix-test-suite/tasks/main.yaml
Normal file
@ -0,0 +1,16 @@
|
||||
---
|
||||
- name: Install test
|
||||
shell: |
|
||||
set -o pipefail
|
||||
yes | phoronix-test-suite install {{ ' '.join(phoronix_test_suites) }}
|
||||
args:
|
||||
executable: /bin/bash
|
||||
register: _phoronix_cmd
|
||||
failed_when: _phoronix_cmd.rc != 141
|
||||
|
||||
- name: Run test
|
||||
shell: |
|
||||
set -o pipefail
|
||||
yes | phoronix-test-suite batch-run {{ ' '.join(phoronix_test_suites) }}
|
||||
register: _phoronix_cmd
|
||||
failed_when: _phoronix_cmd.rc != 141
|
13
zuul.d/system-jobs.yaml
Normal file
13
zuul.d/system-jobs.yaml
Normal file
@ -0,0 +1,13 @@
|
||||
- job:
|
||||
name: phoronix-test-suite
|
||||
description: A system job to validate test resources
|
||||
run: playbooks/phoronix-test-suite/run.yaml
|
||||
post-run: playbooks/phoronix-test-suite/post.yaml
|
||||
|
||||
- job:
|
||||
name: phoronix-combine-results
|
||||
description: A system job to combine multiple results
|
||||
vars:
|
||||
phoronix_combined_result_name: "phoronix-combined-result"
|
||||
run: playbooks/phoronix-test-suite/combine.yaml
|
||||
post-run: playbooks/phoronix-test-suite/post-combine.yaml
|
Loading…
Reference in New Issue
Block a user