Perfx 1.2.1
See the version list below for details.
dotnet tool install --global Perfx --version 1.2.1
dotnet new tool-manifest # if you are setting up this repo dotnet tool install --local Perfx --version 1.2.1
#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 theEndpoints
defined thePerfx.Settings.json
(sample here) underDocuments/Perfx
can be provided inPerfx_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 inPerfx_Inputs.xlsx
, the corresponding row-index of that entry is considered for the specific iteration. If the number of entries/rows for anEndpoint
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 specifiedOutputFormat
inPerfx.Settings.json
- 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-insightsduration
logs for the previous run (in the last1 hour
with10 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 ofPluginClassName
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
Product | Versions 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. |
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 |