Consider manager status when checking for swarm related features

This commit is contained in:
Frederik Ring 2025-06-09 13:19:58 +02:00
parent 7806e56eab
commit 466aa2a869
3 changed files with 20 additions and 6 deletions

View file

@ -89,7 +89,7 @@ func isSwarm(c interface {
if err != nil {
return false, errwrap.Wrap(err, "error getting docker info")
}
return info.Swarm.LocalNodeState != "" && info.Swarm.LocalNodeState != swarm.LocalNodeStateInactive, nil
return info.Swarm.LocalNodeState != "" && info.Swarm.LocalNodeState != swarm.LocalNodeStateInactive && info.Swarm.ControlAvailable, nil
}
// stopContainersAndServices stops all Docker containers that are marked as to being

View file

@ -30,13 +30,26 @@ func TestIsSwarm(t *testing.T) {
&mockInfoClient{
result: system.Info{
Swarm: swarm.Info{
LocalNodeState: swarm.LocalNodeStateActive,
LocalNodeState: swarm.LocalNodeStateActive,
ControlAvailable: true,
},
},
},
true,
false,
},
{
"worker",
&mockInfoClient{
result: system.Info{
Swarm: swarm.Info{
LocalNodeState: swarm.LocalNodeStateActive,
},
},
},
false,
false,
},
{
"compose",
&mockInfoClient{

View file

@ -45,13 +45,15 @@ for dir in $(find $find_args | sort); do
fi
docker compose --profile $compose_profile up -d --wait
test_context=manager
if [ -f "${dir}/.multinode" ]; then
test_context=$(cat $dir/.multinode)
fi
docker compose exec $test_context /bin/sh -c "docker load -i /cache/image.tar.gz"
if [ -f "${dir}/.swarm" ]; then
docker compose exec manager docker swarm init
elif [ -f "${dir}/.multinode" ]; then
test_context=$(cat $dir/.multinode)
docker compose exec manager docker swarm init
manager_ip=$(docker compose exec manager docker node inspect $(docker compose exec manager docker node ls -q) --format '{{ .Status.Addr }}')
token=$(docker compose exec manager docker swarm join-token -q worker)
@ -61,7 +63,6 @@ for dir in $(find $find_args | sort); do
docker compose exec -w "/code/$dir" manager docker stack deploy --compose-file="docker-compose.yml" test_stack
fi
docker compose exec $test_context /bin/sh -c "docker load -i /cache/image.tar.gz"
docker compose exec -e TEST_VERSION=$IMAGE_TAG $test_context /bin/sh -c "/code/$test"
docker compose --profile $compose_profile down