retina icon indicating copy to clipboard operation
retina copied to clipboard

chore(tests): add network perf tests for Retina

Open ritwikranjan opened this issue 1 year ago • 3 comments

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.yaml to 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)
  • Performance Test Scenarios:

    • Implemented a new performance test scenario RunPerfTest in jobs.go to gather network performance measures, install the retina Helm chart, and compare results. (test/e2e/jobs/jobs.go)
    • Added a new test TestE2EPerfRetina to create a Kubernetes cluster, run network performance tests, and publish regression information. (test/e2e/retina_perf_test.go)

Dependency Updates:

  • Updated Dependencies in go.mod:
    • Updated various dependencies to their latest versions, including go-restful, spdystream, diskv, klog, and kube-openapi. (go.mod) [1] [2] [3] [4] [5]

Configuration Changes:

  • DevContainer Configuration:
    • Added azure-cli feature to the devcontainer configuration for enhanced Azure CLI support. (.devcontainer/devcontainer.json)

Test Enhancements:

  • E2E Test Adjustments:
    • Adjusted the E2E test command to include a wildcard for e2e files in the e2e.yaml workflow. (.github/workflows/e2e.yaml)
    • Added a new performance test target run-perf-test to the Makefile. (Makefile)

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]

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 avatar Sep 23 '24 13:09 ritwikranjan

@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

SRodi avatar Oct 02 '24 14:10 SRodi

Will help with identifying issue #655

ritwikranjan avatar Oct 03 '24 16:10 ritwikranjan

A sample metric on app insights dashboard! image

ritwikranjan avatar Oct 07 '24 13:10 ritwikranjan