Authoring MAPROOM fixtures¶
A MAPROOM fixture is a JSON file that describes the expected shape of a deployment target. Fixtures live in tests/maproom/Fixtures/ in your consumer repo and must conform to the platform fixture schema.
Minimum required structure¶
Every fixture — regardless of infrastructure_type — must have these fields:
{
"infrastructure_type": "azure_local",
"_metadata": {
"fixture": "my-cluster",
"description": "4-node all-NVMe S2D cluster for regression tests"
},
"compliance": {},
"performance": {},
"user_journey": {},
"iac": {}
}
Reserved sections
compliance, performance, user_journey, and iac must be present as empty objects in v0.2.0. They will be populated by deferred toolsets in v0.3.0.
azure_local fixture shape¶
For S2D cluster fixtures (infrastructure_type: "azure_local"), the schema also validates storagePool, physicalDisks, and virtualDisks when present.
{
"infrastructure_type": "azure_local",
"_metadata": {
"fixture": "4node-3way-mirror",
"description": "4-node, three-way mirror, fixed and thin volumes",
"nodeCount": 4,
"totalRawCapacityBytes": 92160000000000,
"expectedReserveStatus": "Adequate",
"capacityDisksPerNode": 6,
"capacityDiskSizeBytes": 3840000000000,
"cacheDisksPerNode": 2
},
"clusterName": "mock-4n-3way",
"nodeCount": 4,
"storagePool": {
"friendlyName": "S2D on mock-4n-3way",
"sizeBytes": 92160000000000,
"healthStatus": "Healthy",
"operationalStatus": "OK"
},
"physicalDisks": [
{
"nodeName": "node01",
"mediaType": "NVMe",
"sizeBytes": 1920000000000,
"usage": "Journal",
"healthStatus": "Healthy",
"operationalStatus": "OK"
}
],
"compliance": {},
"performance": {},
"user_journey": {},
"iac": {}
}
Validating a fixture locally¶
Import-Module .\_platform\testing\maproom\AzureLocal.Maproom.psd1 -Force
Test-MaproomFixture -Path .\tests\maproom\Fixtures\my-cluster.json
CI validation¶
Platform CI validates all IIC canon fixtures on every push. Consumer CI should run Test-MaproomFixture on their own fixtures as part of the platform-maproom job added in the reusable ps-module-ci workflow.
Naming conventions¶
| Pattern | Meaning |
|---|---|
<N>node-<description>.json | Standard topology fixture (e.g., 4node-3way-mirror.json) |
synthetic-cluster.json | Auto-generated by New-*SyntheticCluster.ps1 — do not hand-edit |
iic-<type>-<NN>.json | IIC canon fixture — lives in platform/testing/iic-canon/ |
Referencing the IIC canon¶
Instead of duplicating the canonical IIC cluster fixture in your repo, reference it from the platform module: