From: Greg Hudson Date: Fri, 11 Jan 2013 17:27:36 +0000 (-0500) Subject: Remove manual kdc_realm tests X-Git-Tag: krb5-1.12-alpha1~351 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e09e6a7d681df577c4e6fa64d79c40e25e6c3c66;p=thirdparty%2Fkrb5.git Remove manual kdc_realm tests --- diff --git a/src/tests/Makefile.in b/src/tests/Makefile.in index da52894725..4de55044ba 100644 --- a/src/tests/Makefile.in +++ b/src/tests/Makefile.in @@ -91,7 +91,6 @@ check-pytests:: gcred hist kdbtest $(RUNPYTEST) $(srcdir)/t_keytab.py $(PYTESTFLAGS) $(RUNPYTEST) $(srcdir)/t_kadmin_acl.py $(PYTESTFLAGS) $(RUNPYTEST) $(srcdir)/t_kdb.py $(PYTESTFLAGS) -# $(RUNPYTEST) $(srcdir)/kdc_realm/kdcref.py $(PYTESTFLAGS) $(RUNPYTEST) $(srcdir)/t_cve-2012-1014.py $(PYTESTFLAGS) $(RUNPYTEST) $(srcdir)/t_cve-2012-1015.py $(PYTESTFLAGS) diff --git a/src/tests/kdc_realm/input_conf/kdc_pri_template.conf b/src/tests/kdc_realm/input_conf/kdc_pri_template.conf deleted file mode 100755 index 2867607179..0000000000 --- a/src/tests/kdc_realm/input_conf/kdc_pri_template.conf +++ /dev/null @@ -1,12 +0,0 @@ -[kdcdefaults] - kdc_ports = 7777 - -[realms] - Y.COM = { - database_name = %(tier2)s/principal - acl_file = %(tier2)s/kadm5.acl - key_stash_file = %(tier2)s/.k5.ATHENA.MIT.EDU - kdc_ports = 7777 - max_life = 10h 0m 0s - max_renewable_life = 7d 0h 0m 0s - } diff --git a/src/tests/kdc_realm/input_conf/kdc_ref_template.conf b/src/tests/kdc_realm/input_conf/kdc_ref_template.conf deleted file mode 100755 index fc51010597..0000000000 --- a/src/tests/kdc_realm/input_conf/kdc_ref_template.conf +++ /dev/null @@ -1,12 +0,0 @@ -[kdcdefaults] - kdc_ports = 7778 - -[realms] - Z.COM = { - database_name = %(tier1)s/principal - acl_file = %(tier1)s/kadm5.acl - key_stash_file = %(tier1)s/.k5.ATHENA.MIT.EDU - kdc_ports = 7778 - max_life = 10h 0m 0s - max_renewable_life = 7d 0h 0m 0s - } diff --git a/src/tests/kdc_realm/input_conf/krb5_priCL_template.conf b/src/tests/kdc_realm/input_conf/krb5_priCL_template.conf deleted file mode 100755 index 7e31eedfb4..0000000000 --- a/src/tests/kdc_realm/input_conf/krb5_priCL_template.conf +++ /dev/null @@ -1,34 +0,0 @@ -[libdefaults] - default_realm = Y.COM - default_keytab_name = FILE:%(tier2)s/krb5.keytab - default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - dns_lookup_kdc = true - dns_lookup_realm = false - -[realms] - Y.COM = { - admin_server = KERBEROS.Y.COM - kdc = %(localFQDN)s:7777 - default_domain = Y.COM - } - Z.COM = { - admin_server = KERBEROS.Z.COM - kdc = %(localFQDN)s:7778 - default_domain = Z.COM - } - -[domain_realm] -# .mit.edu = Y.COM - %(localFQDN)s = Y.COM - .%(localFQDN)s = Y.COM - .y.com = Y.COM - y.com = Y.COM - -[dbmodules] - db_module_dir = %(srcdir)s/plugins/kdb/db2 - - -[logging] - kdc = FILE:%(tier2)s/krb5kdc_cl.log - diff --git a/src/tests/kdc_realm/input_conf/krb5_priKDC_1_template.conf b/src/tests/kdc_realm/input_conf/krb5_priKDC_1_template.conf deleted file mode 100755 index 7a197ca05e..0000000000 --- a/src/tests/kdc_realm/input_conf/krb5_priKDC_1_template.conf +++ /dev/null @@ -1,30 +0,0 @@ -[libdefaults] - default_realm = Y.COM - default_keytab_name = FILE:%(tier2)s/krb5.keytab - default_tkt_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - default_tgs_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - dns_lookup_kdc = true - dns_lookup_realm = false - - -[kdcdefaults] - no_host_referral = * - host_based_services = * - -[realms] - Y.COM = { - kdc = %(localFQDN)s:7777 - } - -[domain_realm] - mybox.mit.edu=Z.COM - %(localFQDN)s=Y.COM - .y.com = Y.COM - y.com = Y.COM - -[dbmodules] - db_module_dir = %(srcdir)s/plugins/kdb/db2 - -[logging] - kdc = FILE:%(tier2)s/krb5kdc.log - diff --git a/src/tests/kdc_realm/input_conf/krb5_priKDC_2_template.conf b/src/tests/kdc_realm/input_conf/krb5_priKDC_2_template.conf deleted file mode 100755 index 6f6994f3c2..0000000000 --- a/src/tests/kdc_realm/input_conf/krb5_priKDC_2_template.conf +++ /dev/null @@ -1,31 +0,0 @@ -[libdefaults] - default_realm = Y.COM - default_keytab_name = FILE:%(tier2)s/krb5.keytab - default_tkt_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - default_tgs_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - dns_lookup_kdc = true - dns_lookup_realm = false - - -[kdcdefaults] - no_host_referral = host1 - - -[realms] - Y.COM = { - kdc = %(localFQDN)s:7777 - host_based_services = * - } - -[domain_realm] - mybox.mit.edu=Z.COM - %(localFQDN)s=Y.COM - .y.com = Y.COM - y.com = Y.COM - -[dbmodules] - db_module_dir = %(srcdir)s/plugins/kdb/db2 - -[logging] - kdc = FILE:%(tier2)s/krb5kdc.log - diff --git a/src/tests/kdc_realm/input_conf/krb5_priKDC_3_template.conf b/src/tests/kdc_realm/input_conf/krb5_priKDC_3_template.conf deleted file mode 100755 index d04ab8c6ba..0000000000 --- a/src/tests/kdc_realm/input_conf/krb5_priKDC_3_template.conf +++ /dev/null @@ -1,30 +0,0 @@ -[libdefaults] - default_realm = Y.COM - default_keytab_name = FILE:%(tier2)s/krb5.keytab - default_tkt_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - default_tgs_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - dns_lookup_kdc = true - dns_lookup_realm = false - - -[kdcdefaults] -# no_host_referral = * -# host_based_services = * - -[realms] - Y.COM = { - kdc = %(localFQDN)s:7777 - } - -[domain_realm] - mybox.mit.edu = Z.COM - %(localFQDN)s = Y.COM - .y.com = Y.COM - y.com = Y.COM - -[dbmodules] - db_module_dir = %(srcdir)s/plugins/kdb/db2 - -[logging] - kdc = FILE:%(tier2)s/krb5kdc.log - diff --git a/src/tests/kdc_realm/input_conf/krb5_priKDC_4_template.conf b/src/tests/kdc_realm/input_conf/krb5_priKDC_4_template.conf deleted file mode 100755 index 751b22af83..0000000000 --- a/src/tests/kdc_realm/input_conf/krb5_priKDC_4_template.conf +++ /dev/null @@ -1,30 +0,0 @@ -[libdefaults] - default_realm = Y.COM - default_keytab_name = FILE:%(tier2)s/krb5.keytab - default_tkt_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - default_tgs_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - dns_lookup_kdc = true - dns_lookup_realm = false - - -[kdcdefaults] - host_based_services = * - -[realms] - Y.COM = { - kdc = %(localFQDN)s:7777 - no_host_referral = host1, * host2 - } - -[domain_realm] - mybox.mit.edu = Z.COM - %(localFQDN)s = Y.COM - .y.com = Y.COM - y.com = Y.COM - -[dbmodules] - db_module_dir = %(srcdir)s/plugins/kdb/db2 - -[logging] - kdc = FILE:%(tier2)s/krb5kdc.log - diff --git a/src/tests/kdc_realm/input_conf/krb5_priKDC_5_template.conf b/src/tests/kdc_realm/input_conf/krb5_priKDC_5_template.conf deleted file mode 100755 index 6d1d2fac08..0000000000 --- a/src/tests/kdc_realm/input_conf/krb5_priKDC_5_template.conf +++ /dev/null @@ -1,30 +0,0 @@ -[libdefaults] - default_realm = Y.COM - default_keytab_name = FILE:%(tier2)s/krb5.keytab - default_tkt_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - default_tgs_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - dns_lookup_kdc = true - dns_lookup_realm = false - - -[kdcdefaults] - no_host_referral = host1 testHost host2 - host_based_services = * - -[realms] - Y.COM = { - kdc = %(localFQDN)s:7777 - } - -[domain_realm] - mybox.mit.edu = Z.COM - %(localFQDN)s = Y.COM - .y.com = Y.COM - y.com = Y.COM - -[dbmodules] - db_module_dir = %(srcdir)s/plugins/kdb/db2 - -[logging] - kdc = FILE:%(tier2)s/krb5kdc.log - diff --git a/src/tests/kdc_realm/input_conf/krb5_priKDC_6_template.conf b/src/tests/kdc_realm/input_conf/krb5_priKDC_6_template.conf deleted file mode 100755 index b67bbbbc99..0000000000 --- a/src/tests/kdc_realm/input_conf/krb5_priKDC_6_template.conf +++ /dev/null @@ -1,31 +0,0 @@ -[libdefaults] - default_realm = Y.COM - default_keytab_name = FILE:%(tier2)s/krb5.keytab - default_tkt_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - default_tgs_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - dns_lookup_kdc = true - dns_lookup_realm = false - - -[kdcdefaults] -# no_host_referral = * - host_based_services = * - -[realms] - Y.COM = { - kdc = %(localFQDN)s:7777 - no_host_referral = testHost - } - -[domain_realm] - mybox.mit.edu = Z.COM - %(localFQDN)s = Y.COM - .y.com = Y.COM - y.com = Y.COM - -[dbmodules] - db_module_dir = %(srcdir)s/plugins/kdb/db2 - -[logging] - kdc = FILE:%(tier2)s/krb5kdc.log - diff --git a/src/tests/kdc_realm/input_conf/krb5_priKDC_7_template.conf b/src/tests/kdc_realm/input_conf/krb5_priKDC_7_template.conf deleted file mode 100755 index ed0ddc7f8f..0000000000 --- a/src/tests/kdc_realm/input_conf/krb5_priKDC_7_template.conf +++ /dev/null @@ -1,29 +0,0 @@ -[libdefaults] - default_realm = Y.COM - default_keytab_name = FILE:%(tier2)s/krb5.keytab - default_tkt_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - default_tgs_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - dns_lookup_kdc = true - dns_lookup_realm = false - - -[kdcdefaults] - host_based_services = testHost - -[realms] - Y.COM = { - kdc = %(localFQDN)s:7777 - } - -[domain_realm] - mybox.mit.edu = Z.COM - %(localFQDN)s = Y.COM - .y.com = Y.COM - y.com = Y.COM - -[dbmodules] - db_module_dir = %(srcdir)s/plugins/kdb/db2 - -[logging] - kdc = FILE:%(tier2)s/krb5kdc.log - diff --git a/src/tests/kdc_realm/input_conf/krb5_priKDC_8_template.conf b/src/tests/kdc_realm/input_conf/krb5_priKDC_8_template.conf deleted file mode 100755 index fa01e38169..0000000000 --- a/src/tests/kdc_realm/input_conf/krb5_priKDC_8_template.conf +++ /dev/null @@ -1,33 +0,0 @@ -[libdefaults] - default_realm = Y.COM - default_keytab_name = FILE:%(tier2)s/krb5.keytab - default_tkt_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - default_tgs_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - dns_lookup_kdc = true - dns_lookup_realm = false - - -[kdcdefaults] - host_based_services = host1 - - -[realms] - Y.COM = { - kdc = %(localFQDN)s:7777 - host_based_services = host2 -# host_based_services = testHost - host_based_services = host3 - } - -[domain_realm] - mybox.mit.edu = Z.COM - %(localFQDN)s = Y.COM - .y.com = Y.COM - y.com = Y.COM - -[dbmodules] - db_module_dir = %(srcdir)s/plugins/kdb/db2 - -[logging] - kdc = FILE:%(tier2)s/krb5kdc.log - diff --git a/src/tests/kdc_realm/input_conf/krb5_priKDC_template.conf b/src/tests/kdc_realm/input_conf/krb5_priKDC_template.conf deleted file mode 100755 index 4066de3feb..0000000000 --- a/src/tests/kdc_realm/input_conf/krb5_priKDC_template.conf +++ /dev/null @@ -1,30 +0,0 @@ -[libdefaults] - default_realm = Y.COM - default_keytab_name = FILE:%(tier2)s/krb5.keytab - default_tkt_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - default_tgs_enctypes = aes256-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc - dns_lookup_kdc = true - dns_lookup_realm = false - - -[kdcdefaults] -# no_host_referral = * - host_based_services = * - -[realms] - Y.COM = { - kdc = %(localFQDN)s:7777 - } - -[domain_realm] - mybox.mit.edu = Z.COM - %(localFQDN)s = Y.COM - .y.com = Y.COM - y.com = Y.COM - -[dbmodules] - db_module_dir = %(srcdir)s/plugins/kdb/db2 - -[logging] - kdc = FILE:%(tier2)s/krb5kdc.log - diff --git a/src/tests/kdc_realm/input_conf/krb5_ref_template.conf b/src/tests/kdc_realm/input_conf/krb5_ref_template.conf deleted file mode 100755 index ccfc2d7dec..0000000000 --- a/src/tests/kdc_realm/input_conf/krb5_ref_template.conf +++ /dev/null @@ -1,27 +0,0 @@ -[libdefaults] - default_realm = Z.COM - default_keytab_name = FILE:%(tier1)s/krb5.keytab - default_tkt_enctypes = aes128-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc aes256-cts-hmac-sha1-96 aes128-cts - default_tgs_enctypes = aes128-cts-hmac-sha1-96 des3-hmac-sha1 des-cbc-crc aes256-cts-hmac-sha1-96 aes128-cts - dns_lookup_kdc = true - dns_lookup_realm = false - -[realms] - Z.COM = { - admin_server = KERBEROS.Z.COM - kdc = %(localFQDN)s:7778 - default_domain = Z.COM - } - -[domain_realm] - %(localFQDN)s=Z.COM - .%(localFQDN)s=Z.COM - .z.com = Z.COM - z.com = Z.COM - -[dbmodules] - db_module_dir = %(srcdir)s/plugins/kdb/db2 - -[logging] - kdc = FILE:%(tier1)s/krb5kdc.log - diff --git a/src/tests/kdc_realm/input_conf/test_KDCs.conf b/src/tests/kdc_realm/input_conf/test_KDCs.conf deleted file mode 100644 index cfb6f87ff8..0000000000 --- a/src/tests/kdc_realm/input_conf/test_KDCs.conf +++ /dev/null @@ -1,9 +0,0 @@ -krb5_priKDC_template.conf,0 -krb5_priKDC_1_template.conf,1 -krb5_priKDC_2_template.conf,0 -krb5_priKDC_3_template.conf,0 -krb5_priKDC_4_template.conf,1 -krb5_priKDC_5_template.conf,1 -krb5_priKDC_6_template.conf,1 -krb5_priKDC_7_template.conf,0 -krb5_priKDC_8_template.conf,0 \ No newline at end of file diff --git a/src/tests/kdc_realm/input_conf/test_KDCs_1.conf b/src/tests/kdc_realm/input_conf/test_KDCs_1.conf deleted file mode 100644 index e66425e4d0..0000000000 --- a/src/tests/kdc_realm/input_conf/test_KDCs_1.conf +++ /dev/null @@ -1,9 +0,0 @@ -krb5_priKDC_template.conf,0 -krb5_priKDC_1_template.conf,1 -krb5_priKDC_2_template.conf,0 -krb5_priKDC_3_template.conf,1 -krb5_priKDC_4_template.conf,1 -krb5_priKDC_5_template.conf,1 -krb5_priKDC_6_template.conf,1 -krb5_priKDC_7_template.conf,0 -krb5_priKDC_8_template.conf,1 diff --git a/src/tests/kdc_realm/input_conf/test_princs.conf b/src/tests/kdc_realm/input_conf/test_princs.conf deleted file mode 100644 index fb2c9fcfd7..0000000000 --- a/src/tests/kdc_realm/input_conf/test_princs.conf +++ /dev/null @@ -1 +0,0 @@ -princUser/admin \ No newline at end of file diff --git a/src/tests/kdc_realm/input_conf/test_setup.conf b/src/tests/kdc_realm/input_conf/test_setup.conf deleted file mode 100644 index 2b3309a45e..0000000000 --- a/src/tests/kdc_realm/input_conf/test_setup.conf +++ /dev/null @@ -1,6 +0,0 @@ -sandboxDir=kdc_realm/sandbox -testKDCconf=test_KDCs.conf -testKDCconf_1=test_KDCs_1.conf -principals=test_princs.conf -tier1=sandbox/tier1 -tier2=sandbox/tier2 diff --git a/src/tests/kdc_realm/kdcref.py b/src/tests/kdc_realm/kdcref.py deleted file mode 100755 index 217c38a0ea..0000000000 --- a/src/tests/kdc_realm/kdcref.py +++ /dev/null @@ -1,335 +0,0 @@ -import os -import sys -import time -from subprocess import Popen, PIPE, STDOUT -import signal -import socket -import errno -import shutil - - -class LaunchError(Exception): - """ Exception class to signal startup error""" - pass - -class AdminError(Exception): - """ Exception class to handle admin errors""" - pass - - -class Launcher: - - def __init__(self, path): - self._buildDir = path - self._confDir = '%s/tests/kdc_realm/input_conf' % self._buildDir - confFile ='%s/test_setup.conf' % self._confDir - confParams = self._testSetup(confFile) - self._sandboxDir = '%s/%s' % (self._buildDir,confParams['sandboxDir']) - self._sandboxTier1 = '%s/%s' % (self._sandboxDir, 'tier1') - self._sandboxTier2 = '%s/%s' % (self._sandboxDir, 'tier2') - self._configurations = self._readServerConfiguration('%s/%s' % (self._confDir,confParams['testKDCconf'])) - self._configurations_1 = self._readServerConfiguration('%s/%s' % (self._confDir,confParams['testKDCconf_1'])) - self._principals = self._readTestInputs('%s/%s' % (self._confDir,confParams['principals'])) - os.environ["LD_LIBRARY_PATH"] = '%s/lib' % self._buildDir - self._pidRefKDC = 0 - self._pidMap = dict() - self._initialized = False - self._tier1Init = False - self._tier2Init = False - self._vars = {'srcdir': self._buildDir, - 'tier1':self._sandboxTier1, - 'tier2':self._sandboxTier2, - 'localFQDN':socket.getfqdn()} - - def _launchKDC(self, tierId, args, env): - """ - Launching KDC server - """ - cmd = '%s/kdc/krb5kdc' % self._buildDir - handle = Popen([cmd, args], env=env) - time.sleep(1) - # make sure that process is running - rc = handle.poll() - if rc is None: - print 'KDC server has been launched: pid=%s, tier=%s' % (handle.pid, tierId) - self._pidMap[handle.pid] = 1 - return handle.pid - else: - raise LaunchError, 'Failed to launch kdc server' - - - def _prepSandbox(self): - for tierId in range(1,3): - tierdir = '%s/tier%i' % (self._sandboxDir, tierId) - if os.path.exists(tierdir): - shutil.rmtree(tierdir) - os.makedirs(tierdir, 0777) - - - def _kill(self, pid = None): - """ - Kill specific process or group saved in pidMap - """ - if pid is None: - target = self._pidMap.keys() - else: - target = [pid] - for p in target: - if p in self._pidMap: - del self._pidMap[p] - try: - os.kill(p, signal.SIGKILL) - except OSError: - pass - - - def _createDB(self, env): - """ - Creating DB - """ - cmd = '%s/kadmin/dbutil/kdb5_util' % self._buildDir - p = Popen([cmd, 'create', '-s'], env = env, stdin=PIPE, stdout=PIPE, stderr=PIPE) - (out, err) = p.communicate('a\na\n') - if p.returncode != 0: - err_msg = 'Failed to create DB: %s' % err - raise LaunchError, err_msg - - - def _launchClient(self, args, env, princType): - """ - kinit & kvno - """ - self._addPrinc(args, env) - p = Popen(['kinit', args], env = env, stdin=PIPE, stdout=PIPE, stderr=PIPE) - (out, err) = p.communicate('a\n') - if int(p.wait()) == 0: - self._initialized = True - else: - err_msg = 'Failed to kinit client: %s' % err - raise AdminError, err_msg - - # testHost', 'mybox.mit.edu is a srv defined in referral KDC. Get its kvno - cmd = '%s/clients/kvno/kvno' % self._buildDir - if princType == 0: - handle = Popen([cmd, '-C', '-S', 'testHost', 'mybox.mit.edu'], - env = env, stdin=PIPE, stdout=PIPE, stderr=PIPE) - if princType == 1: - handle = Popen([cmd, '-C', '-u', 'testHost/mybox.mit.edu'], - env = env, stdin=PIPE, stdout=PIPE, stderr=PIPE) - (out, err) = handle.communicate() - handle.wait() - print 'kvno return code: %s' % handle.returncode - - # Cleanup cached info - p = Popen(['kdestroy'], env = env, stdin=PIPE, stdout=PIPE, stderr=PIPE) - (out, err) = p.communicate() - if int(p.wait()) != 0: - err_msg = 'Failed to kdestroy cashed tickets: %s' % err - raise AdminError, err_msg - - return handle.returncode - - - def _addPrinc(self, args, env): - """ - Add Principal - """ - msg = 'addprinc -pw a %s' % args - p = Popen(['kadmin.local' ], env = env, stdin=PIPE, stdout=PIPE, stderr=PIPE) - (out, err) = p.communicate(msg) - if int(p.wait()) != 0: - err_msg = 'Failed to add principal %s' % err_msg - raise AdminError, err_msg - - - def _crossRealm(self, r_local, r_remote, env): - """ - Croos-realm setup - """ - msg = 'addprinc -pw a krbtgt/%s@%s' % (r_remote, r_local) - p = Popen(['kadmin.local' ], env = env, stdin=PIPE, stdout=PIPE, stderr=PIPE) - (out, err) = p.communicate(msg) - if int(p.wait()) != 0: - err_msg = 'Failed to set cross-realm: %s' % err - raise AdminError, err_msg - - msg = 'addprinc -pw a krbtgt/%s@%s' % (r_local, r_remote) - p = Popen(['kadmin.local' ], env = env, stdin=PIPE, stdout=PIPE, stderr=PIPE) - (out, err) = p.communicate(msg) - if int(p.wait()) != 0: - err_msg = 'Failed to set cross-realm: %s' % err - raise AdminError, err_msg - - - def _launchRefKDC(self,test_env): - """ - Launch referral KDC - """ - test_env["KRB5_CONFIG"] = '%s/krb5.conf' % self._sandboxTier1 - test_env["KRB5_KDC_PROFILE"] = '%s/kdc.conf' % self._sandboxTier1 - server_args = '-n' - if self._tier1Init == False: - # Create adequate to the environment config files - self._createFileFromTemplate('%s' % test_env["KRB5_CONFIG"], - '%s/%s' % (self._confDir,'krb5_ref_template.conf'), - self._vars) - self._createFileFromTemplate('%s' % test_env["KRB5_KDC_PROFILE"], - '%s/%s' % (self._confDir, 'kdc_ref_template.conf'), - self._vars) - - # create DB for KDC to be referred to - pid = self._createDB(test_env) - - # launch KDC to be referred to - self._pidRefKDC = self._launchKDC(1, server_args, test_env) - - # The tests run against 'testHost/mybox.mit.edu' srv. - args = 'testHost/mybox.mit.edu' - self._addPrinc(args, test_env) - self._crossRealm('Z.COM', 'Y.COM', test_env) - self._tier1Init = True - - - def _launchTestingPair(self, srvParam,clntParam, princType): - # launch KDC - server_env = os.environ.copy() - server_env["KRB5_KDC_PROFILE"] = '%s/kdc.conf' % self._sandboxTier2 - server_env["KRB5_CONFIG"] = '%s/krb5_KDC.conf' % self._sandboxTier2 - server_args = '-n' - self._createFileFromTemplate('%s' % server_env["KRB5_CONFIG"], - '%s/%s' % (self._confDir,srvParam), - self._vars) - self._createFileFromTemplate('%s' % server_env["KRB5_KDC_PROFILE"], - '%s/%s' % (self._confDir,'kdc_pri_template.conf'), - self._vars) - if self._tier2Init == False: - pid = self._createDB(server_env) - self._crossRealm('Y.COM', 'Z.COM', server_env) - self._tier2Init = True - - server = self._launchKDC( 2, server_args, server_env) - - # launch client - client_env = os.environ.copy() - client_env["KRB5_CONFIG"] = '%s/krb5_CL.conf' % self._sandboxTier2 - self._createFileFromTemplate('%s' % client_env["KRB5_CONFIG"], - '%s/%s' % (self._confDir, 'krb5_priCL_template.conf'), - self._vars) - client_env["KRB5_KDC_PROFILE"] = server_env["KRB5_KDC_PROFILE"] - rc = self._launchClient(clntParam, client_env, princType) - self._kill(server) - return rc - - - def run(self, args): - """ - run the test - """ - test_env = os.environ.copy() - test_env["SRCDIR"] = '%s' % self._buildDir - - # create sandbox file directory if it does not exist - self._prepSandbox() - - if self._tier1Init == False: - self._launchRefKDC(test_env) - - result = dict() - for princs in self._principals: - for conf in self._configurations: - rc = self._launchTestingPair( conf['confName'], princs % self._vars, 0) - result[conf['confName']] = {'expected':conf['expected'], 'actual':rc} - print 'Test code for configuration %s principal %s type KRB5_NT_SRV_HST: %s' % (conf, princs, rc) - self.printTestResults(result) - for conf in self._configurations_1: - rc = self._launchTestingPair( conf['confName'], princs % self._vars, 1) - result[conf['confName']] = {'expected':conf['expected'], 'actual':rc} - print 'Test code for configuration %s principal %si type KRB5_NT_UNKNOWN: %s' % (conf, princs, rc) - self.printTestResults(result) - return result - - - def _readTestInputs(self, path): - f = open(path, 'r') - result = [] - for line in f: - result.append(line.rstrip()) - f.close() - return result - - - def _readServerConfiguration(self, path): - f = open(path, 'r') - result = [] - for line in f: - fields = (line.rstrip()).split(',') - result.append({'confName':fields[0],'expected':fields[1]}) - f.close() - return result - - - def _testSetup(self, path): - print path - f = open(path, 'r') - result = dict() - for line in f: - try: - (a,v) = line.rstrip().split('=') - result[a]=v - except: - print 'bad format for config file, line: %s' % line - return None - f.close() - return result - - - def _createFileFromTemplate(self, outpath, template, vars): - fin = open(template, 'r') - result = fin.read() % vars - fin.close() - fout = open(outpath, 'w') - fout.write(result) - fout.close() - - - def _getDNS(self): - print socket.getfqdn() - - - def printTestResults(self, testResults): - success_count = 0 - fail_count = 0 - print '\n' - print '------------------- Test Results ------------------------' - for (conf_name, result) in testResults.iteritems(): - if int(result['expected']) == int(result['actual']): - print 'Test for configuration %s has succeeded' % conf_name - success_count += 1 - else: - print 'Test for configuration %s has failed' % conf_name - fail_count += 1 - - print '------------------- Summary -----------------------------' - print 'Of %i tests %i failed, %i succeeded' % (len(testResults), - fail_count, - success_count) - print '---------------------------------------------------------' - - - def clean(self): - self._kill() - - -if __name__ == '__main__': - src_path = "%s/.." % os.environ["PWD"] - print "SOURCE PATH ==>" , src_path - test = None - try: - test = Launcher(src_path) - result = test.run('main') - test.clean() - - except: - if test is not None: - test.clean() - raise