Perfx 1.2.1

There is a newer version of this package available.
See the version list below for details.
dotnet tool install --global Perfx --version 1.2.1                
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest # if you are setting up this repo
dotnet tool install --local Perfx --version 1.2.1                
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=Perfx&version=1.2.1                
nuke :add-package Perfx --version 1.2.1                

perfx

An extensible Azure API Performance benchmarking tool (for Developers) based on App-Insights


USAGE

perfx [2] (to override the number of iterations in the settings file)

Optional: Additional details (e.g. http-method (defaults to GET) / headers / body / query-params) for the Endpoints defined the Perfx.Settings.json (sample here) under Documents/Perfx can be provided in Perfx_Inputs.xlsx (sample here) under the same folder (or using the Plugin model outlined below)

Note: By default, if an entry/row for an Endpoint exists in Perfx_Inputs.xlsx, the corresponding row-index of that entry is considered for the specific iteration. If the number of entries/rows for an Endpoint do not match up with the number of iterations, the first entry is taken into consideration for the subsequent iterations

Results are saved to your Documents/Perfx with the name: Perfx_Results.xlsx/Perfx_Results.csv/Perfx_Results.json (depending on the specified OutputFormat in Perfx.Settings.json

Screenshot1 Screenshot2

  • Enter r:10 to run the benchmarks (10 times)
  • Enter s to print the stats/details for the previous run
  • Enter l:1h:10 to fetch app-insights duration logs for the previous run (in the last 1 hour with 10 retries)
  • Enter c to clear the console
  • Enter q to quit
  • Enter ? to print this help

PRE-REQ: Populate the following JSON and save it to your Documents/Perfx folder with the name: Perfx.Settings.json

{
    "UserId": "",
    "Password": "",
    "Authority": "https://login.microsoftonline.com/YOUR_COMPANY.onmicrosoft.com",
    "ClientId": "",
    "ApiScopes": [
        "api://YOUR-API-SCOPES"
    ],
    "AppInsightsAppId": "",
    "AppInsightsApiKey": ""
    "Endpoints": [
        "https://YOUR-{env}-API.COM/route1",
        "https://YOUR-{env}-API.COM/route2"
    ],
    "FormatArgs": {
        "env": "dev"
    }
    "Iterations": 5,
    "OutputFormat": "Excel", // "Csv", "Json"
    "ReadResponseHeadersOnly": false,
    "InputsFile": "Perfx_Inputs.xlsx", // Headers: One on each line (Excel: ALT + ENTER)
    "PluginClassName": null
}

OPTIONAL: Populate the following JSON and save it to your Documents/Perfx folder with the name: Perfx.Settings.json

{
    "Logging": {
        "LogLevel": {
            "Default": "Warning"
        },
        "Console": {
            "IncludeScopes": true,
            "LogLevel": {
                "Default": "Warning" //,"System.Net.Http.HttpClient": "Information"
            }
        },
        "Debug": {
            "LogLevel": {
                "Default": "Information"
            }
        }
    }
}

Also, see "allowPublicClient": true


EXTEND (PLUGINS)
  • Create a .NET Standard project and add reference to Prefx.Core project
  • Add a class that implements IPlugin interface
  • Update the csproj file as follows:
    • <ProjectReference Include="Perfx.Core.csproj">
          <Private>false</Private>
          <ExcludeAssets>runtime</ExcludeAssets>
      </ProjectReference>
      
    • <TargetFramework>netcoreapp3.1</TargetFramework>
    • <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
    • Build the project and copy the build-output to Documents/Perfx/Plugins folder
    • Optionally, if you have multiple IPlugin implementations, you can also update the value of PluginClassName with the specific implementation-class-full-name (e.g. MyPluginAssembly.MyPlugin1)

Sample: Perfx.SamplePlugin


# Install from nuget.org
dotnet tool install -g perfx --no-cache

# Upgrade to latest version from nuget.org
dotnet tool update -g perfx --no-cache

# Install a specific version from nuget.org
dotnet tool install -g perfx --version 1.0.x

# Uninstall
dotnet tool uninstall -g perfx

NOTE: If the Tool is not accessible post installation, add %USERPROFILE%\.dotnet\tools to the PATH env-var.

CONTRIBUTION

# Install from local project path
dotnet tool install -g --add-source ./bin perfx

# Publish package to nuget.org
nuget push ./bin/Perfx.1.0.0.nupkg -ApiKey <key> -Source https://api.nuget.org/v3/index.json

NOTICES

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp3.1 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last updated
1.3.4 610 10/9/2020
1.3.3 511 4/23/2020
1.3.2 463 4/23/2020
1.3.1 507 4/22/2020
1.3.0 468 4/22/2020
1.2.9 532 4/17/2020
1.2.8 508 4/16/2020
1.2.4 513 4/2/2020
1.2.3 551 4/2/2020
1.2.2 496 4/1/2020
1.2.1 513 3/20/2020
1.1.8 479 3/19/2020
1.1.7 485 3/19/2020
1.1.6 500 3/18/2020
1.1.4 513 3/17/2020
1.1.3 496 3/17/2020
1.1.2 476 3/16/2020
1.1.1 525 3/16/2020
1.1.0 529 3/15/2020
1.0.9 541 3/14/2020
1.0.8 489 3/13/2020
1.0.7 490 3/13/2020
1.0.5 541 3/13/2020
1.0.4 542 3/12/2020
1.0.3 491 3/11/2020
1.0.1 512 3/10/2020