Package: azure-developer-loadtesting
Azure Load Testing client library for PythonAzure Load Testing provides client library in python to the user by which they can interact natively with Azure Load Testing service. Azure Load Testing is a fully managed load-testing service that enables you to generate high-scale load. The service simulates traffic for your applications, regardless of where they're hosted. Developers, testers, and quality assurance (QA) engineers can use it to optimize application performance, scalability, or capacity.DocumentationVarious documentation is available to help you get startedAPI reference documentationProduct DocumentationGetting startedInstalling the packagepython-mpipinstallazure-developer-loadtestingPrequisitesPython 3.7 or later is required to use this package.You need anAzure subscriptionto use this package.An existing Azure Developer LoadTesting instance.Create with an Azure Active Directory CredentialTo use anAzure Active Directory (AAD) token credential,
provide an instance of the desired credential type obtained from theazure-identitylibrary.To authenticate with AAD, you must firstpipinstallazure-identityAfter setup, you can choose which type ofcredentialfrom azure.identity to use.As an example, sign in via the Azure CLIaz logincommand andDefaultAzureCredentialwill authenticate as that user.Use the returned token credential to authenticate the client.Create the clientAzure Developer LoadTesting SDK has 2 sub-clients of the main client (LoadTestingClient) to interact with the service, 'administration' and 'test_run'.fromazure.developer.loadtestingimportLoadTestAdministrationClient# for managing authentication and authorization# can be installed from pypi, follow: https://pypi.org/project/azure-identity/# using DefaultAzureCredentials, read more at: https://learn.microsoft.com/en-us/python/api/azure-identity/azure.identity.defaultazurecredential?view=azure-pythonfromazure.identityimportDefaultAzureCredentialclient=LoadTestAdministrationClient(endpoint='<endpoint>',credential=DefaultAzureCredential())<endpoint>refers to the data-plane endpoint/URL of the resource.Key conceptsThe Azure Load Test client library for python allows you to interact with each of these components through the use of clients. There are two top-level clients which are the main entry points for the libraryLoadTestAdministrationClient(azure.developer.loadtesting.LoadTestAdministrationClient)LoadTestRunClient(azure.developer.loadtesting.LoadTestRunClient)These two clients also have there asynchronous counterparts, which areLoadTestAdministrationClient(azure.developer.loadtesting.aio.LoadTestAdministrationClient)LoadTestRunClient(azure.developer.loadtesting.aio.LoadTestRunClient)Load Test Administration ClientTheLoadTestAdministrationClientis used to administer and configure the load tests, app components and metrics.TestA test specifies the test script, and configuration settings for running a load test. You can create one or more tests in an Azure Load Testing resource.App ComponentWhen you run a load test for an Azure-hosted application, you can monitor resource metrics for the different Azure application components (server-side metrics). While the load test runs, and after completion of the test, you can monitor and analyze the resource metrics in the Azure Load Testing dashboard.MetricsDuring a load test, Azure Load Testing collects metrics about the test execution. There are two types of metrics:Client-side metrics give you details reported by the test engine. These metrics include the number of virtual users, the request response time, the number of failed requests, or the number of requests per second.Server-side metrics are available for Azure-hosted applications and provide information about your Azure application components. Metrics can be for the number of database reads, the type of HTTP responses, or container resource consumption.Test Run ClientTheLoadTestRunClientis used to start and stop test runs corresponding to a load test. A test run represents one execution of a load test. It collects the logs associated with running the Apache JMeter script, the load test YAML configuration, the list of app components to monitor, and the results of the test.Data-Plane EndpointData-plane of Azure Load Testing resources is addressable using the following URL format:00000000-0000-0000-0000-000000000000.aaa.cnt-prod.loadtesting.azure.comThe first GUID00000000-0000-0000-0000-000000000000is the unique identifier used for accessing the Azure Load Testing resource. This is followed byaaawhich is the Azure region of the resource.The data-plane endpoint is obtained from Control Plane APIs.Example:1234abcd-12ab-12ab-12ab-123456abcdef.eus.cnt-prod.loadtesting.azure.comIn the above example,eusrepresents the Azure regionEast US.ExamplesCreating a load testfromazure.developer.loadtestingimportLoadTestAdministrationClientfromazure.identityimportDefaultAzureCredentialfromazure.core.exceptionsimportHttpResponseErrorimportosTEST_ID="some-test-id"DISPLAY_NAME="my-load-test"# set SUBSCRIPTION_ID as an environment variableSUBSCRIPTION_ID=os.environ["SUBSCRIPTION_ID"]client=LoadTestAdministrationClient(endpoint='<endpoint>',credential=DefaultAzureCredential())try:result=client.create_or_update_test(TEST_ID,{"description":"","displayName":"My New Load Test","loadTestConfig":{"engineInstances":1,"splitAllCSVs":False,},"passFailCriteria":{"passFailMetrics":{"condition1":{"clientmetric":"response_time_ms","aggregate":"avg","condition":">","value":300},"condition2":{"clientmetric":"error","aggregate":"percentage","condition":">","value":50},"condition3":{"clientmetric":"latency","aggregate":"avg","condition":">","value":200,"requestName":"GetCustomerDetails"}}},"secrets":{"secret1":{"value":"https://sdk-testing-keyvault.vault.azure.net/secrets/sdk-secret","type":"AKV_SECRET_URI"}},"environmentVariables":{"my-variable":"value"}})print(result)exceptHttpResponseErrorase:print('Service responded with error:{}'.format(e.response.json()))Uploading .jmx file to a Testfromazure.developer.loadtestingimportLoadTestAdministrationClientfromazure.identityimportDefaultAzureCredentialfromazure.core.exceptionsimportHttpResponseErrorTEST_ID="some-test-id"FILE_NAME="some-file-name.jmx"client=LoadTestAdministrationClient(endpoint='<endpoint>',credential=DefaultAzureCredential())try:# uploading .jmx file to a testresultPoller=client.begin_upload_test_file(TEST_ID,FILE_NAME,open("sample.jmx","rb"))# getting result of LRO poller with timeout of 600 secsvalidationResponse=resultPoller.result(600)print(validationResponse)exceptHttpResponseErrorase:print("Failed with error:{}".format(e.response.json()))Running a Testfromazure.developer.loadtestingimportLoadTestRunClientfromazure.identityimportDefaultAzureCredentialfromazure.core.exceptionsimportHttpResponseErrorTEST_ID="some-test-id"TEST_RUN_ID="some-testrun-id"DISPLAY_NAME="my-load-test-run"client=LoadTestRunClient(endpoint='<endpoint>',credential=DefaultAzureCredential())try:testRunPoller=client.begin_test_run(TEST_RUN_ID,{"testId":TEST_ID,"displayName":"My New Load Test Run",})#waiting for test run status to be completed with timeout = 3600 secondsresult=testRunPoller.result(3600)print(result)exceptHttpResponseErrorase:print("Failed with error:{}".format(e.response.json()))Next stepsMore samples can be foundhere.ContributingThis project welcomes contributions and suggestions. Most contributions require
you to agree to a Contributor License Agreement (CLA) declaring that you have
the right to, and actually do, grant us the rights to use your contribution.
For details, visithttps://cla.microsoft.com.When you submit a pull request, a CLA-bot will automatically determine whether
you need to provide a CLA and decorate the PR appropriately (e.g., label,
comment). Simply follow the instructions provided by the bot. You will only
need to do this once across all repos using our CLA.This project has adopted theMicrosoft Open Source Code of Conduct. For more information,
see the Code of Conduct FAQ or contactopencode@microsoft.comwith any
additional questions or comments.TroubleshootingMore about it is coming soon...