diff options
author | Martin Basti <mbasti@redhat.com> | 2015-12-04 17:12:05 +0100 |
---|---|---|
committer | Martin Basti <mbasti@redhat.com> | 2015-12-08 10:07:00 +0100 |
commit | a11cddd75b4e887998ad6fd52a05f87e0354ea30 (patch) | |
tree | 6f72df8e7fb74b423a1c1877a946fa2d9b7278ed /ipatests | |
parent | 2c5a662fd80f7152834dfebf45628d3a7b8a68bf (diff) | |
download | freeipa-a11cddd75b4e887998ad6fd52a05f87e0354ea30.tar.gz freeipa-a11cddd75b4e887998ad6fd52a05f87e0354ea30.tar.xz freeipa-a11cddd75b4e887998ad6fd52a05f87e0354ea30.zip |
CI: installation tests
Reviewed-By: Oleg Fayans <ofayans@redhat.com>
Diffstat (limited to 'ipatests')
-rw-r--r-- | ipatests/test_integration/tasks.py | 32 | ||||
-rw-r--r-- | ipatests/test_integration/test_installation.py | 200 |
2 files changed, 232 insertions, 0 deletions
diff --git a/ipatests/test_integration/tasks.py b/ipatests/test_integration/tasks.py index a295d522d..217e78cbf 100644 --- a/ipatests/test_integration/tasks.py +++ b/ipatests/test_integration/tasks.py @@ -39,6 +39,7 @@ from ipatests.test_integration.env_config import env_to_script from ipatests.test_integration.host import Host from ipalib.util import get_reverse_zone_default from ipalib.constants import DOMAIN_SUFFIX_NAME +from ipalib.constants import DOMAIN_LEVEL_0 log = log_mgr.get_logger(__name__) @@ -922,3 +923,34 @@ def resolve_record(nameserver, query, rtype="SOA", retry=True, timeout=100): if not retry: raise time.sleep(1) + + +def install_kra(host, domain_level=None, first_instance=False, raiseonerr=True): + if not domain_level: + domain_level = domainlevel(host) + command = ["ipa-kra-install", "-U", "-p", host.config.dirman_password] + if domain_level == DOMAIN_LEVEL_0 and not first_instance: + replica_file = get_replica_filename(host) + command.append(replica_file) + return host.run_command(command, raiseonerr=raiseonerr) + + +def install_ca(host, domain_level=None, first_instance=False, raiseonerr=True): + if not domain_level: + domain_level = domainlevel(host) + command = ["ipa-ca-install", "-U", "-p", host.config.dirman_password, + "-P", 'admin', "-w", host.config.admin_password] + if domain_level == DOMAIN_LEVEL_0 and not first_instance: + replica_file = get_replica_filename(host) + command.append(replica_file) + return host.run_command(command, raiseonerr=raiseonerr) + + +def install_dns(host, raiseonerr=True): + args = [ + "ipa-dns-install", + "--forwarder", host.config.dns_forwarder, + "-p", host.config.dirman_password, + "-U", + ] + return host.run_command(args, raiseonerr=raiseonerr) diff --git a/ipatests/test_integration/test_installation.py b/ipatests/test_integration/test_installation.py new file mode 100644 index 000000000..925cc7d83 --- /dev/null +++ b/ipatests/test_integration/test_installation.py @@ -0,0 +1,200 @@ +# +# Copyright (C) 2015 FreeIPA Contributors see COPYING for license +# + +""" +Module provides tests which testing ability of various subsystems to be +installed. +""" + +import time + +from ipatests.test_integration.base import IntegrationTest +from ipatests.test_integration import tasks + + +class InstallTestBase1(IntegrationTest): + + num_replicas = 3 + topology = 'star' + + @classmethod + def install(cls, mh): + tasks.install_master(cls.master, setup_dns=False) + + def test_replica0_ca_less_install(self): + tasks.install_replica(self.master, self.replicas[0], setup_ca=False) + + def test_replica0_ipa_ca_install(self): + tasks.install_ca(self.replicas[0]) + + def test_replica0_ipa_kra_install(self): + tasks.install_kra(self.replicas[0], first_instance=True) + + def test_replica0_ipa_dns_install(self): + tasks.install_dns(self.replicas[0]) + + def test_replica1_with_ca_install(self): + tasks.install_replica(self.master, self.replicas[1], setup_ca=True) + + def test_replica1_ipa_kra_install(self): + tasks.install_kra(self.replicas[1]) + + def test_replica1_ipa_dns_install(self): + tasks.install_dns(self.replicas[1]) + + def test_replica2_with_ca_kra_install(self): + tasks.install_replica(self.master, self.replicas[2], setup_ca=True, + setup_kra=True) + + def test_replica2_ipa_dns_install(self): + tasks.install_dns(self.replicas[2]) + + +class InstallTestBase2(IntegrationTest): + + num_replicas = 3 + topology = 'star' + + @classmethod + def install(cls, mh): + tasks.install_master(cls.master, setup_dns=False) + + def test_replica0_with_ca_kra_dns_install(self): + tasks.install_replica(self.master, self.replicas[0], setup_ca=True, + setup_kra=True, setup_dns=True) + + def test_replica1_with_ca_dns_install(self): + tasks.install_replica(self.master, self.replicas[1], setup_ca=True, + setup_dns=True) + + def test_replica1_ipa_kra_install(self): + tasks.install_kra(self.replicas[1]) + + def test_replica2_with_dns_install(self): + tasks.install_replica(self.master, self.replicas[2], setup_ca=False, + setup_dns=True) + + def test_replica2_ipa_ca_install(self): + tasks.install_ca(self.replicas[2]) + + def test_replica2_ipa_kra_install(self): + tasks.install_kra(self.replicas[2]) + + +## +# Master X Replicas installation tests +## + +class TestInstallWithCA1(InstallTestBase1): + + @classmethod + def install(cls, mh): + tasks.install_master(cls.master, setup_dns=False) + + +class TestInstallWithCA2(InstallTestBase2): + + @classmethod + def install(cls, mh): + tasks.install_master(cls.master, setup_dns=False) + + +class TestInstallWithCA_KRA1(InstallTestBase1): + + @classmethod + def install(cls, mh): + tasks.install_master(cls.master, setup_dns=False, setup_kra=True) + + def test_replica0_ipa_kra_install(self): + tasks.install_kra(self.replicas[0], first_instance=False) + + +class TestInstallWithCA_KRA2(InstallTestBase2): + + @classmethod + def install(cls, mh): + tasks.install_master(cls.master, setup_dns=False, setup_kra=True) + + +class TestInstallWithCA_DNS1(InstallTestBase1): + + @classmethod + def install(cls, mh): + tasks.install_master(cls.master, setup_dns=True) + + +class TestInstallWithCA_DNS2(InstallTestBase2): + + @classmethod + def install(cls, mh): + tasks.install_master(cls.master, setup_dns=True) + + +class TestInstallWithCA_KRA_DNS1(InstallTestBase1): + + @classmethod + def install(cls, mh): + tasks.install_master(cls.master, setup_dns=True, setup_kra=True) + + def test_replica0_ipa_kra_install(self): + tasks.install_kra(self.replicas[0], first_instance=False) + + +class TestInstallWithCA_KRA_DNS2(InstallTestBase2): + + @classmethod + def install(cls, mh): + tasks.install_master(cls.master, setup_dns=True, setup_kra=True) + + +## +# Rest of master installation tests +## + +class TestInstallMaster(IntegrationTest): + + num_replicas = 0 + + @classmethod + def install(cls, mh): + pass + + def test_install_master(self): + tasks.install_master(self.master, setup_dns=False) + + def test_install_kra(self): + tasks.install_kra(self.master, first_instance=True) + + def test_install_dns(self): + tasks.install_dns(self.master) + + +class TestInstallMasterKRA(IntegrationTest): + + num_replicas = 0 + + @classmethod + def install(cls, mh): + pass + + def test_install_master(self): + tasks.install_master(self.master, setup_dns=False, setup_kra=True) + + def test_install_dns(self): + tasks.install_dns(self.master) + + +class TestInstallMasterDNS(IntegrationTest): + + num_replicas = 0 + + @classmethod + def install(cls, mh): + pass + + def test_install_master(self): + tasks.install_master(self.master, setup_dns=True) + + def test_install_kra(self): + tasks.install_kra(self.master, first_instance=True) |