You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Fqdn: Fully qualified domain name of the cluster
42
-
- State: Current operational state of the cluster (added via NoteProperty)
43
42
- DrainOnShutdown: Boolean indicating if nodes drain resources during service shutdown (uint32)
44
43
- DynamicQuorumEnabled: Boolean indicating if dynamic quorum adjustment is enabled (uint32)
45
44
- EnableSharedVolumes: Boolean indicating if Cluster Shared Volumes feature is enabled (uint32)
46
45
- SharedVolumesRoot: The root directory path for Cluster Shared Volumes
47
46
- QuorumPath: File system path where quorum files are maintained
48
47
- QuorumType: Current quorum type as a string (Majority Node Majority, Node and Disk Majority, No Majority - Disk Only, Node Majority, or Witness)
49
48
- QuorumTypeValue: Numeric identifier representing the quorum type (uint32)
49
+
- WitnessPath: Location of the witness, whichever kind it is - the UNC path of the share for a file share witness, the value of QuorumPath for a disk witness, and empty for a cluster with no witness (added via NoteProperty)
50
50
- RequestReplyTimeout: Timeout period in milliseconds for request-reply operations (uint32)
51
51
52
52
Additional properties from MSCluster_Cluster WMI class (accessible via Select-Object *):
@@ -108,8 +108,24 @@ function Get-DbaWsfcCluster {
Copy file name to clipboardExpand all lines: tests/CLAUDE.md
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -468,6 +468,16 @@ A boundary is an external system such as SQL Server, S3, Azure Storage, SMTP, LD
468
468
- A skipped placeholder is not coverage. If a required dependency was not provisioned, the behavioral test and runner setup must fail rather than skip. Skipping remains appropriate when the tested server version does not support the targeted feature.
469
469
- Regression integration tests are expected when a bug crosses a boundary. Add the smallest focused test that fails for the old behavior and passes for the fix.
470
470
471
+
### The one boundary CI does not have: Windows failover clusters
472
+
473
+
`Get-DbaWsfc*` is the documented exception to "must fail rather than skip". A Windows failover cluster cannot be provisioned on any current runner - not on the container workflow, not on the self-hosted Azure runners - and there is deliberately no `CLUSTER` scenario in `pester.groups.ps1`, because scenarios exist to schedule CI lanes and no CI lane can host a cluster.
474
+
475
+
So these tests read their cluster from `$TestConfig.ClusterStorage` and `$TestConfig.ClusterWitness`, which are `$null` in `Get-TestConfig` and set only by a local configuration whose lab has clusters. The integration `Context` carries `-Skip:(-not $TestConfig.ClusterStorage)`, so it skips in CI and runs for real against a lab.
476
+
477
+
The lab those names describe needs more than a bare cluster: one cluster shared volume, one shared disk that every node can see but that is deliberately *not* part of the cluster, and a file share witness. Without them `Get-DbaWsfcSharedVolume` and `Get-DbaWsfcAvailableDisk` return nothing at all and cannot fail, which is exactly how a wrong WMI class name survived in `Get-DbaWsfcSharedVolume` from 2018 until August 2026.
478
+
479
+
Do not copy this exception to any other command family. It applies where the boundary is a Windows feature that no runner can provide, not where provisioning is merely inconvenient.
480
+
471
481
## TEST MANAGEMENT GUIDELINES
472
482
473
483
The dbatools test suite must remain manageable in size while ensuring adequate coverage for important functionality.
0 commit comments