Skip to content

glasswing mythos fixes - #829

Merged
Erica Vellanoweth (ericavella) merged 12 commits into
mainfrom
users/evellanoweth/glasswing-mythox-fixes
Oct 26, 2026
Merged

Erica Vellanoweth (ericavella) merged 12 commits into
mainfrom
users/evellanoweth/glasswing-mythox-fixes

Conversation

@ericavella

Copy link
Copy Markdown
Contributor

database workloads only

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

Co-authored-by: ericavella <37354999+ericavella@users.noreply.github.com>
Erica Vellanoweth and others added 3 commits October 23, 2026 08:55
Move credential methods after properties to satisfy StyleCop SA1201.
Update Sysbench command expectations and supply missing credential/package mocks.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b9c8c576-c0f3-4629-b9cb-4476aed3d4fd
Build MySQL password arguments from a MySQL-only helper so PostgreSQL
credentials cannot flow into command-line logging. Preserve existing
MySQL behavior and cover both present and absent PGPASSWORD values.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b9c8c576-c0f3-4629-b9cb-4476aed3d4fd
Retain the existing fixed MySQL hash as a property, without routing command arguments through a password-returning method. Verify that command logging redacts the MySQL value and never includes PostgreSQL environment credentials.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b9c8c576-c0f3-4629-b9cb-4476aed3d4fd
Comment thread src/VirtualClient/VirtualClient.Actions/HammerDB/HammerDBExecutor.cs Outdated
Comment thread src/VirtualClient/VirtualClient.Actions/Sysbench/SysbenchExecutor.cs Outdated
Comment thread src/VirtualClient/VirtualClient.Core/VirtualClientComponentExtensions.cs Outdated
Erica Vellanoweth and others added 2 commits October 23, 2026 11:04
Real-VM validation found that Sysbench rev6 rejects the obsolete --password option for MySQL. Keep credentials off wrapper command lines for both database systems and cover preparation and execution commands.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b9c8c576-c0f3-4629-b9cb-4476aed3d4fd
Protect configuration, population, and workload process logs and failed-process exceptions without changing successful metric input. Cover telemetry, file logs, failures, and overlapping metric values in regression tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b9c8c576-c0f3-4629-b9cb-4476aed3d4fd
@ericavella

Copy link
Copy Markdown
Contributor Author

Real-VM validation

All six changed profiles have passing functional VM evidence (10 supported profile/platform combinations).

VM runs discovered and led to two additional fixes:

  • f0672036c0: stop passing unsupported MySQL --password arguments to the published Sysbench wrappers.
  • 84f433907e: redact the supplied PostgreSQL credential echoed by HammerDB before process telemetry, file logging, or failed-process exceptions, preserving successful metric input.
Profile Architecture Result Tested commit ExperimentId
POSTGRESQL-SYSBENCH-OLTP linux-x64 PASS f0672036c0 9fe2a2dc-7ff6-472b-afbe-4b78fc184f65
POSTGRESQL-SYSBENCH-OLTP linux-arm64 PASS f0672036c0 7b764ffa-820d-4be4-a5df-6d55c9660b04
POSTGRESQL-SYSBENCH-TPCC linux-x64 PASS f0672036c0 22356bb3-f7df-4463-9528-0911ffba14fe
POSTGRESQL-SYSBENCH-TPCC linux-arm64 PASS f0672036c0 b9a021c7-78a4-4083-9cb6-2ef478cceeb9
MYSQL-SYSBENCH-OLTP linux-x64 PASS f0672036c0 7e319df1-6ccc-44ac-975a-83cb92831f41
MYSQL-SYSBENCH-OLTP linux-arm64 PASS f0672036c0 d682633c-c8b5-4115-a8aa-5c8174306eae
MYSQL-SYSBENCH-TPCC linux-x64 PASS f0672036c0 2e9628a6-60fb-4b5b-9453-c02b9839aedc
MYSQL-SYSBENCH-TPCC linux-arm64 PASS f0672036c0 ebefdfcb-be76-48c1-95a8-24a3a16ef31a
POSTGRESQL-HAMMERDB-TPCC linux-x64 PASS 84f433907e 20c08bfa-9bec-4578-85e6-6c814d3a9b29
POSTGRESQL-HAMMERDB-TPCH linux-x64 PASS 84f433907e 1b4098cc-360b-4e05-acf9-edfd084ea9ae

Each passing experiment has server/client exit code 0, parsed local traces with no error-level events, no detected test-credential occurrences in scanned logs, and finite positive required workload metrics for every expected scenario. Sysbench OLTP includes all nine scenarios. HammerDB TPCC includes transactions/sec and operations/sec; TPCH includes completed query-set duration/geometric-mean and query-duration metrics.

Regression coverage: 14 HammerDB unit tests and 3 functional profile tests passed (4 existing functional cases remain ignored). Final-head Linux/Windows builds, website, CLA, and CodeQL checks all passed.

Scope and limitations

  • Ubuntu 24.04 client/server pairs: Standard_D4s_v5 x64 and Standard_D4ps_v5 ARM64, one 1-TiB Premium SSD per server. One-minute duration overrides; HammerDB uses one worker, one warehouse for TPCC, and scale factor 1 for TPCH. These are functional smoke tests, not performance qualification.
  • The initial TPCC smoke attempt used two build users for one warehouse, which HammerDB rejects. Corrected the harness to one worker/warehouse; this was a test-configuration issue.
  • Eight Sysbench cases were tested at f0672036c0; the two HammerDB profiles were retested on a fresh x64 pair at 84f433907e. Sysbench was not rerun after the HammerDB-only change. The six profiles, Sysbench implementation, and database dependencies are unchanged between these commits.
  • Deployed complete self-contained dotnet publish archives: standard Linux NuGet packages omit the required TraceEvent assembly. The stock NuGet deployment path was not validated.
  • PostgreSQL credentials were explicitly provisioned via PGPASSWORD; the dedicated test credential was rotated after the failed HammerDB attempts. Evidence is local file/CSV telemetry; EventHub ingestion was not configured, so absent Kusto rows are not used as a pass.
  • All 10 provisioned validation VMs are verified deallocated. No resources were deleted; retained disks and storage remain billable.

Move shared credential resolution into PostgreSQLCredentials and update the
Sysbench, HammerDB, and PostgreSQL configuration call sites. Preserve file
precedence, platform-specific package lookup, sanitized failures, and child
process environment handling. Move credential regressions to a dedicated
fixture, restoring both component extension files exactly to the PR base.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b9c8c576-c0f3-4629-b9cb-4476aed3d4fd
@ericavella

Copy link
Copy Markdown
Contributor Author

Credential handling without component-extension changes

Updated in 2f39e30d83a1c2fbbfa3e95d120cb6a079646f3c.

VirtualClientComponentExtensions.cs and VirtualClientComponentExtensionsTests.cs now exactly match the PR base and are no longer part of this PR's diff.

Moved the unchanged PostgreSQL credential-resolution logic into the database-specific PostgreSQLCredentials helper and updated all seven Sysbench, HammerDB, and PostgreSQL configuration call sites. The shared Core location lets Actions and Dependencies reuse the implementation without adding cross-project dependencies or changing generic component extensions.

Preserved explicit-file / PGPASSWORD / architecture-specific package precedence, sanitized credential-file failures, child-process-only environment injection, MySQL wrapper compatibility, and HammerDB output redaction. The 12 credential-resolution regression cases now have their own fixture.

The solution builds, and all 164 selected credential, component-extension, database action, parser, dependency, and functional regressions pass; 10 existing functional cases remain ignored.

All final-head checks passed: Linux and Windows build/tests, CodeQL, website build, and CLA.

The earlier VM evidence remains tied to the tested commits listed above. No VMs were rerun for this structural refactor.

Implement independent credential readers in SysbenchExecutor,
HammerDBExecutor, and PostgreSQLServerConfiguration instead of using a
shared Core helper or coupling Actions to the PostgreSQL dependency.
Preserve file/environment precedence and sanitized failures, with matching
regression coverage in each existing component test fixture.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b9c8c576-c0f3-4629-b9cb-4476aed3d4fd
@ericavella

Copy link
Copy Markdown
Contributor Author

Independent database credential readers

Updated in e9d7d68bc102759a7dfce3e8b6386f6baafd585c, superseding the shared-helper approach described in the previous comment.

As requested, Sysbench and HammerDB now each contain their own PostgreSQL credential-reading implementation. PostgreSQL configuration has its own copy in PostgreSQLServerConfiguration.cs. Neither workload calls the PostgreSQL dependency, and no Actions-to-Dependencies project reference was added.

Removed the standalone PostgreSQLCredentials Core helper and its test file. The entire Core and Core.UnitTests directories, including VirtualClientComponentExtensions and its tests, now have no changes relative to the PR base.

Preserved explicit-file / PGPASSWORD / architecture-specific package precedence, sanitized failures, child-process-only credential handling, MySQL wrapper compatibility, and HammerDB output redaction. Each of the three existing component test fixtures covers the same 12 credential-reading regression cases.

The solution builds and all 188 selected regressions pass; 10 existing functional cases remain ignored.

All final-head checks passed: Linux and Windows build/tests, CodeQL, website build, and CLA.

The earlier VM evidence remains tied to its recorded commits. No VMs were rerun for this restructuring.

Remove unused synchronous password getters, the empty Sysbench argument placeholder, and unused HammerDB parameters. Keep credential readers component-local. Replace stale helper-only tests and ignored legacy command expectations with active production-path coverage, and align the PostgreSQL documentation with actual behavior.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b9c8c576-c0f3-4629-b9cb-4476aed3d4fd
@ericavella

Copy link
Copy Markdown
Contributor Author

Cleanup published in a8ae0f4.

  • Removed the three unused synchronous password getters, the unused Sysbench password hash and always-empty argument placeholder, and ignored HammerDB population parameters.
  • Kept independent async credential readers in Sysbench, HammerDB, and PostgreSQL configuration. Core, Core unit tests, and the Actions project references still match the PR base; VirtualClientComponentExtensions remains unchanged.
  • Removed stale helper-only assertions and already-ignored legacy profile tests. Strengthened active tests around real command creation, explicit-file precedence over inherited PGPASSWORD, MySQL bypassing PostgreSQL file reads, supported PostgreSQL configuration actions, and both HammerDB workloads. Existing active Sysbench TPCC client profile executions remain.
  • Corrected XML comments, password-file error guidance, profile examples, storage responsibilities, platform support, and credential documentation to describe actual behavior.

Validation: solution compilation and 187 selected tests passed, with zero failures and zero skipped tests. Both changed profiles and the JSON documentation examples parse successfully. No VMs were provisioned or rerun for this cleanup; the earlier VM evidence remains scoped to its documented commits.

@ericavella
Erica Vellanoweth (ericavella) merged commit 955e4c9 into main Oct 26, 2026
5 checks passed
@ericavella
Erica Vellanoweth (ericavella) deleted the users/evellanoweth/glasswing-mythox-fixes branch October 26, 2026 23:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants