CNTRLPLANE-3205: Execute performance testing for self-managed Azure HCP#80449
CNTRLPLANE-3205: Execute performance testing for self-managed Azure HCP#80449mehabhalodiya wants to merge 1 commit into
Conversation
|
@mehabhalodiya: This pull request references CNTRLPLANE-3205 which is a valid jira issue. Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the task to target the "5.0.0" version, but no target version was set. DetailsIn response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository. |
WalkthroughAdds a complete Azure self‑managed HyperShift performance testing stack: a Bash runner that collects timing/availability metrics, a step registry/ref, a pre/test/post workflow, weekly release periodic, README, and OWNERS metadata. ChangesAzure HyperShift Performance Testing Infrastructure
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Suggested labels
Suggested reviewers
🚥 Pre-merge checks | ✅ 15✅ Passed checks (15 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: mehabhalodiya The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (1)
ci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-commands.sh (1)
34-34: ⚡ Quick winDeclare and assign separately to avoid masking return values.
Lines 34 and 39 combine
localdeclaration with command substitution. Ifdatefails, the error is masked bylocal's return code. Whiledaterarely fails, separating declaration and assignment improves error visibility.♻️ Proposed fix
time_operation() { local operation_name=$1 - local start_time=$(date +%s) + local start_time + start_time=$(date +%s) shift "$@" - local end_time=$(date +%s) + local end_time + end_time=$(date +%s) local duration=$((end_time - start_time))Also applies to: 39-39
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@ci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-commands.sh` at line 34, Separate declaration from assignment for the timestamp variables to avoid masking command failures: replace the combined statements that use command substitution with two steps — first declare the local variables (e.g., local start_time and local end_time) and then assign them using date (e.g., start_time=$(date +%s) and end_time=$(date +%s)). Update the occurrences of start_time and end_time in hypershift-azure-performance-test-commands.sh so each uses a standalone local declaration followed by the command substitution assignment.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@ci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-commands.sh`:
- Line 51: Replace hardcoded /hypershift/bin/hypershift invocations with the
HYPERSHIFT_BINARY variable: add an export fallback like export
HYPERSHIFT_BINARY="${HYPERSHIFT_BINARY:-/hypershift/bin/hypershift}" near the
top of the script and update every invocation (the create cluster azure command
and the destroy and kubeconfig calls that currently use
/hypershift/bin/hypershift) to call "${HYPERSHIFT_BINARY}" instead so the step
ref dependency is respected.
- Line 144: The metrics.json file is initialized as a JSON array ("[]") but
time_operation and check_api_availability append individual JSON objects,
producing invalid JSON; to fix, remove the echo "[]" >
"${PERF_RESULTS_DIR}/metrics.json" initialization and treat metrics.json as
NDJSON (one JSON object per line) by ensuring functions time_operation and
check_api_availability append newline-delimited JSON to
"${PERF_RESULTS_DIR}/metrics.json" and update any script comments/docs to state
metrics.json is NDJSON; alternatively (if you prefer a true JSON array) refactor
time_operation and check_api_availability to collect objects into an in-memory
array and write the complete array to "${PERF_RESULTS_DIR}/metrics.json" at the
end, but the preferred change is to remove the array init and document NDJSON
usage.
- Around line 123-125: The guest kubeconfig is being written to
"${PERF_RESULTS_DIR}/guest-kubeconfig" (under ARTIFACT_DIR) which exposes
cluster-admin credentials; change the redirection target in the `hypershift
create kubeconfig` invocation so the file is written to a non-artifact location
such as "${SHARED_DIR}/guest-kubeconfig" (or a secure temporary file created
with mktemp) instead of PERF_RESULTS_DIR, and ensure any downstream references
(variables or consumers) use the new SHARED_DIR path.
---
Nitpick comments:
In
`@ci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-commands.sh`:
- Line 34: Separate declaration from assignment for the timestamp variables to
avoid masking command failures: replace the combined statements that use command
substitution with two steps — first declare the local variables (e.g., local
start_time and local end_time) and then assign them using date (e.g.,
start_time=$(date +%s) and end_time=$(date +%s)). Update the occurrences of
start_time and end_time in hypershift-azure-performance-test-commands.sh so each
uses a standalone local declaration followed by the command substitution
assignment.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository YAML (base), Central YAML (inherited)
Review profile: CHILL
Plan: Enterprise
Run ID: 8bc58dfa-51d5-4e30-86c4-ab0e87b01f32
⛔ Files ignored due to path filters (1)
ci-operator/jobs/openshift/hypershift/openshift-hypershift-release-5.0-periodics.yamlis excluded by!ci-operator/jobs/**
📒 Files selected for processing (8)
ci-operator/config/openshift/hypershift/openshift-hypershift-release-5.0__periodics-azure-perf.yamlci-operator/step-registry/hypershift/azure/performance-test/OWNERSci-operator/step-registry/hypershift/azure/performance-test/README.mdci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-commands.shci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-ref.metadata.jsonci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-ref.yamlci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-workflow.metadata.jsonci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-workflow.yaml
| create_hosted_cluster() { | ||
| echo "Creating HostedCluster: ${PERF_CLUSTER_NAME}" | ||
|
|
||
| /hypershift/bin/hypershift create cluster azure \ |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Description: Check hypershift binary usage patterns in similar Azure test steps
# Search for hypershift binary invocations in Azure hypershift step scripts
rg -n '/hypershift/bin/hypershift|HYPERSHIFT_BINARY' \
-g 'ci-operator/step-registry/hypershift/azure/**/*-commands.sh' \
-C 2Repository: openshift/release
Length of output: 3906
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# 1) Locate and print the relevant ref.yaml section for the specific step
fd -t f 'hypershift-azure-performance-test-ref.yaml' ci-operator/step-registry/hypershift/azure/performance-test -a || true
REF_FILE="$(fd -t f 'hypershift-azure-performance-test-ref.yaml' ci-operator/step-registry/hypershift/azure/performance-test -a | head -n1 || true)"
if [[ -n "${REF_FILE}" ]]; then
echo "== $REF_FILE =="
# Print around any HYPERSHIFT_BINARY mentions
rg -n 'HYPERSHIFT_BINARY' "$REF_FILE" -n || true
rg -n 'dependencies|dependency|env|HYPERSHIFT_BINARY' "$REF_FILE" -C 2 || true
# Also show a small window around the first match (if any)
match_line="$(rg -n 'HYPERSHIFT_BINARY' "$REF_FILE" | head -n1 | cut -d: -f1 || true)"
if [[ -n "${match_line}" ]]; then
start=$((match_line-5)); end=$((match_line+5))
sed -n "${start},${end}p" "$REF_FILE"
fi
fi
# 2) See how HYPERSHIFT_BINARY is used across hypershift azure scripts
echo "== Azure hypershift scripts: HYPERSHIFT_BINARY occurrences =="
rg -n 'HYPERSHIFT_BINARY' ci-operator/step-registry/hypershift/azure -S -g '*-commands.sh' -C 2 || true
# 3) Confirm whether performance-test script ever uses $HYPERSHIFT_BINARY
echo "== performance-test commands: $HYPERSHIFT_BINARY usage =="
rg -n '\$?\{?HYPERSHIFT_BINARY\}?' ci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-commands.sh -S || trueRepository: openshift/release
Length of output: 2233
Use HYPERSHIFT_BINARY in hypershift-azure-performance-test (avoid hardcoded /hypershift/bin/hypershift).
The step ref declares HYPERSHIFT_BINARY as a dependency (ci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-ref.yaml, lines 49-50), but ci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-commands.sh hardcodes /hypershift/bin/hypershift for create/destroy/kubeconfig (lines 51, 102, 123). Align this script to invoke ${HYPERSHIFT_BINARY} (other Azure hypershift steps wire the variable via export HYPERSHIFT_BINARY="${HYPERSHIFT_BINARY:-/hypershift/bin/hypershift}").
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@ci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-commands.sh`
at line 51, Replace hardcoded /hypershift/bin/hypershift invocations with the
HYPERSHIFT_BINARY variable: add an export fallback like export
HYPERSHIFT_BINARY="${HYPERSHIFT_BINARY:-/hypershift/bin/hypershift}" near the
top of the script and update every invocation (the create cluster azure command
and the destroy and kubeconfig calls that currently use
/hypershift/bin/hypershift) to call "${HYPERSHIFT_BINARY}" instead so the step
ref dependency is respected.
| /hypershift/bin/hypershift create kubeconfig \ | ||
| --name="${PERF_CLUSTER_NAME}" \ | ||
| --namespace="${PERF_NAMESPACE}" > "${PERF_RESULTS_DIR}/guest-kubeconfig" |
There was a problem hiding this comment.
Critical: Guest kubeconfig saved to public artifacts directory.
The guest kubeconfig contains cluster-admin credentials and is written to ${PERF_RESULTS_DIR}/guest-kubeconfig, which is under ${ARTIFACT_DIR}. Artifact directories are uploaded to publicly accessible Prow job artifacts, exposing sensitive cluster credentials.
Save the kubeconfig to ${SHARED_DIR} or a temporary directory outside ${ARTIFACT_DIR} to prevent credential leakage.
🔒 Proposed fix to prevent credential exposure
# Get kubeconfig for the hosted cluster
/hypershift/bin/hypershift create kubeconfig \
--name="${PERF_CLUSTER_NAME}" \
- --namespace="${PERF_NAMESPACE}" > "${PERF_RESULTS_DIR}/guest-kubeconfig"
+ --namespace="${PERF_NAMESPACE}" > "${SHARED_DIR}/guest-kubeconfig"
local api_checks=0
local api_successes=0
for i in {1..10}; do
api_checks=$((api_checks + 1))
- if KUBECONFIG="${PERF_RESULTS_DIR}/guest-kubeconfig" oc get nodes &>/dev/null; then
+ if KUBECONFIG="${SHARED_DIR}/guest-kubeconfig" oc get nodes &>/dev/null; then
api_successes=$((api_successes + 1))
fi
sleep 2
done📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| /hypershift/bin/hypershift create kubeconfig \ | |
| --name="${PERF_CLUSTER_NAME}" \ | |
| --namespace="${PERF_NAMESPACE}" > "${PERF_RESULTS_DIR}/guest-kubeconfig" | |
| /hypershift/bin/hypershift create kubeconfig \ | |
| --name="${PERF_CLUSTER_NAME}" \ | |
| --namespace="${PERF_NAMESPACE}" > "${SHARED_DIR}/guest-kubeconfig" |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@ci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-commands.sh`
around lines 123 - 125, The guest kubeconfig is being written to
"${PERF_RESULTS_DIR}/guest-kubeconfig" (under ARTIFACT_DIR) which exposes
cluster-admin credentials; change the redirection target in the `hypershift
create kubeconfig` invocation so the file is written to a non-artifact location
such as "${SHARED_DIR}/guest-kubeconfig" (or a secure temporary file created
with mktemp) instead of PERF_RESULTS_DIR, and ensure any downstream references
(variables or consumers) use the new SHARED_DIR path.
Source: Coding guidelines
| } | ||
|
|
||
| # Initialize JSON metrics file | ||
| echo "[]" > "${PERF_RESULTS_DIR}/metrics.json" |
There was a problem hiding this comment.
Invalid JSON format: metrics.json initialized as array but appended as objects.
Line 144 initializes metrics.json with "[]", but the time_operation function (line 42) and check_api_availability (line 140) append individual JSON objects. This creates invalid JSON:
[]
{"metric":"...","value":...,"timestamp":...}
{"metric":"...","value":...,"timestamp":...}
Choose one format:
- Option 1 (recommended): Remove the
[]initialization for newline-delimited JSON (NDJSON). - Option 2: Build a proper JSON array by collecting metrics in memory and writing once at the end.
📝 Proposed fix for Option 1 (NDJSON format)
-# Initialize JSON metrics file
-echo "[]" > "${PERF_RESULTS_DIR}/metrics.json"
+# Initialize metrics files
+: > "${PERF_RESULTS_DIR}/metrics.json" # Empty file for NDJSON format
echo "# Azure Self-Managed HCP Performance Metrics" > "${PERF_RESULTS_DIR}/metrics.txt"Then update the script summary documentation to note the file is NDJSON (one JSON object per line).
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@ci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-commands.sh`
at line 144, The metrics.json file is initialized as a JSON array ("[]") but
time_operation and check_api_availability append individual JSON objects,
producing invalid JSON; to fix, remove the echo "[]" >
"${PERF_RESULTS_DIR}/metrics.json" initialization and treat metrics.json as
NDJSON (one JSON object per line) by ensuring functions time_operation and
check_api_availability append newline-delimited JSON to
"${PERF_RESULTS_DIR}/metrics.json" and update any script comments/docs to state
metrics.json is NDJSON; alternatively (if you prefer a true JSON array) refactor
time_operation and check_api_availability to collect objects into an in-memory
array and write the complete array to "${PERF_RESULTS_DIR}/metrics.json" at the
end, but the preferred change is to remove the array init and document NDJSON
usage.
1b4cdcb to
aa5a563
Compare
|
/pj-rehearse periodic-ci-openshift-hypershift-release-5.0-periodics-azure-perf-azure-self-managed-performance |
|
@mehabhalodiya: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
Add performance test step registry components in hypershift/azure/performance-test/ Signed-off-by: mehabhalodiya <mehabhalodiya@gmail.com>
aa5a563 to
d5cce22
Compare
|
[REHEARSALNOTIFIER]
Interacting with pj-rehearseComment: Once you are satisfied with the results of the rehearsals, comment: |
|
/pj-rehearse periodic-ci-openshift-hypershift-release-5.0-periodics-azure-perf-azure-self-managed-performance |
|
@mehabhalodiya: now processing your pj-rehearse request. Please allow up to 10 minutes for jobs to trigger or cancel. |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@ci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-commands.sh`:
- Around line 77-88: The function wait_nodepool_ready currently checks
nodepool.status.replicas; change it to check the NodePool's ready replicas
instead by using the jsonpath '{.status.readyReplicas}' in the oc get call
inside wait_nodepool_ready (refer to function name wait_nodepool_ready and
variables PERF_CLUSTER_NAME and PERF_NAMESPACE). Update the until condition and
the echoed "Current replicas" line to use .status.readyReplicas and compare it
to ${expected_replicas} so the loop only exits when the NodePool actually
reports the expected number of ready replicas.
In `@ci-operator/step-registry/hypershift/azure/performance-test/README.md`:
- Around line 95-109: The README's manual steps conflict with the script's
kubeconfig handling: the script expects
"${SHARED_DIR}/management_cluster_kubeconfig" but the docs only export
KUBECONFIG=/path/to/management-cluster-kubeconfig; update the docs to either (a)
copy the provided kubeconfig into SHARED_DIR as management_cluster_kubeconfig
before running the script, or (b) change the example to export
KUBECONFIG="${SHARED_DIR}/management_cluster_kubeconfig" after setting
SHARED_DIR; reference the script name
hypershift-azure-performance-test-commands.sh and the variables SHARED_DIR,
KUBECONFIG, and management_cluster_kubeconfig when making the change.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository YAML (base), Central YAML (inherited)
Review profile: CHILL
Plan: Enterprise
Run ID: 798cfb96-a10f-4cca-a060-c1552f3d9fdf
⛔ Files ignored due to path filters (1)
ci-operator/jobs/openshift/hypershift/openshift-hypershift-release-5.0-periodics.yamlis excluded by!ci-operator/jobs/**
📒 Files selected for processing (8)
ci-operator/config/openshift/hypershift/openshift-hypershift-release-5.0__periodics-azure-perf.yamlci-operator/step-registry/hypershift/azure/performance-test/OWNERSci-operator/step-registry/hypershift/azure/performance-test/README.mdci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-commands.shci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-ref.metadata.jsonci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-ref.yamlci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-workflow.metadata.jsonci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-workflow.yaml
✅ Files skipped from review due to trivial changes (3)
- ci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-ref.metadata.json
- ci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-workflow.metadata.json
- ci-operator/step-registry/hypershift/azure/performance-test/OWNERS
🚧 Files skipped from review as they are similar to previous changes (3)
- ci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-workflow.yaml
- ci-operator/config/openshift/hypershift/openshift-hypershift-release-5.0__periodics-azure-perf.yaml
- ci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-ref.yaml
| wait_nodepool_ready() { | ||
| local expected_replicas=$1 | ||
| echo "Waiting for NodePool to have ${expected_replicas} ready replicas..." | ||
|
|
||
| timeout 20m bash -c " | ||
| until [[ \$(oc get nodepool ${PERF_CLUSTER_NAME} -n ${PERF_NAMESPACE} -o jsonpath='{.status.replicas}') == '${expected_replicas}' ]]; do | ||
| echo 'Current replicas: '\$(oc get nodepool ${PERF_CLUSTER_NAME} -n ${PERF_NAMESPACE} -o jsonpath='{.status.replicas}') | ||
| sleep 10 | ||
| done | ||
| " | ||
|
|
||
| echo "NodePool has ${expected_replicas} ready replicas" |
There was a problem hiding this comment.
Wait for ready replicas, not just .status.replicas.
Line 82 currently gates on nodepool.status.replicas, but the benchmark text and log message say this step measures when the NodePool is ready. status.replicas can reach the target before all nodes are actually ready, so the scale-up/scale-down durations can be underreported.
🔧 Proposed fix
wait_nodepool_ready() {
local expected_replicas=$1
echo "Waiting for NodePool to have ${expected_replicas} ready replicas..."
timeout 20m bash -c "
- until [[ \$(oc get nodepool ${PERF_CLUSTER_NAME} -n ${PERF_NAMESPACE} -o jsonpath='{.status.replicas}') == '${expected_replicas}' ]]; do
- echo 'Current replicas: '\$(oc get nodepool ${PERF_CLUSTER_NAME} -n ${PERF_NAMESPACE} -o jsonpath='{.status.replicas}')
+ until [[ \$(oc get nodepool ${PERF_CLUSTER_NAME} -n ${PERF_NAMESPACE} -o jsonpath='{.status.readyReplicas}') == '${expected_replicas}' ]]; do
+ echo 'Current ready replicas: '\$(oc get nodepool ${PERF_CLUSTER_NAME} -n ${PERF_NAMESPACE} -o jsonpath='{.status.readyReplicas}')
sleep 10
done
"
echo "NodePool has ${expected_replicas} ready replicas"
}🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@ci-operator/step-registry/hypershift/azure/performance-test/hypershift-azure-performance-test-commands.sh`
around lines 77 - 88, The function wait_nodepool_ready currently checks
nodepool.status.replicas; change it to check the NodePool's ready replicas
instead by using the jsonpath '{.status.readyReplicas}' in the oc get call
inside wait_nodepool_ready (refer to function name wait_nodepool_ready and
variables PERF_CLUSTER_NAME and PERF_NAMESPACE). Update the until condition and
the echoed "Current replicas" line to use .status.readyReplicas and compare it
to ${expected_replicas} so the loop only exits when the NodePool actually
reports the expected number of ready replicas.
| ### Manual Execution | ||
| To run the performance test manually in a development environment: | ||
|
|
||
| 1. Set up a management cluster with HyperShift operator installed | ||
| 2. Ensure Azure credentials are configured | ||
| 3. Export required environment variables | ||
| 4. Run the test script: | ||
| ```bash | ||
| export KUBECONFIG=/path/to/management-cluster-kubeconfig | ||
| export SHARED_DIR=/tmp/test-artifacts | ||
| export ARTIFACT_DIR=/tmp/test-results | ||
| export PROW_JOB_ID=test-$(date +%s) | ||
|
|
||
| # Run the performance test | ||
| ./hypershift-azure-performance-test-commands.sh |
There was a problem hiding this comment.
Manual execution steps don’t match the script’s kubeconfig handling.
The example tells readers to export KUBECONFIG=/path/to/management-cluster-kubeconfig, but the script immediately overwrites KUBECONFIG with ${SHARED_DIR}/management_cluster_kubeconfig. Following these docs as written will fail unless the kubeconfig is also copied into SHARED_DIR under that exact filename.
📝 Proposed doc adjustment
1. Set up a management cluster with HyperShift operator installed
2. Ensure Azure credentials are configured
- 3. Export required environment variables
+ 3. Copy the management cluster kubeconfig into `${SHARED_DIR}/management_cluster_kubeconfig`
+ 4. Export required environment variables
4. Run the test script:
```bash
- export KUBECONFIG=/path/to/management-cluster-kubeconfig
export SHARED_DIR=/tmp/test-artifacts
export ARTIFACT_DIR=/tmp/test-results
export PROW_JOB_ID=test-$(date +%s)
+ cp /path/to/management-cluster-kubeconfig "${SHARED_DIR}/management_cluster_kubeconfig"
# Run the performance test
./hypershift-azure-performance-test-commands.sh
```📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ### Manual Execution | |
| To run the performance test manually in a development environment: | |
| 1. Set up a management cluster with HyperShift operator installed | |
| 2. Ensure Azure credentials are configured | |
| 3. Export required environment variables | |
| 4. Run the test script: | |
| ```bash | |
| export KUBECONFIG=/path/to/management-cluster-kubeconfig | |
| export SHARED_DIR=/tmp/test-artifacts | |
| export ARTIFACT_DIR=/tmp/test-results | |
| export PROW_JOB_ID=test-$(date +%s) | |
| # Run the performance test | |
| ./hypershift-azure-performance-test-commands.sh | |
| ### Manual Execution | |
| To run the performance test manually in a development environment: | |
| 1. Set up a management cluster with HyperShift operator installed | |
| 2. Ensure Azure credentials are configured | |
| 3. Copy the management cluster kubeconfig into `${SHARED_DIR}/management_cluster_kubeconfig` | |
| 4. Export required environment variables | |
| 5. Run the test script: |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@ci-operator/step-registry/hypershift/azure/performance-test/README.md` around
lines 95 - 109, The README's manual steps conflict with the script's kubeconfig
handling: the script expects "${SHARED_DIR}/management_cluster_kubeconfig" but
the docs only export KUBECONFIG=/path/to/management-cluster-kubeconfig; update
the docs to either (a) copy the provided kubeconfig into SHARED_DIR as
management_cluster_kubeconfig before running the script, or (b) change the
example to export KUBECONFIG="${SHARED_DIR}/management_cluster_kubeconfig" after
setting SHARED_DIR; reference the script name
hypershift-azure-performance-test-commands.sh and the variables SHARED_DIR,
KUBECONFIG, and management_cluster_kubeconfig when making the change.
|
@mehabhalodiya: The following test failed, say
Full PR test history. Your PR dashboard. DetailsInstructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
Implements https://redhat.atlassian.net/browse/CNTRLPLANE-3205
Changes:
Performance scenarios tested:
Metrics are collected in both human-readable (metrics.txt) and
machine-readable (metrics.json) formats for analysis and comparison
with other HyperShift platforms (AWS, KubeVirt, bare metal).
Test artifacts include:
Related tickets:
Summary by CodeRabbit
This PR adds a new, weekly OpenShift CI performance pipeline in the openshift/release repository to run lifecycle performance tests for self-managed Azure HyperShift Control Plane (HCP).
What this changes in practice
Key performance scenarios, targets and baselines
Impact summary