Build the uAMQP AMQP stack in CI beside the Rust stack - #7324
Draft
Johnathan W (j7nw4r) wants to merge 2 commits into
Draft
Build the uAMQP AMQP stack in CI beside the Rust stack#7324Johnathan W (j7nw4r) wants to merge 2 commits into
Johnathan W (j7nw4r) wants to merge 2 commits into
Conversation
|
Azure Pipelines: Successfully started running 3 pipeline(s). 7 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
EXPERIMENT. Do not merge. No pipeline sets DISABLE_RUST_IN_BUILD, so each pipeline gets the Rust AMQP stack. CI has not compiled the uAMQP stack since 2025-03-11, when #6442 forced USE_RUST_AMQP on. The uAMQP test bodies also sit inside "#if ENABLE_UAMQP" with an empty else, so CI runs them as empty tests. This commit changes the default of DISABLE_RUST_IN_BUILD from off to on, so each pipeline builds uAMQP and runs its tests. The purpose is to measure what 17 months did to that code on gcc, on clang, and on MSVC, with WARNINGS_AS_ERRORS on. This option is the switch that the build supports, so the Windows Store jobs stay correct. The root CMakeLists sets DISABLE_AMQP for a Windows Store build when this option is on. A change to USE_RUST_AMQP alone would miss that and would break those jobs for a reason that belongs to the experiment.
Johnathan W (j7nw4r)
force-pushed
the
experiment/uamqp-ci
branch
from
August 16, 2026 21:35
defa972 to
e6a7e47
Compare
No pipeline set DISABLE_RUST_IN_BUILD, so continuous integration built only the Rust AMQP stack after 2025-03-11. The uAMQP test bodies sit inside "#if ENABLE_UAMQP", so those tests ran as empty tests. The Rust test bodies sit inside "#if ENABLE_RUST_AMQP", so one stack alone always leaves the other stack's tests empty. This commit adds a small second matrix that builds the uAMQP stack, and it opts in the two pipelines that use AMQP. One run now covers both stacks. The Rust stack stays the default for every consumer, and this commit reverts the experiment default in the root CMakeLists.txt so that file matches main again. The second matrix attaches through a separate call to generate-job-matrix.yml, not through a second MatrixConfigs entry. That common template passes one AdditionalParameters object to every config it loops over, and ci.tests.yml names each job "<DisplayName>_<OSName>", so two configs in one call would declare the same job identifier twice. The precedent is cmake-generate-jobs.yml, which already makes two calls with distinct GenerateJobName values. The vendored uAMQP CMake floor moves to the guarded form that upstream azure-uamqp-c master uses. CMake warns for a floor below 3.10 from version 3.31 up. The guard makes the subdirectory inherit the root floor of 3.13, so the warning goes away. No released CMake fails on the old value, so this is hygiene and not a repair.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Continuous integration builds only the Rust AMQP stack. The uAMQP transport has no automated test coverage.
This change adds a three-leg matrix for uAMQP builds and tests. Each continuous integration run now covers both stacks. The Rust stack remains the default for all other consumers.
Motivation
No pipeline sets
DISABLE_RUST_IN_BUILD. On 2025-03-11, #6442 forcedUSE_RUST_AMQPon. Continuous integration then compiled only the Rust AMQP stack.The guards are symmetric. One stack alone leaves the other stack's test bodies empty.
sdk/core/azure-core-amqp/test/utcontains 45ENABLE_UAMQPguards across 9 files and 21ENABLE_RUST_AMQPguards across 6 files.Build 6707791 passed all 605 tests. The uAMQP run contained 225
azure-core-amqpentries; the Rust run contained 170.The uAMQP build used
WARNINGS_AS_ERRORSand produced no compiler warning or error in a uAMQP source. uAMQP needs no repair phase before continuous integration uses it.Changes
eng/pipelines/templates/stages/platform-matrix-uamqp.jsonwith three legs:Ubuntu22_gpp9,Ubuntu22_clang15, andWin2022_x64. Each leg passes-DDISABLE_RUST_IN_BUILD=ONand-DBUILD_TESTING=ON.AdditionalMatrixFileparameter with an empty default to the client job and stage templates. All other pipelines remain unchanged.generate-job-matrix.ymlcall for the second matrix. One call gives each configuration the sameAdditionalParametersobject. Two configurations in one call declare the same job identifier twice.Buildstage, so pull request feedback keeps its current speed.sdk/core/ci.ymlandsdk/eventhubs/ci.yml. These two pipelines are the only pipelines that use AMQP.LineCoverageTarget.azure-uamqp-cmasterbranch. The subdirectory uses the root CMake floor of 3.13.Test plan
Create-JobMatrix.ps1produced exactly the three expected legs. Each leg contained both flags.env:pool names passed the filter before variable resolution.Related work
#7342 covers the sync of two upstream decoder fixes into the vendored copy.