sqlsimstudio-load-test
Skill42 starsChanged 32 days agoMITView on GitHub
Source-repository-only guided sqlsim Studio performance/load exercise. Use when a contributor asks to run the AdventureWorksLT light, medium, or heavy Studio test tiers, exercise live monitoring or cancellation, compare tiers, or validate the repository workload assets. DO NOT USE FOR: installing, launching, configuring, or using a released Studio package; released-tool workloads; source builds; CI acceptance; or manual acceptance-test recording (use sqlsimstudio-manual-test).
In this repository15 other files it gives its agents.
- sqlpysim/AGENTS.mdAGENTS.md
- sqlsim/AGENTS.mdAGENTS.md
- .github/copilot-instructions.mdCopilot instructions
- sqlpysim/.github/copilot-instructions.mdCopilot instructions
- sqlsim/.github/copilot-instructions.mdCopilot instructions
- docs/llms.txtllms.txt
- sqlpysimSkill
- sqlsimSkill
- sqlsimstudio-manual-testSkill
- sqlsimstudioSkill
- sqlsimtools-buildSkill
- sqlsimtools-project-statsSkill
- sqlsimtools-releaseSkill
- sqlpysimSkill
- sqlsimSkill
The file
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 8 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈8
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 61
Check the active terminal's last command and exit code before building, testing, or launching.
- Very specific: line 63
Never print, log, or screenshot bootstrap URLs, tokens, or passwords.
- Distinctive: line 76
Never mark a run Pass for the user.
- Very specific: line 78
Treat a cancelled run as Stopped, not a failure.
- Distinctive: line 80
Do not quote absolute durations as pass criteria.
- Distinctive: line 84
Run once per session, before the first test.
- Distinctive: line 106
Prefer a token obtained outside chat over interactive sign-in, which prompts on every run.
- Distinctive: line 111
Use this exact compact shape:
- Distinctive: line 172
Before trusting any timing, confirm the server is healthy.
- Distinctive: line 178
Do not let the user record these as failures.
- Very specific: line 195
Keep a running table in chat: tier, mode, outcome, and observation.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Guided sqlsim Studio Load Test
Walk the user through running tiered workloads in the sqlsim Studio GUI against AdventureWorksLT. Give one run at a time with exact values to enter, wait for the observation, record it, then continue.
This is a performance and behavior exercise, not the release acceptance
checklist. For the packaged-build sign-off in sqlsimstudio/MANUAL-TEST.md, use
the sqlsimstudio-manual-test skill instead.
Authoritative Sources
Read before starting:
sqlsimstudio/examples/adventureworkslt/README.md: tiers, files, load values, and measured durations.- The asset files themselves under
sqlsimstudio/examples/adventureworkslt/.
The README tables are authoritative for -n and -r. If an asset file's header
disagrees with the README, stop and report the drift rather than guessing.
Invocation Modes
light,medium,heavy: run all three modes at that tier.query <tier>,script <tier>,workload <tier>: run one mode.all: light, then medium, then heavy, in that order.status: report what has been run and what is pending.
With no argument, ask which tier to start with and recommend light.
The Matrix
Confirm these against the README each session rather than trusting this copy.
| Mode | Light | Medium | Heavy |
| Query | sql/light-query.sql, -n 4, -r 50 | sql/medium-query.sql, -n 4, -r 3 | sql/heavy-query.sql, -n 8, -r 2 |
| SQL file | sql/light-script.sql, -n 4, -r 25 | sql/medium-script.sql, -n 4, -r 5 | sql/heavy-script.sql, -n 8, -r 2 |
| Workload | workload/light-workload.json | workload/medium-workload.json | workload/heavy-workload.json |
Workload mode takes connections and iterations from the JSON. The -n and -r
fields do not apply; say so rather than leaving the user guessing.
Expected batch counts, useful for confirming a run did what was asked: SQL file mode reports 4 batches for light and 3 for medium and heavy. The workload files are 450, 1,150, and 16,650 batches across 7, 14, and 46 connections.
Non-Negotiable Rules
- Work from the
sqlsimstudiofolder. Usebuild.ps1to build. Never invokedotnet publishor other ad hoc build commands. - Check the active terminal's last command and exit code before building, testing, or launching. Do not rerun a successful current-artifact step.
- Never print, log, or screenshot bootstrap URLs, tokens, or passwords. Let
Studio open the browser, or launch with
--no-open --bootstrap-file <path>and tell the user to use the window that opens. - The bootstrap token is single-use and its file is deleted after the first visit. A second visit, a stale tab, or a tab on a different port returns 404 with a blank page. That is the auth gate, not a broken build. Relaunch for a fresh URL rather than debugging the 404.
- Studio's client assets are embedded resources. If
client/*changed,build.ps1must run before the change is visible. smoke-test.ps1 -SkipBuildruns a stale non-RID DLL fromserver/bin/Release/net10.0/. Always pass-StudioExecutable .\build\win-x64\sqlsimstudio.exeor omit-SkipBuild.- Present one run at a time. Do not paste the whole matrix into chat.
- Never mark a run Pass for the user. Report what you observe from the API if asked, but the user decides the outcome.
- Treat a cancelled run as
Stopped, not a failure. Cancelling is supported and Studio reports it as such. - Do not quote absolute durations as pass criteria. See Measurement Honesty.
Preflight
Run once per session, before the first test.
Confirm AdventureWorksLT is reachable and populated:
.\build\win-x64\sqlsim\sqlsim.exe ` -S <server> -d AdventureWorksLT -E -C ` -Q "SELECT COUNT(*) AS Customers FROM SalesLT.Customer"847 is the expected count. A different number means a partial or non-standard restore; report it rather than proceeding silently. Do not add
-q: it suppresses result rows, which is the value this check reads.- Confirm a Studio package exists at
build\win-x64\sqlsimstudio.exe. If not, run.\build.ps1 -Runtime win-x64. That build requires a matching sqlsim binary at..\sqlsim\build\x64\Release\sqlsim.exeand fails without it, so build sqlsim first with..\sqlsim\build.ps1 -Architecture x64. - Launch Studio and confirm the listener before handing over to the user.
- For Azure targets, confirm the auth mode with the user before the first run. Prefer a token obtained outside chat over interactive sign-in, which prompts on every run.
Per-Run Chat Protocol
Use this exact compact shape:
**MEDIUM - Query mode**
Configure tab:
1. Server `localhost`, Database `AdventureWorksLT`, Windows integrated.
2. Workload type **Query**. Paste the contents of
`sqlsimstudio/examples/adventureworkslt/sql/medium-query.sql`.
3. Connections (-n) **4**, Iterations per connection (-r) **3**.
4. Client telemetry **Live progress**.
5. Studio server statistics **Runtime messages**.
6. Run workload, then switch to the Monitor tab.
Watch for: several progress ticks per execution, a non-zero execution rate once
the first execution completes, and a measured average duration.Then ask one outcome question with the questions tool offering Pass, Fail, Stopped, and Skip, allowing a free-form observation. After the answer, record it and present the next run.
What Each Tier Is For
State the purpose when presenting a tier, so the user knows what to watch.
- Light: reachability, the Results page, and fast iteration. Deliberately too fast for live monitoring to show anything, because sqlsim counts an execution only on completion, so a sub-second query reports zero throughput for its whole duration. If the user wants to watch the Monitor work, move to medium.
- Medium: live monitoring. Executions span several one-second progress ticks, so the rate, the progress bars, and the measured average duration all have something to show.
- Heavy: cancellation, query timeout, sustained load, and connection pressure.
Before Any Heavy Run
Raise the Query timeout above its 30 second default first. A heavy execution can exceed 30 seconds under concurrency and the run will fail with a timeout, which is a valid test but not this one.
On Azure SQL Database, halve every connection count. On a small service tier the heavy tier measures throttling rather than client behavior. Say this before the run, not after it fails.
Measurement Honesty
- Durations in the assets were measured on one hybrid-core laptop against a warm cache. They are relative, not thresholds. Never fail a run for missing a quoted number.
- On hybrid-core hosts, identical runs land in two clusters more than 2x apart depending on core scheduling. Take a median of several runs before treating a timing change as real.
- A cold cache roughly doubles the first execution. Discard the first run of a tier when comparing.
- Studio's Results page reports query time as the sum across connections, so a ten-connection run shows roughly ten times the wall clock. Use the measured average duration instead.
- Before trusting any timing, confirm the server is healthy. Buffer pool pressure or error 802 in the SQL error log invalidates every measurement, and the symptom is slow runs rather than an obvious failure.
Known Behavior, Not Defects
Do not let the user record these as failures.
- A live-telemetry run has no final results JSON. Studio sources the Results
page from periodic query-statistics snapshots instead, and shows
--where a value genuinely was not measured. - Stopping a run reports
Stopped, notFailed. - With Studio server statistics set to None, a failed live run has no SQL error text available anywhere, only an exit code. Re-run with Runtime messages to get the message.
- Workload groups that reference a script by file path are skipped on import with a toast, because Studio cannot read a path from the browser. All three bundled workload files use inline queries and are unaffected.
duration_secondsin a workload file is ignored by Studio and reported as ignored. sqlsim honors it; Studio does not.
Reporting
Keep a running table in chat: tier, mode, outcome, and observation. On request,
write it to sqlsimstudio/build/load-test-results/YYYYMMDD-HHmmss.md, which is
an ignored build path. Do not edit the asset files or the README to record a
run.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

