mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Mirgate integration.states.test_zookeeper
to Pytest functional tests
This commit is contained in:
parent
f0df76fcd6
commit
2c034cab47
3 changed files with 169 additions and 149 deletions
|
@ -65,30 +65,6 @@ grains:
|
|||
keystone.password: demopass
|
||||
keystone.tenant: demo
|
||||
keystone.auth_url: 'http://127.0.0.1:5000/v3/'
|
||||
zookeeper:
|
||||
prod:
|
||||
hosts: 'localhost:2181'
|
||||
default_acl:
|
||||
- username: daniel
|
||||
password: test
|
||||
read: true
|
||||
write: true
|
||||
create: true
|
||||
delete: true
|
||||
admin: true
|
||||
username: daniel
|
||||
password: test
|
||||
hosts: 'localhost:2181'
|
||||
default_acl:
|
||||
- username: daniel
|
||||
password: test
|
||||
read: true
|
||||
write: true
|
||||
create: true
|
||||
delete: true
|
||||
admin: true
|
||||
username: daniel
|
||||
password: test
|
||||
|
||||
config_test:
|
||||
spam: eggs
|
||||
|
|
|
@ -1,125 +0,0 @@
|
|||
"""
|
||||
Integration tests for the zookeeper states
|
||||
"""
|
||||
|
||||
import logging
|
||||
|
||||
import pytest
|
||||
import salt.utils.path
|
||||
from tests.support.case import ModuleCase
|
||||
from tests.support.mixins import SaltReturnAssertsMixin
|
||||
from tests.support.unit import skipIf
|
||||
|
||||
try:
|
||||
import kazoo # pylint: disable=import-error,unused-import
|
||||
|
||||
HAS_KAZOO = True
|
||||
except ImportError:
|
||||
HAS_KAZOO = False
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@skipIf(not salt.utils.path.which("dockerd"), "Docker not installed")
|
||||
@skipIf(not HAS_KAZOO, "kazoo python library not installed")
|
||||
@pytest.mark.destructive_test
|
||||
class ZookeeperTestCase(ModuleCase, SaltReturnAssertsMixin):
|
||||
"""
|
||||
Test zookeeper states
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls.container_name = "zookeeper_salt"
|
||||
|
||||
def setUp(self):
|
||||
self.run_state("docker_image.present", name="zookeeper")
|
||||
self.run_state(
|
||||
"docker_container.running",
|
||||
name=self.container_name,
|
||||
image="zookeeper",
|
||||
port_bindings="2181:2181",
|
||||
)
|
||||
|
||||
def tearDown(self):
|
||||
self.run_state("docker_container.stopped", name=self.container_name)
|
||||
self.run_state("docker_container.absent", name=self.container_name)
|
||||
self.run_state("docker_image.absent", name="docker.io/zookeeper", force=True)
|
||||
|
||||
@pytest.mark.slow_test
|
||||
def test_zookeeper_present(self):
|
||||
ret = self.run_state(
|
||||
"zookeeper.present", name="/test/name", value="testuser", makepath=True,
|
||||
)
|
||||
self.assertSaltTrueReturn(ret)
|
||||
|
||||
ret = self.run_state(
|
||||
"zookeeper.present",
|
||||
name="/test/name",
|
||||
value="daniel",
|
||||
acls=[
|
||||
{
|
||||
"username": "daniel",
|
||||
"password": "test",
|
||||
"read": True,
|
||||
"admin": True,
|
||||
"write": True,
|
||||
},
|
||||
{"username": "testuser", "password": "test", "read": True},
|
||||
],
|
||||
profile="prod",
|
||||
)
|
||||
self.assertSaltTrueReturn(ret)
|
||||
|
||||
@pytest.mark.slow_test
|
||||
def test_zookeeper_absent(self):
|
||||
self.run_state(
|
||||
"zookeeper.present", name="/test/name", value="testuser", makepath=True,
|
||||
)
|
||||
ret = self.run_state("zookeeper.absent", name="/test/name",)
|
||||
self.assertSaltTrueReturn(ret)
|
||||
self.assertTrue(
|
||||
bool(ret["zookeeper_|-/test/name_|-/test/name_|-absent"]["changes"])
|
||||
)
|
||||
ret = self.run_state("zookeeper.absent", name="/test/name",)
|
||||
self.assertFalse(
|
||||
bool(ret["zookeeper_|-/test/name_|-/test/name_|-absent"]["changes"])
|
||||
)
|
||||
|
||||
@pytest.mark.slow_test
|
||||
def test_zookeeper_acls(self):
|
||||
ret = self.run_state(
|
||||
"zookeeper.acls",
|
||||
name="/test/name",
|
||||
acls=[
|
||||
{
|
||||
"username": "daniel",
|
||||
"password": "test",
|
||||
"read": True,
|
||||
"admin": True,
|
||||
"write": True,
|
||||
},
|
||||
{"username": "testuser", "password": "test", "read": True},
|
||||
],
|
||||
)
|
||||
self.assertSaltFalseReturn(ret)
|
||||
|
||||
ret = self.run_state(
|
||||
"zookeeper.present", name="/test/name", value="testuser", makepath=True,
|
||||
)
|
||||
|
||||
ret = self.run_state(
|
||||
"zookeeper.acls",
|
||||
name="/test/name",
|
||||
acls=[
|
||||
{
|
||||
"username": "daniel",
|
||||
"password": "test",
|
||||
"read": True,
|
||||
"admin": True,
|
||||
"write": True,
|
||||
},
|
||||
{"username": "testuser", "password": "test", "read": True},
|
||||
],
|
||||
)
|
||||
self.assertSaltTrueReturn(ret)
|
169
tests/pytests/functional/states/test_zookeeper.py
Normal file
169
tests/pytests/functional/states/test_zookeeper.py
Normal file
|
@ -0,0 +1,169 @@
|
|||
"""
|
||||
Integration tests for the zookeeper states
|
||||
"""
|
||||
|
||||
import logging
|
||||
|
||||
import pytest
|
||||
from saltfactories.daemons.container import Container
|
||||
from saltfactories.utils import random_string
|
||||
from saltfactories.utils.ports import get_unused_localhost_port
|
||||
|
||||
pytest.importorskip("kazoo")
|
||||
docker = pytest.importorskip("docker")
|
||||
from docker.errors import ( # isort:skip pylint: disable=3rd-party-module-not-gated
|
||||
DockerException,
|
||||
)
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
pytestmark = [
|
||||
# pytest.mark.slow_test,
|
||||
pytest.mark.skip_if_binaries_missing("dockerd"),
|
||||
]
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def zookeeper_port():
|
||||
return get_unused_localhost_port()
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def minion_config_overrides(zookeeper_port):
|
||||
zookeeper_grains = {
|
||||
"prod": {
|
||||
"hosts": "localhost:{}".format(zookeeper_port),
|
||||
"default_acl": [
|
||||
{
|
||||
"username": "daniel",
|
||||
"password": "test",
|
||||
"read": True,
|
||||
"write": True,
|
||||
"create": True,
|
||||
"delete": True,
|
||||
"admin": True,
|
||||
}
|
||||
],
|
||||
"username": "daniel",
|
||||
"password": "test",
|
||||
},
|
||||
"hosts": "localhost:{}".format(zookeeper_port),
|
||||
"default_acl": [
|
||||
{
|
||||
"username": "daniel",
|
||||
"password": "test",
|
||||
"read": True,
|
||||
"write": True,
|
||||
"create": True,
|
||||
"delete": True,
|
||||
"admin": True,
|
||||
}
|
||||
],
|
||||
"username": "daniel",
|
||||
"password": "test",
|
||||
}
|
||||
return {"grains": {"zookeeper": zookeeper_grains}}
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def docker_client():
|
||||
try:
|
||||
client = docker.from_env()
|
||||
except DockerException:
|
||||
pytest.skip("Failed to get a connection to docker running on the system")
|
||||
connectable = Container.client_connectable(client)
|
||||
if connectable is not True: # pragma: nocover
|
||||
pytest.skip(connectable)
|
||||
return client
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def zookeeper_container(salt_factories, docker_client, zookeeper_port):
|
||||
container = salt_factories.get_container(
|
||||
random_string("zookeeper-"),
|
||||
"zookeeper",
|
||||
docker_client=docker_client,
|
||||
check_ports=[zookeeper_port],
|
||||
container_run_kwargs={"ports": {"2181/tcp": zookeeper_port}},
|
||||
)
|
||||
with container.started() as factory:
|
||||
yield factory
|
||||
|
||||
|
||||
@pytest.fixture(scope="module")
|
||||
def zookeeper(zookeeper_container, states):
|
||||
return states.zookeeper
|
||||
|
||||
|
||||
def test_zookeeper_present(zookeeper):
|
||||
ret = zookeeper.present(name="/test/name-1", value="testuser", makepath=True)
|
||||
assert ret.result is True
|
||||
|
||||
|
||||
def test_zookeeper_present_acls_and_profile(zookeeper):
|
||||
ret = zookeeper.present(name="/test/name-2", value="testuser", makepath=True)
|
||||
assert ret.result is True
|
||||
ret = zookeeper.present(
|
||||
name="/test/name-2",
|
||||
value="daniel",
|
||||
acls=[
|
||||
{
|
||||
"username": "daniel",
|
||||
"password": "test",
|
||||
"read": True,
|
||||
"admin": True,
|
||||
"write": True,
|
||||
},
|
||||
{"username": "testuser", "password": "test", "read": True},
|
||||
],
|
||||
profile="prod",
|
||||
)
|
||||
assert ret.result is True
|
||||
|
||||
|
||||
def test_zookeeper_absent(zookeeper):
|
||||
ret = zookeeper.present(name="/test/name-3", value="testuser", makepath=True)
|
||||
assert ret.result is True
|
||||
|
||||
ret = zookeeper.absent(name="/test/name-3")
|
||||
assert ret.result is True
|
||||
assert ret.changes
|
||||
|
||||
ret = zookeeper.absent(name="/test/name-3")
|
||||
assert ret.result is True
|
||||
assert not ret.changes
|
||||
|
||||
|
||||
def test_zookeeper_acls(zookeeper):
|
||||
ret = zookeeper.acls(
|
||||
name="/test/name-4",
|
||||
acls=[
|
||||
{
|
||||
"username": "daniel",
|
||||
"password": "test",
|
||||
"read": True,
|
||||
"admin": True,
|
||||
"write": True,
|
||||
},
|
||||
{"username": "testuser", "password": "test", "read": True},
|
||||
],
|
||||
)
|
||||
assert ret.result is False
|
||||
|
||||
ret = zookeeper.present(name="/test/name-4", value="testuser", makepath=True)
|
||||
assert ret.result is True
|
||||
|
||||
ret = zookeeper.acls(
|
||||
name="/test/name-4",
|
||||
acls=[
|
||||
{
|
||||
"username": "daniel",
|
||||
"password": "test",
|
||||
"read": True,
|
||||
"admin": True,
|
||||
"write": True,
|
||||
},
|
||||
{"username": "testuser", "password": "test", "read": True},
|
||||
],
|
||||
)
|
||||
assert ret.result is True
|
Loading…
Add table
Reference in a new issue