chore(tests): add network perf tests for Retina
Description
This pull request introduces several changes to enhance network performance testing and update dependencies. The key changes include adding a new workflow for network performance measurement, updating dependencies in go.mod, and implementing new performance test scenarios and utilities.
New Features:
-
Network Performance Measurement Workflow:
- Added a new GitHub Actions workflow
e2e_perf.yamlto measure network performance on a scheduled basis every 2 hours. This workflow includes steps for Azure CLI login and running performance tests. (.github/workflows/e2e_perf.yaml)
- Added a new GitHub Actions workflow
-
Performance Test Scenarios:
- Implemented a new performance test scenario
RunPerfTestinjobs.goto gather network performance measures, install theretinaHelm chart, and compare results. (test/e2e/jobs/jobs.go) - Added a new test
TestE2EPerfRetinato create a Kubernetes cluster, run network performance tests, and publish regression information. (test/e2e/retina_perf_test.go)
- Implemented a new performance test scenario
Dependency Updates:
- Updated Dependencies in
go.mod:- Updated various dependencies to their latest versions, including
go-restful,spdystream,diskv,klog, andkube-openapi. (go.mod) [1] [2] [3] [4] [5]
- Updated various dependencies to their latest versions, including
Configuration Changes:
- DevContainer Configuration:
- Added
azure-clifeature to the devcontainer configuration for enhanced Azure CLI support. (.devcontainer/devcontainer.json)
- Added
Test Enhancements:
- E2E Test Adjustments:
- Adjusted the E2E test command to include a wildcard for
e2efiles in thee2e.yamlworkflow. (.github/workflows/e2e.yaml) - Added a new performance test target
run-perf-testto theMakefile. (Makefile)
- Adjusted the E2E test command to include a wildcard for
Utility Functions:
- Network Performance Utilities:
- Added utility functions for measuring network performance and calculating regression results. (
test/e2e/scenarios/perf/get-network-performance-measures.go,test/e2e/scenarios/perf/get-perf-regression-results.go) [1] [2]
- Added utility functions for measuring network performance and calculating regression results. (
These changes collectively enhance the project's ability to measure and analyze network performance, while also keeping dependencies up to date.
Related Issue
If this pull request is related to any issue, please mention it here. Additionally, make sure that the issue is assigned to you before submitting this pull request.
Checklist
- [X] I have read the contributing documentation.
- [X] I signed and signed-off the commits (
git commit -S -s ...). See this documentation on signing commits. - [X] I have correctly attributed the author(s) of the code.
- [X] I have tested the changes locally.
- [X] I have followed the project's style guidelines.
- [X] I have updated the documentation, if necessary.
- [X] I have added tests, if applicable.
Screenshots (if applicable) or Testing Completed
Please add any relevant screenshots or GIFs to showcase the changes made.
Additional Notes
Add any additional notes or context about the pull request here.
Please refer to the CONTRIBUTING.md file for more information on how to contribute to this project.
@ritwikranjan I just got another fail on insufficient quota, this time for centralus. I would suggest to make sure the test can run in any regions part of locations slice. ([]string{"eastus2", "centralus", "southcentralus", "uksouth", "centralindia", "westus2"})
runner.go:27:
Error Trace: /home/srodi/src/retina/test/e2e/framework/types/runner.go:27
/home/srodi/src/retina/test/e2e/retina_perf_test.go:52
Error: Received unexpected error:
did not expect error from step CreateNPMCluster but got error: failed to finish the create cluster request: PUT https://management.azure.com/subscriptions/....-....-....-....-.........../resourceGroups/srodi-e2e-netobs-1727879517/providers/Microsoft.ContainerService/managedClusters/srodi-e2e-netobs-1727879517
--------------------------------------------------------------------------------
RESPONSE 400: 400 Bad Request
ERROR CODE: ErrCode_InsufficientVCPUQuota
--------------------------------------------------------------------------------
{
"code": "ErrCode_InsufficientVCPUQuota",
"details": null,
"message": "Insufficient vcpu quota requested 32, remaining 0 for family standardDSv2Family for region centralus.",
"subcode": ""
}
--------------------------------------------------------------------------------
Test: TestE2EPerfRetina
--- FAIL: TestE2EPerfRetina (26.22s)
FAIL
FAIL command-line-arguments 26.239s
FAIL
Will help with identifying issue #655
A sample metric on app insights dashboard!