summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ipatests/test_integration/tasks.py32
-rw-r--r--ipatests/test_integration/test_installation.py200
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)