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