48 confstream.write(confin % {'apphome': config.apphome, 'testdir': slapddir}) |
49 confstream.write(confin % {'apphome': config.apphome, 'testdir': slapddir}) |
49 confstream.close() |
50 confstream.close() |
50 # fill ldap server with some data |
51 # fill ldap server with some data |
51 ldiffile = join(config.apphome, "ldap_test.ldif") |
52 ldiffile = join(config.apphome, "ldap_test.ldif") |
52 config.info('Initing ldap database') |
53 config.info('Initing ldap database') |
53 cmdline = "/usr/sbin/slapadd -f %s -l %s -c" % (slapdconf, ldiffile) |
54 cmdline = ['/usr/sbin/slapadd', '-f', slapdconf, '-l', ldiffile, '-c'] |
54 subprocess.call(cmdline, shell=True) |
55 PIPE = subprocess.PIPE |
|
56 slapproc = subprocess.Popen(cmdline, stdout=PIPE, stderr=PIPE) |
|
57 stdout, stderr = slapproc.communicate() |
|
58 if slapproc.returncode: |
|
59 print >> sys.stderr, ('slapadd returned with status: %s' |
|
60 % slapproc.returncode) |
|
61 sys.stdout.write(stdout) |
|
62 sys.stderr.write(stderr) |
55 |
63 |
56 #ldapuri = 'ldapi://' + join(basedir, "ldapi").replace('/', '%2f') |
64 #ldapuri = 'ldapi://' + join(basedir, "ldapi").replace('/', '%2f') |
57 port = get_available_port(xrange(9000, 9100)) |
65 port = get_available_port(xrange(9000, 9100)) |
58 host = 'localhost:%s' % port |
66 host = 'localhost:%s' % port |
59 ldapuri = 'ldap://%s' % host |
67 ldapuri = 'ldap://%s' % host |
60 cmdline = ["/usr/sbin/slapd", "-f", slapdconf, "-h", ldapuri, "-d", "0"] |
68 cmdline = ["/usr/sbin/slapd", "-f", slapdconf, "-h", ldapuri, "-d", "0"] |
61 config.info('Starting slapd:', ' '.join(cmdline)) |
69 config.info('Starting slapd:', ' '.join(cmdline)) |
62 cls.slapd_process = subprocess.Popen(cmdline) |
70 PIPE = subprocess.PIPE |
|
71 cls.slapd_process = subprocess.Popen(cmdline, stdout=PIPE, stderr=PIPE) |
63 time.sleep(0.2) |
72 time.sleep(0.2) |
64 if cls.slapd_process.poll() is None: |
73 if cls.slapd_process.poll() is None: |
65 config.info('slapd started with pid %s', cls.slapd_process.pid) |
74 config.info('slapd started with pid %s', cls.slapd_process.pid) |
66 else: |
75 else: |
67 raise EnvironmentError('Cannot start slapd with cmdline="%s" (from directory "%s")' % |
76 raise EnvironmentError('Cannot start slapd with cmdline="%s" (from directory "%s")' % |
76 if hasattr(cls.slapd_process, 'terminate'): |
85 if hasattr(cls.slapd_process, 'terminate'): |
77 cls.slapd_process.terminate() |
86 cls.slapd_process.terminate() |
78 else: |
87 else: |
79 import os, signal |
88 import os, signal |
80 os.kill(cls.slapd_process.pid, signal.SIGTERM) |
89 os.kill(cls.slapd_process.pid, signal.SIGTERM) |
81 cls.slapd_process.wait() |
90 stdout, stderr = cls.slapd_process.communicate() |
|
91 if cls.slapd_process.returncode: |
|
92 print >> sys.stderr, ('slapd returned with status: %s' |
|
93 % cls.slapd_process.returncode) |
|
94 sys.stdout.write(stdout) |
|
95 sys.stderr.write(stderr) |
82 config.info('DONE') |
96 config.info('DONE') |
83 |
97 |
84 class LDAPTestBase(CubicWebTC): |
98 class LDAPTestBase(CubicWebTC): |
85 loglevel = 'ERROR' |
99 loglevel = 'ERROR' |
86 |
100 |