[#306] netmap: Allow to select empty set of nodes

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
Evgenii Stratonikov 2024-12-05 15:30:53 +03:00
parent 0352b5b191
commit f7da6ba99c
Signed by: fyrchik
SSH key fingerprint: SHA256:m/TTwCzjnRkXgnzEx9X92ccxy1CcVeinOgDb3NPWWmg
7 changed files with 43 additions and 15 deletions

View file

@ -254,6 +254,39 @@ func TestPlacementPolicy_ProcessSelectors(t *testing.T) {
}
}
func TestPlacementPolicy_PartiallyMissingContainer(t *testing.T) {
s := `REP 2 IN D1OBJ
REP 2 IN D2OBJ
CBF 2
SELECT 2 FROM PRIMARY AS D1OBJ
SELECT 2 FROM SECONDARY AS D2OBJ
FILTER ClusterName EQ D1OBJ AS PRIMARY
FILTER ClusterName EQ D2OBJ AS SECONDARY`
var p PlacementPolicy
require.NoError(t, p.DecodeString(s))
nodes := []NodeInfo{
nodeInfoFromAttributes("ClusterName", "D1OBJ", "ID", "1"),
nodeInfoFromAttributes("ClusterName", "D1OBJ", "ID", "2"),
nodeInfoFromAttributes("ClusterName", "D1OBJ", "ID", "3"),
nodeInfoFromAttributes("ClusterName", "D1OBJ", "ID", "4"),
nodeInfoFromAttributes("ClusterName", "D1OBJ", "ID", "5"),
nodeInfoFromAttributes("ClusterName", "D1OBJ", "ID", "6"),
nodeInfoFromAttributes("ClusterName", "D1OBJ", "ID", "7"),
nodeInfoFromAttributes("ClusterName", "D1OBJ", "ID", "8"),
}
var nm NetMap
nm.SetNodes(nodes)
res, err := nm.ContainerNodes(p, nil)
require.NoError(t, err)
require.Len(t, res, 2)
require.Len(t, res[0], 4)
require.Len(t, res[1], 0)
}
func TestPlacementPolicy_Like(t *testing.T) {
nodes := []NodeInfo{
nodeInfoFromAttributes("Country", "Russia"),