github.com/redhat-appstudio/e2e-tests@v0.0.0-20240520140907-9709f6f59323/tests/load-tests/ci-scripts/utility_scripts/runs-to-csv.sh (about) 1 #!/bin/bash 2 3 set -o nounset 4 set -o errexit 5 set -o pipefail 6 7 # Just a helper script to output CSV file based on all found benchmark JSON files 8 headers="BUILD_ID,\ 9 Started,\ 10 Ended,\ 11 \ 12 users_per_thread,\ 13 threads,\ 14 total_users,\ 15 component_repo,\ 16 build_pipeline_selector_bundle,\ 17 user_prefix,\ 18 scenario,\ 19 job_name,\ 20 openshift_api,\ 21 \ 22 control_plane_count,\ 23 control_plane_flavor,\ 24 compute_plane_count,\ 25 compute_plane_flavor,\ 26 \ 27 createUserSuccesses,\ 28 createUserFailures,\ 29 createUserFailureRate,\ 30 createUserTimeAvg,\ 31 createUserTimeMax,\ 32 \ 33 createApplicationsSuccesses,\ 34 createApplicationsFailures,\ 35 createApplicationsFailureRate,\ 36 createApplicationsTimeAvg,\ 37 createApplicationsTimeMax,\ 38 \ 39 createCDQsSuccesses,\ 40 createCDQsFailures,\ 41 createCDQsFailureRate,\ 42 createCDQsTimeAvg,\ 43 createCDQsTimeMax,\ 44 \ 45 createComponentsSuccesses,\ 46 createComponentsFailures,\ 47 createComponentsFailureRate,\ 48 createComponentsTimeAvg,\ 49 createComponentsTimeMax,\ 50 \ 51 runPipelineSuccesses,\ 52 runPipelineFailures,\ 53 runPipelineFailureRate,\ 54 runPipelineSucceededTimeAvg,\ 55 runPipelineSucceededTimeMax,\ 56 \ 57 integrationTestsRunPipelineSuccesses,\ 58 integrationTestsRunPipelineFailures,\ 59 integrationTestsRunPipelineFailureRate,\ 60 integrationTestsRunPipelineSucceededTimeAvg,\ 61 integrationTestsRunPipelineSucceededTimeMax,\ 62 \ 63 deploymentSuccesses,\ 64 deploymentFailures,\ 65 deploymentFailureRate,\ 66 deploymentSucceededTimeAvg,\ 67 deploymentSucceededTimeMax,\ 68 \ 69 TOTAL_AVG,\ 70 WORKLOAD_KPI,\ 71 \ 72 .measurements.cluster_cpu_usage_seconds_total_rate.mean,\ 73 .measurements.cluster_disk_throughput_total.mean,\ 74 .measurements.cluster_memory_usage_rss_total.mean,\ 75 .measurements.cluster_network_bytes_total.mean,\ 76 .measurements.cluster_network_receive_bytes_total.mean,\ 77 .measurements.cluster_network_transmit_bytes_total.mean,\ 78 .measurements.cluster_nodes_worker_count.mean,\ 79 .measurements.cluster_pods_count.mean,\ 80 .measurements.cluster_running_pods_on_workers_count.mean,\ 81 .measurements.etcd_request_duration_seconds_average.mean,\ 82 .measurements.node_disk_io_time_seconds_total.mean,\ 83 .measurements.pipelinerun_duration_scheduled_seconds.mean,\ 84 .measurements.scheduler_pending_pods_count.mean,\ 85 .measurements.storage_count_attachable_volumes_in_use.mean,\ 86 .measurements.tekton_pipelines_controller_running_pipelineruns_count.mean,\ 87 .measurements.tekton_pipelines_controller_running_taskruns_throttled_by_node.mean,\ 88 .measurements.tekton_pipelines_controller_running_taskruns_throttled_by_quota.mean,\ 89 .measurements.tekton_tekton_pipelines_controller_workqueue_depth.mean,\ 90 \ 91 .measurements.tekton-pipelines-controller.count_ready.mean,\ 92 .measurements.tekton-pipelines-controller.restarts.mean,\ 93 .measurements.tekton-pipelines-controller.cpu.mean,\ 94 .measurements.tekton-pipelines-controller.memory.mean,\ 95 .measurements.tekton-pipelines-controller.disk_throughput.mean,\ 96 .measurements.tekton-pipelines-controller.network_throughput.mean\ 97 " 98 echo "$headers" 99 100 find "${1:-.}" -name load-tests.json -print0 | while IFS= read -r -d '' filename; do 101 grep --quiet "XXXXX" "${filename}" && echo "WARNING placeholders found in ${filename}, removing" 102 sed -Ee 's/: ([0-9]+\.[0-9]*[X]+[0-9e\+-]*|[0-9]*X+[0-9]*\.[0-9e\+-]*|[0-9]*X+[0-9]*\.[0-9]*X+[0-9e\+-]+)/: "\1"/g' "${filename}" \ 103 | jq --raw-output '[ 104 .metadata.env.BUILD_ID, 105 .timestamp, 106 .endTimestamp, 107 108 .metadata.scenario.USERS_PER_THREAD, 109 .metadata.scenario.THREADS, 110 (.metadata.scenario.USERS_PER_THREAD|tonumber) * (.metadata.scenario.THREADS|tonumber), 111 .metadata.scenario.COMPONENT_REPO, 112 .metadata.scenario.BUILD_PIPELINE_SELECTOR_BUNDLE, 113 .metadata.scenario.USER_PREFIX, 114 .metadata.env.SCENARIO, 115 .metadata.env.JOB_NAME, 116 .metadata.env.OPENSHIFT_API, 117 118 .metadata.cluster."control-plane".count, 119 .metadata.cluster."control-plane".flavor, 120 .metadata.cluster."compute-nodes".count, 121 .metadata.cluster."compute-nodes".flavor, 122 123 .createUserSuccesses, 124 .createUserFailures, 125 .createUserFailureRate, 126 .createUserTimeAvg, 127 .createUserTimeMax, 128 129 .createApplicationsSuccesses, 130 .createApplicationsFailures, 131 .createApplicationsFailureRate, 132 .createApplicationsTimeAvg, 133 .createApplicationsTimeMax, 134 135 .createCDQsSuccesses, 136 .createCDQsFailures, 137 .createCDQsFailureRate, 138 .createCDQsTimeAvg, 139 .createCDQsTimeMax, 140 141 .createComponentsSuccesses, 142 .createComponentsFailures, 143 .createComponentsFailureRate, 144 .createComponentsTimeAvg, 145 .createComponentsTimeMax, 146 147 .runPipelineSuccesses, 148 .runPipelineFailures, 149 .runPipelineFailureRate, 150 .runPipelineSucceededTimeAvg, 151 .runPipelineSucceededTimeMax, 152 153 .integrationTestsRunPipelineSuccesses, 154 .integrationTestsRunPipelineFailures, 155 .integrationTestsRunPipelineFailureRate, 156 .integrationTestsRunPipelineSucceededTimeAvg, 157 .integrationTestsRunPipelineSucceededTimeMax, 158 159 .deploymentSuccesses, 160 .deploymentFailures, 161 .deploymentFailureRate, 162 .deploymentSucceededTimeAvg, 163 .deploymentSucceededTimeMax, 164 165 .createApplicationsTimeAvg + .createCDQsTimeAvg + .createComponentsTimeAvg + .integrationTestsRunPipelineSucceededTimeAvg + .runPipelineSucceededTimeAvg + .deploymentSucceededTimeAvg, 166 .workloadKPI, 167 168 .measurements.cluster_cpu_usage_seconds_total_rate.mean, 169 .measurements.cluster_disk_throughput_total.mean, 170 .measurements.cluster_memory_usage_rss_total.mean, 171 .measurements.cluster_network_bytes_total.mean, 172 .measurements.cluster_network_receive_bytes_total.mean, 173 .measurements.cluster_network_transmit_bytes_total.mean, 174 .measurements.cluster_nodes_worker_count.mean, 175 .measurements.cluster_pods_count.mean, 176 .measurements.cluster_running_pods_on_workers_count.mean, 177 .measurements.etcd_request_duration_seconds_average.mean, 178 .measurements.node_disk_io_time_seconds_total.mean, 179 .measurements.pipelinerun_duration_scheduled_seconds.mean, 180 .measurements.scheduler_pending_pods_count.mean, 181 .measurements.storage_count_attachable_volumes_in_use.mean, 182 .measurements.tekton_pipelines_controller_running_pipelineruns_count.mean, 183 .measurements.tekton_pipelines_controller_running_taskruns_throttled_by_node.mean, 184 .measurements.tekton_pipelines_controller_running_taskruns_throttled_by_quota.mean, 185 .measurements.tekton_tekton_pipelines_controller_workqueue_depth.mean, 186 187 .measurements."tekton-pipelines-controller".count_ready.mean, 188 .measurements."tekton-pipelines-controller".restarts.mean, 189 .measurements."tekton-pipelines-controller".cpu.mean, 190 .measurements."tekton-pipelines-controller".memory.mean, 191 .measurements."tekton-pipelines-controller".disk_throughput.mean, 192 .measurements."tekton-pipelines-controller".network_throughput.mean 193 ] | @csv' && 194 rc=0 || rc=1 195 if [[ "$rc" -ne 0 ]]; then 196 echo "ERROR failed on ${filename}" 197 fi 198 done