server/test/unittest_ldapuser.py
branchstable
changeset 6986 18343456ee49
parent 6985 dda970c8a315
child 6991 eb2ba251f093
child 7078 bad26a22fe29
equal deleted inserted replaced
6985:dda970c8a315 6986:18343456ee49
    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'
   100         cmdline = "/usr/sbin/slapadd -f %s -l %s -c" % (slapdconf, ldiffile)
   101         cmdline = "/usr/sbin/slapadd -f %s -l %s -c" % (slapdconf, ldiffile)
   101         subprocess.call(cmdline, shell=True)
   102         subprocess.call(cmdline, shell=True)
   102 
   103 
   103 
   104 
   104     #ldapuri = 'ldapi://' + join(basedir, "ldapi").replace('/', '%2f')
   105     #ldapuri = 'ldapi://' + join(basedir, "ldapi").replace('/', '%2f')
   105     for port in range(9000, 9100):
   106     port = get_available_port(xrange(9000, 9100))
   106         try:
       
   107             socket().bind(('localhost', port))
       
   108         except socketerror, e:
       
   109             if e.errno == 98: # Address already in use
       
   110                 pass
       
   111             else:
       
   112                 raise
       
   113         else:
       
   114             break
       
   115     else:
       
   116         raise Exception("Can't find a free TCP port on localhost")
       
   117 
       
   118     host = 'localhost:%s' % port
   107     host = 'localhost:%s' % port
   119     ldapuri = 'ldap://%s' % host
   108     ldapuri = 'ldap://%s' % host
   120     cmdline = ["/usr/sbin/slapd", "-f",  slapdconf,  "-h",  ldapuri, "-d", "0"]
   109     cmdline = ["/usr/sbin/slapd", "-f",  slapdconf,  "-h",  ldapuri, "-d", "0"]
   121     print "Starting slapd on", ldapuri
   110     print "Starting slapd on", ldapuri
   122     slapd_process = subprocess.Popen(cmdline)
   111     slapd_process = subprocess.Popen(cmdline)
   130 
   119 
   131 def terminate_slapd():
   120 def terminate_slapd():
   132     global slapd_process
   121     global slapd_process
   133     if slapd_process.returncode is None:
   122     if slapd_process.returncode is None:
   134         print "terminating slapd"
   123         print "terminating slapd"
   135         slapd_process.terminate()
   124         if hasattr(slapd_process, 'terminate'):
       
   125             slapd_process.terminate()
       
   126         else:
       
   127             import os, signal
       
   128             os.kill(slapd_process.pid, signal.SIGTERM)
   136         slapd_process.wait()
   129         slapd_process.wait()
   137         print "DONE"
   130         print "DONE"
   138 
   131 
   139     del slapd_process
   132     del slapd_process
   140 
   133