Perf Tests | Default Config File - #4606
Conversation
There was a problem hiding this comment.
Pull request overview
Moves performance-test configuration to a generated, locally editable file.
Changes:
- Adds a default runner configuration template.
- Generates and copies the live configuration during builds.
- Documents and ignores the local configuration file.
Reviewed changes
Copilot reviewed 3 out of 4 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
runnerconfig.default.jsonc |
Provides the default configuration template. |
Microsoft.Data.SqlClient.PerformanceTests.csproj |
Generates and copies the live configuration. |
BUILDGUIDE.md |
Documents the new configuration workflow. |
.gitignore |
Excludes the local runner configuration. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| <Target Name="CopyRunnerConfig" BeforeTargets="Compile"> | ||
| <Copy SourceFiles="runnerconfig.default.jsonc" DestinationFiles="runnerconfig.jsonc" Condition="!Exists('runnerconfig.jsonc')" /> |
There was a problem hiding this comment.
I would suggest updating the run-perf-tests scripts to build, then look at the config, then dotnet run --no-build the benchmarks.
For the Kusto script, should the benchmark results contain the config file used? Then this script would be guaranteed to see the same config that produced the results.
There was a problem hiding this comment.
Alright, I've got an update ready for the scripts that builds the project before looking modifying the config.
I personally would wonder if we should consider instead following the pattern that the manual tests config uses in the sqlclient-pr pipeline. That pipeline reads the default config, updates the necessary values then writes it out to the config.jsonc file. Easily done with powershell, but with bash it'd a pain - and we currently have scripts of both flavors running the perf tests. I'm not sure why, but I don't want this to grow anymore in scope. Let me know your thoughts.
Description
I got annoyed that my changes to the runnerconfig file kept getting blown away when I'd switch branches. We don't have this problem with the manual tests project despite it having a config file. So, I instructed the 🤖 to mirror the pattern in the perf tests project. This moves the runnerconfig.jsonc file to the runnerconfig.default.jsonc, and adds targets to the perf test project to use the default config as the live config (if it doesn't exist already) and copy the live config to the build output. It then adds the live config file as a gitignore, to deter accidentally committing one's DB credentials.
Issues
N/A
Testing
Perf test pipeline should be reran to ensure that the changes play nice.