[arm-spector] Add ARM spector test for ArmResourceDeploymentScope#4535
Open
XiaofeiCao wants to merge 2 commits into
Open
[arm-spector] Add ARM spector test for ArmResourceDeploymentScope#4535XiaofeiCao wants to merge 2 commits into
XiaofeiCao wants to merge 2 commits into
Conversation
…ifier with scopes) Add spector test scenarios for armResourceIdentifier with deployment scopes to the common-properties test suite. This covers: - armResourceIdentifier without type/scopes (basic) - armResourceIdentifier with type only - armResourceIdentifier with type and specific scopes (Tenant, ResourceGroup) - armResourceIdentifier with all scopes (Tenant, Subscription, ResourceGroup, ManagementGroup, Extension) Scenarios include GET and PUT operations with mock API implementations. Closes #1 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Collaborator
|
All changed packages have been documented.
Show changes
|
commit: |
Contributor
⚡ Benchmark Results
Full details – comparing
|
| Metric | Baseline | Current | Change |
|---|---|---|---|
| total | 🔴 6.49s | 🔴 6.79s | +4.7% |
| loader | 🟢 156.5ms | 🟢 195.9ms | +25.2% 🔴 |
| resolver | 🟢 21.6ms | 🟢 18.5ms | -14.6% 🟢 |
| checker | 🟢 189.0ms | 🟡 204.0ms | +8.0% 🔴 |
| validation | 🟢 43.2ms | 🟢 43.2ms | -0.1% |
| ↳ validation/@azure-tools/typespec-azure-core | 🟢 6.4ms | 🟢 7.1ms | +10.8% |
| ↳ validation/@typespec/http | 🟢 5.4ms | 🟢 6.1ms | +13.7% |
| ↳ validation/@typespec/rest | 🟢 0.6ms | 🟢 0.6ms | -4.0% |
| ↳ validation/@typespec/versioning | 🔴 28.7ms | 🔴 27.5ms | -4.1% |
| ↳ validation/compiler | 🟢 1.6ms | 🟢 1.4ms | -13.4% |
| linter | 🟢 130.5ms | 🟢 144.3ms | +10.6% 🔴 |
| ↳ linter/@azure-tools/typespec-azure-core/auth-required | 🟢 0.0ms | 🟢 0.0ms | -4.7% |
| ↳ linter/@azure-tools/typespec-azure-core/bad-record-type | 🟢 0.2ms | 🟢 0.2ms | -5.1% |
| ↳ linter/@azure-tools/typespec-azure-core/byos | 🟢 5.6ms | 🟢 5.9ms | +5.1% |
| ↳ linter/@azure-tools/typespec-azure-core/casing-style | 🟢 0.6ms | 🟢 0.7ms | +9.3% |
| ↳ linter/@azure-tools/typespec-azure-core/composition-over-inheritance | 🟢 0.1ms | 🟢 0.1ms | +5.9% |
| ↳ linter/@azure-tools/typespec-azure-core/documentation-required | 🟢 0.9ms | 🟢 0.8ms | -3.9% |
| ↳ linter/@azure-tools/typespec-azure-core/friendly-name | 🟢 0.6ms | 🟢 0.6ms | +2.7% |
| ↳ linter/@azure-tools/typespec-azure-core/key-visibility-required | 🟢 0.2ms | 🟢 0.2ms | -1.7% |
| ↳ linter/@azure-tools/typespec-azure-core/known-encoding | 🟢 0.3ms | 🟢 0.3ms | +3.1% |
| ↳ linter/@azure-tools/typespec-azure-core/long-running-polling-operation-required | 🟢 0.3ms | 🟢 0.3ms | +4.5% |
| ↳ linter/@azure-tools/typespec-azure-core/no-case-mismatch | 🟢 0.2ms | 🟢 0.2ms | +3.6% |
| ↳ linter/@azure-tools/typespec-azure-core/no-closed-literal-union | 🟢 0.3ms | 🟢 0.3ms | -3.1% |
| ↳ linter/@azure-tools/typespec-azure-core/no-enum | 🟢 0.0ms | 🟢 0.0ms | +1.5% |
| ↳ linter/@azure-tools/typespec-azure-core/no-error-status-codes | 🟢 0.1ms | 🟢 0.1ms | +6.2% |
| ↳ linter/@azure-tools/typespec-azure-core/no-explicit-routes-resource-ops | 🟢 0.1ms | 🟢 0.1ms | -4.2% |
| ↳ linter/@azure-tools/typespec-azure-core/no-format | 🟢 0.6ms | 🟢 0.6ms | +0.4% |
| ↳ linter/@azure-tools/typespec-azure-core/no-generic-numeric | 🟢 0.4ms | 🟢 0.4ms | -9.5% |
| ↳ linter/@azure-tools/typespec-azure-core/no-header-explode | 🟡 19.2ms | 🔴 21.5ms | +12.0% 🔴 |
| ↳ linter/@azure-tools/typespec-azure-core/no-legacy-usage | 🟢 1.1ms | 🟢 1.1ms | +1.9% |
| ↳ linter/@azure-tools/typespec-azure-core/no-multiple-discriminator | 🟢 0.1ms | 🟢 0.1ms | +10.6% |
| ↳ linter/@azure-tools/typespec-azure-core/no-nullable | 🟢 0.2ms | 🟢 0.3ms | +3.0% |
| ↳ linter/@azure-tools/typespec-azure-core/no-offsetdatetime | 🟢 1.1ms | 🟢 1.4ms | +26.3% |
| ↳ linter/@azure-tools/typespec-azure-core/no-openapi | 🟢 2.1ms | 🟢 2.1ms | -0.5% |
| ↳ linter/@azure-tools/typespec-azure-core/no-private-usage | 🟢 1.9ms | 🟢 1.9ms | -3.9% |
| ↳ linter/@azure-tools/typespec-azure-core/no-query-explode | 🟡 19.0ms | 🔴 21.4ms | +12.5% 🔴 |
| ↳ linter/@azure-tools/typespec-azure-core/no-response-body | 🔴 22.6ms | 🔴 26.8ms | +18.3% 🔴 |
| ↳ linter/@azure-tools/typespec-azure-core/no-rest-library-interfaces | 🟢 0.0ms | 🟢 0.0ms | -17.8% |
| ↳ linter/@azure-tools/typespec-azure-core/no-route-parameter-name-mismatch | 🟢 4.5ms | 🟢 5.5ms | +24.0% 🔴 |
| ↳ linter/@azure-tools/typespec-azure-core/no-rpc-path-params | 🟢 0.2ms | 🟢 0.2ms | +6.2% |
| ↳ linter/@azure-tools/typespec-azure-core/no-string-discriminator | 🟢 0.0ms | 🟢 0.0ms | -4.4% |
| ↳ linter/@azure-tools/typespec-azure-core/no-unknown | 🟢 0.2ms | 🟢 0.2ms | +9.6% |
| ↳ linter/@azure-tools/typespec-azure-core/no-unnamed-union | 🟢 0.4ms | 🟢 0.3ms | -2.3% |
| ↳ linter/@azure-tools/typespec-azure-core/operation-missing-api-version | 🟢 0.2ms | 🟢 0.2ms | -14.7% |
| ↳ linter/@azure-tools/typespec-azure-core/request-body-problem | 🟢 0.3ms | 🟢 0.3ms | -7.4% |
| ↳ linter/@azure-tools/typespec-azure-core/require-versioned | 🟢 0.0ms | 🟢 0.0ms | -29.0% |
| ↳ linter/@azure-tools/typespec-azure-core/response-schema-problem | 🔴 21.3ms | 🔴 24.0ms | +12.6% 🔴 |
| ↳ linter/@azure-tools/typespec-azure-core/rpc-operation-request-body | 🟢 0.3ms | 🟢 0.3ms | +16.6% |
| ↳ linter/@azure-tools/typespec-azure-core/spread-discriminated-model | 🟢 0.3ms | 🟢 0.3ms | -0.8% |
| ↳ linter/@azure-tools/typespec-azure-core/use-standard-names | 🟢 5.0ms | 🟢 5.6ms | +11.1% |
| ↳ linter/@azure-tools/typespec-azure-core/use-standard-operations | 🟢 0.1ms | 🟢 0.1ms | +6.1% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-common-types-version | 🟢 3.8ms | 🟢 4.3ms | +14.3% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-no-key | 🟢 0.1ms | 🟢 0.1ms | +9.5% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-custom-resource-usage-discourage | 🟢 0.1ms | 🟢 0.1ms | +5.4% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-delete-operation-response-codes | 🟢 4.7ms | 🟢 5.3ms | +12.5% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-path-casing-conflicts | 🟢 4.2ms | 🟢 4.5ms | +5.3% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-no-record | 🟢 0.4ms | 🟢 0.4ms | -1.7% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-post-operation-response-codes | 🟢 0.4ms | 🟢 0.5ms | +13.4% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-put-operation-response-codes | 🟢 0.0ms | 🟢 0.0ms | +6.6% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-action-no-segment | 🟢 0.2ms | 🟢 0.2ms | +7.7% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-duplicate-property | 🟢 0.1ms | 🟢 0.1ms | +14.7% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-interface-requires-decorator | 🟢 0.0ms | 🟢 0.0ms | -16.9% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-action-verb | 🟢 0.1ms | 🟢 0.1ms | +0.6% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-envelope-property | 🟢 0.1ms | 🟢 0.1ms | +1.8% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-invalid-version-format | 🟢 0.0ms | 🟢 0.0ms | +0.5% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-key-invalid-chars | 🟢 0.2ms | 🟢 0.2ms | +12.0% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-name-pattern | 🟢 0.0ms | 🟢 0.0ms | -31.8% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation | 🟢 0.2ms | 🟢 0.2ms | -0.8% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-operation-response | 🟢 4.4ms | 🟢 4.8ms | +10.6% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-patch | 🟢 0.3ms | 🟢 0.3ms | +9.1% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-path-segment-invalid-chars | 🟢 0.2ms | 🟢 0.2ms | +6.4% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/arm-resource-provisioning-state | 🟢 0.1ms | 🟢 0.1ms | +5.5% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/beyond-nesting-levels | 🟢 0.1ms | 🟢 0.1ms | +6.7% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/empty-updateable-properties | 🟢 0.1ms | 🟢 0.1ms | +5.3% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/improper-subscription-list-operation | 🟢 0.0ms | 🟢 0.0ms | -6.8% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/lro-location-header | 🟡 12.2ms | 🟡 14.7ms | +20.2% 🔴 |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-operations-endpoint | 🟢 0.0ms | 🟢 0.0ms | -11.0% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/missing-x-ms-identifiers | 🟢 0.3ms | 🟢 0.3ms | -6.8% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/no-empty-model | 🟢 0.1ms | 🟢 0.1ms | -2.5% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/no-resource-delete-operation | 🟢 0.2ms | 🟢 0.2ms | +11.9% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/no-response-body | 🟡 19.5ms | 🔴 23.0ms | +18.0% 🔴 |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/patch-envelope | 🟢 0.1ms | 🟢 0.1ms | +2.8% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/resource-name | 🟢 0.1ms | 🟢 0.2ms | +5.4% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/secret-prop | 🟢 2.7ms | 🟢 2.3ms | -16.0% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/unsupported-type | 🟢 0.4ms | 🟢 0.4ms | +3.0% |
| ↳ linter/@azure-tools/typespec-azure-resource-manager/version-progression | 🟢 0.0ms | 🟢 0.0ms | -1.7% |
| ↳ linter/@azure-tools/typespec-client-generator-core/property-name-conflict | 🟢 1.0ms | 🟢 1.1ms | +5.5% |
| ↳ linter/@azure-tools/typespec-client-generator-core/require-client-suffix | 🟢 0.2ms | 🟢 0.2ms | -25.0% |
| emit | 🔴 5.89s | 🔴 6.13s | +4.2% |
| ↳ emit/@azure-tools/typespec-autorest | 🟢 199.7ms | 🟡 204.9ms | +2.6% |
| ↳ emit/@azure-tools/typespec-python | 🔴 4.24s | 🔴 4.47s | +5.3% 🔴 |
| ↳ emit/@typespec/http-client-js | 🔴 1.17s | 🔴 1.19s | +1.7% |
| ↳ emit/@typespec/openapi3 | 🟢 150.5ms | 🟢 156.3ms | +3.9% |
| ↳ emit/@typespec/openapi3/compute | 🟢 131.4ms | 🟢 137.1ms | +4.3% |
| ↳ emit/@typespec/openapi3/write | 🟢 19.5ms | 🟢 19.4ms | -0.6% |
Averaged across 3 specs (azure-arm-resource-manager, azure-core-dataplane, azure-full).
Threshold: changes > ±5% are highlighted.
🟢 Fast · 🟡 Moderate (stages >200ms, rules >10ms) · 🔴 Slow (stages >400ms, rules >20ms)
Collaborator
|
You can try these changes here
|
weidongxu-microsoft
approved these changes
Jun 2, 2026
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
Adds ARM spector test scenarios for
armResourceIdentifierwithArmResourceDeploymentScopeto prevent regressions like the one caused by #2670 (casing change of deployment scope values).Scenarios Added
Azure_ResourceManager_CommonProperties_ArmResourceIdentifiers_getarmResourceIdentifierproperties using various scope configurationsAzure_ResourceManager_CommonProperties_ArmResourceIdentifiers_createOrReplacearmResourceIdentifierpropertiesProperties Tested
The test resource includes
armResourceIdentifierfields covering all deployment scope configurations:simpleArmId— basicarmResourceIdentifierwithout type or scopesarmIdWithType—armResourceIdentifierwith resource type only (Microsoft.Network/virtualNetworks)armIdWithTypeAndScope—armResourceIdentifierwith type and specific scopes ("Tenant","ResourceGroup")armIdWithAllScopes—armResourceIdentifierwith all five deployment scopes ("Tenant","Subscription","ResourceGroup","ManagementGroup","Extension")Files Changed
packages/azure-http-specs/specs/azure/resource-manager/common-properties/arm-resource-identifier.tsp— TSP spec with resource model and scenariospackages/azure-http-specs/specs/azure/resource-manager/common-properties/main.tsp— added importpackages/azure-http-specs/specs/azure/resource-manager/common-properties/mockapi.ts— mock API implementationspackages/azure-http-specs/spec-summary.md— regenerated scenario docs.chronus/changes/add-arm-spector-issue-1-2026-06-01.md— changesetValidation
tscbuild passesvalidate-scenariospassesvalidate-mock-apispasses (all scenarios have implementations)cspellpassesprettierformatting appliedeslintpasses