server/test/unittest_ldapuser.py
changeset 6984 528e44ef570c
parent 6983 0459635ce666
child 6991 eb2ba251f093
equal deleted inserted replaced
6983:0459635ce666 6984:528e44ef570c
    25 from socket import socket, error as socketerror
    25 from socket import socket, error as socketerror
    26 
    26 
    27 from logilab.common.testlib import TestCase, unittest_main, mock_object
    27 from logilab.common.testlib import TestCase, unittest_main, mock_object
    28 from cubicweb.devtools.testlib import CubicWebTC
    28 from cubicweb.devtools.testlib import CubicWebTC
    29 from cubicweb.devtools.repotest import RQLGeneratorTC
    29 from cubicweb.devtools.repotest import RQLGeneratorTC
       
    30 from cubicweb.devtools.httptest import get_available_port
    30 
    31 
    31 from cubicweb.server.sources.ldapuser import *
    32 from cubicweb.server.sources.ldapuser import *
    32 
    33 
    33 SYT = 'syt'
    34 SYT = 'syt'
    34 SYT_EMAIL = 'Sylvain Thenault'
    35 SYT_EMAIL = 'Sylvain Thenault'
    99         cmdline = "/usr/sbin/slapadd -f %s -l %s -c" % (slapdconf, ldiffile)
   100         cmdline = "/usr/sbin/slapadd -f %s -l %s -c" % (slapdconf, ldiffile)
   100         subprocess.call(cmdline, shell=True)
   101         subprocess.call(cmdline, shell=True)
   101 
   102 
   102 
   103 
   103     #ldapuri = 'ldapi://' + join(basedir, "ldapi").replace('/', '%2f')
   104     #ldapuri = 'ldapi://' + join(basedir, "ldapi").replace('/', '%2f')
   104     for port in range(9000, 9100):
   105     port = get_available_port(xrange(9000, 9100))
   105         try:
       
   106             socket().bind(('localhost', port))
       
   107         except socketerror, e:
       
   108             if e.errno == 98: # Address already in use
       
   109                 pass
       
   110             else:
       
   111                 raise
       
   112         else:
       
   113             break
       
   114     else:
       
   115         raise Exception("Can't find a free TCP port on localhost")
       
   116 
       
   117     host = 'localhost:%s' % port
   106     host = 'localhost:%s' % port
   118     ldapuri = 'ldap://%s' % host
   107     ldapuri = 'ldap://%s' % host
   119     cmdline = ["/usr/sbin/slapd", "-f",  slapdconf,  "-h",  ldapuri, "-d", "0"]
   108     cmdline = ["/usr/sbin/slapd", "-f",  slapdconf,  "-h",  ldapuri, "-d", "0"]
   120     print "Starting slapd on", ldapuri
   109     print "Starting slapd on", ldapuri
   121     slapd_process = subprocess.Popen(cmdline)
   110     slapd_process = subprocess.Popen(cmdline)
   129 
   118 
   130 def terminate_slapd():
   119 def terminate_slapd():
   131     global slapd_process
   120     global slapd_process
   132     if slapd_process.returncode is None:
   121     if slapd_process.returncode is None:
   133         print "terminating slapd"
   122         print "terminating slapd"
   134         slapd_process.terminate()
   123         if hasattr(slapd_process, 'terminate'):
       
   124             slapd_process.terminate()
       
   125         else:
       
   126             import os, signal
       
   127             os.kill(slapd_process.pid, signal.SIGTERM)
   135         slapd_process.wait()
   128         slapd_process.wait()
   136         print "DONE"
   129         print "DONE"
   137 
   130 
   138     del slapd_process
   131     del slapd_process
   139 
   132