Skip to content

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:

$canonPath = Get-IICCanonPath -InfrastructureType azure_local
$fixture   = Import-MaproomFixture -Path $canonPath