Enable Helix queue stats logging for Arcade unit tests - #17018
Conversation
There was a problem hiding this comment.
Pull request overview
Enables Helix queue health summary logging for Arcade’s own Helix-submitted unit test jobs by opting in via MSBuild property, so Arcade CI “dogfoods” the feature and emits queue condition signal at job submission time.
Changes:
- Set
EnableShowHelixQueueStatstotrueintests/UnitTests.projso Helix submissions from Arcade unit tests log the queue health summary.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Default CI verbosity is Minimal, which filters out MessageImportance.Normal messages. When EnableShowHelixQueueStats is opted in, route SendAsync log output (including the queue-health summary) at High importance so it survives the default verbosity.
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
Add WithAzureDevOpsOrganization() and WithAzureDevOpsProject() fluent builder methods to JobDefinition to allow callers (especially public pipelines) to specify which Azure DevOps organization/project is requesting queue stats. These parameters are passed through JobCreationRequest to Helix API. Fixes: Arcade PR for enabling queue stats support with org/project scoping
Queue names are globally unique across all organizations and projects, so the Helix API does not need org/project context to return stats. These parameters only serve as optional audit context on the public Helix Observer endpoint for external callers to declare their scope. Reverts the org/project fluent builder methods since: 1. They are unused in the codebase 2. Queue stats are queried and returned by queue name globally 3. Org/project scoping is only relevant on the public HTTP endpoint
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
…sta/enable-helix-queue-stats
|
The service issues seem to be resolved now and this is ready for review. queue wait time estimates / stats are being shown in the Test SubmitHelixTests steps. |
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…Request Queue stats are queried globally by queue name, so these request fields are not needed. Removing the leftover model properties that were added intentionally but ultimately unused. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Instead of elevating every SendAsync progress message to High importance (which floods the build at 'Minimal' verbosity) or fragile string matching, add a SendAsync overload with a separate queueStatsLog callback. The SDK routes routine progress at Normal importance and the opt-in queue health summary at High importance, so only the queue-stats lines survive the default 'Minimal' verbosity. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add default interface implementation for the new SendAsync(log, queueStatsLog) overload so external IJobDefinition implementers keep compiling (delegates to the single-callback overload and ignores queueStatsLog; documented on the interface). - Extract SendHelixJob.CreateSubmissionLoggers, a pure factory that builds the routine and queue-stats log callbacks, so the enabled/disabled -> High/Normal routing is behaviorally unit-testable; expose Sdk internals to Sdk.Tests. - Add tests: DIM delegation via a concrete legacy IJobDefinition stub (JobSender.Tests, asserts log + cancellation token are forwarded) and queue-stats importance routing for both flag states (Sdk.Tests). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Here's an example of the change to pipeline behavior The estimated wait time may or may not be accurate. This PR is about enabling the functionality. i have separate efforts to track and ensure accuracy of the wait time estimation. |
|
Are the tests in here enough? Did you want to add any to Arcade Validation? |
Enables the new opt-in Helix queue health summary (added in #16922) for Arcade's own
tests/UnitTests.proj.Adds
<EnableShowHelixQueueStats>true</EnableShowHelixQueueStats>so that every Helix job submitted by the Arcade unit-test pipeline logs the queue health summary at submit time. This dogfoods the feature and gives FRs immediate signal on Helix queue conditions when Arcade's own CI submits work.Depends on #16922 having shipped through Arcade.