Follow-up from #2151.
The merged auto-slot probe still checks only TestPortAssignment.GarnetTest plus the cluster node range.
ArePortsFree() probes GarnetTest + offset, but does not probe the other standalone assignments such as GarnetTestAlternate, GarnetTestAcl, GarnetTestCollections, GarnetTestComplexString, GarnetTestExtensions, GarnetTestRangeIndex, GarnetTestScripting, GarnetTestVectorSet, and GarnetTestBfTreeInterop.
A stranded server on one of those non-default standalone ports can therefore leave ArePortsFree(slot) returning true. auto may claim the slot and the corresponding test project later collides when it binds its shifted assignment.
Suggested fix:
- iterate all TestPortAssignment values in ArePortsFree() and require every shifted standalone assignment to be free;
- add a focused regression with one non-default assignment occupied, proving auto rejects that slot.
This was the remaining review concern on #2151 when it merged.
Follow-up from #2151.
The merged auto-slot probe still checks only TestPortAssignment.GarnetTest plus the cluster node range.
ArePortsFree() probes GarnetTest + offset, but does not probe the other standalone assignments such as GarnetTestAlternate, GarnetTestAcl, GarnetTestCollections, GarnetTestComplexString, GarnetTestExtensions, GarnetTestRangeIndex, GarnetTestScripting, GarnetTestVectorSet, and GarnetTestBfTreeInterop.
A stranded server on one of those non-default standalone ports can therefore leave ArePortsFree(slot) returning true. auto may claim the slot and the corresponding test project later collides when it binds its shifted assignment.
Suggested fix:
This was the remaining review concern on #2151 when it merged.