report.html

Report generated on 22-Jul-2018 at 22:10:00 by pytest-html v1.19.0

Environment

389-ds-base 1.4.0.13-20180722git345221c.fc28
Packages {'pytest': '3.6.3', 'py': '1.5.4', 'pluggy': '0.6.0'}
Platform Linux-4.17.3-200.fc28.x86_64-x86_64-with-fedora-28-Twenty_Eight
Plugins {'metadata': '1.7.0', 'html': '1.19.0'}
Python 3.6.5
cyrus-sasl 2.1.27-0.2rc7.fc28
nspr 4.19.0-1.fc28
nss 3.38.0-1.0.fc28
openldap 2.4.46-2.fc28

Summary

775 tests ran in 8858.60 seconds.

701 passed, 17 skipped, 70 failed, 5 errors, 4 expected failures, 0 unexpected passes

Results

Result Test Duration Links
Error suites/gssapi/simple_gssapi_test.py::test_gssapi_bind::setup 6.53
request = <SubRequest 'topology_st_gssapi' for <Function 'test_gssapi_bind'>>

@pytest.fixture(scope="module")
def topology_st_gssapi(request):
"""Create a DS standalone instance with GSSAPI enabled.

This will alter the instance to remove the secure port, to allow
GSSAPI to function.
"""
hostname = socket.gethostname().split('.', 1)

# Assert we have a domain setup in some kind.
assert len(hostname) == 2

REALM = hostname[1].upper()

topology = create_topology({ReplicaRole.STANDALONE: 1})

# Fix the hostname.
topology.standalone.host = socket.gethostname()

krb = MitKrb5(realm=REALM, debug=DEBUGGING)

# Destroy existing realm.
> if krb.check_realm():

/usr/lib/python3.6/site-packages/lib389/topologies.py:278:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/mit_krb5.py:67: in check_realm
env=self.krb_env, stdout=PIPE, stderr=PIPE)
/usr/lib64/python3.6/subprocess.py:709: in __init__
restore_signals, start_new_session)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <subprocess.Popen object at 0x7fbf0afde390>
args = ['/usr/sbin/kadmin.local', '-r', 'EXAMPLE.COM', '-q', 'list_principals']
executable = b'/usr/sbin/kadmin.local', preexec_fn = None, close_fds = True
pass_fds = (), cwd = None, env = {}, startupinfo = None, creationflags = 0
shell = False, p2cread = -1, p2cwrite = -1, c2pread = 10, c2pwrite = 11
errread = 12, errwrite = 13, restore_signals = True, start_new_session = False

def _execute_child(self, args, executable, preexec_fn, close_fds,
pass_fds, cwd, env,
startupinfo, creationflags, shell,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite,
restore_signals, start_new_session):
"""Execute program (POSIX version)"""

if isinstance(args, (str, bytes)):
args = [args]
else:
args = list(args)

if shell:
args = ["/bin/sh", "-c"] + args
if executable:
args[0] = executable

if executable is None:
executable = args[0]
orig_executable = executable

# For transferring possible exec failure from child to parent.
# Data format: "exception name:hex errno:description"
# Pickle is not used; it is complex and involves memory allocation.
errpipe_read, errpipe_write = os.pipe()
# errpipe_write must not be in the standard io 0, 1, or 2 fd range.
low_fds_to_close = []
while errpipe_write < 3:
low_fds_to_close.append(errpipe_write)
errpipe_write = os.dup(errpipe_write)
for low_fd in low_fds_to_close:
os.close(low_fd)
try:
try:
# We must avoid complex work that could involve
# malloc or free in the child process to avoid
# potential deadlocks, thus we do all this here.
# and pass it to fork_exec()

if env is not None:
env_list = []
for k, v in env.items():
k = os.fsencode(k)
if b'=' in k:
raise ValueError("illegal environment variable name")
env_list.append(k + b'=' + os.fsencode(v))
else:
env_list = None # Use execv instead of execve.
executable = os.fsencode(executable)
if os.path.dirname(executable):
executable_list = (executable,)
else:
# This matches the behavior of os._execvpe().
executable_list = tuple(
os.path.join(os.fsencode(dir), executable)
for dir in os.get_exec_path(env))
fds_to_keep = set(pass_fds)
fds_to_keep.add(errpipe_write)
self.pid = _posixsubprocess.fork_exec(
args, executable_list,
close_fds, tuple(sorted(map(int, fds_to_keep))),
cwd, env_list,
p2cread, p2cwrite, c2pread, c2pwrite,
errread, errwrite,
errpipe_read, errpipe_write,
restore_signals, start_new_session, preexec_fn)
self._child_created = True
finally:
# be sure the FD is closed no matter what
os.close(errpipe_write)

# self._devnull is not always defined.
devnull_fd = getattr(self, '_devnull', None)
if p2cread != -1 and p2cwrite != -1 and p2cread != devnull_fd:
os.close(p2cread)
if c2pwrite != -1 and c2pread != -1 and c2pwrite != devnull_fd:
os.close(c2pwrite)
if errwrite != -1 and errread != -1 and errwrite != devnull_fd:
os.close(errwrite)
if devnull_fd is not None:
os.close(devnull_fd)
# Prevent a double close of these fds from __init__ on error.
self._closed_child_pipe_fds = True

# Wait for exec to fail or succeed; possibly raising an
# exception (limited in size)
errpipe_data = bytearray()
while True:
part = os.read(errpipe_read, 50000)
errpipe_data += part
if not part or len(errpipe_data) > 50000:
break
finally:
# be sure the FD is closed no matter what
os.close(errpipe_read)

if errpipe_data:
try:
pid, sts = os.waitpid(self.pid, 0)
if pid == self.pid:
self._handle_exitstatus(sts)
else:
self.returncode = sys.maxsize
except ChildProcessError:
pass

try:
exception_name, hex_errno, err_msg = (
errpipe_data.split(b':', 2))
# The encoding here should match the encoding
# written in by the subprocess implementations
# like _posixsubprocess
err_msg = err_msg.decode()
except ValueError:
exception_name = b'SubprocessError'
hex_errno = b'0'
err_msg = 'Bad exception data from child: {!r}'.format(
bytes(errpipe_data))
child_exception_type = getattr(
builtins, exception_name.decode('ascii'),
SubprocessError)
if issubclass(child_exception_type, OSError) and hex_errno:
errno_num = int(hex_errno, 16)
child_exec_never_called = (err_msg == "noexec")
if child_exec_never_called:
err_msg = ""
# The error must be from chdir(cwd).
err_filename = cwd
else:
err_filename = orig_executable
if errno_num != 0:
err_msg = os.strerror(errno_num)
if errno_num == errno.ENOENT:
err_msg += ': ' + repr(err_filename)
> raise child_exception_type(errno_num, err_msg, err_filename)
E FileNotFoundError: [Errno 2] No such file or directory: '/usr/sbin/kadmin.local': '/usr/sbin/kadmin.local'

/usr/lib64/python3.6/subprocess.py:1344: FileNotFoundError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.
Error suites/gssapi/simple_gssapi_test.py::test_invalid_sasl_map::setup 0.00
request = <SubRequest 'topology_st_gssapi' for <Function 'test_gssapi_bind'>>

@pytest.fixture(scope="module")
def topology_st_gssapi(request):
"""Create a DS standalone instance with GSSAPI enabled.

This will alter the instance to remove the secure port, to allow
GSSAPI to function.
"""
hostname = socket.gethostname().split('.', 1)

# Assert we have a domain setup in some kind.
assert len(hostname) == 2

REALM = hostname[1].upper()

topology = create_topology({ReplicaRole.STANDALONE: 1})

# Fix the hostname.
topology.standalone.host = socket.gethostname()

krb = MitKrb5(realm=REALM, debug=DEBUGGING)

# Destroy existing realm.
> if krb.check_realm():

/usr/lib/python3.6/site-packages/lib389/topologies.py:278:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/mit_krb5.py:67: in check_realm
env=self.krb_env, stdout=PIPE, stderr=PIPE)
/usr/lib64/python3.6/subprocess.py:709: in __init__
restore_signals, start_new_session)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <subprocess.Popen object at 0x7fbf0afde390>
args = ['/usr/sbin/kadmin.local', '-r', 'EXAMPLE.COM', '-q', 'list_principals']
executable = b'/usr/sbin/kadmin.local', preexec_fn = None, close_fds = True
pass_fds = (), cwd = None, env = {}, startupinfo = None, creationflags = 0
shell = False, p2cread = -1, p2cwrite = -1, c2pread = 10, c2pwrite = 11
errread = 12, errwrite = 13, restore_signals = True, start_new_session = False

def _execute_child(self, args, executable, preexec_fn, close_fds,
pass_fds, cwd, env,
startupinfo, creationflags, shell,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite,
restore_signals, start_new_session):
"""Execute program (POSIX version)"""

if isinstance(args, (str, bytes)):
args = [args]
else:
args = list(args)

if shell:
args = ["/bin/sh", "-c"] + args
if executable:
args[0] = executable

if executable is None:
executable = args[0]
orig_executable = executable

# For transferring possible exec failure from child to parent.
# Data format: "exception name:hex errno:description"
# Pickle is not used; it is complex and involves memory allocation.
errpipe_read, errpipe_write = os.pipe()
# errpipe_write must not be in the standard io 0, 1, or 2 fd range.
low_fds_to_close = []
while errpipe_write < 3:
low_fds_to_close.append(errpipe_write)
errpipe_write = os.dup(errpipe_write)
for low_fd in low_fds_to_close:
os.close(low_fd)
try:
try:
# We must avoid complex work that could involve
# malloc or free in the child process to avoid
# potential deadlocks, thus we do all this here.
# and pass it to fork_exec()

if env is not None:
env_list = []
for k, v in env.items():
k = os.fsencode(k)
if b'=' in k:
raise ValueError("illegal environment variable name")
env_list.append(k + b'=' + os.fsencode(v))
else:
env_list = None # Use execv instead of execve.
executable = os.fsencode(executable)
if os.path.dirname(executable):
executable_list = (executable,)
else:
# This matches the behavior of os._execvpe().
executable_list = tuple(
os.path.join(os.fsencode(dir), executable)
for dir in os.get_exec_path(env))
fds_to_keep = set(pass_fds)
fds_to_keep.add(errpipe_write)
self.pid = _posixsubprocess.fork_exec(
args, executable_list,
close_fds, tuple(sorted(map(int, fds_to_keep))),
cwd, env_list,
p2cread, p2cwrite, c2pread, c2pwrite,
errread, errwrite,
errpipe_read, errpipe_write,
restore_signals, start_new_session, preexec_fn)
self._child_created = True
finally:
# be sure the FD is closed no matter what
os.close(errpipe_write)

# self._devnull is not always defined.
devnull_fd = getattr(self, '_devnull', None)
if p2cread != -1 and p2cwrite != -1 and p2cread != devnull_fd:
os.close(p2cread)
if c2pwrite != -1 and c2pread != -1 and c2pwrite != devnull_fd:
os.close(c2pwrite)
if errwrite != -1 and errread != -1 and errwrite != devnull_fd:
os.close(errwrite)
if devnull_fd is not None:
os.close(devnull_fd)
# Prevent a double close of these fds from __init__ on error.
self._closed_child_pipe_fds = True

# Wait for exec to fail or succeed; possibly raising an
# exception (limited in size)
errpipe_data = bytearray()
while True:
part = os.read(errpipe_read, 50000)
errpipe_data += part
if not part or len(errpipe_data) > 50000:
break
finally:
# be sure the FD is closed no matter what
os.close(errpipe_read)

if errpipe_data:
try:
pid, sts = os.waitpid(self.pid, 0)
if pid == self.pid:
self._handle_exitstatus(sts)
else:
self.returncode = sys.maxsize
except ChildProcessError:
pass

try:
exception_name, hex_errno, err_msg = (
errpipe_data.split(b':', 2))
# The encoding here should match the encoding
# written in by the subprocess implementations
# like _posixsubprocess
err_msg = err_msg.decode()
except ValueError:
exception_name = b'SubprocessError'
hex_errno = b'0'
err_msg = 'Bad exception data from child: {!r}'.format(
bytes(errpipe_data))
child_exception_type = getattr(
builtins, exception_name.decode('ascii'),
SubprocessError)
if issubclass(child_exception_type, OSError) and hex_errno:
errno_num = int(hex_errno, 16)
child_exec_never_called = (err_msg == "noexec")
if child_exec_never_called:
err_msg = ""
# The error must be from chdir(cwd).
err_filename = cwd
else:
err_filename = orig_executable
if errno_num != 0:
err_msg = os.strerror(errno_num)
if errno_num == errno.ENOENT:
err_msg += ': ' + repr(err_filename)
> raise child_exception_type(errno_num, err_msg, err_filename)
E FileNotFoundError: [Errno 2] No such file or directory: '/usr/sbin/kadmin.local': '/usr/sbin/kadmin.local'

/usr/lib64/python3.6/subprocess.py:1344: FileNotFoundError
Error suites/gssapi/simple_gssapi_test.py::test_missing_user::setup 0.00
request = <SubRequest 'topology_st_gssapi' for <Function 'test_gssapi_bind'>>

@pytest.fixture(scope="module")
def topology_st_gssapi(request):
"""Create a DS standalone instance with GSSAPI enabled.

This will alter the instance to remove the secure port, to allow
GSSAPI to function.
"""
hostname = socket.gethostname().split('.', 1)

# Assert we have a domain setup in some kind.
assert len(hostname) == 2

REALM = hostname[1].upper()

topology = create_topology({ReplicaRole.STANDALONE: 1})

# Fix the hostname.
topology.standalone.host = socket.gethostname()

krb = MitKrb5(realm=REALM, debug=DEBUGGING)

# Destroy existing realm.
> if krb.check_realm():

/usr/lib/python3.6/site-packages/lib389/topologies.py:278:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/mit_krb5.py:67: in check_realm
env=self.krb_env, stdout=PIPE, stderr=PIPE)
/usr/lib64/python3.6/subprocess.py:709: in __init__
restore_signals, start_new_session)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <subprocess.Popen object at 0x7fbf0afde390>
args = ['/usr/sbin/kadmin.local', '-r', 'EXAMPLE.COM', '-q', 'list_principals']
executable = b'/usr/sbin/kadmin.local', preexec_fn = None, close_fds = True
pass_fds = (), cwd = None, env = {}, startupinfo = None, creationflags = 0
shell = False, p2cread = -1, p2cwrite = -1, c2pread = 10, c2pwrite = 11
errread = 12, errwrite = 13, restore_signals = True, start_new_session = False

def _execute_child(self, args, executable, preexec_fn, close_fds,
pass_fds, cwd, env,
startupinfo, creationflags, shell,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite,
restore_signals, start_new_session):
"""Execute program (POSIX version)"""

if isinstance(args, (str, bytes)):
args = [args]
else:
args = list(args)

if shell:
args = ["/bin/sh", "-c"] + args
if executable:
args[0] = executable

if executable is None:
executable = args[0]
orig_executable = executable

# For transferring possible exec failure from child to parent.
# Data format: "exception name:hex errno:description"
# Pickle is not used; it is complex and involves memory allocation.
errpipe_read, errpipe_write = os.pipe()
# errpipe_write must not be in the standard io 0, 1, or 2 fd range.
low_fds_to_close = []
while errpipe_write < 3:
low_fds_to_close.append(errpipe_write)
errpipe_write = os.dup(errpipe_write)
for low_fd in low_fds_to_close:
os.close(low_fd)
try:
try:
# We must avoid complex work that could involve
# malloc or free in the child process to avoid
# potential deadlocks, thus we do all this here.
# and pass it to fork_exec()

if env is not None:
env_list = []
for k, v in env.items():
k = os.fsencode(k)
if b'=' in k:
raise ValueError("illegal environment variable name")
env_list.append(k + b'=' + os.fsencode(v))
else:
env_list = None # Use execv instead of execve.
executable = os.fsencode(executable)
if os.path.dirname(executable):
executable_list = (executable,)
else:
# This matches the behavior of os._execvpe().
executable_list = tuple(
os.path.join(os.fsencode(dir), executable)
for dir in os.get_exec_path(env))
fds_to_keep = set(pass_fds)
fds_to_keep.add(errpipe_write)
self.pid = _posixsubprocess.fork_exec(
args, executable_list,
close_fds, tuple(sorted(map(int, fds_to_keep))),
cwd, env_list,
p2cread, p2cwrite, c2pread, c2pwrite,
errread, errwrite,
errpipe_read, errpipe_write,
restore_signals, start_new_session, preexec_fn)
self._child_created = True
finally:
# be sure the FD is closed no matter what
os.close(errpipe_write)

# self._devnull is not always defined.
devnull_fd = getattr(self, '_devnull', None)
if p2cread != -1 and p2cwrite != -1 and p2cread != devnull_fd:
os.close(p2cread)
if c2pwrite != -1 and c2pread != -1 and c2pwrite != devnull_fd:
os.close(c2pwrite)
if errwrite != -1 and errread != -1 and errwrite != devnull_fd:
os.close(errwrite)
if devnull_fd is not None:
os.close(devnull_fd)
# Prevent a double close of these fds from __init__ on error.
self._closed_child_pipe_fds = True

# Wait for exec to fail or succeed; possibly raising an
# exception (limited in size)
errpipe_data = bytearray()
while True:
part = os.read(errpipe_read, 50000)
errpipe_data += part
if not part or len(errpipe_data) > 50000:
break
finally:
# be sure the FD is closed no matter what
os.close(errpipe_read)

if errpipe_data:
try:
pid, sts = os.waitpid(self.pid, 0)
if pid == self.pid:
self._handle_exitstatus(sts)
else:
self.returncode = sys.maxsize
except ChildProcessError:
pass

try:
exception_name, hex_errno, err_msg = (
errpipe_data.split(b':', 2))
# The encoding here should match the encoding
# written in by the subprocess implementations
# like _posixsubprocess
err_msg = err_msg.decode()
except ValueError:
exception_name = b'SubprocessError'
hex_errno = b'0'
err_msg = 'Bad exception data from child: {!r}'.format(
bytes(errpipe_data))
child_exception_type = getattr(
builtins, exception_name.decode('ascii'),
SubprocessError)
if issubclass(child_exception_type, OSError) and hex_errno:
errno_num = int(hex_errno, 16)
child_exec_never_called = (err_msg == "noexec")
if child_exec_never_called:
err_msg = ""
# The error must be from chdir(cwd).
err_filename = cwd
else:
err_filename = orig_executable
if errno_num != 0:
err_msg = os.strerror(errno_num)
if errno_num == errno.ENOENT:
err_msg += ': ' + repr(err_filename)
> raise child_exception_type(errno_num, err_msg, err_filename)
E FileNotFoundError: [Errno 2] No such file or directory: '/usr/sbin/kadmin.local': '/usr/sbin/kadmin.local'

/usr/lib64/python3.6/subprocess.py:1344: FileNotFoundError
Error suites/gssapi/simple_gssapi_test.py::test_support_mech::setup 0.00
request = <SubRequest 'topology_st_gssapi' for <Function 'test_gssapi_bind'>>

@pytest.fixture(scope="module")
def topology_st_gssapi(request):
"""Create a DS standalone instance with GSSAPI enabled.

This will alter the instance to remove the secure port, to allow
GSSAPI to function.
"""
hostname = socket.gethostname().split('.', 1)

# Assert we have a domain setup in some kind.
assert len(hostname) == 2

REALM = hostname[1].upper()

topology = create_topology({ReplicaRole.STANDALONE: 1})

# Fix the hostname.
topology.standalone.host = socket.gethostname()

krb = MitKrb5(realm=REALM, debug=DEBUGGING)

# Destroy existing realm.
> if krb.check_realm():

/usr/lib/python3.6/site-packages/lib389/topologies.py:278:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/mit_krb5.py:67: in check_realm
env=self.krb_env, stdout=PIPE, stderr=PIPE)
/usr/lib64/python3.6/subprocess.py:709: in __init__
restore_signals, start_new_session)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <subprocess.Popen object at 0x7fbf0afde390>
args = ['/usr/sbin/kadmin.local', '-r', 'EXAMPLE.COM', '-q', 'list_principals']
executable = b'/usr/sbin/kadmin.local', preexec_fn = None, close_fds = True
pass_fds = (), cwd = None, env = {}, startupinfo = None, creationflags = 0
shell = False, p2cread = -1, p2cwrite = -1, c2pread = 10, c2pwrite = 11
errread = 12, errwrite = 13, restore_signals = True, start_new_session = False

def _execute_child(self, args, executable, preexec_fn, close_fds,
pass_fds, cwd, env,
startupinfo, creationflags, shell,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite,
restore_signals, start_new_session):
"""Execute program (POSIX version)"""

if isinstance(args, (str, bytes)):
args = [args]
else:
args = list(args)

if shell:
args = ["/bin/sh", "-c"] + args
if executable:
args[0] = executable

if executable is None:
executable = args[0]
orig_executable = executable

# For transferring possible exec failure from child to parent.
# Data format: "exception name:hex errno:description"
# Pickle is not used; it is complex and involves memory allocation.
errpipe_read, errpipe_write = os.pipe()
# errpipe_write must not be in the standard io 0, 1, or 2 fd range.
low_fds_to_close = []
while errpipe_write < 3:
low_fds_to_close.append(errpipe_write)
errpipe_write = os.dup(errpipe_write)
for low_fd in low_fds_to_close:
os.close(low_fd)
try:
try:
# We must avoid complex work that could involve
# malloc or free in the child process to avoid
# potential deadlocks, thus we do all this here.
# and pass it to fork_exec()

if env is not None:
env_list = []
for k, v in env.items():
k = os.fsencode(k)
if b'=' in k:
raise ValueError("illegal environment variable name")
env_list.append(k + b'=' + os.fsencode(v))
else:
env_list = None # Use execv instead of execve.
executable = os.fsencode(executable)
if os.path.dirname(executable):
executable_list = (executable,)
else:
# This matches the behavior of os._execvpe().
executable_list = tuple(
os.path.join(os.fsencode(dir), executable)
for dir in os.get_exec_path(env))
fds_to_keep = set(pass_fds)
fds_to_keep.add(errpipe_write)
self.pid = _posixsubprocess.fork_exec(
args, executable_list,
close_fds, tuple(sorted(map(int, fds_to_keep))),
cwd, env_list,
p2cread, p2cwrite, c2pread, c2pwrite,
errread, errwrite,
errpipe_read, errpipe_write,
restore_signals, start_new_session, preexec_fn)
self._child_created = True
finally:
# be sure the FD is closed no matter what
os.close(errpipe_write)

# self._devnull is not always defined.
devnull_fd = getattr(self, '_devnull', None)
if p2cread != -1 and p2cwrite != -1 and p2cread != devnull_fd:
os.close(p2cread)
if c2pwrite != -1 and c2pread != -1 and c2pwrite != devnull_fd:
os.close(c2pwrite)
if errwrite != -1 and errread != -1 and errwrite != devnull_fd:
os.close(errwrite)
if devnull_fd is not None:
os.close(devnull_fd)
# Prevent a double close of these fds from __init__ on error.
self._closed_child_pipe_fds = True

# Wait for exec to fail or succeed; possibly raising an
# exception (limited in size)
errpipe_data = bytearray()
while True:
part = os.read(errpipe_read, 50000)
errpipe_data += part
if not part or len(errpipe_data) > 50000:
break
finally:
# be sure the FD is closed no matter what
os.close(errpipe_read)

if errpipe_data:
try:
pid, sts = os.waitpid(self.pid, 0)
if pid == self.pid:
self._handle_exitstatus(sts)
else:
self.returncode = sys.maxsize
except ChildProcessError:
pass

try:
exception_name, hex_errno, err_msg = (
errpipe_data.split(b':', 2))
# The encoding here should match the encoding
# written in by the subprocess implementations
# like _posixsubprocess
err_msg = err_msg.decode()
except ValueError:
exception_name = b'SubprocessError'
hex_errno = b'0'
err_msg = 'Bad exception data from child: {!r}'.format(
bytes(errpipe_data))
child_exception_type = getattr(
builtins, exception_name.decode('ascii'),
SubprocessError)
if issubclass(child_exception_type, OSError) and hex_errno:
errno_num = int(hex_errno, 16)
child_exec_never_called = (err_msg == "noexec")
if child_exec_never_called:
err_msg = ""
# The error must be from chdir(cwd).
err_filename = cwd
else:
err_filename = orig_executable
if errno_num != 0:
err_msg = os.strerror(errno_num)
if errno_num == errno.ENOENT:
err_msg += ': ' + repr(err_filename)
> raise child_exception_type(errno_num, err_msg, err_filename)
E FileNotFoundError: [Errno 2] No such file or directory: '/usr/sbin/kadmin.local': '/usr/sbin/kadmin.local'

/usr/lib64/python3.6/subprocess.py:1344: FileNotFoundError
Error suites/gssapi/simple_gssapi_test.py::test_rejected_mech::setup 0.00
request = <SubRequest 'topology_st_gssapi' for <Function 'test_gssapi_bind'>>

@pytest.fixture(scope="module")
def topology_st_gssapi(request):
"""Create a DS standalone instance with GSSAPI enabled.

This will alter the instance to remove the secure port, to allow
GSSAPI to function.
"""
hostname = socket.gethostname().split('.', 1)

# Assert we have a domain setup in some kind.
assert len(hostname) == 2

REALM = hostname[1].upper()

topology = create_topology({ReplicaRole.STANDALONE: 1})

# Fix the hostname.
topology.standalone.host = socket.gethostname()

krb = MitKrb5(realm=REALM, debug=DEBUGGING)

# Destroy existing realm.
> if krb.check_realm():

/usr/lib/python3.6/site-packages/lib389/topologies.py:278:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/mit_krb5.py:67: in check_realm
env=self.krb_env, stdout=PIPE, stderr=PIPE)
/usr/lib64/python3.6/subprocess.py:709: in __init__
restore_signals, start_new_session)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <subprocess.Popen object at 0x7fbf0afde390>
args = ['/usr/sbin/kadmin.local', '-r', 'EXAMPLE.COM', '-q', 'list_principals']
executable = b'/usr/sbin/kadmin.local', preexec_fn = None, close_fds = True
pass_fds = (), cwd = None, env = {}, startupinfo = None, creationflags = 0
shell = False, p2cread = -1, p2cwrite = -1, c2pread = 10, c2pwrite = 11
errread = 12, errwrite = 13, restore_signals = True, start_new_session = False

def _execute_child(self, args, executable, preexec_fn, close_fds,
pass_fds, cwd, env,
startupinfo, creationflags, shell,
p2cread, p2cwrite,
c2pread, c2pwrite,
errread, errwrite,
restore_signals, start_new_session):
"""Execute program (POSIX version)"""

if isinstance(args, (str, bytes)):
args = [args]
else:
args = list(args)

if shell:
args = ["/bin/sh", "-c"] + args
if executable:
args[0] = executable

if executable is None:
executable = args[0]
orig_executable = executable

# For transferring possible exec failure from child to parent.
# Data format: "exception name:hex errno:description"
# Pickle is not used; it is complex and involves memory allocation.
errpipe_read, errpipe_write = os.pipe()
# errpipe_write must not be in the standard io 0, 1, or 2 fd range.
low_fds_to_close = []
while errpipe_write < 3:
low_fds_to_close.append(errpipe_write)
errpipe_write = os.dup(errpipe_write)
for low_fd in low_fds_to_close:
os.close(low_fd)
try:
try:
# We must avoid complex work that could involve
# malloc or free in the child process to avoid
# potential deadlocks, thus we do all this here.
# and pass it to fork_exec()

if env is not None:
env_list = []
for k, v in env.items():
k = os.fsencode(k)
if b'=' in k:
raise ValueError("illegal environment variable name")
env_list.append(k + b'=' + os.fsencode(v))
else:
env_list = None # Use execv instead of execve.
executable = os.fsencode(executable)
if os.path.dirname(executable):
executable_list = (executable,)
else:
# This matches the behavior of os._execvpe().
executable_list = tuple(
os.path.join(os.fsencode(dir), executable)
for dir in os.get_exec_path(env))
fds_to_keep = set(pass_fds)
fds_to_keep.add(errpipe_write)
self.pid = _posixsubprocess.fork_exec(
args, executable_list,
close_fds, tuple(sorted(map(int, fds_to_keep))),
cwd, env_list,
p2cread, p2cwrite, c2pread, c2pwrite,
errread, errwrite,
errpipe_read, errpipe_write,
restore_signals, start_new_session, preexec_fn)
self._child_created = True
finally:
# be sure the FD is closed no matter what
os.close(errpipe_write)

# self._devnull is not always defined.
devnull_fd = getattr(self, '_devnull', None)
if p2cread != -1 and p2cwrite != -1 and p2cread != devnull_fd:
os.close(p2cread)
if c2pwrite != -1 and c2pread != -1 and c2pwrite != devnull_fd:
os.close(c2pwrite)
if errwrite != -1 and errread != -1 and errwrite != devnull_fd:
os.close(errwrite)
if devnull_fd is not None:
os.close(devnull_fd)
# Prevent a double close of these fds from __init__ on error.
self._closed_child_pipe_fds = True

# Wait for exec to fail or succeed; possibly raising an
# exception (limited in size)
errpipe_data = bytearray()
while True:
part = os.read(errpipe_read, 50000)
errpipe_data += part
if not part or len(errpipe_data) > 50000:
break
finally:
# be sure the FD is closed no matter what
os.close(errpipe_read)

if errpipe_data:
try:
pid, sts = os.waitpid(self.pid, 0)
if pid == self.pid:
self._handle_exitstatus(sts)
else:
self.returncode = sys.maxsize
except ChildProcessError:
pass

try:
exception_name, hex_errno, err_msg = (
errpipe_data.split(b':', 2))
# The encoding here should match the encoding
# written in by the subprocess implementations
# like _posixsubprocess
err_msg = err_msg.decode()
except ValueError:
exception_name = b'SubprocessError'
hex_errno = b'0'
err_msg = 'Bad exception data from child: {!r}'.format(
bytes(errpipe_data))
child_exception_type = getattr(
builtins, exception_name.decode('ascii'),
SubprocessError)
if issubclass(child_exception_type, OSError) and hex_errno:
errno_num = int(hex_errno, 16)
child_exec_never_called = (err_msg == "noexec")
if child_exec_never_called:
err_msg = ""
# The error must be from chdir(cwd).
err_filename = cwd
else:
err_filename = orig_executable
if errno_num != 0:
err_msg = os.strerror(errno_num)
if errno_num == errno.ENOENT:
err_msg += ': ' + repr(err_filename)
> raise child_exception_type(errno_num, err_msg, err_filename)
E FileNotFoundError: [Errno 2] No such file or directory: '/usr/sbin/kadmin.local': '/usr/sbin/kadmin.local'

/usr/lib64/python3.6/subprocess.py:1344: FileNotFoundError
Failed suites/ds_tools/replcheck_test.py::test_check_ruv 16.27
topo_tls_ldapi = <lib389.topologies.TopologyMain object at 0x7fbf0a8f54e0>

def test_check_ruv(topo_tls_ldapi):
"""Check that the report has RUV

:id: 1cc6b28b-8a42-45fb-ab50-9552db0ac179
:setup: Two master replication
:steps:
1. Get RUV from master and replica
2. Generate the report
3. Check that the RUV is mentioned in the report
:expectedresults:
1. It should be successful
2. It should be successful
3. The RUV should be mentioned in the report
"""

m1 = topo_tls_ldapi.ms["master1"]

replicas_m1 = Replica(m1, DEFAULT_SUFFIX)
ruv_entries = replicas_m1.get_attr_vals_utf8('nsds50ruv')

for tool_cmd in replcheck_cmd_list(topo_tls_ldapi):
> result = subprocess.check_output(tool_cmd, encoding='utf-8')

suites/ds_tools/replcheck_test.py:167:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.6/subprocess.py:336: in check_output
**kwargs).stdout
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

input = None, timeout = None, check = True
popenargs = (['/usr/bin/ds-replcheck', '-b', 'dc=example,dc=com', '-D', 'cn=Directory Manager', '-w', ...],)
kwargs = {'encoding': 'utf-8', 'stdout': -1}
process = <subprocess.Popen object at 0x7fbf0ae01d68>, stdout = ''
stderr = None, retcode = 1

def run(*popenargs, input=None, timeout=None, check=False, **kwargs):
"""Run command with arguments and return a CompletedProcess instance.

The returned instance will have attributes args, returncode, stdout and
stderr. By default, stdout and stderr are not captured, and those attributes
will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them.

If check is True and the exit code was non-zero, it raises a
CalledProcessError. The CalledProcessError object will have the return code
in the returncode attribute, and output & stderr attributes if those streams
were captured.

If timeout is given, and the process takes too long, a TimeoutExpired
exception will be raised.

There is an optional argument "input", allowing you to
pass a string to the subprocess's stdin. If you use this argument
you may not also use the Popen constructor's "stdin" argument, as
it will be used internally.

The other arguments are the same as for the Popen constructor.

If universal_newlines=True is passed, the "input" argument must be a
string and stdout/stderr in the returned object will be strings rather than
bytes.
"""
if input is not None:
if 'stdin' in kwargs:
raise ValueError('stdin and input arguments may not both be used.')
kwargs['stdin'] = PIPE

with Popen(*popenargs, **kwargs) as process:
try:
stdout, stderr = process.communicate(input, timeout=timeout)
except TimeoutExpired:
process.kill()
stdout, stderr = process.communicate()
raise TimeoutExpired(process.args, timeout, output=stdout,
stderr=stderr)
except:
process.kill()
process.wait()
raise
retcode = process.poll()
if check and retcode:
raise CalledProcessError(retcode, process.args,
> output=stdout, stderr=stderr)
E subprocess.CalledProcessError: Command '['/usr/bin/ds-replcheck', '-b', 'dc=example,dc=com', '-D', 'cn=Directory Manager', '-w', 'password', '-l', '1', '-m', 'ldap://server.example.com:39001', '--conflict', '-r', 'ldap://server.example.com:39002']' returned non-zero exit status 1.

/usr/lib64/python3.6/subprocess.py:418: CalledProcessError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists replica.py 1875 INFO SUCCESS: Replication from ldaps://server.example.com:63701 to ldaps://server.example.com:63702 is working replcheck_test.py 99 INFO Export LDAPTLS_CACERTDIR env variable for ds-replcheck replica.py 1875 INFO SUCCESS: Replication from ldaps://server.example.com:63701 to ldaps://server.example.com:63702 is working replica.py 1875 INFO SUCCESS: Replication from ldaps://server.example.com:63702 to ldaps://server.example.com:63701 is working----------------------------- Captured stdout call -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ----------------------------- Captured stderr call -----------------------------
[22/Jul/2018:19:53:38.964096839 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:19:53:38.980832033 -0400] - NOTICE - ldbm_back_start - found 8166884k physical memory [22/Jul/2018:19:53:38.981751924 -0400] - NOTICE - ldbm_back_start - found 7628664k available [22/Jul/2018:19:53:38.982517958 -0400] - NOTICE - ldbm_back_start - cache autosizing: db cache: 204172k [22/Jul/2018:19:53:38.983204408 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot entry cache (1 total): 589824k [22/Jul/2018:19:53:38.984460328 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot dn cache (1 total): 65536k [22/Jul/2018:19:53:38.985568417 -0400] - NOTICE - ldbm_back_start - total cache size: 838346424 B; ldiffile: /tmp/export_master1.ldif [22/Jul/2018:19:53:39.011278736 -0400] - INFO - ldbm_back_ldbm2ldif - export userRoot: Processed 15 entries (100%). [22/Jul/2018:19:53:39.118547743 -0400] - INFO - dblayer_pre_close - Waiting for 4 database threads to stop [22/Jul/2018:19:53:41.492432491 -0400] - INFO - dblayer_pre_close - All database threads now stopped [22/Jul/2018:19:53:47.654792126 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:19:53:47.670001586 -0400] - NOTICE - ldbm_back_start - found 8166884k physical memory [22/Jul/2018:19:53:47.671022810 -0400] - NOTICE - ldbm_back_start - found 7631672k available [22/Jul/2018:19:53:47.671825064 -0400] - NOTICE - ldbm_back_start - cache autosizing: db cache: 204172k [22/Jul/2018:19:53:47.672634725 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot entry cache (1 total): 589824k [22/Jul/2018:19:53:47.674157573 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot dn cache (1 total): 65536k [22/Jul/2018:19:53:47.675725345 -0400] - NOTICE - ldbm_back_start - total cache size: 838346424 B; ldiffile: /tmp/export_master2.ldif [22/Jul/2018:19:53:47.703355407 -0400] - INFO - ldbm_back_ldbm2ldif - export userRoot: Processed 15 entries (100%). [22/Jul/2018:19:53:47.811018200 -0400] - INFO - dblayer_pre_close - Waiting for 4 database threads to stop [22/Jul/2018:19:53:50.183478195 -0400] - INFO - dblayer_pre_close - All database threads now stopped Traceback (most recent call last): File "/usr/bin/ds-replcheck", line 16, in <module> import ldap ImportError: No module named ldap
Failed suites/ds_tools/replcheck_test.py::test_missing_entries 17.90
topo_tls_ldapi = <lib389.topologies.TopologyMain object at 0x7fbf0a8f54e0>

def test_missing_entries(topo_tls_ldapi):
"""Check that the report has missing entries

:id: bd27de78-0046-431c-8240-a93052df1cdc
:setup: Two master replication
:steps:
1. Pause replication between master and replica
2. Add two entries to master and two entries to replica
3. Generate the report
4. Check that the entries DN are mentioned in the report
:expectedresults:
1. It should be successful
2. It should be successful
3. It should be successful
4. The entries DN should be mentioned in the report
"""

m1 = topo_tls_ldapi.ms["master1"]
m2 = topo_tls_ldapi.ms["master2"]

try:
topo_tls_ldapi.pause_all_replicas()
users_m1 = UserAccounts(m1, DEFAULT_SUFFIX)
user0 = users_m1.create_test_user(1000)
user1 = users_m1.create_test_user(1001)
users_m2 = UserAccounts(m2, DEFAULT_SUFFIX)
user2 = users_m2.create_test_user(1002)
user3 = users_m2.create_test_user(1003)

for tool_cmd in replcheck_cmd_list(topo_tls_ldapi):
> result = subprocess.check_output(tool_cmd, encoding='utf-8').lower()

suites/ds_tools/replcheck_test.py:201:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.6/subprocess.py:336: in check_output
**kwargs).stdout
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

input = None, timeout = None, check = True
popenargs = (['/usr/bin/ds-replcheck', '-b', 'dc=example,dc=com', '-D', 'cn=Directory Manager', '-w', ...],)
kwargs = {'encoding': 'utf-8', 'stdout': -1}
process = <subprocess.Popen object at 0x7fbf0aa21780>, stdout = ''
stderr = None, retcode = 1

def run(*popenargs, input=None, timeout=None, check=False, **kwargs):
"""Run command with arguments and return a CompletedProcess instance.

The returned instance will have attributes args, returncode, stdout and
stderr. By default, stdout and stderr are not captured, and those attributes
will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them.

If check is True and the exit code was non-zero, it raises a
CalledProcessError. The CalledProcessError object will have the return code
in the returncode attribute, and output & stderr attributes if those streams
were captured.

If timeout is given, and the process takes too long, a TimeoutExpired
exception will be raised.

There is an optional argument "input", allowing you to
pass a string to the subprocess's stdin. If you use this argument
you may not also use the Popen constructor's "stdin" argument, as
it will be used internally.

The other arguments are the same as for the Popen constructor.

If universal_newlines=True is passed, the "input" argument must be a
string and stdout/stderr in the returned object will be strings rather than
bytes.
"""
if input is not None:
if 'stdin' in kwargs:
raise ValueError('stdin and input arguments may not both be used.')
kwargs['stdin'] = PIPE

with Popen(*popenargs, **kwargs) as process:
try:
stdout, stderr = process.communicate(input, timeout=timeout)
except TimeoutExpired:
process.kill()
stdout, stderr = process.communicate()
raise TimeoutExpired(process.args, timeout, output=stdout,
stderr=stderr)
except:
process.kill()
process.wait()
raise
retcode = process.poll()
if check and retcode:
raise CalledProcessError(retcode, process.args,
> output=stdout, stderr=stderr)
E subprocess.CalledProcessError: Command '['/usr/bin/ds-replcheck', '-b', 'dc=example,dc=com', '-D', 'cn=Directory Manager', '-w', 'password', '-l', '1', '-m', 'ldap://server.example.com:39001', '--conflict', '-r', 'ldap://server.example.com:39002']' returned non-zero exit status 1.

/usr/lib64/python3.6/subprocess.py:418: CalledProcessError
----------------------------- Captured stdout call -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ----------------------------- Captured stderr call -----------------------------
[22/Jul/2018:19:53:57.305833059 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:19:53:57.320941819 -0400] - NOTICE - ldbm_back_start - found 8166884k physical memory [22/Jul/2018:19:53:57.321884772 -0400] - NOTICE - ldbm_back_start - found 7629688k available [22/Jul/2018:19:53:57.322574020 -0400] - NOTICE - ldbm_back_start - cache autosizing: db cache: 204172k [22/Jul/2018:19:53:57.323394901 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot entry cache (1 total): 589824k [22/Jul/2018:19:53:57.324608916 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot dn cache (1 total): 65536k [22/Jul/2018:19:53:57.325662100 -0400] - NOTICE - ldbm_back_start - total cache size: 838346424 B; ldiffile: /tmp/export_master1.ldif [22/Jul/2018:19:53:57.352546448 -0400] - INFO - ldbm_back_ldbm2ldif - export userRoot: Processed 17 entries (100%). [22/Jul/2018:19:53:57.459040433 -0400] - INFO - dblayer_pre_close - Waiting for 4 database threads to stop [22/Jul/2018:19:53:59.833884881 -0400] - INFO - dblayer_pre_close - All database threads now stopped [22/Jul/2018:19:54:06.020628931 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:19:54:06.035998661 -0400] - NOTICE - ldbm_back_start - found 8166884k physical memory [22/Jul/2018:19:54:06.037075561 -0400] - NOTICE - ldbm_back_start - found 7631448k available [22/Jul/2018:19:54:06.038041665 -0400] - NOTICE - ldbm_back_start - cache autosizing: db cache: 204172k [22/Jul/2018:19:54:06.038888642 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot entry cache (1 total): 589824k [22/Jul/2018:19:54:06.040303518 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot dn cache (1 total): 65536k [22/Jul/2018:19:54:06.041521432 -0400] - NOTICE - ldbm_back_start - total cache size: 838346424 B; ldiffile: /tmp/export_master2.ldif [22/Jul/2018:19:54:06.068182759 -0400] - INFO - ldbm_back_ldbm2ldif - export userRoot: Processed 17 entries (100%). [22/Jul/2018:19:54:06.174866560 -0400] - INFO - dblayer_pre_close - Waiting for 4 database threads to stop [22/Jul/2018:19:54:08.549676826 -0400] - INFO - dblayer_pre_close - All database threads now stopped Traceback (most recent call last): File "/usr/bin/ds-replcheck", line 16, in <module> import ldap ImportError: No module named ldap
Failed suites/ds_tools/replcheck_test.py::test_tombstones 20.37
topo_tls_ldapi = <lib389.topologies.TopologyMain object at 0x7fbf0a8f54e0>

def test_tombstones(topo_tls_ldapi):
"""Check that the report mentions right number of tombstones

:id: bd27de78-0046-431c-8240-a93052df1cdc
:setup: Two master replication
:steps:
1. Add an entry to master and wait for replication
2. Pause replication between master and replica
3. Delete the entry from master
4. Generate the report
5. Check that we have different number of tombstones in the report
:expectedresults:
1. It should be successful
2. It should be successful
3. It should be successful
4. It should be successful
5. It should be successful
"""

m1 = topo_tls_ldapi.ms["master1"]

try:
users_m1 = UserAccounts(m1, DEFAULT_SUFFIX)
user_m1 = users_m1.create(properties=TEST_USER_PROPERTIES)
time.sleep(1)
topo_tls_ldapi.pause_all_replicas()
user_m1.delete()
time.sleep(2)

for tool_cmd in replcheck_cmd_list(topo_tls_ldapi):
> result = subprocess.check_output(tool_cmd, encoding='utf-8').lower()

suites/ds_tools/replcheck_test.py:242:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.6/subprocess.py:336: in check_output
**kwargs).stdout
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

input = None, timeout = None, check = True
popenargs = (['/usr/bin/ds-replcheck', '-b', 'dc=example,dc=com', '-D', 'cn=Directory Manager', '-w', ...],)
kwargs = {'encoding': 'utf-8', 'stdout': -1}
process = <subprocess.Popen object at 0x7fbf0a829240>, stdout = ''
stderr = None, retcode = 1

def run(*popenargs, input=None, timeout=None, check=False, **kwargs):
"""Run command with arguments and return a CompletedProcess instance.

The returned instance will have attributes args, returncode, stdout and
stderr. By default, stdout and stderr are not captured, and those attributes
will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them.

If check is True and the exit code was non-zero, it raises a
CalledProcessError. The CalledProcessError object will have the return code
in the returncode attribute, and output & stderr attributes if those streams
were captured.

If timeout is given, and the process takes too long, a TimeoutExpired
exception will be raised.

There is an optional argument "input", allowing you to
pass a string to the subprocess's stdin. If you use this argument
you may not also use the Popen constructor's "stdin" argument, as
it will be used internally.

The other arguments are the same as for the Popen constructor.

If universal_newlines=True is passed, the "input" argument must be a
string and stdout/stderr in the returned object will be strings rather than
bytes.
"""
if input is not None:
if 'stdin' in kwargs:
raise ValueError('stdin and input arguments may not both be used.')
kwargs['stdin'] = PIPE

with Popen(*popenargs, **kwargs) as process:
try:
stdout, stderr = process.communicate(input, timeout=timeout)
except TimeoutExpired:
process.kill()
stdout, stderr = process.communicate()
raise TimeoutExpired(process.args, timeout, output=stdout,
stderr=stderr)
except:
process.kill()
process.wait()
raise
retcode = process.poll()
if check and retcode:
raise CalledProcessError(retcode, process.args,
> output=stdout, stderr=stderr)
E subprocess.CalledProcessError: Command '['/usr/bin/ds-replcheck', '-b', 'dc=example,dc=com', '-D', 'cn=Directory Manager', '-w', 'password', '-l', '1', '-m', 'ldap://server.example.com:39001', '--conflict', '-r', 'ldap://server.example.com:39002']' returned non-zero exit status 1.

/usr/lib64/python3.6/subprocess.py:418: CalledProcessError
----------------------------- Captured stdout call -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ----------------------------- Captured stderr call -----------------------------
[22/Jul/2018:19:54:18.154204439 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:19:54:18.169131023 -0400] - NOTICE - ldbm_back_start - found 8166884k physical memory [22/Jul/2018:19:54:18.169888842 -0400] - NOTICE - ldbm_back_start - found 7626520k available [22/Jul/2018:19:54:18.170534275 -0400] - NOTICE - ldbm_back_start - cache autosizing: db cache: 204172k [22/Jul/2018:19:54:18.171220987 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot entry cache (1 total): 589824k [22/Jul/2018:19:54:18.172399424 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot dn cache (1 total): 65536k [22/Jul/2018:19:54:18.173523759 -0400] - NOTICE - ldbm_back_start - total cache size: 838346424 B; ldiffile: /tmp/export_master1.ldif [22/Jul/2018:19:54:18.201402650 -0400] - INFO - ldbm_back_ldbm2ldif - export userRoot: Processed 20 entries (100%). [22/Jul/2018:19:54:18.307861217 -0400] - INFO - dblayer_pre_close - Waiting for 4 database threads to stop [22/Jul/2018:19:54:20.682023409 -0400] - INFO - dblayer_pre_close - All database threads now stopped [22/Jul/2018:19:54:26.848550193 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:19:54:26.863815023 -0400] - NOTICE - ldbm_back_start - found 8166884k physical memory [22/Jul/2018:19:54:26.864880464 -0400] - NOTICE - ldbm_back_start - found 7631784k available [22/Jul/2018:19:54:26.865850510 -0400] - NOTICE - ldbm_back_start - cache autosizing: db cache: 204172k [22/Jul/2018:19:54:26.866742727 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot entry cache (1 total): 589824k [22/Jul/2018:19:54:26.868168808 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot dn cache (1 total): 65536k [22/Jul/2018:19:54:26.869285730 -0400] - NOTICE - ldbm_back_start - total cache size: 838346424 B; ldiffile: /tmp/export_master2.ldif [22/Jul/2018:19:54:26.896850234 -0400] - INFO - ldbm_back_ldbm2ldif - export userRoot: Processed 20 entries (100%). [22/Jul/2018:19:54:27.003514002 -0400] - INFO - dblayer_pre_close - Waiting for 4 database threads to stop [22/Jul/2018:19:54:29.378537730 -0400] - INFO - dblayer_pre_close - All database threads now stopped Traceback (most recent call last): File "/usr/bin/ds-replcheck", line 16, in <module> import ldap ImportError: No module named ldap
Failed suites/ds_tools/replcheck_test.py::test_conflict_entries 28.00
topo_tls_ldapi = <lib389.topologies.TopologyMain object at 0x7fbf0a8f54e0>

def test_conflict_entries(topo_tls_ldapi):
"""Check that the report has conflict entries

:id: c8fe3e84-b346-4969-8f5d-3462b643a1d2
:setup: Two master replication
:steps:
1. Pause replication between master and replica
2. Add two entries to master and two entries to replica
3. Delete first entry from master
4. Add a child to the first entry
5. Resume replication between master and replica
6. Generate the report
7. Check that the entries DN are mentioned in the report
:expectedresults:
1. It should be successful
2. It should be successful
3. It should be successful
4. It should be successful
5. It should be successful
6. It should be successful
7. The entries DN should be mentioned in the report
"""

m1 = topo_tls_ldapi.ms["master1"]
m2 = topo_tls_ldapi.ms["master2"]

topo_tls_ldapi.pause_all_replicas()

_create_container(m1, DEFAULT_SUFFIX, 'conflict_parent0')
_create_container(m2, DEFAULT_SUFFIX, 'conflict_parent0')
cont_p_m1 = _create_container(m1, DEFAULT_SUFFIX, 'conflict_parent1')
cont_p_m2 = _create_container(m2, DEFAULT_SUFFIX, 'conflict_parent1')
_delete_container(cont_p_m1)
_create_container(m2, cont_p_m2.dn, 'conflict_child0')

topo_tls_ldapi.resume_all_replicas()
time.sleep(5)

for tool_cmd in replcheck_cmd_list(topo_tls_ldapi):
> result = subprocess.check_output(tool_cmd, encoding='utf-8')

suites/ds_tools/replcheck_test.py:287:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.6/subprocess.py:336: in check_output
**kwargs).stdout
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

input = None, timeout = None, check = True
popenargs = (['/usr/bin/ds-replcheck', '-b', 'dc=example,dc=com', '-D', 'cn=Directory Manager', '-w', ...],)
kwargs = {'encoding': 'utf-8', 'stdout': -1}
process = <subprocess.Popen object at 0x7fbf0ae277b8>, stdout = ''
stderr = None, retcode = 1

def run(*popenargs, input=None, timeout=None, check=False, **kwargs):
"""Run command with arguments and return a CompletedProcess instance.

The returned instance will have attributes args, returncode, stdout and
stderr. By default, stdout and stderr are not captured, and those attributes
will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them.

If check is True and the exit code was non-zero, it raises a
CalledProcessError. The CalledProcessError object will have the return code
in the returncode attribute, and output & stderr attributes if those streams
were captured.

If timeout is given, and the process takes too long, a TimeoutExpired
exception will be raised.

There is an optional argument "input", allowing you to
pass a string to the subprocess's stdin. If you use this argument
you may not also use the Popen constructor's "stdin" argument, as
it will be used internally.

The other arguments are the same as for the Popen constructor.

If universal_newlines=True is passed, the "input" argument must be a
string and stdout/stderr in the returned object will be strings rather than
bytes.
"""
if input is not None:
if 'stdin' in kwargs:
raise ValueError('stdin and input arguments may not both be used.')
kwargs['stdin'] = PIPE

with Popen(*popenargs, **kwargs) as process:
try:
stdout, stderr = process.communicate(input, timeout=timeout)
except TimeoutExpired:
process.kill()
stdout, stderr = process.communicate()
raise TimeoutExpired(process.args, timeout, output=stdout,
stderr=stderr)
except:
process.kill()
process.wait()
raise
retcode = process.poll()
if check and retcode:
raise CalledProcessError(retcode, process.args,
> output=stdout, stderr=stderr)
E subprocess.CalledProcessError: Command '['/usr/bin/ds-replcheck', '-b', 'dc=example,dc=com', '-D', 'cn=Directory Manager', '-w', 'password', '-l', '1', '-m', 'ldap://server.example.com:39001', '--conflict', '-r', 'ldap://server.example.com:39002']' returned non-zero exit status 1.

/usr/lib64/python3.6/subprocess.py:418: CalledProcessError
----------------------------- Captured stdout call -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ----------------------------- Captured stderr call -----------------------------
[22/Jul/2018:19:54:46.533951098 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:19:54:46.549407652 -0400] - NOTICE - ldbm_back_start - found 8166884k physical memory [22/Jul/2018:19:54:46.550352795 -0400] - NOTICE - ldbm_back_start - found 7626072k available [22/Jul/2018:19:54:46.551160522 -0400] - NOTICE - ldbm_back_start - cache autosizing: db cache: 204172k [22/Jul/2018:19:54:46.551849485 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot entry cache (1 total): 589824k [22/Jul/2018:19:54:46.553094527 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot dn cache (1 total): 65536k [22/Jul/2018:19:54:46.554155936 -0400] - NOTICE - ldbm_back_start - total cache size: 838346424 B; ldiffile: /tmp/export_master1.ldif [22/Jul/2018:19:54:46.582893354 -0400] - INFO - ldbm_back_ldbm2ldif - export userRoot: Processed 25 entries (100%). [22/Jul/2018:19:54:46.689445244 -0400] - INFO - dblayer_pre_close - Waiting for 4 database threads to stop [22/Jul/2018:19:54:49.063251377 -0400] - INFO - dblayer_pre_close - All database threads now stopped [22/Jul/2018:19:54:55.219070719 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:19:54:55.246012258 -0400] - NOTICE - ldbm_back_start - found 8166884k physical memory [22/Jul/2018:19:54:55.246953784 -0400] - NOTICE - ldbm_back_start - found 7631152k available [22/Jul/2018:19:54:55.247711961 -0400] - NOTICE - ldbm_back_start - cache autosizing: db cache: 204172k [22/Jul/2018:19:54:55.248391792 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot entry cache (1 total): 589824k [22/Jul/2018:19:54:55.249688501 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot dn cache (1 total): 65536k [22/Jul/2018:19:54:55.250739586 -0400] - NOTICE - ldbm_back_start - total cache size: 838346424 B; ldiffile: /tmp/export_master2.ldif [22/Jul/2018:19:54:55.278147241 -0400] - INFO - ldbm_back_ldbm2ldif - export userRoot: Processed 25 entries (100%). [22/Jul/2018:19:54:55.384716786 -0400] - INFO - dblayer_pre_close - Waiting for 4 database threads to stop [22/Jul/2018:19:54:57.761411492 -0400] - INFO - dblayer_pre_close - All database threads now stopped Traceback (most recent call last): File "/usr/bin/ds-replcheck", line 16, in <module> import ldap ImportError: No module named ldap
Failed suites/ds_tools/replcheck_test.py::test_inconsistencies 20.59
topo_tls_ldapi = <lib389.topologies.TopologyMain object at 0x7fbf0a8f54e0>

def test_inconsistencies(topo_tls_ldapi):
"""Check that the report mentions inconsistencies with attributes

:id: c8fe3e84-b346-4969-8f5d-3462b643a1d2
:setup: Two master replication
:steps:
1. Add an entry to master and wait for replication
2. Pause replication between master and replica
3. Set different description attr values to master and replica
4. Add telephoneNumber attribute to master and not to replica
5. Generate the report
6. Check that attribute values are mentioned in the report
7. Generate the report with -i option to ignore some attributes
8. Check that attribute values are mentioned in the report
:expectedresults:
1. It should be successful
2. It should be successful
3. It should be successful
4. It should be successful
5. It should be successful
6. The attribute values should be mentioned in the report
7. It should be successful
8. The attribute values should not be mentioned in the report
"""

m1 = topo_tls_ldapi.ms["master1"]
m2 = topo_tls_ldapi.ms["master2"]
attr_m1 = "m1_inconsistency"
attr_m2 = "m2_inconsistency"
attr_m1_only = "123123123"

try:
users_m1 = UserAccounts(m1, DEFAULT_SUFFIX)
users_m2 = UserAccounts(m2, DEFAULT_SUFFIX)
user_m1 = users_m1.create(properties=TEST_USER_PROPERTIES)
time.sleep(1)
user_m2 = users_m2.get(user_m1.rdn)
topo_tls_ldapi.pause_all_replicas()
user_m1.set("description", attr_m1)
user_m2.set("description", attr_m2)
user_m1.set("telephonenumber", attr_m1_only)
time.sleep(2)

for tool_cmd in replcheck_cmd_list(topo_tls_ldapi):
> result = subprocess.check_output(tool_cmd, encoding='utf-8').lower()

suites/ds_tools/replcheck_test.py:335:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib64/python3.6/subprocess.py:336: in check_output
**kwargs).stdout
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

input = None, timeout = None, check = True
popenargs = (['/usr/bin/ds-replcheck', '-b', 'dc=example,dc=com', '-D', 'cn=Directory Manager', '-w', ...],)
kwargs = {'encoding': 'utf-8', 'stdout': -1}
process = <subprocess.Popen object at 0x7fbf0a8c0d68>, stdout = ''
stderr = None, retcode = 1

def run(*popenargs, input=None, timeout=None, check=False, **kwargs):
"""Run command with arguments and return a CompletedProcess instance.

The returned instance will have attributes args, returncode, stdout and
stderr. By default, stdout and stderr are not captured, and those attributes
will be None. Pass stdout=PIPE and/or stderr=PIPE in order to capture them.

If check is True and the exit code was non-zero, it raises a
CalledProcessError. The CalledProcessError object will have the return code
in the returncode attribute, and output & stderr attributes if those streams
were captured.

If timeout is given, and the process takes too long, a TimeoutExpired
exception will be raised.

There is an optional argument "input", allowing you to
pass a string to the subprocess's stdin. If you use this argument
you may not also use the Popen constructor's "stdin" argument, as
it will be used internally.

The other arguments are the same as for the Popen constructor.

If universal_newlines=True is passed, the "input" argument must be a
string and stdout/stderr in the returned object will be strings rather than
bytes.
"""
if input is not None:
if 'stdin' in kwargs:
raise ValueError('stdin and input arguments may not both be used.')
kwargs['stdin'] = PIPE

with Popen(*popenargs, **kwargs) as process:
try:
stdout, stderr = process.communicate(input, timeout=timeout)
except TimeoutExpired:
process.kill()
stdout, stderr = process.communicate()
raise TimeoutExpired(process.args, timeout, output=stdout,
stderr=stderr)
except:
process.kill()
process.wait()
raise
retcode = process.poll()
if check and retcode:
raise CalledProcessError(retcode, process.args,
> output=stdout, stderr=stderr)
E subprocess.CalledProcessError: Command '['/usr/bin/ds-replcheck', '-b', 'dc=example,dc=com', '-D', 'cn=Directory Manager', '-w', 'password', '-l', '1', '-m', 'ldap://server.example.com:39001', '--conflict', '-r', 'ldap://server.example.com:39002']' returned non-zero exit status 1.

/usr/lib64/python3.6/subprocess.py:418: CalledProcessError
----------------------------- Captured stdout call -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ----------------------------- Captured stderr call -----------------------------
[22/Jul/2018:19:55:07.400522292 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:19:55:07.415084484 -0400] - NOTICE - ldbm_back_start - found 8166884k physical memory [22/Jul/2018:19:55:07.415748920 -0400] - NOTICE - ldbm_back_start - found 7628648k available [22/Jul/2018:19:55:07.416335748 -0400] - NOTICE - ldbm_back_start - cache autosizing: db cache: 204172k [22/Jul/2018:19:55:07.416909142 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot entry cache (1 total): 589824k [22/Jul/2018:19:55:07.418129009 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot dn cache (1 total): 65536k [22/Jul/2018:19:55:07.419086406 -0400] - NOTICE - ldbm_back_start - total cache size: 838346424 B; ldiffile: /tmp/export_master1.ldif [22/Jul/2018:19:55:07.447302095 -0400] - INFO - ldbm_back_ldbm2ldif - export userRoot: Processed 26 entries (100%). [22/Jul/2018:19:55:07.554123312 -0400] - INFO - dblayer_pre_close - Waiting for 4 database threads to stop [22/Jul/2018:19:55:09.928145925 -0400] - INFO - dblayer_pre_close - All database threads now stopped [22/Jul/2018:19:55:16.066272177 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:19:55:16.081180028 -0400] - NOTICE - ldbm_back_start - found 8166884k physical memory [22/Jul/2018:19:55:16.082236684 -0400] - NOTICE - ldbm_back_start - found 7631172k available [22/Jul/2018:19:55:16.083039946 -0400] - NOTICE - ldbm_back_start - cache autosizing: db cache: 204172k [22/Jul/2018:19:55:16.083829267 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot entry cache (1 total): 589824k [22/Jul/2018:19:55:16.085040913 -0400] - NOTICE - ldbm_back_start - cache autosizing: userRoot dn cache (1 total): 65536k [22/Jul/2018:19:55:16.086195876 -0400] - NOTICE - ldbm_back_start - total cache size: 838346424 B; ldiffile: /tmp/export_master2.ldif [22/Jul/2018:19:55:16.114402000 -0400] - INFO - ldbm_back_ldbm2ldif - export userRoot: Processed 26 entries (100%). [22/Jul/2018:19:55:16.221791851 -0400] - INFO - dblayer_pre_close - Waiting for 4 database threads to stop [22/Jul/2018:19:55:18.594662677 -0400] - INFO - dblayer_pre_close - All database threads now stopped Traceback (most recent call last): File "/usr/bin/ds-replcheck", line 16, in <module> import ldap ImportError: No module named ldap
Failed suites/paged_results/paged_results_test.py::test_search_dns_ip_aci[ip = "10.8.243.61"] 4.68
topology_st = <lib389.topologies.TopologyMain object at 0x7fbefb2127b8>
test_user = <lib389.idm.user.UserAccount object at 0x7fbefb2123c8>
aci_subject = 'ip = "10.8.243.61"'

@pytest.mark.parametrize('aci_subject',
('dns = "{}"'.format(HOSTNAME),
'ip = "{}"'.format(IP_ADDRESS)))
def test_search_dns_ip_aci(topology_st, test_user, aci_subject):
"""Verify that after performing multiple simple paged searches
to completion on the suffix with DNS or IP based ACI

:id: bbfddc46-a8c8-49ae-8c90-7265d05b22a9
:setup: Standalone instance, test user for binding,
varying number of users for the search base
:steps:
1. Back up and remove all previous ACI from suffix
2. Add an anonymous ACI for DNS check
3. Bind as test user
4. Search through added users with a simple paged control
5. Perform steps 4 three times in a row
6. Return ACI to the initial state
7. Go through all steps once again, but use IP subject dn
instead of DNS
:expectedresults:
1. Operation should be successful
2. Anonymous ACI should be successfully added
3. Bind should be successful
4. No error happens, all users should be found and sorted
5. Results should remain the same
6. ACI should be successfully returned
7. Results should be the same with ACI with IP subject dn
"""

users_num = 100
page_size = 5
users_list = add_users(topology_st, users_num, DEFAULT_SUFFIX)
search_flt = r'(uid=test*)'
searchreq_attrlist = ['dn', 'sn']

try:
log.info('Back up current suffix ACI')
acis_bck = topology_st.standalone.aci.list(DEFAULT_SUFFIX, ldap.SCOPE_BASE)

log.info('Add test ACI')
ACI_TARGET = '(targetattr != "userPassword")'
ACI_ALLOW = '(version 3.0;acl "Anonymous access within domain"; allow (read,compare,search)'
ACI_SUBJECT = '(userdn = "ldap:///anyone") and (%s);)' % aci_subject
ACI_BODY = ensure_bytes(ACI_TARGET + ACI_ALLOW + ACI_SUBJECT)
topology_st.standalone.modify_s(DEFAULT_SUFFIX, [(ldap.MOD_REPLACE, 'aci', ACI_BODY)])
log.info('Set user bind')
conn = test_user.bind(TEST_USER_PWD)

log.info('Create simple paged results control instance')
req_ctrl = SimplePagedResultsControl(True, size=page_size, cookie='')
controls = [req_ctrl]

log.info('Initiate three searches with a paged results control')
for ii in range(3):
log.info('%d search' % (ii + 1))
all_results = paged_search(conn, DEFAULT_SUFFIX, controls,
search_flt, searchreq_attrlist)
log.info('%d results' % len(all_results))
> assert len(all_results) == len(users_list)
E assert 0 == 100
E + where 0 = len([])
E + and 100 = len([<lib389.idm.user.UserAccount object at 0x7fbefb1229b0>, <lib389.idm.user.UserAccount object at 0x7fbefb277400>, <lib3...>, <lib389.idm.user.UserAccount object at 0x7fbf0ad13400>, <lib389.idm.user.UserAccount object at 0x7fbefb13e748>, ...])

suites/paged_results/paged_results_test.py:564: AssertionError
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 100 users paged_results_test.py 542 INFO Back up current suffix ACI paged_results_test.py 545 INFO Add test ACI paged_results_test.py 551 INFO Set user bind paged_results_test.py 554 INFO Create simple paged results control instance paged_results_test.py 558 INFO Initiate three searches with a paged results control paged_results_test.py 560 INFO 1 search paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 5; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbefb339c88>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 563 INFO 0 results paged_results_test.py 568 INFO Restore ACI paged_results_test.py 153 INFO Deleting 100 users
Failed suites/plugins/accpol_test.py::test_glnologin_attr 26.22
topology_st = <lib389.topologies.TopologyMain object at 0x7fbefb0913c8>
accpol_global = None

def test_glnologin_attr(topology_st, accpol_global):
"""Verify if user account is inactivated based on createTimeStamp attribute, no lastLoginTime attribute present

:id: 3032f670-705d-4f69-96f5-d75445cffcfb
:setup: Standalone instance, Local account policy plugin configuration,
set accountInactivityLimit to few secs.
:steps:
1. Configure Global account policy plugin with createTimestamp as stateattrname
2. lastLoginTime attribute will not be effective.
3. Add few users to ou=groups subtree in the default suffix
4. Wait for 10 secs and check if account is not inactivated, expected 0
5. Modify AccountInactivityLimit to 20 secs
6. Wait for +9 secs and check if account is not inactivated, expected 0
7. Wait for +3 secs and check if account is inactivated, error 19
8. Modify accountInactivityLimit to 3 secs
9. Add few users to ou=groups subtree in the default suffix
10. Wait for 3 secs and check if account is inactivated, error 19
11. Modify accountInactivityLimit to 30 secs
12. Add few users to ou=groups subtree in the default suffix
13. Wait for 90 secs and check if account is not inactivated, expected 0
14. Wait for +28 secs and check if account is not inactivated, expected 0
15. Wait for +2 secs and check if account is inactivated, error 19
16. Replace the lastLoginTime attribute and check if account is activated
17. Modify accountInactivityLimit to 12 secs, which is the default
18. Run ldapsearch as normal user, expected 0.
:assert:
1. Success
2. Success
3. Success
4. Success
5. Success
6. Success
7. Success
8. Success
9. Success
10. Success
11. Success
12. Success
13. Success
14. Success
15. Success
16. Success
17. Success
18. Success
"""

suffix = DEFAULT_SUFFIX
subtree = "ou=groups"
userid = "nologinusr"
nousrs = 3

log.info('AccountInactivityLimit set to 12. Account will be inactivated if not accessed in 12 secs')
log.info('Set attribute StateAttrName to createTimestamp, loginTime attr wont be considered')
modify_attr(topology_st, ACCP_CONF, 'stateattrname', 'createTimestamp')
topology_st.standalone.restart(timeout=10)
add_users(topology_st, suffix, subtree, userid, nousrs, 2)
log.info('Sleep for 9 secs to check if account is not inactivated, expected 0')
time.sleep(9)
account_status(topology_st, suffix, subtree, userid, nousrs, 2, "Enabled")

modify_attr(topology_st, ACCP_CONF, 'accountInactivityLimit', '20')
time.sleep(9)
> account_status(topology_st, suffix, subtree, userid, nousrs, 2, "Enabled")

suites/plugins/accpol_test.py:578:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
suites/plugins/accpol_test.py:306: in account_status
raise e
suites/plugins/accpol_test.py:303: in account_status
topology_st.standalone.simple_bind_s(userdn, USER_PASW)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:444: in simple_bind_s
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749: in result3
resp_ctrl_classes=resp_ctrl_classes
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756: in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbefb30d6d8>
func = <built-in method result4 of LDAP object at 0x7fbefb30c4b8>
args = (7, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.CONSTRAINT_VIOLATION: {'desc': 'Constraint violation', 'info': 'Account inactivity limit exceeded. Contact system administrator to reset.'}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: CONSTRAINT_VIOLATION
------------------------------ Captured log call -------------------------------
accpol_test.py 567 INFO AccountInactivityLimit set to 12. Account will be inactivated if not accessed in 12 secs accpol_test.py 568 INFO Set attribute StateAttrName to createTimestamp, loginTime attr wont be considered accpol_test.py 184 INFO Modify attribute value for a given DN accpol_test.py 266 INFO add_users: Pass all of these as parameters suffix, subtree, userid and nousrs accpol_test.py 572 INFO Sleep for 9 secs to check if account is not inactivated, expected 0 accpol_test.py 184 INFO Modify attribute value for a given DN accpol_test.py 305 ERROR User uid=nologinusr3,ou=groups,dc=example,dc=com failed to login, expected 0
Failed suites/plugins/accpol_test.py::test_glnoalt_stattr 6.08
topology_st = <lib389.topologies.TopologyMain object at 0x7fbefb0913c8>
accpol_global = None

def test_glnoalt_stattr(topology_st, accpol_global):
"""Verify if user account can be inactivated based on lastLoginTime attribute, altstateattrname set to 1.1

:id: 8dcc3540-578f-422a-bb44-28c2cf20dbcd
:setup: Standalone instance, Global account policy plugin configuration,
set accountInactivityLimit to few secs.
:steps:
1. Configure Global account policy plugin with altstateattrname to 1.1
2. Add few users to ou=groups subtree in the default suffix
3. Wait till it reaches accountInactivityLimit
4. Remove lastLoginTime attribute from the user entry
5. Run ldapsearch as normal user, expected 0. no lastLoginTime attribute present
6. Wait till it reaches accountInactivityLimit and check users, expected error 19
:assert:
1. Success
2. Success
3. Success
4. Success
5. Success
6. Success
"""

suffix = DEFAULT_SUFFIX
subtree = "ou=groups"
userid = "nologinusr"
nousrs = 3
log.info('Set attribute altStateAttrName to 1.1')
modify_attr(topology_st, ACCP_CONF, 'altstateattrname', '1.1')
topology_st.standalone.restart(timeout=10)
> add_users(topology_st, suffix, subtree, userid, nousrs, 0)

suites/plugins/accpol_test.py:635:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
suites/plugins/accpol_test.py:278: in add_users
users.create(properties=user_properties)
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:976: in create
return co.create(rdn, properties, self._basedn)
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:775: in create
return self._create(rdn, properties, basedn, ensure=False)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.idm.user.UserAccount object at 0x7fbf0ae614a8>, rdn = None
properties = {'cn': ['nologinusr3'], 'gidNumber': ['2001'], 'homeDirectory': ['/home/nologinusr3'], 'sn': ['nologinusr3'], ...}
basedn = 'ou=groups,dc=example,dc=com', ensure = False

def _create(self, rdn=None, properties=None, basedn=None, ensure=False):
"""Internal implementation of create. This is used by ensure
and create, to prevent code duplication. You should *never* call
this method directly.
"""
assert(len(self._create_objectclasses) > 0)
basedn = ensure_str(basedn)
self._log.debug('Checking "%s" under %s : %s' % (rdn, basedn, properties))
# Add the objectClasses to the properties
(dn, valid_props) = self._validate(rdn, properties, basedn)
# Check if the entry exists or not? .add_s is going to error anyway ...
self._log.debug('Validated dn %s : valid_props %s' % (dn, valid_props))

exists = False

try:
self._instance.search_ext_s(dn, ldap.SCOPE_BASE, self._object_filter, attrsonly=1, serverctrls=self._server_controls, clientctrls=self._client_controls)
exists = True
except ldap.NO_SUCH_OBJECT:
pass

if exists and ensure:
# update properties
self._log.debug('Exists %s' % dn)
self._dn = dn
# Now use replace_many to setup our values
mods = []
for k,v in valid_props.items():
mods.append( (ldap.MOD_REPLACE, k, v))
self._instance.modify_ext_s(self._dn, mods, serverctrls=self._server_controls, clientctrls=self._client_controls)
elif exists and not ensure:
# raise "already exists."
> raise ldap.ALREADY_EXISTS("Entry %s already exists" % dn)
E ldap.ALREADY_EXISTS: Entry uid=nologinusr3,ou=groups,dc=example,dc=com already exists

/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:750: ALREADY_EXISTS
------------------------------ Captured log call -------------------------------
accpol_test.py 632 INFO Set attribute altStateAttrName to 1.1 accpol_test.py 184 INFO Modify attribute value for a given DN accpol_test.py 266 INFO add_users: Pass all of these as parameters suffix, subtree, userid and nousrs
Failed suites/plugins/accpol_test.py::test_glattr_modtime 18.41
topology_st = <lib389.topologies.TopologyMain object at 0x7fbefb0913c8>
accpol_global = None

def test_glattr_modtime(topology_st, accpol_global):
"""Verify if user account can be inactivated based on modifyTimeStamp attribute

:id: 67380839-2966-45dc-848a-167a954153e1
:setup: Standalone instance, Global account policy plugin configuration,
set accountInactivityLimit to few secs.
:steps:
1. Configure Global account policy plugin with altstateattrname to modifyTimestamp
2. Add few users to ou=groups subtree in the default suffix
3. Wait till the accountInactivityLimit exceeded and check users, expected error 19
4. Modify cn attribute for user, ModifyTimeStamp is updated.
5. Check if user is activated based on ModifyTimeStamp attribute, expected 0
6. Change the plugin to use createTimeStamp and remove lastLoginTime attribute
7. Check if account is inactivated, expected error 19
:assert:
1. Success
2. Success
3. Success
4. Success
5. Success
6. Success
7. Success
"""

suffix = DEFAULT_SUFFIX
subtree = "ou=groups"
userid = "modtimeusr"
nousrs = 3
log.info('Set attribute altStateAttrName to modifyTimestamp')
modify_attr(topology_st, ACCP_CONF, 'altstateattrname', 'modifyTimestamp')
topology_st.standalone.restart(timeout=10)
add_users(topology_st, suffix, subtree, userid, nousrs, 0)
log.info('Sleep for 13 secs to check if account is inactivated, expected 0')
time.sleep(13)
check_attr(topology_st, suffix, subtree, userid, nousrs, "modifyTimeStamp=*")
> account_status(topology_st, suffix, subtree, userid, nousrs, 0, "Disabled")

suites/plugins/accpol_test.py:686:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

topology_st = <lib389.topologies.TopologyMain object at 0x7fbefb0913c8>
suffix = 'dc=example,dc=com', subtree = 'ou=groups', userid = 'modtimeusr'
nousrs = 3, ulimit = 0, tochck = 'Disabled'

def account_status(topology_st, suffix, subtree, userid, nousrs, ulimit, tochck):
"""Check account status for the given suffix, subtree, userid and nousrs"""

while (nousrs > ulimit):
usrrdn = '{}{}'.format(userid, nousrs)
userdn = 'uid={},{},{}'.format(usrrdn, subtree, suffix)
if (tochck == "Enabled"):
try:
topology_st.standalone.simple_bind_s(userdn, USER_PASW)
except ldap.LDAPError as e:
log.error('User {} failed to login, expected 0'.format(userdn))
raise e
elif (tochck == "Expired"):
with pytest.raises(ldap.INVALID_CREDENTIALS):
topology_st.standalone.simple_bind_s(userdn, USER_PASW)
log.error('User {} password not expired , expected error 49'.format(userdn))
elif (tochck == "Disabled"):
with pytest.raises(ldap.CONSTRAINT_VIOLATION):
topology_st.standalone.simple_bind_s(userdn, USER_PASW)
> log.error('User {} is not inactivated, expected error 19'.format(userdn))
E Failed: DID NOT RAISE <class 'ldap.CONSTRAINT_VIOLATION'>

suites/plugins/accpol_test.py:314: Failed
------------------------------ Captured log call -------------------------------
accpol_test.py 679 INFO Set attribute altStateAttrName to modifyTimestamp accpol_test.py 184 INFO Modify attribute value for a given DN accpol_test.py 266 INFO add_users: Pass all of these as parameters suffix, subtree, userid and nousrs accpol_test.py 683 INFO Sleep for 13 secs to check if account is inactivated, expected 0 accpol_test.py 197 INFO Check ModifyTimeStamp attribute present for user accpol_test.py 314 ERROR User uid=modtimeusr3,ou=groups,dc=example,dc=com is not inactivated, expected error 19
Failed suites/plugins/accpol_test.py::test_glnoalt_nologin 27.93
topology_st = <lib389.topologies.TopologyMain object at 0x7fbefb0913c8>
accpol_global = None

def test_glnoalt_nologin(topology_st, accpol_global):
"""Verify if account policy plugin works if we set altstateattrname set to 1.1 and alwaysrecordlogin to NO

:id: 49eda7db-84de-47ba-8f81-ac5e4de3a500
:setup: Standalone instance, Global account policy plugin configuration,
set accountInactivityLimit to few secs.
:steps:
1. Configure Global account policy plugin with altstateattrname to 1.1
2. Set alwaysrecordlogin to NO.
3. Add few users to ou=groups subtree in the default suffix
4. Wait till accountInactivityLimit exceeded and check users, expected 0
5. Check for lastLoginTime attribute, it should not be present
6. Wait for few more secs and check if account is not inactivated, expected 0
7. Run ldapsearch as normal user, expected 0. no lastLoginTime attribute present
8. Set altstateattrname to createTimeStamp
9. Check if user account is inactivated based on createTimeStamp attribute.
10. Account should be inactivated, expected error 19
:assert:
1. Success
2. Success
3. Success
4. Success
5. Success
6. Success
7. Success
8. Success
9. Success
10. Success
"""

suffix = DEFAULT_SUFFIX
subtree = "ou=groups"
userid = "norecrodlogusr"
nousrs = 3
log.info('Set attribute altStateAttrName to 1.1')
modify_attr(topology_st, ACCP_CONF, 'altstateattrname', '1.1')
log.info('Set attribute alwaysrecordlogin to No')
modify_attr(topology_st, ACCP_CONF, 'alwaysrecordlogin', 'no')
topology_st.standalone.restart(timeout=10)
add_users(topology_st, suffix, subtree, userid, nousrs, 0)
log.info('Sleep for 13 secs to check if account is not inactivated, expected 0')
time.sleep(13)
account_status(topology_st, suffix, subtree, userid, nousrs, 0, "Enabled")
time.sleep(3)
> account_status(topology_st, suffix, subtree, userid, nousrs, 0, "Enabled")

suites/plugins/accpol_test.py:744:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
suites/plugins/accpol_test.py:306: in account_status
raise e
suites/plugins/accpol_test.py:303: in account_status
topology_st.standalone.simple_bind_s(userdn, USER_PASW)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:444: in simple_bind_s
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749: in result3
resp_ctrl_classes=resp_ctrl_classes
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756: in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbefb30d6d8>
func = <built-in method result4 of LDAP object at 0x7fbefb331a80>
args = (13, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.CONSTRAINT_VIOLATION: {'desc': 'Constraint violation', 'info': 'Account inactivity limit exceeded. Contact system administrator to reset.'}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: CONSTRAINT_VIOLATION
------------------------------ Captured log call -------------------------------
accpol_test.py 734 INFO Set attribute altStateAttrName to 1.1 accpol_test.py 184 INFO Modify attribute value for a given DN accpol_test.py 736 INFO Set attribute alwaysrecordlogin to No accpol_test.py 184 INFO Modify attribute value for a given DN accpol_test.py 266 INFO add_users: Pass all of these as parameters suffix, subtree, userid and nousrs accpol_test.py 740 INFO Sleep for 13 secs to check if account is not inactivated, expected 0 accpol_test.py 305 ERROR User uid=norecrodlogusr1,ou=groups,dc=example,dc=com failed to login, expected 0
Failed suites/plugins/accpol_test.py::test_glinact_nsact 0.01
topology_st = <lib389.topologies.TopologyMain object at 0x7fbefb0913c8>
accpol_global = None

def test_glinact_nsact(topology_st, accpol_global):
"""Verify if user account can be activated using ns-activate.pl script.

:id: 876a7a7c-0b3f-4cd2-9b45-1dc80846e334
:setup: Standalone instance, Global account policy plugin configuration,
set accountInactivityLimit to few secs.
:steps:
1. Configure Global account policy plugin
2. Add few users to ou=groups subtree in the default suffix
3. Wait for few secs and inactivate user using ns-inactivate.pl
4. Wait till accountInactivityLimit exceeded.
5. Run ldapsearch as normal user, expected error 19.
6. Activate user using ns-activate.pl script
7. Check if account is activated, expected error 19
8. Replace the lastLoginTime attribute and check if account is activated
9. Run ldapsearch as normal user, expected 0.
:assert:
1. Success
2. Success
3. Success
4. Success
5. Success
6. Success
7. Success
8. Success
9. Success
"""

suffix = DEFAULT_SUFFIX
subtree = "ou=groups"
userid = "nsactusr"
nousrs = 1
log.info('AccountInactivityLimit set to 12. Account will be inactivated if not accessed in 12 secs')
> add_users(topology_st, suffix, subtree, userid, nousrs, 0)

suites/plugins/accpol_test.py:791:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
suites/plugins/accpol_test.py:278: in add_users
users.create(properties=user_properties)
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:976: in create
return co.create(rdn, properties, self._basedn)
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:775: in create
return self._create(rdn, properties, basedn, ensure=False)
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:758: in _create
self._instance.add_ext_s(e, serverctrls=self._server_controls, clientctrls=self._client_controls)
/usr/lib/python3.6/site-packages/lib389/__init__.py:158: in inner
return f(ent.dn, ent.toTupleList(), *args[2:])
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:414: in add_ext_s
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749: in result3
resp_ctrl_classes=resp_ctrl_classes
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756: in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbefb30d6d8>
func = <built-in method result4 of LDAP object at 0x7fbefb331a80>
args = (15, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.INSUFFICIENT_ACCESS: {'desc': 'Insufficient access', 'info': "Insufficient 'add' privilege to the 'userPassword' attribute"}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: INSUFFICIENT_ACCESS
------------------------------ Captured log call -------------------------------
accpol_test.py 790 INFO AccountInactivityLimit set to 12. Account will be inactivated if not accessed in 12 secs accpol_test.py 266 INFO add_users: Pass all of these as parameters suffix, subtree, userid and nousrs
Failed suites/plugins/accpol_test.py::test_glinact_acclock 0.01
topology_st = <lib389.topologies.TopologyMain object at 0x7fbefb0913c8>
accpol_global = None

def test_glinact_acclock(topology_st, accpol_global):
"""Verify if user account is activated when account is unlocked by passwordlockoutduration.

:id: 43601a61-065c-4c80-a7c2-e4f6ae17beb8
:setup: Standalone instance, Global account policy plugin configuration,
set accountInactivityLimit to few secs.
:steps:
1. Add few users to ou=groups subtree in the default suffix
2. Wait for few secs and attempt invalid binds for user
3. User account should be locked based on Account Lockout policy.
4. Wait till accountInactivityLimit exceeded and check users, expected error 19
5. Wait for passwordlockoutduration and check if account is active
6. Check if account is unlocked, expected error 19, since account is inactivated
7. Replace the lastLoginTime attribute and check users, expected 0
:assert:
1. Success
2. Success
3. Success
4. Success
5. Success
6. Success
7. Success
"""

suffix = DEFAULT_SUFFIX
subtree = "ou=groups"
userid = "pwlockusr"
nousrs = 1
log.info('AccountInactivityLimit set to 12. Account will be inactivated if not accessed in 12 secs')
> add_users(topology_st, suffix, subtree, userid, nousrs, 0)

suites/plugins/accpol_test.py:836:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
suites/plugins/accpol_test.py:278: in add_users
users.create(properties=user_properties)
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:976: in create
return co.create(rdn, properties, self._basedn)
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:775: in create
return self._create(rdn, properties, basedn, ensure=False)
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:758: in _create
self._instance.add_ext_s(e, serverctrls=self._server_controls, clientctrls=self._client_controls)
/usr/lib/python3.6/site-packages/lib389/__init__.py:158: in inner
return f(ent.dn, ent.toTupleList(), *args[2:])
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:414: in add_ext_s
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749: in result3
resp_ctrl_classes=resp_ctrl_classes
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756: in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbefb30d6d8>
func = <built-in method result4 of LDAP object at 0x7fbefb331a80>
args = (17, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.INSUFFICIENT_ACCESS: {'desc': 'Insufficient access', 'info': "Insufficient 'add' privilege to the 'userPassword' attribute"}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: INSUFFICIENT_ACCESS
------------------------------ Captured log call -------------------------------
accpol_test.py 835 INFO AccountInactivityLimit set to 12. Account will be inactivated if not accessed in 12 secs accpol_test.py 266 INFO add_users: Pass all of these as parameters suffix, subtree, userid and nousrs
Failed suites/plugins/accpol_test.py::test_glnact_pwexp 14.29
topology_st = <lib389.topologies.TopologyMain object at 0x7fbefb0913c8>
accpol_global = None

def test_glnact_pwexp(topology_st, accpol_global):
"""Verify if user account is activated when password is reset after password is expired

:id: 3bb97992-101a-4e5a-b60a-4cc21adcc76e
:setup: Standalone instance, Global account policy plugin configuration,
set accountInactivityLimit to few secs.
:steps:
1. Add few users to ou=groups subtree in the default suffix
2. Set passwordmaxage to few secs
3. Wait for passwordmaxage to reach and check if password expired
4. Run ldapsearch as normal user, expected error 19.
5. Reset the password for user account
6. Wait till accountInactivityLimit exceeded and check users
7. Run ldapsearch as normal user, expected error 19.
8. Replace the lastLoginTime attribute and check if account is activated
9. Run ldapsearch as normal user, expected 0.
:assert:
1. Success
2. Success
3. Success
4. Success
5. Success
6. Success
7. Success
8. Success
9. Success
"""

suffix = DEFAULT_SUFFIX
subtree = "ou=groups"
userid = "pwexpusr"
nousrs = 1
topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
try:
topology_st.standalone.config.set('passwordmaxage', '9')
except ldap.LDAPError as e:
log.error('Failed to change the value of passwordmaxage to 9')
raise e
log.info('AccountInactivityLimit set to 12. Account will be inactivated if not accessed in 12 secs')
log.info('Passwordmaxage is set to 9. Password will expire in 9 secs')
add_users(topology_st, suffix, subtree, userid, nousrs, 0)

log.info('Sleep for 9 secs and check if password expired')
time.sleep(9)
account_status(topology_st, suffix, subtree, userid, nousrs, 0, "Expired")
time.sleep(4) # Passed inactivity
> account_status(topology_st, suffix, subtree, userid, nousrs, 0, "Disabled")

suites/plugins/accpol_test.py:909:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
suites/plugins/accpol_test.py:313: in account_status
topology_st.standalone.simple_bind_s(userdn, USER_PASW)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:444: in simple_bind_s
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749: in result3
resp_ctrl_classes=resp_ctrl_classes
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756: in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbefb30d6d8>
func = <built-in method result4 of LDAP object at 0x7fbefb331a80>
args = (23, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.INVALID_CREDENTIALS: {'desc': 'Invalid credentials', 'info': 'password expired!'}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: INVALID_CREDENTIALS
------------------------------ Captured log call -------------------------------
accpol_test.py 901 INFO AccountInactivityLimit set to 12. Account will be inactivated if not accessed in 12 secs accpol_test.py 902 INFO Passwordmaxage is set to 9. Password will expire in 9 secs accpol_test.py 266 INFO add_users: Pass all of these as parameters suffix, subtree, userid and nousrs accpol_test.py 905 INFO Sleep for 9 secs and check if password expired
Failed suites/plugins/accpol_test.py::test_locact_inact 28.36
topology_st = <lib389.topologies.TopologyMain object at 0x7fbefb0913c8>
accpol_local = None

def test_locact_inact(topology_st, accpol_local):
"""Verify if user account is inactivated when accountInactivityLimit is exceeded.

:id: 02140e36-79eb-4d88-ba28-66478689289b
:setup: Standalone instance, ou=people subtree configured for Local account
policy plugin configuration, set accountInactivityLimit to few secs.
:steps:
1. Add few users to ou=people subtree in the default suffix
2. Wait for few secs before it reaches accountInactivityLimit and check users.
3. Run ldapsearch as normal user, expected 0
4. Wait till accountInactivityLimit is exceeded
5. Run ldapsearch as normal user and check if its inactivated, expected error 19.
6. Replace user's lastLoginTime attribute and check if its activated, expected 0
:assert:
1. Success
2. Success
3. Success
4. Success
5. Success
6. Should return error code 19
"""

suffix = DEFAULT_SUFFIX
subtree = "ou=people"
userid = "inactusr"
nousrs = 3
log.info('AccountInactivityLimit set to 10. Account will be inactivated if not accessed in 10 secs')
add_users(topology_st, suffix, subtree, userid, nousrs, 0)
log.info('Sleep for 9 secs to check if account is not inactivated, expected value 0')
time.sleep(9)
log.info('Account should not be inactivated since AccountInactivityLimit not exceeded')
account_status(topology_st, suffix, subtree, userid, 3, 2, "Enabled")
log.info('Sleep for 2 more secs to check if account is inactivated')
time.sleep(2)
account_status(topology_st, suffix, subtree, userid, 2, 0, "Disabled")
log.info('Sleep +9 secs to check if account {}3 is inactivated'.format(userid))
time.sleep(9)
account_status(topology_st, suffix, subtree, userid, 3, 2, "Disabled")
log.info('Add lastLoginTime attribute to all users and check if its activated')
add_time_attr(topology_st, suffix, subtree, userid, nousrs, 'lastLoginTime')
> account_status(topology_st, suffix, subtree, userid, nousrs, 0, "Enabled")

suites/plugins/accpol_test.py:988:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
suites/plugins/accpol_test.py:306: in account_status
raise e
suites/plugins/accpol_test.py:303: in account_status
topology_st.standalone.simple_bind_s(userdn, USER_PASW)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:444: in simple_bind_s
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749: in result3
resp_ctrl_classes=resp_ctrl_classes
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756: in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbefb30d6d8>
func = <built-in method result4 of LDAP object at 0x7fbefb063990>
args = (16, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.CONSTRAINT_VIOLATION: {'desc': 'Constraint violation', 'info': 'Account inactivity limit exceeded. Contact system administrator to reset.'}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: CONSTRAINT_VIOLATION
------------------------------ Captured log setup ------------------------------
accpol_test.py 74 INFO Adding Local account policy plugin configuration entries------------------------------ Captured log call -------------------------------
accpol_test.py 974 INFO AccountInactivityLimit set to 10. Account will be inactivated if not accessed in 10 secs accpol_test.py 266 INFO add_users: Pass all of these as parameters suffix, subtree, userid and nousrs accpol_test.py 976 INFO Sleep for 9 secs to check if account is not inactivated, expected value 0 accpol_test.py 978 INFO Account should not be inactivated since AccountInactivityLimit not exceeded accpol_test.py 980 INFO Sleep for 2 more secs to check if account is inactivated accpol_test.py 983 INFO Sleep +9 secs to check if account inactusr3 is inactivated accpol_test.py 986 INFO Add lastLoginTime attribute to all users and check if its activated accpol_test.py 214 INFO Enable account by replacing lastLoginTime/createTimeStamp/ModifyTimeStamp attribute accpol_test.py 305 ERROR User uid=inactusr3,ou=people,dc=example,dc=com failed to login, expected 0
Failed suites/plugins/accpol_test.py::test_locinact_modrdn 0.01
topology_st = <lib389.topologies.TopologyMain object at 0x7fbefb0913c8>
accpol_local = None

def test_locinact_modrdn(topology_st, accpol_local):
"""Verify if user account is inactivated when moved from ou=groups to ou=people subtree.

:id: 5f25bea3-fab0-4db4-b43d-2d47cc6e5ad1
:setup: Standalone instance, ou=people subtree configured for Local account
policy plugin configuration, set accountInactivityLimit to few secs.
:steps:
1. Add few users to ou=groups subtree in the default suffix
2. Plugin configured to ou=people subtree only.
3. Wait for few secs before it reaches accountInactivityLimit and check users.
4. Run ldapsearch as normal user, expected 0
5. Wait till accountInactivityLimit exceeded
6. Move users from ou=groups subtree to ou=people subtree
7. Check if users are inactivated, expected error 19
:assert:
1. Success
2. Success
3. Success
4. Success
5. Success
6. Success
7. Should return error code 0 and 19
"""

suffix = DEFAULT_SUFFIX
subtree = "ou=groups"
userid = "nolockusr"
nousrs = 1
log.info('Account should not be inactivated since the subtree is not configured')
> add_users(topology_st, suffix, subtree, userid, nousrs, 0)

suites/plugins/accpol_test.py:1021:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
suites/plugins/accpol_test.py:278: in add_users
users.create(properties=user_properties)
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:976: in create
return co.create(rdn, properties, self._basedn)
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:775: in create
return self._create(rdn, properties, basedn, ensure=False)
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:758: in _create
self._instance.add_ext_s(e, serverctrls=self._server_controls, clientctrls=self._client_controls)
/usr/lib/python3.6/site-packages/lib389/__init__.py:158: in inner
return f(ent.dn, ent.toTupleList(), *args[2:])
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:414: in add_ext_s
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749: in result3
resp_ctrl_classes=resp_ctrl_classes
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756: in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbefb30d6d8>
func = <built-in method result4 of LDAP object at 0x7fbefb063990>
args = (18, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.INSUFFICIENT_ACCESS: {'desc': 'Insufficient access', 'info': "Insufficient 'add' privilege to the 'userPassword' attribute"}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: INSUFFICIENT_ACCESS
------------------------------ Captured log call -------------------------------
accpol_test.py 1020 INFO Account should not be inactivated since the subtree is not configured accpol_test.py 266 INFO add_users: Pass all of these as parameters suffix, subtree, userid and nousrs
Failed suites/plugins/accpol_test.py::test_locact_modrdn 0.01
topology_st = <lib389.topologies.TopologyMain object at 0x7fbefb0913c8>
accpol_local = None

def test_locact_modrdn(topology_st, accpol_local):
"""Verify if user account is inactivated when users moved from ou=people to ou=groups subtree.

:id: e821cbae-bfc3-40d3-947d-b228c809987f
:setup: Standalone instance, ou=people subtree configured for Local account
policy plugin configuration, set accountInactivityLimit to few secs.
:steps:
1. Add few users to ou=people subtree in the default suffix
2. Wait for few secs and check if users not inactivated, expected 0.
3. Move users from ou=people to ou=groups subtree
4. Wait till accountInactivityLimit is exceeded
5. Check if users are active in ou=groups subtree, expected 0
:assert:
1. Success
2. Success
3. Success
4. Success
5. Success
"""

suffix = DEFAULT_SUFFIX
subtree = "ou=people"
userid = "lockusr"
nousrs = 1
log.info('Account should be inactivated since the subtree is configured')
> add_users(topology_st, suffix, subtree, userid, nousrs, 0)

suites/plugins/accpol_test.py:1067:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
suites/plugins/accpol_test.py:278: in add_users
users.create(properties=user_properties)
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:976: in create
return co.create(rdn, properties, self._basedn)
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:775: in create
return self._create(rdn, properties, basedn, ensure=False)
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:758: in _create
self._instance.add_ext_s(e, serverctrls=self._server_controls, clientctrls=self._client_controls)
/usr/lib/python3.6/site-packages/lib389/__init__.py:158: in inner
return f(ent.dn, ent.toTupleList(), *args[2:])
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:414: in add_ext_s
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749: in result3
resp_ctrl_classes=resp_ctrl_classes
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756: in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbefb30d6d8>
func = <built-in method result4 of LDAP object at 0x7fbefb063990>
args = (20, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.INSUFFICIENT_ACCESS: {'desc': 'Insufficient access', 'info': "Insufficient 'add' privilege to the 'userPassword' attribute"}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: INSUFFICIENT_ACCESS
------------------------------ Captured log call -------------------------------
accpol_test.py 1066 INFO Account should be inactivated since the subtree is configured accpol_test.py 266 INFO add_users: Pass all of these as parameters suffix, subtree, userid and nousrs
Failed suites/plugins/rootdn_plugin_test.py::test_rootdn_access_day_of_week 0.06
topology_st = <lib389.topologies.TopologyMain object at 0x7fbef796c278>

def test_rootdn_access_day_of_week(topology_st):
'''
Test the days of week feature
'''

log.info('Running test_rootdn_access_day_of_week...')

days = ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat')
day = int(time.strftime("%w", time.gmtime()))

if day == 6:
# Handle the roll over from Saturday into Sunday
deny_days = days[1] + ', ' + days[2]
allow_days = days[6] + ',' + days[0]
elif day > 3:
deny_days = days[0] + ', ' + days[1]
allow_days = days[day] + ',' + days[day - 1]
else:
deny_days = days[4] + ',' + days[5]
allow_days = days[day] + ',' + days[day + 1]

log.info('Today: ' + days[day])
log.info('Allowed days: ' + allow_days)
log.info('Deny days: ' + deny_days)

#
# Set the deny days
#
try:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-days-allowed',
ensure_bytes(deny_days))])
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_day_of_week: Failed to set the deny days: error {}'
.format(e))
assert False

#
# Bind as Root DN - should fail
#
try:
topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
succeeded = True
except ldap.LDAPError as e:
succeeded = False

if succeeded:
log.fatal('test_rootdn_access_day_of_week: Root DN was incorrectly able to bind')
assert False

#
# Set the allow days
#
try:
topology_st.standalone.simple_bind_s(USER1_DN, PASSWORD)
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_day_of_week: : failed to bind as user1')
assert False

try:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-days-allowed',
ensure_bytes(allow_days))])
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_day_of_week: Failed to set the deny days: error {}'
.format(e))
assert False

try:
> topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

suites/plugins/rootdn_plugin_test.py:235:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = ('cn=Directory Manager', 'password'), kwargs = {}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>, who = 'cn=Directory Manager'
cred = 'password', serverctrls = None, clientctrls = None

def simple_bind_s(self,who=None,cred=None,serverctrls=None,clientctrls=None):
"""
simple_bind_s([who='' [,cred='']]) -> 4-tuple
"""
msgid = self.simple_bind(who,cred,serverctrls,clientctrls)
> resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:444:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (18,), kwargs = {'all': 1, 'timeout': -1}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>, msgid = 18, all = 1
timeout = -1, resp_ctrl_classes = None

def result3(self,msgid=ldap.RES_ANY,all=1,timeout=None,resp_ctrl_classes=None):
resp_type, resp_data, resp_msgid, decoded_resp_ctrls, retoid, retval = self.result4(
msgid,all,timeout,
add_ctrls=0,add_intermediates=0,add_extop=0,
> resp_ctrl_classes=resp_ctrl_classes
)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (18, 1, -1)
kwargs = {'add_ctrls': 0, 'add_extop': 0, 'add_intermediates': 0, 'resp_ctrl_classes': None}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>, msgid = 18, all = 1
timeout = -1, add_ctrls = 0, add_intermediates = 0, add_extop = 0
resp_ctrl_classes = None

def result4(self,msgid=ldap.RES_ANY,all=1,timeout=None,add_ctrls=0,add_intermediates=0,add_extop=0,resp_ctrl_classes=None):
if timeout is None:
timeout = self.timeout
> ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (<built-in method result4 of LDAP object at 0x7fbef94439e0>, 18, 1, -1, 0, 0, ...)
kwargs = {}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>
func = <built-in method result4 of LDAP object at 0x7fbef94439e0>
args = (18, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
result = func(*args,**kwargs)
if __debug__ and self._trace_level>=2:
if func.__name__!="unbind_ext":
diagnostic_message_success = self._l.get_option(ldap.OPT_DIAGNOSTIC_MESSAGE)
finally:
self._ldap_object_lock.release()
except LDAPError as e:
exc_type,exc_value,exc_traceback = sys.exc_info()
try:
if 'info' not in e.args[0] and 'errno' in e.args[0]:
e.args[0]['info'] = strerror(e.args[0]['errno'])
except IndexError:
pass
if __debug__ and self._trace_level>=2:
self._trace_file.write('=> LDAPError - %s: %s\n' % (e.__class__.__name__,str(e)))
try:
> reraise(exc_type, exc_value, exc_traceback)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

exc_type = <class 'ldap.UNWILLING_TO_PERFORM'>
exc_value = UNWILLING_TO_PERFORM({'desc': 'Server is unwilling to perform', 'info': 'RootDN access control violation'},)
exc_traceback = <traceback object at 0x7fbf0ad14288>

def reraise(exc_type, exc_value, exc_traceback):
"""Re-raise an exception given information from sys.exc_info()

Note that unlike six.reraise, this does not support replacing the
traceback. All arguments must come from a single sys.exc_info() call.
"""
# In Python 3, all exception info is contained in one object.
> raise exc_value

/usr/lib64/python3.6/site-packages/ldap/compat.py:44:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>
func = <built-in method result4 of LDAP object at 0x7fbef94439e0>
args = (18, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.UNWILLING_TO_PERFORM: {'desc': 'Server is unwilling to perform', 'info': 'RootDN access control violation'}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: UNWILLING_TO_PERFORM

During handling of the above exception, another exception occurred:

topology_st = <lib389.topologies.TopologyMain object at 0x7fbef796c278>

def test_rootdn_access_day_of_week(topology_st):
'''
Test the days of week feature
'''

log.info('Running test_rootdn_access_day_of_week...')

days = ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat')
day = int(time.strftime("%w", time.gmtime()))

if day == 6:
# Handle the roll over from Saturday into Sunday
deny_days = days[1] + ', ' + days[2]
allow_days = days[6] + ',' + days[0]
elif day > 3:
deny_days = days[0] + ', ' + days[1]
allow_days = days[day] + ',' + days[day - 1]
else:
deny_days = days[4] + ',' + days[5]
allow_days = days[day] + ',' + days[day + 1]

log.info('Today: ' + days[day])
log.info('Allowed days: ' + allow_days)
log.info('Deny days: ' + deny_days)

#
# Set the deny days
#
try:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-days-allowed',
ensure_bytes(deny_days))])
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_day_of_week: Failed to set the deny days: error {}'
.format(e))
assert False

#
# Bind as Root DN - should fail
#
try:
topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
succeeded = True
except ldap.LDAPError as e:
succeeded = False

if succeeded:
log.fatal('test_rootdn_access_day_of_week: Root DN was incorrectly able to bind')
assert False

#
# Set the allow days
#
try:
topology_st.standalone.simple_bind_s(USER1_DN, PASSWORD)
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_day_of_week: : failed to bind as user1')
assert False

try:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-days-allowed',
ensure_bytes(allow_days))])
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_day_of_week: Failed to set the deny days: error {}'
.format(e))
assert False

try:
topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_day_of_week: Root DN bind failed unexpectedly failed: error {}'
.format(e))
> assert False
E assert False

suites/plugins/rootdn_plugin_test.py:239: AssertionError
------------------------------ Captured log call -------------------------------
rootdn_plugin_test.py 173 INFO Running test_rootdn_access_day_of_week... rootdn_plugin_test.py 189 INFO Today: Mon rootdn_plugin_test.py 190 INFO Allowed days: Mon,Tue rootdn_plugin_test.py 191 INFO Deny days: Thu,Fri rootdn_plugin_test.py 238 CRITICAL test_rootdn_access_day_of_week: Root DN bind failed unexpectedly failed: error {'desc': 'Server is unwilling to perform', 'info': 'RootDN access control violation'}
Failed suites/plugins/rootdn_plugin_test.py::test_rootdn_access_denied_ip 5.18
topology_st = <lib389.topologies.TopologyMain object at 0x7fbef796c278>

def test_rootdn_access_denied_ip(topology_st):
'''
Test denied IP feature - we can just test denying 127.0.0.1
'''

log.info('Running test_rootdn_access_denied_ip...')
try:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE,
'rootdn-deny-ip',
b'127.0.0.1'),
(ldap.MOD_ADD,
'rootdn-deny-ip',
b'::1')])
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_denied_ip: Failed to set rootDN plugin config: error {}'
.format(e))
assert False

#
# Bind as Root DN - should fail
#
try:
conn = ldap.initialize('ldap://{}:{}'.format(LOCALHOST_IP, topology_st.standalone.port))
topology_st.standalone.restart()
conn.simple_bind_s(DN_DM, PASSWORD)
succeeded = True
except ldap.LDAPError as e:
succeeded = False
if succeeded:
log.fatal('test_rootdn_access_denied_ip: Root DN was incorrectly able to bind')
assert False

#
# Change the denied IP so root DN succeeds
#
try:
topology_st.standalone.simple_bind_s(USER1_DN, PASSWORD)
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_denied_ip: failed to bind as user1')
assert False

try:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-deny-ip', b'255.255.255.255')])
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_denied_ip: Failed to set rootDN plugin config: error {}'
.format(e))
assert False

try:
> topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

suites/plugins/rootdn_plugin_test.py:310:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = ('cn=Directory Manager', 'password'), kwargs = {}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>, who = 'cn=Directory Manager'
cred = 'password', serverctrls = None, clientctrls = None

def simple_bind_s(self,who=None,cred=None,serverctrls=None,clientctrls=None):
"""
simple_bind_s([who='' [,cred='']]) -> 4-tuple
"""
msgid = self.simple_bind(who,cred,serverctrls,clientctrls)
> resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:444:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (4,), kwargs = {'all': 1, 'timeout': -1}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>, msgid = 4, all = 1
timeout = -1, resp_ctrl_classes = None

def result3(self,msgid=ldap.RES_ANY,all=1,timeout=None,resp_ctrl_classes=None):
resp_type, resp_data, resp_msgid, decoded_resp_ctrls, retoid, retval = self.result4(
msgid,all,timeout,
add_ctrls=0,add_intermediates=0,add_extop=0,
> resp_ctrl_classes=resp_ctrl_classes
)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (4, 1, -1)
kwargs = {'add_ctrls': 0, 'add_extop': 0, 'add_intermediates': 0, 'resp_ctrl_classes': None}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>, msgid = 4, all = 1
timeout = -1, add_ctrls = 0, add_intermediates = 0, add_extop = 0
resp_ctrl_classes = None

def result4(self,msgid=ldap.RES_ANY,all=1,timeout=None,add_ctrls=0,add_intermediates=0,add_extop=0,resp_ctrl_classes=None):
if timeout is None:
timeout = self.timeout
> ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (<built-in method result4 of LDAP object at 0x7fbef9443b98>, 4, 1, -1, 0, 0, ...)
kwargs = {}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>
func = <built-in method result4 of LDAP object at 0x7fbef9443b98>
args = (4, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
result = func(*args,**kwargs)
if __debug__ and self._trace_level>=2:
if func.__name__!="unbind_ext":
diagnostic_message_success = self._l.get_option(ldap.OPT_DIAGNOSTIC_MESSAGE)
finally:
self._ldap_object_lock.release()
except LDAPError as e:
exc_type,exc_value,exc_traceback = sys.exc_info()
try:
if 'info' not in e.args[0] and 'errno' in e.args[0]:
e.args[0]['info'] = strerror(e.args[0]['errno'])
except IndexError:
pass
if __debug__ and self._trace_level>=2:
self._trace_file.write('=> LDAPError - %s: %s\n' % (e.__class__.__name__,str(e)))
try:
> reraise(exc_type, exc_value, exc_traceback)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

exc_type = <class 'ldap.UNWILLING_TO_PERFORM'>
exc_value = UNWILLING_TO_PERFORM({'desc': 'Server is unwilling to perform', 'info': 'RootDN access control violation'},)
exc_traceback = <traceback object at 0x7fbefb334d88>

def reraise(exc_type, exc_value, exc_traceback):
"""Re-raise an exception given information from sys.exc_info()

Note that unlike six.reraise, this does not support replacing the
traceback. All arguments must come from a single sys.exc_info() call.
"""
# In Python 3, all exception info is contained in one object.
> raise exc_value

/usr/lib64/python3.6/site-packages/ldap/compat.py:44:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>
func = <built-in method result4 of LDAP object at 0x7fbef9443b98>
args = (4, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.UNWILLING_TO_PERFORM: {'desc': 'Server is unwilling to perform', 'info': 'RootDN access control violation'}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: UNWILLING_TO_PERFORM

During handling of the above exception, another exception occurred:

topology_st = <lib389.topologies.TopologyMain object at 0x7fbef796c278>

def test_rootdn_access_denied_ip(topology_st):
'''
Test denied IP feature - we can just test denying 127.0.0.1
'''

log.info('Running test_rootdn_access_denied_ip...')
try:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE,
'rootdn-deny-ip',
b'127.0.0.1'),
(ldap.MOD_ADD,
'rootdn-deny-ip',
b'::1')])
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_denied_ip: Failed to set rootDN plugin config: error {}'
.format(e))
assert False

#
# Bind as Root DN - should fail
#
try:
conn = ldap.initialize('ldap://{}:{}'.format(LOCALHOST_IP, topology_st.standalone.port))
topology_st.standalone.restart()
conn.simple_bind_s(DN_DM, PASSWORD)
succeeded = True
except ldap.LDAPError as e:
succeeded = False
if succeeded:
log.fatal('test_rootdn_access_denied_ip: Root DN was incorrectly able to bind')
assert False

#
# Change the denied IP so root DN succeeds
#
try:
topology_st.standalone.simple_bind_s(USER1_DN, PASSWORD)
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_denied_ip: failed to bind as user1')
assert False

try:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-deny-ip', b'255.255.255.255')])
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_denied_ip: Failed to set rootDN plugin config: error {}'
.format(e))
assert False

try:
topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_denied_ip: Root DN bind failed unexpectedly failed: error {}'
.format(e))
> assert False
E assert False

suites/plugins/rootdn_plugin_test.py:314: AssertionError
------------------------------ Captured log call -------------------------------
rootdn_plugin_test.py 266 INFO Running test_rootdn_access_denied_ip... rootdn_plugin_test.py 313 CRITICAL test_rootdn_access_denied_ip: Root DN bind failed unexpectedly failed: error {'desc': 'Server is unwilling to perform', 'info': 'RootDN access control violation'}
Failed suites/plugins/rootdn_plugin_test.py::test_rootdn_access_denied_host 0.07
topology_st = <lib389.topologies.TopologyMain object at 0x7fbef796c278>

def test_rootdn_access_denied_host(topology_st):
'''
Test denied Host feature - we can just test denying localhost
'''

log.info('Running test_rootdn_access_denied_host...')
hostname = socket.gethostname()
localhost = DirSrvTools.getLocalhost()
try:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD,
'rootdn-deny-host',
ensure_bytes(hostname))])
if localhost != hostname:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD,
'rootdn-deny-host',
ensure_bytes(localhost))])
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_denied_host: Failed to set deny host: error {}'
.format(e))
assert False

#
# Bind as Root DN - should fail
#
try:
topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
succeeded = True
except ldap.LDAPError as e:
succeeded = False

if succeeded:
log.fatal('test_rootdn_access_denied_host: Root DN was incorrectly able to bind')
assert False

#
# Change the denied host so root DN succeeds
#
try:
topology_st.standalone.simple_bind_s(USER1_DN, PASSWORD)
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_denied_host: : failed to bind as user1')
assert False

try:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-deny-host', b'i.dont.exist.com')])
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_denied_host: Failed to set rootDN plugin config: error {}'
.format(e))
assert False

try:
> topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

suites/plugins/rootdn_plugin_test.py:387:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = ('cn=Directory Manager', 'password'), kwargs = {}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>, who = 'cn=Directory Manager'
cred = 'password', serverctrls = None, clientctrls = None

def simple_bind_s(self,who=None,cred=None,serverctrls=None,clientctrls=None):
"""
simple_bind_s([who='' [,cred='']]) -> 4-tuple
"""
msgid = self.simple_bind(who,cred,serverctrls,clientctrls)
> resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:444:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (10,), kwargs = {'all': 1, 'timeout': -1}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>, msgid = 10, all = 1
timeout = -1, resp_ctrl_classes = None

def result3(self,msgid=ldap.RES_ANY,all=1,timeout=None,resp_ctrl_classes=None):
resp_type, resp_data, resp_msgid, decoded_resp_ctrls, retoid, retval = self.result4(
msgid,all,timeout,
add_ctrls=0,add_intermediates=0,add_extop=0,
> resp_ctrl_classes=resp_ctrl_classes
)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (10, 1, -1)
kwargs = {'add_ctrls': 0, 'add_extop': 0, 'add_intermediates': 0, 'resp_ctrl_classes': None}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>, msgid = 10, all = 1
timeout = -1, add_ctrls = 0, add_intermediates = 0, add_extop = 0
resp_ctrl_classes = None

def result4(self,msgid=ldap.RES_ANY,all=1,timeout=None,add_ctrls=0,add_intermediates=0,add_extop=0,resp_ctrl_classes=None):
if timeout is None:
timeout = self.timeout
> ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (<built-in method result4 of LDAP object at 0x7fbef9443b98>, 10, 1, -1, 0, 0, ...)
kwargs = {}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>
func = <built-in method result4 of LDAP object at 0x7fbef9443b98>
args = (10, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
result = func(*args,**kwargs)
if __debug__ and self._trace_level>=2:
if func.__name__!="unbind_ext":
diagnostic_message_success = self._l.get_option(ldap.OPT_DIAGNOSTIC_MESSAGE)
finally:
self._ldap_object_lock.release()
except LDAPError as e:
exc_type,exc_value,exc_traceback = sys.exc_info()
try:
if 'info' not in e.args[0] and 'errno' in e.args[0]:
e.args[0]['info'] = strerror(e.args[0]['errno'])
except IndexError:
pass
if __debug__ and self._trace_level>=2:
self._trace_file.write('=> LDAPError - %s: %s\n' % (e.__class__.__name__,str(e)))
try:
> reraise(exc_type, exc_value, exc_traceback)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

exc_type = <class 'ldap.UNWILLING_TO_PERFORM'>
exc_value = UNWILLING_TO_PERFORM({'desc': 'Server is unwilling to perform', 'info': 'RootDN access control violation'},)
exc_traceback = <traceback object at 0x7fbf0b1b7108>

def reraise(exc_type, exc_value, exc_traceback):
"""Re-raise an exception given information from sys.exc_info()

Note that unlike six.reraise, this does not support replacing the
traceback. All arguments must come from a single sys.exc_info() call.
"""
# In Python 3, all exception info is contained in one object.
> raise exc_value

/usr/lib64/python3.6/site-packages/ldap/compat.py:44:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>
func = <built-in method result4 of LDAP object at 0x7fbef9443b98>
args = (10, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.UNWILLING_TO_PERFORM: {'desc': 'Server is unwilling to perform', 'info': 'RootDN access control violation'}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: UNWILLING_TO_PERFORM

During handling of the above exception, another exception occurred:

topology_st = <lib389.topologies.TopologyMain object at 0x7fbef796c278>

def test_rootdn_access_denied_host(topology_st):
'''
Test denied Host feature - we can just test denying localhost
'''

log.info('Running test_rootdn_access_denied_host...')
hostname = socket.gethostname()
localhost = DirSrvTools.getLocalhost()
try:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD,
'rootdn-deny-host',
ensure_bytes(hostname))])
if localhost != hostname:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD,
'rootdn-deny-host',
ensure_bytes(localhost))])
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_denied_host: Failed to set deny host: error {}'
.format(e))
assert False

#
# Bind as Root DN - should fail
#
try:
topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
succeeded = True
except ldap.LDAPError as e:
succeeded = False

if succeeded:
log.fatal('test_rootdn_access_denied_host: Root DN was incorrectly able to bind')
assert False

#
# Change the denied host so root DN succeeds
#
try:
topology_st.standalone.simple_bind_s(USER1_DN, PASSWORD)
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_denied_host: : failed to bind as user1')
assert False

try:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-deny-host', b'i.dont.exist.com')])
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_denied_host: Failed to set rootDN plugin config: error {}'
.format(e))
assert False

try:
topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_denied_host: Root DN bind failed unexpectedly failed: error {}'
.format(e))
> assert False
E assert False

suites/plugins/rootdn_plugin_test.py:391: AssertionError
------------------------------ Captured log call -------------------------------
rootdn_plugin_test.py 341 INFO Running test_rootdn_access_denied_host... rootdn_plugin_test.py 390 CRITICAL test_rootdn_access_denied_host: Root DN bind failed unexpectedly failed: error {'desc': 'Server is unwilling to perform', 'info': 'RootDN access control violation'}
Failed suites/plugins/rootdn_plugin_test.py::test_rootdn_access_allowed_ip 5.02
topology_st = <lib389.topologies.TopologyMain object at 0x7fbef796c278>

def test_rootdn_access_allowed_ip(topology_st):
'''
Test allowed ip feature
'''

log.info('Running test_rootdn_access_allowed_ip...')

#
# Set allowed host to an unknown host - blocks the Root DN
#
try:
conn = ldap.initialize('ldap://{}:{}'.format(LOCALHOST_IP, topology_st.standalone.port))
> topology_st.standalone.restart()

suites/plugins/rootdn_plugin_test.py:425:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>, timeout = 120, post_open = True

def restart(self, timeout=120, post_open=True):
'''
It restarts an instance and rebind it. Its final state after rebind
(open) is DIRSRV_STATE_ONLINE.

@param self
@param timeout (in sec) to wait for successful stop

@return None

@raise None
'''
self.stop(timeout)
time.sleep(1)
> self.start(timeout, post_open)

/usr/lib/python3.6/site-packages/lib389/__init__.py:1329:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>, timeout = 120, post_open = True

def start(self, timeout=120, post_open=True):
'''
It starts an instance and rebind it. Its final state after rebind
(open) is DIRSRV_STATE_ONLINE

@param self
@param timeout (in sec) to wait for successful start

@return None

@raise None
'''

if self.status() is True:
return

if self.with_systemd() and not self.containerised:
# Do systemd things here ...
subprocess.check_call(["/usr/bin/systemctl",
"start",
"dirsrv@%s" % self.serverid])
else:
# Start the process.
# Wait for it to terminate
# This means the server is probably ready to go ....
env = {}
if self.has_asan():
self.log.warning("WARNING: Starting instance with ASAN options. This is probably not what you want. Please contact support.")
self.log.info("INFO: ASAN options will be copied from your environment")
env['ASAN_SYMBOLIZER_PATH'] = "/usr/bin/llvm-symbolizer"
env['ASAN_OPTIONS'] = "symbolize=1 detect_deadlocks=1 log_path=%s/ns-slapd-%s.asan" % (self.ds_paths.run_dir, self.serverid)
env.update(os.environ)
output = None
try:
output = subprocess.check_output(["%s/ns-slapd" % self.get_sbin_dir(),
"-D",
self.ds_paths.config_dir,
"-i",
self.ds_paths.pid_file], env=env, stderr=subprocess.STDOUT)
except subprocess.CalledProcessError:
self.log.error(output)
count = timeout
pid = pid_from_file(self.ds_paths.pid_file)
while (pid is None) and count > 0:
count -= 1
time.sleep(1)
pid = pid_from_file(self.ds_paths.pid_file)
if pid == 0 or pid is None:
raise ValueError
# Wait
while not pid_exists(pid) and count > 0:
# It looks like DS changes the value in here at some point ...
# It's probably a DS bug, but if we "keep checking" the file, eventually
# we get the main server pid, and it's ready to go.
pid = pid_from_file(self.ds_paths.pid_file)
time.sleep(1)
count -= 1
if not pid_exists(pid):
raise Exception("Failed to start DS")
if post_open:
> self.open()

/usr/lib/python3.6/site-packages/lib389/__init__.py:1239:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>
uri = 'ldap://server.example.com:38901', saslmethod = None, sasltoken = None
certdir = '/etc/dirsrv/slapd-standalone1', starttls = False, connOnly = False
reqcert = 1, usercert = None, userkey = None

def open(self, uri=None, saslmethod=None, sasltoken=None, certdir=None, starttls=False, connOnly=False, reqcert=ldap.OPT_X_TLS_HARD,
usercert=None, userkey=None):
'''
It opens a ldap bound connection to dirsrv so that online
administrative tasks are possible. It binds with the binddn
property, then it initializes various fields from DirSrv
(via __initPart2)

The state changes -> DIRSRV_STATE_ONLINE

@param self
@param saslmethod - None, or GSSAPI
@param sasltoken - The ldap.sasl token type to bind with.
@param certdir - Certificate directory for TLS
@return None

@raise LDAPError
'''

# Force our state offline to prevent paths from trying to search
# cn=config while we startup.
self.state = DIRSRV_STATE_OFFLINE

if not uri:
uri = self.toLDAPURL()

self.log.debug('open(): Connecting to uri %s', uri)
if hasattr(ldap, 'PYLDAP_VERSION') and MAJOR >= 3:
super(DirSrv, self).__init__(uri, bytes_mode=False, trace_level=TRACE_LEVEL)
else:
super(DirSrv, self).__init__(uri, trace_level=TRACE_LEVEL)

if certdir is None and self.isLocal:
certdir = self.get_cert_dir()
self.log.debug("Using dirsrv ca certificate %s", certdir)

if certdir is not None:
"""
We have a certificate directory, so lets start up TLS negotiations
"""
# Note this sets LDAP.OPT not SELF. Because once self has opened
# it can NOT change opts AT ALL.
self.set_option(ldap.OPT_X_TLS_CACERTDIR, ensure_str(certdir))
self.log.debug("Using external ca certificate %s", certdir)

if userkey is not None:
# Note this sets LDAP.OPT not SELF. Because once self has opened
# it can NOT change opts AT ALL.
self.log.debug("Using user private key %s", userkey)
self.set_option(ldap.OPT_X_TLS_KEYFILE, ensure_str(userkey))

if usercert is not None:
self.log.debug("Using user certificate %s", usercert)
self.set_option(ldap.OPT_X_TLS_CERTFILE, ensure_str(usercert))

if certdir is not None:
self.log.debug("Using external ca certificate %s", certdir)
self.set_option(ldap.OPT_X_TLS_CACERTDIR, ensure_str(certdir))

if certdir or starttls:
try:
# Note this sets LDAP.OPT not SELF. Because once self has opened
# it can NOT change opts on reused (ie restart)
self.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, reqcert)
self.log.debug("Using certificate policy %s", reqcert)
self.log.debug("ldap.OPT_X_TLS_REQUIRE_CERT = %s", reqcert)
except ldap.LDAPError as e:
self.log.fatal('TLS negotiation failed: %s', e)
raise e

# Tell python ldap to make a new TLS context with this information.
self.set_option(ldap.OPT_X_TLS_NEWCTX, 0)

if starttls and not uri.startswith('ldaps'):
self.start_tls_s()

if saslmethod and sasltoken is not None:
# Just pass the sasltoken in!
self.sasl_interactive_bind_s("", sasltoken)
elif saslmethod and saslmethod.lower() == 'gssapi':
"""
Perform kerberos/gssapi authentication
"""
sasl_auth = ldap.sasl.gssapi("")
self.sasl_interactive_bind_s("", sasl_auth)

elif saslmethod == 'EXTERNAL':
# Do nothing.
sasl_auth = ldap.sasl.external()
self.sasl_interactive_bind_s("", sasl_auth)
elif saslmethod:
# Unknown or unsupported method
self.log.debug('Unsupported SASL method: %s', saslmethod)
raise ldap.UNWILLING_TO_PERFORM

elif self.can_autobind():
# Connect via ldapi, and autobind.
# do nothing: the bind is complete.
if self.verbose:
self.log.info("open(): Using root autobind ...")
sasl_auth = ldap.sasl.external()
self.sasl_interactive_bind_s("", sasl_auth)

else:
"""
Do a simple bind
"""
try:
self.simple_bind_s(ensure_str(self.binddn), self.bindpw)
except ldap.SERVER_DOWN as e:
# TODO add server info in exception
self.log.debug("Cannot connect to %r", uri)
raise e
except ldap.LDAPError as e:
self.log.debug("Error: Failed to authenticate: %s", e)
> raise e

/usr/lib/python3.6/site-packages/lib389/__init__.py:1149:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>
uri = 'ldap://server.example.com:38901', saslmethod = None, sasltoken = None
certdir = '/etc/dirsrv/slapd-standalone1', starttls = False, connOnly = False
reqcert = 1, usercert = None, userkey = None

def open(self, uri=None, saslmethod=None, sasltoken=None, certdir=None, starttls=False, connOnly=False, reqcert=ldap.OPT_X_TLS_HARD,
usercert=None, userkey=None):
'''
It opens a ldap bound connection to dirsrv so that online
administrative tasks are possible. It binds with the binddn
property, then it initializes various fields from DirSrv
(via __initPart2)

The state changes -> DIRSRV_STATE_ONLINE

@param self
@param saslmethod - None, or GSSAPI
@param sasltoken - The ldap.sasl token type to bind with.
@param certdir - Certificate directory for TLS
@return None

@raise LDAPError
'''

# Force our state offline to prevent paths from trying to search
# cn=config while we startup.
self.state = DIRSRV_STATE_OFFLINE

if not uri:
uri = self.toLDAPURL()

self.log.debug('open(): Connecting to uri %s', uri)
if hasattr(ldap, 'PYLDAP_VERSION') and MAJOR >= 3:
super(DirSrv, self).__init__(uri, bytes_mode=False, trace_level=TRACE_LEVEL)
else:
super(DirSrv, self).__init__(uri, trace_level=TRACE_LEVEL)

if certdir is None and self.isLocal:
certdir = self.get_cert_dir()
self.log.debug("Using dirsrv ca certificate %s", certdir)

if certdir is not None:
"""
We have a certificate directory, so lets start up TLS negotiations
"""
# Note this sets LDAP.OPT not SELF. Because once self has opened
# it can NOT change opts AT ALL.
self.set_option(ldap.OPT_X_TLS_CACERTDIR, ensure_str(certdir))
self.log.debug("Using external ca certificate %s", certdir)

if userkey is not None:
# Note this sets LDAP.OPT not SELF. Because once self has opened
# it can NOT change opts AT ALL.
self.log.debug("Using user private key %s", userkey)
self.set_option(ldap.OPT_X_TLS_KEYFILE, ensure_str(userkey))

if usercert is not None:
self.log.debug("Using user certificate %s", usercert)
self.set_option(ldap.OPT_X_TLS_CERTFILE, ensure_str(usercert))

if certdir is not None:
self.log.debug("Using external ca certificate %s", certdir)
self.set_option(ldap.OPT_X_TLS_CACERTDIR, ensure_str(certdir))

if certdir or starttls:
try:
# Note this sets LDAP.OPT not SELF. Because once self has opened
# it can NOT change opts on reused (ie restart)
self.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, reqcert)
self.log.debug("Using certificate policy %s", reqcert)
self.log.debug("ldap.OPT_X_TLS_REQUIRE_CERT = %s", reqcert)
except ldap.LDAPError as e:
self.log.fatal('TLS negotiation failed: %s', e)
raise e

# Tell python ldap to make a new TLS context with this information.
self.set_option(ldap.OPT_X_TLS_NEWCTX, 0)

if starttls and not uri.startswith('ldaps'):
self.start_tls_s()

if saslmethod and sasltoken is not None:
# Just pass the sasltoken in!
self.sasl_interactive_bind_s("", sasltoken)
elif saslmethod and saslmethod.lower() == 'gssapi':
"""
Perform kerberos/gssapi authentication
"""
sasl_auth = ldap.sasl.gssapi("")
self.sasl_interactive_bind_s("", sasl_auth)

elif saslmethod == 'EXTERNAL':
# Do nothing.
sasl_auth = ldap.sasl.external()
self.sasl_interactive_bind_s("", sasl_auth)
elif saslmethod:
# Unknown or unsupported method
self.log.debug('Unsupported SASL method: %s', saslmethod)
raise ldap.UNWILLING_TO_PERFORM

elif self.can_autobind():
# Connect via ldapi, and autobind.
# do nothing: the bind is complete.
if self.verbose:
self.log.info("open(): Using root autobind ...")
sasl_auth = ldap.sasl.external()
self.sasl_interactive_bind_s("", sasl_auth)

else:
"""
Do a simple bind
"""
try:
> self.simple_bind_s(ensure_str(self.binddn), self.bindpw)

/usr/lib/python3.6/site-packages/lib389/__init__.py:1142:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = ('cn=Directory Manager', 'password'), kwargs = {}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>, who = 'cn=Directory Manager'
cred = 'password', serverctrls = None, clientctrls = None

def simple_bind_s(self,who=None,cred=None,serverctrls=None,clientctrls=None):
"""
simple_bind_s([who='' [,cred='']]) -> 4-tuple
"""
msgid = self.simple_bind(who,cred,serverctrls,clientctrls)
> resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:444:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (1,), kwargs = {'all': 1, 'timeout': -1}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>, msgid = 1, all = 1
timeout = -1, resp_ctrl_classes = None

def result3(self,msgid=ldap.RES_ANY,all=1,timeout=None,resp_ctrl_classes=None):
resp_type, resp_data, resp_msgid, decoded_resp_ctrls, retoid, retval = self.result4(
msgid,all,timeout,
add_ctrls=0,add_intermediates=0,add_extop=0,
> resp_ctrl_classes=resp_ctrl_classes
)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (1, 1, -1)
kwargs = {'add_ctrls': 0, 'add_extop': 0, 'add_intermediates': 0, 'resp_ctrl_classes': None}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>, msgid = 1, all = 1
timeout = -1, add_ctrls = 0, add_intermediates = 0, add_extop = 0
resp_ctrl_classes = None

def result4(self,msgid=ldap.RES_ANY,all=1,timeout=None,add_ctrls=0,add_intermediates=0,add_extop=0,resp_ctrl_classes=None):
if timeout is None:
timeout = self.timeout
> ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (<built-in method result4 of LDAP object at 0x7fbefb3c7d00>, 1, 1, -1, 0, 0, ...)
kwargs = {}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>
func = <built-in method result4 of LDAP object at 0x7fbefb3c7d00>
args = (1, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
result = func(*args,**kwargs)
if __debug__ and self._trace_level>=2:
if func.__name__!="unbind_ext":
diagnostic_message_success = self._l.get_option(ldap.OPT_DIAGNOSTIC_MESSAGE)
finally:
self._ldap_object_lock.release()
except LDAPError as e:
exc_type,exc_value,exc_traceback = sys.exc_info()
try:
if 'info' not in e.args[0] and 'errno' in e.args[0]:
e.args[0]['info'] = strerror(e.args[0]['errno'])
except IndexError:
pass
if __debug__ and self._trace_level>=2:
self._trace_file.write('=> LDAPError - %s: %s\n' % (e.__class__.__name__,str(e)))
try:
> reraise(exc_type, exc_value, exc_traceback)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

exc_type = <class 'ldap.UNWILLING_TO_PERFORM'>
exc_value = UNWILLING_TO_PERFORM({'desc': 'Server is unwilling to perform', 'info': 'RootDN access control violation'},)
exc_traceback = <traceback object at 0x7fbefb221648>

def reraise(exc_type, exc_value, exc_traceback):
"""Re-raise an exception given information from sys.exc_info()

Note that unlike six.reraise, this does not support replacing the
traceback. All arguments must come from a single sys.exc_info() call.
"""
# In Python 3, all exception info is contained in one object.
> raise exc_value

/usr/lib64/python3.6/site-packages/ldap/compat.py:44:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>
func = <built-in method result4 of LDAP object at 0x7fbefb3c7d00>
args = (1, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.UNWILLING_TO_PERFORM: {'desc': 'Server is unwilling to perform', 'info': 'RootDN access control violation'}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: UNWILLING_TO_PERFORM

During handling of the above exception, another exception occurred:

topology_st = <lib389.topologies.TopologyMain object at 0x7fbef796c278>

def test_rootdn_access_allowed_ip(topology_st):
'''
Test allowed ip feature
'''

log.info('Running test_rootdn_access_allowed_ip...')

#
# Set allowed host to an unknown host - blocks the Root DN
#
try:
conn = ldap.initialize('ldap://{}:{}'.format(LOCALHOST_IP, topology_st.standalone.port))
topology_st.standalone.restart()
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-allow-ip', b'255.255.255.255')])
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_allowed_ip: Failed to set allowed host: error {}'
.format(e))
> assert False
E assert False

suites/plugins/rootdn_plugin_test.py:430: AssertionError
------------------------------ Captured log call -------------------------------
rootdn_plugin_test.py 418 INFO Running test_rootdn_access_allowed_ip... rootdn_plugin_test.py 429 CRITICAL test_rootdn_access_allowed_ip: Failed to set allowed host: error {'desc': 'Server is unwilling to perform', 'info': 'RootDN access control violation'}
Failed suites/plugins/rootdn_plugin_test.py::test_rootdn_access_allowed_host 0.09
topology_st = <lib389.topologies.TopologyMain object at 0x7fbef796c278>

def test_rootdn_access_allowed_host(topology_st):
'''
Test allowed ip feature
'''

log.info('Running test_rootdn_access_allowed_host...')

#
# Set allowed host to an unknown host - blocks the Root DN
#
try:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-allow-host', b'i.dont.exist.com')])
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_allowed_host: Failed to set allowed host: error {}'
.format(e))
assert False

#
# Bind as Root DN - should fail
#
try:
topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
succeeded = True
except ldap.LDAPError as e:
succeeded = False

if succeeded:
log.fatal('test_rootdn_access_allowed_host: Root DN was incorrectly able to bind')
assert False

#
# Allow localhost
#
try:
topology_st.standalone.simple_bind_s(USER1_DN, PASSWORD)
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_allowed_host: : failed to bind as user1')
assert False

hostname = socket.gethostname()
localhost = DirSrvTools.getLocalhost()
try:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_DELETE,
'rootdn-allow-host',
None)])
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD,
'rootdn-allow-host',
ensure_bytes(localhost))])
if hostname != localhost:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD,
'rootdn-allow-host',
ensure_bytes(hostname))])
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_allowed_host: Failed to set allowed host: error {}'
.format(e))
assert False

try:
> topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

suites/plugins/rootdn_plugin_test.py:549:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = ('cn=Directory Manager', 'password'), kwargs = {}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>, who = 'cn=Directory Manager'
cred = 'password', serverctrls = None, clientctrls = None

def simple_bind_s(self,who=None,cred=None,serverctrls=None,clientctrls=None):
"""
simple_bind_s([who='' [,cred='']]) -> 4-tuple
"""
msgid = self.simple_bind(who,cred,serverctrls,clientctrls)
> resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:444:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (8,), kwargs = {'all': 1, 'timeout': -1}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>, msgid = 8, all = 1
timeout = -1, resp_ctrl_classes = None

def result3(self,msgid=ldap.RES_ANY,all=1,timeout=None,resp_ctrl_classes=None):
resp_type, resp_data, resp_msgid, decoded_resp_ctrls, retoid, retval = self.result4(
msgid,all,timeout,
add_ctrls=0,add_intermediates=0,add_extop=0,
> resp_ctrl_classes=resp_ctrl_classes
)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (8, 1, -1)
kwargs = {'add_ctrls': 0, 'add_extop': 0, 'add_intermediates': 0, 'resp_ctrl_classes': None}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>, msgid = 8, all = 1
timeout = -1, add_ctrls = 0, add_intermediates = 0, add_extop = 0
resp_ctrl_classes = None

def result4(self,msgid=ldap.RES_ANY,all=1,timeout=None,add_ctrls=0,add_intermediates=0,add_extop=0,resp_ctrl_classes=None):
if timeout is None:
timeout = self.timeout
> ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (<built-in method result4 of LDAP object at 0x7fbefb3c7d00>, 8, 1, -1, 0, 0, ...)
kwargs = {}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>
func = <built-in method result4 of LDAP object at 0x7fbefb3c7d00>
args = (8, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
result = func(*args,**kwargs)
if __debug__ and self._trace_level>=2:
if func.__name__!="unbind_ext":
diagnostic_message_success = self._l.get_option(ldap.OPT_DIAGNOSTIC_MESSAGE)
finally:
self._ldap_object_lock.release()
except LDAPError as e:
exc_type,exc_value,exc_traceback = sys.exc_info()
try:
if 'info' not in e.args[0] and 'errno' in e.args[0]:
e.args[0]['info'] = strerror(e.args[0]['errno'])
except IndexError:
pass
if __debug__ and self._trace_level>=2:
self._trace_file.write('=> LDAPError - %s: %s\n' % (e.__class__.__name__,str(e)))
try:
> reraise(exc_type, exc_value, exc_traceback)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

exc_type = <class 'ldap.UNWILLING_TO_PERFORM'>
exc_value = UNWILLING_TO_PERFORM({'desc': 'Server is unwilling to perform', 'info': 'RootDN access control violation'},)
exc_traceback = <traceback object at 0x7fbefb349908>

def reraise(exc_type, exc_value, exc_traceback):
"""Re-raise an exception given information from sys.exc_info()

Note that unlike six.reraise, this does not support replacing the
traceback. All arguments must come from a single sys.exc_info() call.
"""
# In Python 3, all exception info is contained in one object.
> raise exc_value

/usr/lib64/python3.6/site-packages/ldap/compat.py:44:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0af6d470>
func = <built-in method result4 of LDAP object at 0x7fbefb3c7d00>
args = (8, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.UNWILLING_TO_PERFORM: {'desc': 'Server is unwilling to perform', 'info': 'RootDN access control violation'}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: UNWILLING_TO_PERFORM

During handling of the above exception, another exception occurred:

topology_st = <lib389.topologies.TopologyMain object at 0x7fbef796c278>

def test_rootdn_access_allowed_host(topology_st):
'''
Test allowed ip feature
'''

log.info('Running test_rootdn_access_allowed_host...')

#
# Set allowed host to an unknown host - blocks the Root DN
#
try:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_REPLACE, 'rootdn-allow-host', b'i.dont.exist.com')])
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_allowed_host: Failed to set allowed host: error {}'
.format(e))
assert False

#
# Bind as Root DN - should fail
#
try:
topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
succeeded = True
except ldap.LDAPError as e:
succeeded = False

if succeeded:
log.fatal('test_rootdn_access_allowed_host: Root DN was incorrectly able to bind')
assert False

#
# Allow localhost
#
try:
topology_st.standalone.simple_bind_s(USER1_DN, PASSWORD)
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_allowed_host: : failed to bind as user1')
assert False

hostname = socket.gethostname()
localhost = DirSrvTools.getLocalhost()
try:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_DELETE,
'rootdn-allow-host',
None)])
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD,
'rootdn-allow-host',
ensure_bytes(localhost))])
if hostname != localhost:
topology_st.standalone.modify_s(PLUGIN_DN, [(ldap.MOD_ADD,
'rootdn-allow-host',
ensure_bytes(hostname))])
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_allowed_host: Failed to set allowed host: error {}'
.format(e))
assert False

try:
topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
except ldap.LDAPError as e:
log.fatal('test_rootdn_access_allowed_host: Root DN bind failed unexpectedly failed: error {}'
.format(e))
> assert False
E assert False

suites/plugins/rootdn_plugin_test.py:553: AssertionError
------------------------------ Captured log call -------------------------------
rootdn_plugin_test.py 496 INFO Running test_rootdn_access_allowed_host... rootdn_plugin_test.py 552 CRITICAL test_rootdn_access_allowed_host: Root DN bind failed unexpectedly failed: error {'desc': 'Server is unwilling to perform', 'info': 'RootDN access control violation'}
Failed suites/replication/cleanallruv_test.py::test_abort_restart 13.02
topology_m4 = <lib389.topologies.TopologyMain object at 0x7fbef797a1d0>
m4rid = '5'

def test_abort_restart(topology_m4, m4rid):
"""Test the abort task can handle a restart, and then resume

:id: b66e33d4-fe85-4e1c-b882-75da80f70ab3
:setup: Replication setup with four masters
:steps:
1. Disable replication on master 4
2. Remove agreements to master 4 from other masters
3. Stop master 3
4. Run a cleanallruv task on master 1
5. Run a cleanallruv abort task on master 1
6. Restart master 1
7. Make sure that no crash happened
8. Start master 3
9. Check master 1 does not have the clean task running
10. Check that errors log doesn't have 'Aborting abort task' message
:expectedresults:
1. Replication on master 4 should be disabled
2. Agreements to master 4 should be removed
3. Master 3 should be stopped
4. Operation should be successful
5. Operation should be successful
6. Master 1 should be restarted
7. No crash should happened
8. Master 3 should be started
9. Check master 1 shouldn't have the clean task running
10. Errors log shouldn't have 'Aborting abort task' message
"""

log.info('Running test_abort_restart...')
# Remove the agreements from the other masters that point to master 4
remove_master4_agmts("test_abort", topology_m4)

# Stop master 3
log.info('test_abort_restart: stop master 3 to freeze the cleanAllRUV task...')
topology_m4.ms["master3"].stop()

# Run the task
log.info('test_abort_restart: add the cleanAllRUV task...')
cruv_task = CleanAllRUVTask(topology_m4.ms["master1"])
cruv_task.create(properties={
'replica-id': m4rid,
'replica-base-dn': DEFAULT_SUFFIX
})
# Wait a bit
time.sleep(2)

# Abort the task
abort_task = cruv_task.abort()

# Check master 1 does not have the clean task running
log.info('test_abort_abort: check master 1 no longer has a cleanAllRUV task...')
if not task_done(topology_m4, cruv_task.dn):
log.fatal('test_abort_restart: CleanAllRUV task was not aborted')
assert False

# Now restart master 1, and make sure the abort process completes
topology_m4.ms["master1"].restart()
if topology_m4.ms["master1"].detectDisorderlyShutdown():
log.fatal('test_abort_restart: Master 1 previously crashed!')
assert False

# Start master 3
topology_m4.ms["master3"].start()

# Check master 1 tried to run abort task. We expect the abort task to be aborted.
if not topology_m4.ms["master1"].searchErrorsLog('Aborting abort task'):
log.fatal('test_abort_restart: Abort task did not restart')
> assert False
E assert False

suites/replication/cleanallruv_test.py:453: AssertionError
------------------------------ Captured log setup ------------------------------
cleanallruv_test.py 141 DEBUG -------------- BEGIN RESET of m4 ----------------- replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39003 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39004 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39003 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39004 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39003 to ldap://server.example.com:39001 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39003 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39003 to ldap://server.example.com:39004 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39004 to ldap://server.example.com:39001 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39004 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39004 to ldap://server.example.com:39003 is working cleanallruv_test.py 162 DEBUG -------------- FINISH RESET of m4 ----------------------------------------------- Captured log call -------------------------------
cleanallruv_test.py 414 INFO Running test_abort_restart... cleanallruv_test.py 67 INFO test_abort: remove all the agreements to master 4... cleanallruv_test.py 419 INFO test_abort_restart: stop master 3 to freeze the cleanAllRUV task... cleanallruv_test.py 423 INFO test_abort_restart: add the cleanAllRUV task... cleanallruv_test.py 436 INFO test_abort_abort: check master 1 no longer has a cleanAllRUV task... cleanallruv_test.py 452 CRITICAL test_abort_restart: Abort task did not restart
Failed suites/replication/cleanallruv_test.py::test_abort_certify 133.06
topology_m4 = <lib389.topologies.TopologyMain object at 0x7fbef797a1d0>
m4rid = '5'

def test_abort_certify(topology_m4, m4rid):
"""Test the abort task with a replica-certify-all option

:id: 78959966-d644-44a8-b98c-1fcf21b45eb0
:setup: Replication setup with four masters
:steps:
1. Disable replication on master 4
2. Remove agreements to master 4 from other masters
3. Stop master 2
4. Run a cleanallruv task on master 1
5. Run a cleanallruv abort task on master 1 with a replica-certify-all option
:expectedresults: No hanging tasks left
1. Replication on master 4 should be disabled
2. Agreements to master 4 should be removed
3. Master 2 should be stopped
4. Operation should be successful
5. Operation should be successful
"""

log.info('Running test_abort_certify...')

# Remove the agreements from the other masters that point to master 4
remove_master4_agmts("test_abort_certify", topology_m4)

# Stop master 2
log.info('test_abort_certify: stop master 2 to freeze the cleanAllRUV task...')
topology_m4.ms["master2"].stop()

# Run the task
log.info('test_abort_certify: add the cleanAllRUV task...')
cruv_task = CleanAllRUVTask(topology_m4.ms["master1"])
cruv_task.create(properties={
'replica-id': m4rid,
'replica-base-dn': DEFAULT_SUFFIX
})
# Wait a bit
time.sleep(2)

# Abort the task
log.info('test_abort_certify: abort the cleanAllRUV task...')
abort_task = cruv_task.abort(certify=True)

# Wait a while and make sure the abort task is still running
log.info('test_abort_certify: sleep for 5 seconds')
time.sleep(5)

if task_done(topology_m4, abort_task.dn, 60):
log.fatal('test_abort_certify: abort task incorrectly finished')
assert False

# Now start master 2 so it can be aborted
log.info('test_abort_certify: start master 2 to allow the abort task to finish...')
topology_m4.ms["master2"].start()

# Wait for the abort task to stop
if not task_done(topology_m4, abort_task.dn, 60):
log.fatal('test_abort_certify: The abort CleanAllRUV task was not aborted')
> assert False
E assert False

suites/replication/cleanallruv_test.py:515: AssertionError
------------------------------ Captured log setup ------------------------------
cleanallruv_test.py 141 DEBUG -------------- BEGIN RESET of m4 ----------------- replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39003 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39004 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39003 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39004 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39003 to ldap://server.example.com:39001 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39003 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39003 to ldap://server.example.com:39004 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39004 to ldap://server.example.com:39001 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39004 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39004 to ldap://server.example.com:39003 is working cleanallruv_test.py 162 DEBUG -------------- FINISH RESET of m4 ----------------------------------------------- Captured log call -------------------------------
cleanallruv_test.py 477 INFO Running test_abort_certify... cleanallruv_test.py 67 INFO test_abort_certify: remove all the agreements to master 4... cleanallruv_test.py 483 INFO test_abort_certify: stop master 2 to freeze the cleanAllRUV task... cleanallruv_test.py 487 INFO test_abort_certify: add the cleanAllRUV task... cleanallruv_test.py 497 INFO test_abort_certify: abort the cleanAllRUV task... cleanallruv_test.py 501 INFO test_abort_certify: sleep for 5 seconds cleanallruv_test.py 509 INFO test_abort_certify: start master 2 to allow the abort task to finish... cleanallruv_test.py 514 CRITICAL test_abort_certify: The abort CleanAllRUV task was not aborted
Failed suites/replication/encryption_cl5_test.py::test_algorithm_unhashed[AES] 2.22
topology_with_tls = <lib389.topologies.TopologyMain object at 0x7fbefb3e8a58>
encryption = 'AES'

@pytest.mark.parametrize("encryption", ["AES", "3DES"])
def test_algorithm_unhashed(topology_with_tls, encryption):
"""Check encryption algowithm AES and 3DES.
And check unhashed#user#password attribute for encryption.

:id: b7a37bf8-4b2e-4dbd-9891-70117d67558c
:setup: Replication with two masters and SSL configured.
:steps: 1. Enable changelog encrytion on master1 (try AES and 3DES).
2. Add a user to master1/master2
3. Run dbscan -f on m1 to check unhashed#user#password
attribute is encrypted.
4. Run dbscan -f on m2 to check unhashed#user#password
attribute is in cleartext.
5. Modify password in master2/master1
6. Run dbscan -f on m1 to check unhashed#user#password
attribute is encrypted.
7. Run dbscan -f on m2 to check unhashed#user#password
attribute is in cleartext.
:expectedresults:
1. It should pass
2. It should pass
3. It should pass
4. It should pass
5. It should pass
6. It should pass
7. It should pass
"""

m1 = topology_with_tls.ms['master1']
m2 = topology_with_tls.ms['master2']
test_passw = 'm2Test199'

> _enable_changelog_encryption(m1, encryption)

suites/replication/encryption_cl5_test.py:107:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
suites/replication/encryption_cl5_test.py:49: in _enable_changelog_encryption
inst.start()
/usr/lib/python3.6/site-packages/lib389/__init__.py:1199: in start
"dirsrv@%s" % self.serverid])
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

popenargs = (['/usr/bin/systemctl', 'start', 'dirsrv@master1'],), kwargs = {}
retcode = 1, cmd = ['/usr/bin/systemctl', 'start', 'dirsrv@master1']

def check_call(*popenargs, **kwargs):
"""Run command with arguments. Wait for command to complete. If
the exit code was zero then return, otherwise raise
CalledProcessError. The CalledProcessError object will have the
return code in the returncode attribute.

The arguments are the same as for the call function. Example:

check_call(["ls", "-l"])
"""
retcode = call(*popenargs, **kwargs)
if retcode:
cmd = kwargs.get("args")
if cmd is None:
cmd = popenargs[0]
> raise CalledProcessError(retcode, cmd)
E subprocess.CalledProcessError: Command '['/usr/bin/systemctl', 'start', 'dirsrv@master1']' returned non-zero exit status 1.

/usr/lib64/python3.6/subprocess.py:291: CalledProcessError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists replica.py 1875 INFO SUCCESS: Replication from ldaps://server.example.com:63701 to ldaps://server.example.com:63702 is working----------------------------- Captured stderr call -----------------------------
Job for dirsrv@master1.service failed because the control process exited with error code. See "systemctl status dirsrv@master1.service" and "journalctl -xe" for details. ------------------------------ Captured log call -------------------------------
encryption_cl5_test.py 44 INFO Configuring changelog encryption:master1 for: AES
Failed suites/replication/encryption_cl5_test.py::test_algorithm_unhashed[3DES] 0.50
topology_with_tls = <lib389.topologies.TopologyMain object at 0x7fbefb3e8a58>
encryption = '3DES'

@pytest.mark.parametrize("encryption", ["AES", "3DES"])
def test_algorithm_unhashed(topology_with_tls, encryption):
"""Check encryption algowithm AES and 3DES.
And check unhashed#user#password attribute for encryption.

:id: b7a37bf8-4b2e-4dbd-9891-70117d67558c
:setup: Replication with two masters and SSL configured.
:steps: 1. Enable changelog encrytion on master1 (try AES and 3DES).
2. Add a user to master1/master2
3. Run dbscan -f on m1 to check unhashed#user#password
attribute is encrypted.
4. Run dbscan -f on m2 to check unhashed#user#password
attribute is in cleartext.
5. Modify password in master2/master1
6. Run dbscan -f on m1 to check unhashed#user#password
attribute is encrypted.
7. Run dbscan -f on m2 to check unhashed#user#password
attribute is in cleartext.
:expectedresults:
1. It should pass
2. It should pass
3. It should pass
4. It should pass
5. It should pass
6. It should pass
7. It should pass
"""

m1 = topology_with_tls.ms['master1']
m2 = topology_with_tls.ms['master2']
test_passw = 'm2Test199'

> _enable_changelog_encryption(m1, encryption)

suites/replication/encryption_cl5_test.py:107:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
suites/replication/encryption_cl5_test.py:49: in _enable_changelog_encryption
inst.start()
/usr/lib/python3.6/site-packages/lib389/__init__.py:1199: in start
"dirsrv@%s" % self.serverid])
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

popenargs = (['/usr/bin/systemctl', 'start', 'dirsrv@master1'],), kwargs = {}
retcode = 1, cmd = ['/usr/bin/systemctl', 'start', 'dirsrv@master1']

def check_call(*popenargs, **kwargs):
"""Run command with arguments. Wait for command to complete. If
the exit code was zero then return, otherwise raise
CalledProcessError. The CalledProcessError object will have the
return code in the returncode attribute.

The arguments are the same as for the call function. Example:

check_call(["ls", "-l"])
"""
retcode = call(*popenargs, **kwargs)
if retcode:
cmd = kwargs.get("args")
if cmd is None:
cmd = popenargs[0]
> raise CalledProcessError(retcode, cmd)
E subprocess.CalledProcessError: Command '['/usr/bin/systemctl', 'start', 'dirsrv@master1']' returned non-zero exit status 1.

/usr/lib64/python3.6/subprocess.py:291: CalledProcessError
----------------------------- Captured stderr call -----------------------------
Job for dirsrv@master1.service failed because the control process exited with error code. See "systemctl status dirsrv@master1.service" and "journalctl -xe" for details. ------------------------------ Captured log call -------------------------------
encryption_cl5_test.py 44 INFO Configuring changelog encryption:master1 for: 3DES
Failed suites/replication/tombstone_test.py::test_purge_success 0.04
topology_m1 = <lib389.topologies.TopologyMain object at 0x7fbef5cf4128>

def test_purge_success(topology_m1):
"""Verify that tombstones are created successfully

:id: adb86f50-ae76-4ed6-82b4-3cdc30ccab78
:setup: Standalone instance
:steps:
1. Enable replication to unexisting instance
2. Add an entry to the replicated suffix
3. Delete the entry
4. Check that tombstone entry exists (objectclass=nsTombstone)
:expectedresults: Tombstone entry exist
1. Operation should be successful
2. The entry should be successfully added
3. The entry should be successfully deleted
4. Tombstone entry should exist
"""
m1 = topology_m1.ms['master1']

users = UserAccounts(m1, DEFAULT_SUFFIX)
user = users.create(properties=TEST_USER_PROPERTIES)

tombstones = Tombstones(m1, DEFAULT_SUFFIX)

assert len(tombstones.list()) == 0

user.delete()

assert len(tombstones.list()) == 1
assert len(users.list()) == 0

ts = tombstones.get('testuser')
assert ts.exists()

if not ds_is_older('1.4.0'):
> ts.revive()

suites/replication/tombstone_test.py:52:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/tombstone.py:39: in revive
orig_dn = self.get_attr_val_utf8('nscpEntryDN')
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:532: in get_attr_val_utf8
return ensure_str(self.get_attr_val(key))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.tombstone.Tombstone object at 0x7fbf0af7ada0>
key = 'nscpEntryDN', use_json = False

def get_attr_val(self, key, use_json=False):
self._log.debug("%s getVal(%r)" % (self._dn, key))
# We might need to add a state check for NONE dn.
if self._instance.state != DIRSRV_STATE_ONLINE:
raise ValueError("Invalid state. Cannot get properties on instance that is not ONLINE")
# In the future, I plan to add a mode where if local == true, we
# can use get on dse.ldif to get values offline.
else:
> entry = self._instance.search_ext_s(self._dn, ldap.SCOPE_BASE, self._object_filter, attrlist=[key], serverctrls=self._server_controls, clientctrls=self._client_controls)[0]
E IndexError: list index out of range

/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:498: IndexError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology.
Failed suites/sasl/regression_test.py::test_openldap_no_nss_crypto 57.60
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbef5cc8b38>

def test_openldap_no_nss_crypto(topology_m2):
"""Check that we allow usage of OpenLDAP libraries
that don't use NSS for crypto

:id: 0a622f3d-8ba5-4df2-a1de-1fb2237da40a
:setup: Replication with two masters:
master_1 ----- startTLS -----> master_2;
master_1 <-- TLS_clientAuth -- master_2;
nsslapd-extract-pemfiles set to 'on' on both masters
without specifying cert names
:steps:
1. Add 5 users to master 1 and 2
2. Check that the users were successfully replicated
3. Relocate PEM files on master 1
4. Check PEM files in master 1 config directory
5. Add 5 users more to master 1 and 2
6. Check that the users were successfully replicated
7. Export userRoot on master 1
:expectedresults:
1. Users should be successfully added
2. Users should be successfully replicated
3. Operation should be successful
4. PEM files should be found
5. Users should be successfully added
6. Users should be successfully replicated
7. Operation should be successful
"""

log.info("Ticket 47536 - Allow usage of OpenLDAP libraries that don't use NSS for crypto")

create_keys_certs(topology_m2)
> config_tls_agreements(topology_m2)

suites/sasl/regression_test.py:400:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
suites/sasl/regression_test.py:316: in config_tls_agreements
rentry = m1.search_s(replmgr, ldap.SCOPE_BASE, 'objectclass=*')
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:852: in search_s
return self.search_ext_s(base,scope,filterstr,attrlist,attrsonly,None,None,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:846: in search_ext_s
return self.result(msgid,all=1,timeout=timeout)[1]
/usr/lib/python3.6/site-packages/lib389/__init__.py:130: in inner
objtype, data = f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:738: in result
resp_type, resp_data, resp_msgid = self.result2(msgid,all,timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:742: in result2
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all,timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749: in result3
resp_ctrl_classes=resp_ctrl_classes
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756: in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0ac079b0>
func = <built-in method result4 of LDAP object at 0x7fbef5cf0300>
args = (5, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.NO_SUCH_OBJECT: {'desc': 'No such object'}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: NO_SUCH_OBJECT
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists----------------------------- Captured stdout call -----------------------------
Is this a CA certificate [y/N]? Enter the path length constraint, enter to skip [<0 for unlimited path]: > Is this a critical extension [y/N]? pk12util: PKCS12 EXPORT SUCCESSFUL pk12util: PKCS12 IMPORT SUCCESSFUL ----------------------------- Captured stderr call -----------------------------
Generating key. This may take a few moments... ------------------------------ Captured log call -------------------------------
regression_test.py 397 INFO Ticket 47536 - Allow usage of OpenLDAP libraries that don't use NSS for crypto regression_test.py 127 INFO ######################### Creating SSL Keys and Certs ###################### regression_test.py 130 INFO ##### Ensure that nsslapd-extract-pemfiles is 'off' on master1 regression_test.py 132 INFO ##### restart master1 regression_test.py 130 INFO ##### Ensure that nsslapd-extract-pemfiles is 'off' on master2 regression_test.py 132 INFO ##### restart master2 regression_test.py 140 INFO ##### shutdown master1 regression_test.py 143 INFO ##### Creating a password file regression_test.py 152 INFO ##### create the pin file regression_test.py 163 INFO ##### Creating a noise file regression_test.py 172 INFO ##### Create key3.db and cert8.db database (master1): ['certutil', '-N', '-d', '/etc/dirsrv/slapd-master1', '-f', '/etc/dirsrv/slapd-master1/pwdfile.txt'] regression_test.py 111 INFO OUT: regression_test.py 117 INFO ERR: regression_test.py 176 INFO ##### Creating encryption key for CA (master1): ['certutil', '-G', '-d', '/etc/dirsrv/slapd-master1', '-z', '/etc/dirsrv/slapd-master1/noise.txt', '-f', '/etc/dirsrv/slapd-master1/pwdfile.txt'] regression_test.py 111 INFO OUT: regression_test.py 117 INFO ERR: regression_test.py 182 INFO ##### Creating self-signed CA certificate (master1) -- nickname CAcertificate regression_test.py 190 INFO ##### Creating Server certificate -- nickname Server-Cert1: ['certutil', '-S', '-n', 'Server-Cert1', '-s', 'CN=server.example.com,OU=389 Directory Server', '-c', 'CAcertificate', '-t', ',,', '-m', '1001', '-v', '120', '-d', '/etc/dirsrv/slapd-master1', '-z', '/etc/dirsrv/slapd-master1/noise.txt', '-f', '/etc/dirsrv/slapd-master1/pwdfile.txt'] regression_test.py 111 INFO OUT: regression_test.py 117 INFO ERR: regression_test.py 198 INFO ##### Creating Server certificate -- nickname Server-Cert2: ['certutil', '-S', '-n', 'Server-Cert2', '-s', 'CN=server.example.com,OU=390 Directory Server', '-c', 'CAcertificate', '-t', ',,', '-m', '1002', '-v', '120', '-d', '/etc/dirsrv/slapd-master1', '-z', '/etc/dirsrv/slapd-master1/noise.txt', '-f', '/etc/dirsrv/slapd-master1/pwdfile.txt'] regression_test.py 111 INFO OUT: regression_test.py 117 INFO ERR: regression_test.py 203 INFO ##### start master1 regression_test.py 206 INFO ##### enable SSL in master1 with all ciphers regression_test.py 46 INFO ######################### Enabling SSL LDAPSPORT 41636 ###################### regression_test.py 210 INFO ##### Check the cert db: ['certutil', '-L', '-d', '/etc/dirsrv/slapd-master1'] regression_test.py 111 INFO OUT: regression_test.py 116 INFO regression_test.py 116 INFO Certificate Nickname Trust Attributes regression_test.py 116 INFO SSL,S/MIME,JAR/XPI regression_test.py 116 INFO regression_test.py 116 INFO CAcertificate CTu,u,u regression_test.py 116 INFO Server-Cert1 u,u,u regression_test.py 116 INFO Server-Cert2 u,u,u regression_test.py 117 INFO ERR: regression_test.py 213 INFO ##### restart master1 regression_test.py 216 INFO ##### Check PEM files of master1 (before setting nsslapd-extract-pemfiles regression_test.py 66 INFO ######################### Check PEM files (CAcertificate, Server-Cert1, Server-Cert1-Key) not in /etc/dirsrv/slapd-master1 ###################### regression_test.py 80 INFO /etc/dirsrv/slapd-master1/CAcertificate.pem is correctly not generated. regression_test.py 93 INFO /etc/dirsrv/slapd-master1/Server-Cert1.pem is correctly not generated. regression_test.py 106 INFO /etc/dirsrv/slapd-master1/Server-Cert1-Key.pem is correctly not generated. regression_test.py 219 INFO ##### Set on to nsslapd-extract-pemfiles regression_test.py 222 INFO ##### restart master1 regression_test.py 225 INFO ##### Check PEM files of master1 (after setting nsslapd-extract-pemfiles regression_test.py 66 INFO ######################### Check PEM files (CAcertificate, Server-Cert1, Server-Cert1-Key) in /etc/dirsrv/slapd-master1 ###################### regression_test.py 71 INFO /etc/dirsrv/slapd-master1/CAcertificate.pem is successfully generated. regression_test.py 84 INFO /etc/dirsrv/slapd-master1/Server-Cert1.pem is successfully generated. regression_test.py 97 INFO /etc/dirsrv/slapd-master1/Server-Cert1-Key.pem is successfully generated. regression_test.py 232 INFO ##### Extract PK12 file for master2: pk12util -o /tmp/Server-Cert2.pk12 -n "Server-Cert2" -d /etc/dirsrv/slapd-master1 -w /etc/dirsrv/slapd-master1/pwdfile.txt -k /etc/dirsrv/slapd-master1/pwdfile.txt regression_test.py 235 INFO ##### Check PK12 files regression_test.py 237 INFO /tmp/Server-Cert2.pk12 is successfully extracted. regression_test.py 242 INFO ##### stop master2 regression_test.py 245 INFO ##### Initialize Cert DB for master2 regression_test.py 247 INFO ##### Create key3.db and cert8.db database (master2): ['certutil', '-N', '-d', '/etc/dirsrv/slapd-master2', '-f', '/etc/dirsrv/slapd-master1/pwdfile.txt'] regression_test.py 111 INFO OUT: regression_test.py 117 INFO ERR: regression_test.py 250 INFO ##### Import certs to master2 regression_test.py 251 INFO Importing CAcertificate regression_test.py 255 INFO ##### Importing Server-Cert2 to master2: pk12util -i /tmp/Server-Cert2.pk12 -n "Server-Cert2" -d /etc/dirsrv/slapd-master2 -w /etc/dirsrv/slapd-master1/pwdfile.txt -k /etc/dirsrv/slapd-master1/pwdfile.txt regression_test.py 257 INFO copy /etc/dirsrv/slapd-master1/pin.txt to /etc/dirsrv/slapd-master2/pin.txt regression_test.py 261 INFO ##### start master2 regression_test.py 264 INFO ##### enable SSL in master2 with all ciphers regression_test.py 46 INFO ######################### Enabling SSL LDAPSPORT 42636 ###################### regression_test.py 267 INFO ##### restart master2 regression_test.py 270 INFO ##### Check PEM files of master2 (before setting nsslapd-extract-pemfiles regression_test.py 66 INFO ######################### Check PEM files (CAcertificate, Server-Cert2, Server-Cert2-Key) not in /etc/dirsrv/slapd-master2 ###################### regression_test.py 80 INFO /etc/dirsrv/slapd-master2/CAcertificate.pem is correctly not generated. regression_test.py 93 INFO /etc/dirsrv/slapd-master2/Server-Cert2.pem is correctly not generated. regression_test.py 106 INFO /etc/dirsrv/slapd-master2/Server-Cert2-Key.pem is correctly not generated. regression_test.py 273 INFO ##### Set on to nsslapd-extract-pemfiles regression_test.py 276 INFO ##### restart master2 regression_test.py 279 INFO ##### Check PEM files of master2 (after setting nsslapd-extract-pemfiles regression_test.py 66 INFO ######################### Check PEM files (CAcertificate, Server-Cert2, Server-Cert2-Key) in /etc/dirsrv/slapd-master2 ###################### regression_test.py 71 INFO /etc/dirsrv/slapd-master2/CAcertificate.pem is successfully generated. regression_test.py 84 INFO /etc/dirsrv/slapd-master2/Server-Cert2.pem is successfully generated. regression_test.py 97 INFO /etc/dirsrv/slapd-master2/Server-Cert2-Key.pem is successfully generated. regression_test.py 282 INFO ##### restart master1 regression_test.py 285 INFO ######################### Creating SSL Keys and Certs Done ###################### regression_test.py 289 INFO ######################### Configure SSL/TLS agreements ###################### regression_test.py 290 INFO ######################## master1 -- startTLS -> master2 ##################### regression_test.py 291 INFO ##################### master1 <- tls_clientAuth -- master2 ################## regression_test.py 293 INFO ##### Update the agreement of master1 regression_test.py 299 INFO ##### Add the cert to the repl manager on master1 regression_test.py 313 INFO ##### master2 Server Cert in base64 format: MIICxzCCAa+gAwIBAgICA+owDQYJKoZIhvcNAQELBQAwETEPMA0GA1UEAxMGQ0FjZXJ0MB4XDTE4MDcyMzAxMDYzNFoXDTI4MDcyMzAxMDYzNFowPDEdMBsGA1UECxMUMzkwIERpcmVjdG9yeSBTZXJ2ZXIxGzAZBgNVBAMTEnNlcnZlci5leGFtcGxlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANcAOCP3BvuNnR+WEV8OcKTWSN6TJDkDnLBtidrBSyL76tjfqwAhSH44GWoSaTXRJ37X+YBSTByakY7j8lPgOqbFpsVwp7J+2ez+3CuuJDojGGcwBpqO65A2z8v2iQ6Bi0dKdt+s9f1W10MFPCoz6eoRfzGIvFOf1DRXnFhVncPK48kjfrihnx0T89U0WJBwtA6prep0EVrVxTBFLYJiWYF8Bm+GeeRmfLvlaamggIbIIDRdY+DY8SKgVLBHAZeXZq8bdeUiph+DS0kdrHe6PJVSeO0eaxEoaMhA+UHSZKv9z2+h8VkTuErtQqoJWGFeZSyOtMR/AuzWvzbbnHcT3+0CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAEQvNssz+7/ssM5XgfB6Gru9cD4IGkDD+GbcsLjrrpdWWs/DP8GSZVuRsZWLZvl+fSqTKjmzyiBkk0btjjdrxMAKPXWEBnCV5H0wckaTo+9cTJEbHQTGgvcgXkSkpZoaRXnm/zzRN7mHGR6rLDXellnJUG2fnnfH+4lAKYYGSNFUdZfBcMe8hSnMQUg4sz6XkUh+9wd7rpKnVPrnlBl0Xwque7ovdOAUlfyv1Jq8DoGHoOLqZ/Jap5gN/Ud6pvd64fsGL1ZemauTSHYWoCMKutQG0+Go2PKuEogyHWHlN4/Xau6l9rTA171xKF1zJEf1ea3EVCingqtcTS9F8Ba1Krg==
Failed tickets/ticket47462_test.py::test_ticket47462 0.00
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbef7909f98>

def test_ticket47462(topology_m2):
"""
Test that AES properly replaces DES during an update/restart, and that
replication also works correctly.
"""

#
# First set config as if it's an older version. Set DES to use
# libdes-plugin, MMR to depend on DES, delete the existing AES plugin,
# and set a DES password for the replication agreement.
#
# Add an extra attribute to the DES plugin args
#
try:
topology_m2.ms["master1"].modify_s(DES_PLUGIN,
> [(ldap.MOD_REPLACE, 'nsslapd-pluginEnabled', 'on')])

tickets/ticket47462_test.py:47:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:629: in modify_s
return self.modify_ext_s(dn,modlist,None,None)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:601: in modify_ext_s
msgid = self.modify_ext(dn,modlist,serverctrls,clientctrls)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:598: in modify_ext
return self._ldap_call(self._l.modify_ext,dn,modlist,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls))
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0a61d0b8>
func = <built-in method modify_ext of LDAP object at 0x7fbefb0db940>
args = ('cn=DES,cn=Password Storage Schemes,cn=plugins,cn=config', [(2, 'nsslapd-pluginEnabled', 'on')], None, None)
kwargs = {}, diagnostic_message_success = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E TypeError: ('Tuple_to_LDAPMod(): expected a byte string in the list', 'o')

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: TypeError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists
Failed tickets/ticket47721_test.py::test_ticket47721_1 2.42
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf0ac07080>

def test_ticket47721_1(topology_m2):
log.info('Running test 1...')
# topology_m2.ms["master1"].log.info("Attach debugger\n\n")
# time.sleep(30)

new = _add_custom_at_definition()
topology_m2.ms["master1"].log.info("Add (M2) %s " % new)
topology_m2.ms["master2"].schema.add_schema('attributetypes', new)

new = _chg_std_at_defintion()
topology_m2.ms["master1"].log.info("Chg (M2) %s " % new)
topology_m2.ms["master2"].schema.add_schema('attributetypes', new)

new = _add_custom_oc_defintion()
topology_m2.ms["master1"].log.info("Add (M2) %s " % new)
topology_m2.ms["master2"].schema.add_schema('objectClasses', new)

new = _chg_std_oc_defintion()
topology_m2.ms["master1"].log.info("Chg (M2) %s " % new)
topology_m2.ms["master2"].schema.add_schema('objectClasses', new)

mod = [(ldap.MOD_REPLACE, 'description', b'Hello world 1')]
dn = "cn=%s0,%s" % (OTHER_NAME, SUFFIX)
topology_m2.ms["master2"].modify_s(dn, mod)

replication_check(topology_m2)
ent = topology_m2.ms["master1"].getEntry(dn, ldap.SCOPE_BASE, "(objectclass=*)")
> assert ensure_str(ent.getValue('description')) == 'Hello world 1'
E AssertionError: assert None == 'Hello world 1'
E + where None = ensure_str(None)
E + where None = <bound method Entry.getValue of dn: cn=other_entry0,dc=example,dc=com\ncn: other_entry0\nobjectClass: top\nobjectClass: person\nsn: other_entry0\n\n>('description')
E + where <bound method Entry.getValue of dn: cn=other_entry0,dc=example,dc=com\ncn: other_entry0\nobjectClass: top\nobjectClass: person\nsn: other_entry0\n\n> = dn: cn=other_entry0,dc=example,dc=com\ncn: other_entry0\nobjectClass: top\nobjectClass: person\nsn: other_entry0\n\n.getValue

tickets/ticket47721_test.py:151: AssertionError
------------------------------ Captured log call -------------------------------
ticket47721_test.py 125 INFO Running test 1... ticket47721_test.py 130 INFO Add (M2) b"( ATticket47721-oid NAME 'ATticket47721' DESC 'test AT ticket 47721' SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 X-ORIGIN ( 'Test 47721' 'user defined' ) )" ticket47721_test.py 134 INFO Chg (M2) b"( 2.16.840.1.113730.3.1.569 NAME 'cosPriority' DESC 'Netscape defined attribute type' SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 X-ORIGIN 'Netscape Directory Server' )" ticket47721_test.py 138 INFO Add (M2) b"( OCticket47721-oid NAME 'OCticket47721' DESC 'An group of related automount objects' SUP top STRUCTURAL MUST ou X-ORIGIN 'draft-howard-rfc2307bis' )" ticket47721_test.py 142 INFO Chg (M2) b"( 5.3.6.1.1.1.2.0 NAME 'trustAccount' DESC 'Sets trust accounts information' SUP top AUXILIARY MUST trustModel MAY ( accessTo $ ou ) X-ORIGIN 'nss_ldap/pam_ldap' )" replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working
Failed tickets/ticket47838_test.py::test_47838_init 5.81
topology_st = <lib389.topologies.TopologyMain object at 0x7fbef5cee6a0>

def test_47838_init(topology_st):
"""
Generate self signed cert and import it to the DS cert db.
Enable SSL
"""
_header(topology_st, 'Testing Ticket 47838 - harden the list of ciphers available by default')
onss_version = os.popen("rpm -q nss | awk -F'-' '{print $2}'", "r")
global nss_version
nss_version = onss_version.readline()
nss_ssl = NssSsl(dbpath=topology_st.standalone.get_cert_dir())
nss_ssl.reinit()
nss_ssl.create_rsa_ca()
nss_ssl.create_rsa_key_and_cert()

log.info("\n######################### enable SSL in the directory server with all ciphers ######################\n")
topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
topology_st.standalone.modify_s(ENCRYPTION_DN, [(ldap.MOD_REPLACE, 'nsSSL3', b'off'),
(ldap.MOD_REPLACE, 'nsTLS1', b'on'),
(ldap.MOD_REPLACE, 'nsSSLClientAuth', b'allowed'),
(ldap.MOD_REPLACE, 'allowWeakCipher', b'on'),
(ldap.MOD_REPLACE, 'nsSSL3Ciphers', b'+all')])

topology_st.standalone.modify_s(CONFIG_DN, [(ldap.MOD_REPLACE, 'nsslapd-security', b'on'),
(ldap.MOD_REPLACE, 'nsslapd-ssl-check-hostname', b'off'),
(ldap.MOD_REPLACE, 'nsslapd-secureport', ensure_bytes(MY_SECURE_PORT))])

topology_st.standalone.add_s(Entry((RSA_DN, {'objectclass': "top nsEncryptionModule".split(),
'cn': RSA,
'nsSSLPersonalitySSL': SERVERCERT,
'nsSSLToken': 'internal (software)',
> 'nsSSLActivation': 'on'})))

tickets/ticket47838_test.py:85:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/__init__.py:158: in inner
return f(ent.dn, ent.toTupleList(), *args[2:])
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:428: in add_s
return self.add_ext_s(dn,modlist,None,None)
/usr/lib/python3.6/site-packages/lib389/__init__.py:160: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:414: in add_ext_s
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749: in result3
resp_ctrl_classes=resp_ctrl_classes
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756: in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbef5cebb70>
func = <built-in method result4 of LDAP object at 0x7fbf0aad35d0>
args = (6, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.ALREADY_EXISTS: {'desc': 'Already exists'}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: ALREADY_EXISTS
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
ticket47838_test.py 48 INFO ############################################### ticket47838_test.py 49 INFO ####### ticket47838_test.py 50 INFO ####### Testing Ticket 47838 - harden the list of ciphers available by default ticket47838_test.py 51 INFO ####### ticket47838_test.py 52 INFO ############################################### ticket47838_test.py 69 INFO ######################### enable SSL in the directory server with all ciphers ######################
Failed tickets/ticket47838_test.py::test_47838_run_4 5.19
topology_st = <lib389.topologies.TopologyMain object at 0x7fbef5cee6a0>

def test_47838_run_4(topology_st):
"""
Check no nsSSL3Ciphers
Default ciphers are enabled.
default allowWeakCipher
"""
_header(topology_st, 'Test Case 5 - Check no nsSSL3Ciphers (default setting) with default allowWeakCipher')

topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
topology_st.standalone.modify_s(ENCRYPTION_DN, [(ldap.MOD_DELETE, 'nsSSL3Ciphers', b'-all')])

log.info("\n######################### Restarting the server ######################\n")
topology_st.standalone.stop(timeout=10)
os.system('mv %s %s.47838_3' % (topology_st.standalone.errlog, topology_st.standalone.errlog))
os.system('touch %s' % (topology_st.standalone.errlog))
time.sleep(1)
topology_st.standalone.start(timeout=120)
enabled = os.popen('egrep "SSL info:" %s | egrep \": enabled\" | wc -l' % topology_st.standalone.errlog)
disabled = os.popen('egrep "SSL info:" %s | egrep \": disabled\" | wc -l' % topology_st.standalone.errlog)
ecount = int(enabled.readline().rstrip())
dcount = int(disabled.readline().rstrip())

log.info("Enabled ciphers: %d" % ecount)
log.info("Disabled ciphers: %d" % dcount)
global plus_all_ecount
global plus_all_dcount
if nss_version >= NSS330:
> assert ecount == 28
E assert 24 == 28

tickets/ticket47838_test.py:283: AssertionError
------------------------------ Captured log call -------------------------------
ticket47838_test.py 48 INFO ############################################### ticket47838_test.py 49 INFO ####### ticket47838_test.py 50 INFO ####### Test Case 5 - Check no nsSSL3Ciphers (default setting) with default allowWeakCipher ticket47838_test.py 51 INFO ####### ticket47838_test.py 52 INFO ############################################### ticket47838_test.py 267 INFO ######################### Restarting the server ###################### ticket47838_test.py 278 INFO Enabled ciphers: 24 ticket47838_test.py 279 INFO Disabled ciphers: 47
Failed tickets/ticket47838_test.py::test_47838_run_5 5.05
topology_st = <lib389.topologies.TopologyMain object at 0x7fbef5cee6a0>

def test_47838_run_5(topology_st):
"""
Check nsSSL3Ciphers: default
Default ciphers are enabled.
default allowWeakCipher
"""
_header(topology_st, 'Test Case 6 - Check default nsSSL3Ciphers (default setting) with default allowWeakCipher')

topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
topology_st.standalone.modify_s(ENCRYPTION_DN, [(ldap.MOD_REPLACE, 'nsSSL3Ciphers', b'default')])

log.info("\n######################### Restarting the server ######################\n")
topology_st.standalone.stop(timeout=10)
os.system('mv %s %s.47838_4' % (topology_st.standalone.errlog, topology_st.standalone.errlog))
os.system('touch %s' % (topology_st.standalone.errlog))
time.sleep(1)
topology_st.standalone.start(timeout=120)

enabled = os.popen('egrep "SSL info:" %s | egrep \": enabled\" | wc -l' % topology_st.standalone.errlog)
disabled = os.popen('egrep "SSL info:" %s | egrep \": disabled\" | wc -l' % topology_st.standalone.errlog)
ecount = int(enabled.readline().rstrip())
dcount = int(disabled.readline().rstrip())

log.info("Enabled ciphers: %d" % ecount)
log.info("Disabled ciphers: %d" % dcount)
global plus_all_ecount
global plus_all_dcount
if nss_version >= NSS330:
> assert ecount == 28
E assert 24 == 28

tickets/ticket47838_test.py:326: AssertionError
------------------------------ Captured log call -------------------------------
ticket47838_test.py 48 INFO ############################################### ticket47838_test.py 49 INFO ####### ticket47838_test.py 50 INFO ####### Test Case 6 - Check default nsSSL3Ciphers (default setting) with default allowWeakCipher ticket47838_test.py 51 INFO ####### ticket47838_test.py 52 INFO ############################################### ticket47838_test.py 309 INFO ######################### Restarting the server ###################### ticket47838_test.py 321 INFO Enabled ciphers: 24 ticket47838_test.py 322 INFO Disabled ciphers: 47
Failed tickets/ticket47838_test.py::test_47838_run_8 5.16
topology_st = <lib389.topologies.TopologyMain object at 0x7fbef5cee6a0>

def test_47838_run_8(topology_st):
"""
Check nsSSL3Ciphers: default + allowWeakCipher: off
Strong Default ciphers are enabled.
"""
_header(topology_st, 'Test Case 9 - Check default nsSSL3Ciphers (default setting + allowWeakCipher: off)')

topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
topology_st.standalone.modify_s(ENCRYPTION_DN, [(ldap.MOD_REPLACE, 'nsSSL3Ciphers', b'default'),
(ldap.MOD_REPLACE, 'allowWeakCipher', b'off')])

log.info("\n######################### Restarting the server ######################\n")
topology_st.standalone.stop(timeout=10)
os.system('mv %s %s.47838_7' % (topology_st.standalone.errlog, topology_st.standalone.errlog))
os.system('touch %s' % (topology_st.standalone.errlog))
time.sleep(1)
topology_st.standalone.start(timeout=120)

enabled = os.popen('egrep "SSL info:" %s | egrep \": enabled\" | wc -l' % topology_st.standalone.errlog)
disabled = os.popen('egrep "SSL info:" %s | egrep \": disabled\" | wc -l' % topology_st.standalone.errlog)
ecount = int(enabled.readline().rstrip())
dcount = int(disabled.readline().rstrip())

log.info("Enabled ciphers: %d" % ecount)
log.info("Disabled ciphers: %d" % dcount)
global plus_all_ecount
global plus_all_dcount
if nss_version >= NSS330:
> assert ecount == 28
E assert 24 == 28

tickets/ticket47838_test.py:439: AssertionError
------------------------------ Captured log call -------------------------------
ticket47838_test.py 48 INFO ############################################### ticket47838_test.py 49 INFO ####### ticket47838_test.py 50 INFO ####### Test Case 9 - Check default nsSSL3Ciphers (default setting + allowWeakCipher: off) ticket47838_test.py 51 INFO ####### ticket47838_test.py 52 INFO ############################################### ticket47838_test.py 422 INFO ######################### Restarting the server ###################### ticket47838_test.py 434 INFO Enabled ciphers: 24 ticket47838_test.py 435 INFO Disabled ciphers: 47
Failed tickets/ticket47838_test.py::test_47838_run_9 5.14
topology_st = <lib389.topologies.TopologyMain object at 0x7fbef5cee6a0>

def test_47838_run_9(topology_st):
"""
Check no nsSSL3Ciphers
Default ciphers are enabled.
allowWeakCipher: on
nsslapd-errorlog-level: 0
"""
_header(topology_st,
'Test Case 10 - Check no nsSSL3Ciphers (default setting) with no errorlog-level & allowWeakCipher on')

topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
topology_st.standalone.modify_s(ENCRYPTION_DN, [(ldap.MOD_REPLACE, 'nsSSL3Ciphers', None),
(ldap.MOD_REPLACE, 'allowWeakCipher', b'on')])
topology_st.standalone.modify_s(CONFIG_DN, [(ldap.MOD_REPLACE, 'nsslapd-errorlog-level', None)])

log.info("\n######################### Restarting the server ######################\n")
topology_st.standalone.stop(timeout=10)
os.system('mv %s %s.47838_8' % (topology_st.standalone.errlog, topology_st.standalone.errlog))
os.system('touch %s' % (topology_st.standalone.errlog))
time.sleep(1)
topology_st.standalone.start(timeout=120)

enabled = os.popen('egrep "SSL info:" %s | egrep \": enabled\" | wc -l' % topology_st.standalone.errlog)
disabled = os.popen('egrep "SSL info:" %s | egrep \": disabled\" | wc -l' % topology_st.standalone.errlog)
ecount = int(enabled.readline().rstrip())
dcount = int(disabled.readline().rstrip())

log.info("Enabled ciphers: %d" % ecount)
log.info("Disabled ciphers: %d" % dcount)
if nss_version >= NSS330:
> assert ecount == 33
E assert 24 == 33

tickets/ticket47838_test.py:484: AssertionError
------------------------------ Captured log call -------------------------------
ticket47838_test.py 48 INFO ############################################### ticket47838_test.py 49 INFO ####### ticket47838_test.py 50 INFO ####### Test Case 10 - Check no nsSSL3Ciphers (default setting) with no errorlog-level & allowWeakCipher on ticket47838_test.py 51 INFO ####### ticket47838_test.py 52 INFO ############################################### ticket47838_test.py 469 INFO ######################### Restarting the server ###################### ticket47838_test.py 481 INFO Enabled ciphers: 24 ticket47838_test.py 482 INFO Disabled ciphers: 0
Failed tickets/ticket47950_test.py::test_ticket47950 0.00
topology_st = <lib389.topologies.TopologyMain object at 0x7fbf0b063278>

def test_ticket47950(topology_st):
"""
Testing nsslapd-plugin-binddn-tracking does not cause issues around
access control and reconfiguring replication/repl agmt.
"""

log.info('Testing Ticket 47950 - Testing nsslapd-plugin-binddn-tracking')

#
# Turn on bind dn tracking
#
try:
> topology_st.standalone.modify_s("cn=config", [(ldap.MOD_REPLACE, 'nsslapd-plugin-binddn-tracking', 'on')])

tickets/ticket47950_test.py:39:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:629: in modify_s
return self.modify_ext_s(dn,modlist,None,None)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:601: in modify_ext_s
msgid = self.modify_ext(dn,modlist,serverctrls,clientctrls)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:598: in modify_ext
return self._ldap_call(self._l.modify_ext,dn,modlist,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls))
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0ab3cb70>
func = <built-in method modify_ext of LDAP object at 0x7fbf0ab4b378>
args = ('cn=config', [(2, 'nsslapd-plugin-binddn-tracking', 'on')], None, None)
kwargs = {}, diagnostic_message_success = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E TypeError: ('Tuple_to_LDAPMod(): expected a byte string in the list', 'o')

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: TypeError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.
Failed tickets/ticket47966_test.py::test_ticket47966 0.02
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf0aa91630>

def test_ticket47966(topology_m2):
'''
Testing bulk import when the backend with VLV was recreated.
If the test passes without the server crash, 47966 is verified.
'''
log.info('Testing Ticket 47966 - [VLV] slapd crashes during Dogtag clone reinstallation')
M1 = topology_m2.ms["master1"]
M2 = topology_m2.ms["master2"]
m1_m2_agmt = M1.agreement.list(suffix=DEFAULT_SUFFIX)[0].dn

log.info('0. Create a VLV index on Master 2.')
# get the backend entry
be = M2.replica.conn.backend.list(suffix=DEFAULT_SUFFIX)
if not be:
log.fatal("ticket47966: enable to retrieve the backend for %s" % DEFAULT_SUFFIX)
raise ValueError("no backend for suffix %s" % DEFAULT_SUFFIX)
bent = be[0]
beName = bent.getValue('cn')
beDn = "cn=%s,cn=ldbm database,cn=plugins,cn=config" % beName

# generate vlvSearch entry
vlvSrchDn = "cn=vlvSrch,%s" % beDn
log.info('0-1. vlvSearch dn: %s' % vlvSrchDn)
vlvSrchEntry = Entry(vlvSrchDn)
vlvSrchEntry.setValues('objectclass', 'top', 'vlvSearch')
vlvSrchEntry.setValues('cn', 'vlvSrch')
vlvSrchEntry.setValues('vlvBase', DEFAULT_SUFFIX)
vlvSrchEntry.setValues('vlvFilter', '(|(objectclass=*)(objectclass=ldapsubentry))')
vlvSrchEntry.setValues('vlvScope', '2')
> M2.add_s(vlvSrchEntry)

tickets/ticket47966_test.py:50:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/__init__.py:158: in inner
return f(ent.dn, ent.toTupleList(), *args[2:])
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:428: in add_s
return self.add_ext_s(dn,modlist,None,None)
/usr/lib/python3.6/site-packages/lib389/__init__.py:160: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:414: in add_ext_s
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749: in result3
resp_ctrl_classes=resp_ctrl_classes
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756: in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbef5ceb5f8>
func = <built-in method result4 of LDAP object at 0x7fbf0ab4b418>
args = (29, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.NO_SUCH_OBJECT: {'desc': 'No such object'}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: NO_SUCH_OBJECT
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists------------------------------ Captured log call -------------------------------
ticket47966_test.py 26 INFO Testing Ticket 47966 - [VLV] slapd crashes during Dogtag clone reinstallation ticket47966_test.py 31 INFO 0. Create a VLV index on Master 2. backend.py 71 INFO List backend with suffix=dc=example,dc=com ticket47966_test.py 43 INFO 0-1. vlvSearch dn: cn=vlvSrch,cn=b'userRoot',cn=ldbm database,cn=plugins,cn=config
Failed tickets/ticket47988_test.py::test_ticket47988_init 5.37
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf0b048f60>

def test_ticket47988_init(topology_m2):
"""
It adds
- Objectclass with MAY 'member'
- an entry ('bind_entry') with which we bind to test the 'SELFDN' operation
It deletes the anonymous aci

"""

_header(topology_m2, 'test_ticket47988_init')

# enable acl error logging
mod = [(ldap.MOD_REPLACE, 'nsslapd-errorlog-level', ensure_bytes(str(8192)))] # REPL
topology_m2.ms["master1"].modify_s(DN_CONFIG, mod)
topology_m2.ms["master2"].modify_s(DN_CONFIG, mod)

mod = [(ldap.MOD_REPLACE, 'nsslapd-accesslog-level', ensure_bytes(str(260)))] # Internal op
topology_m2.ms["master1"].modify_s(DN_CONFIG, mod)
topology_m2.ms["master2"].modify_s(DN_CONFIG, mod)

# add dummy entries
for cpt in range(MAX_OTHERS):
name = "%s%d" % (OTHER_NAME, cpt)
topology_m2.ms["master1"].add_s(Entry(("cn=%s,%s" % (name, SUFFIX), {
'objectclass': "top person".split(),
'sn': name,
'cn': name})))

# check that entry 0 is replicated before
loop = 0
entryDN = "cn=%s0,%s" % (OTHER_NAME, SUFFIX)
while loop <= 10:
try:
ent = topology_m2.ms["master2"].getEntry(entryDN, ldap.SCOPE_BASE, "(objectclass=*)", ['telephonenumber'])
break
except ldap.NO_SUCH_OBJECT:
time.sleep(1)
loop += 1
assert (loop <= 10)

topology_m2.ms["master1"].stop(timeout=10)
topology_m2.ms["master2"].stop(timeout=10)

# install the specific schema M1: ipa3.3, M2: ipa4.1
schema_file = os.path.join(topology_m2.ms["master1"].getDir(__file__, DATA_DIR), "ticket47988/schema_ipa3.3.tar.gz")
_install_schema(topology_m2.ms["master1"], schema_file)
schema_file = os.path.join(topology_m2.ms["master1"].getDir(__file__, DATA_DIR), "ticket47988/schema_ipa4.1.tar.gz")
_install_schema(topology_m2.ms["master2"], schema_file)

> topology_m2.ms["master1"].start(timeout=10)

/export/tests/tickets/ticket47988_test.py:155:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/__init__.py:1199: in start
"dirsrv@%s" % self.serverid])
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

popenargs = (['/usr/bin/systemctl', 'start', 'dirsrv@master1'],), kwargs = {}
retcode = 1, cmd = ['/usr/bin/systemctl', 'start', 'dirsrv@master1']

def check_call(*popenargs, **kwargs):
"""Run command with arguments. Wait for command to complete. If
the exit code was zero then return, otherwise raise
CalledProcessError. The CalledProcessError object will have the
return code in the returncode attribute.

The arguments are the same as for the call function. Example:

check_call(["ls", "-l"])
"""
retcode = call(*popenargs, **kwargs)
if retcode:
cmd = kwargs.get("args")
if cmd is None:
cmd = popenargs[0]
> raise CalledProcessError(retcode, cmd)
E subprocess.CalledProcessError: Command '['/usr/bin/systemctl', 'start', 'dirsrv@master1']' returned non-zero exit status 1.

/usr/lib64/python3.6/subprocess.py:291: CalledProcessError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists----------------------------- Captured stderr call -----------------------------
Job for dirsrv@master1.service failed because the control process exited with error code. See "systemctl status dirsrv@master1.service" and "journalctl -xe" for details. ------------------------------ Captured log call -------------------------------
ticket47988_test.py 62 INFO ############################################### ticket47988_test.py 63 INFO ####### ticket47988_test.py 64 INFO ####### test_ticket47988_init ticket47988_test.py 65 INFO ####### ticket47988_test.py 66 INFO ################################################### ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/02common.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/50ns-admin.ldif ticket47988_test.py 96 INFO replace /etc/dirsrv/slapd-master1/schema/99user.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60nss-ldap.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60autofs.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/50ns-web.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60samba.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/10dna-plugin.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/05rfc4523.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60basev2.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/10automember-plugin.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/05rfc2927.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/10mep-plugin.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60ipadns.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/10rfc2307.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/50ns-mail.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/05rfc4524.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60trust.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60ipaconfig.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/50ns-directory.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60eduperson.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60mozilla.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/65ipasudo.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60rfc3712.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60rfc2739.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/50ns-value.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60acctpolicy.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/01core389.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60sabayon.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60pam-plugin.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/00core.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/25java-object.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60sudo.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/70ipaotp.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60pureftpd.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/61kerberos-ipav3.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60kerberos.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60basev3.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/06inetorgperson.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/30ns-common.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/28pilot.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/20subscriber.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/50ns-certificate.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master1/schema/60posix-winsync-plugin.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/02common.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/50ns-admin.ldif ticket47988_test.py 96 INFO replace /etc/dirsrv/slapd-master2/schema/99user.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60nss-ldap.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60autofs.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/50ns-web.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60samba.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/10dna-plugin.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/05rfc4523.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60basev2.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/10automember-plugin.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/05rfc2927.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/10mep-plugin.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60ipadns.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/10rfc2307.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/50ns-mail.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/05rfc4524.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60trust.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60ipaconfig.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/50ns-directory.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60eduperson.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60mozilla.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/65ipasudo.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60rfc3712.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60rfc2739.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/50ns-value.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60acctpolicy.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/01core389.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60sabayon.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60pam-plugin.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/00core.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/25java-object.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60sudo.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/70ipaotp.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60pureftpd.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/61kerberos-ipav3.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60kerberos.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60basev3.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/06inetorgperson.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/30ns-common.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/28pilot.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/20subscriber.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/50ns-certificate.ldif ticket47988_test.py 100 INFO add /etc/dirsrv/slapd-master2/schema/60posix-winsync-plugin.ldif
Failed tickets/ticket47988_test.py::test_ticket47988_1 0.00
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf0b048f60>

def test_ticket47988_1(topology_m2):
'''
Check that replication is working and pause replication M2->M1
'''
_header(topology_m2, 'test_ticket47988_1')

topology_m2.ms["master1"].log.debug("\n\nCheck that replication is working and pause replication M2->M1\n")
> _do_update_entry(supplier=topology_m2.ms["master2"], consumer=topology_m2.ms["master1"], attempts=5)

/export/tests/tickets/ticket47988_test.py:232:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/export/tests/tickets/ticket47988_test.py:182: in _do_update_entry
supplier.modify_s(entryDN, mod)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:629: in modify_s
return self.modify_ext_s(dn,modlist,None,None)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:602: in modify_ext_s
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749: in result3
resp_ctrl_classes=resp_ctrl_classes
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756: in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf08382630>
func = <built-in method result4 of LDAP object at 0x7fbf0a9dab98>
args = (31, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.SERVER_DOWN: {'desc': "Can't contact LDAP server"}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: SERVER_DOWN
------------------------------ Captured log call -------------------------------
ticket47988_test.py 62 INFO ############################################### ticket47988_test.py 63 INFO ####### ticket47988_test.py 64 INFO ####### test_ticket47988_1 ticket47988_test.py 65 INFO ####### ticket47988_test.py 66 INFO ###################################################
Failed tickets/ticket47988_test.py::test_ticket47988_2 0.00
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf0b048f60>

def test_ticket47988_2(topology_m2):
'''
Update M1 schema and trigger update M1->M2
So M1 should learn new/extended definitions that are in M2 schema
'''
_header(topology_m2, 'test_ticket47988_2')

topology_m2.ms["master1"].log.debug("\n\nUpdate M1 schema and an entry on M1\n")
> master1_schema_csn = topology_m2.ms["master1"].schema.get_schema_csn()

/export/tests/tickets/ticket47988_test.py:244:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/schema.py:126: in get_schema_csn
"objectclass=*", ['nsSchemaCSN'])
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:852: in search_s
return self.search_ext_s(base,scope,filterstr,attrlist,attrsonly,None,None,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:846: in search_ext_s
return self.result(msgid,all=1,timeout=timeout)[1]
/usr/lib/python3.6/site-packages/lib389/__init__.py:130: in inner
objtype, data = f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:738: in result
resp_type, resp_data, resp_msgid = self.result2(msgid,all,timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:742: in result2
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all,timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749: in result3
resp_ctrl_classes=resp_ctrl_classes
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756: in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf081d5908>
func = <built-in method result4 of LDAP object at 0x7fbf0816f670>
args = (67, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.SERVER_DOWN: {'desc': "Can't contact LDAP server"}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: SERVER_DOWN
------------------------------ Captured log call -------------------------------
ticket47988_test.py 62 INFO ############################################### ticket47988_test.py 63 INFO ####### ticket47988_test.py 64 INFO ####### test_ticket47988_2 ticket47988_test.py 65 INFO ####### ticket47988_test.py 66 INFO ###################################################
Failed tickets/ticket47988_test.py::test_ticket47988_3 0.00
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf0b048f60>

def test_ticket47988_3(topology_m2):
'''
Resume replication M2->M1 and check replication is still working
'''
_header(topology_m2, 'test_ticket47988_3')

> _resume_M2_to_M1(topology_m2)

/export/tests/tickets/ticket47988_test.py:281:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/export/tests/tickets/ticket47988_test.py:220: in _resume_M2_to_M1
ents = topology_m2.ms["master2"].agreement.list(suffix=SUFFIX)
/usr/lib/python3.6/site-packages/lib389/agreement.py:542: in list
replica_entries = self.conn.replica.list(suffix)
/usr/lib/python3.6/site-packages/lib389/replica.py:174: in list
ents = self.conn.search_s(base, ldap.SCOPE_SUBTREE, filtr)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:852: in search_s
return self.search_ext_s(base,scope,filterstr,attrlist,attrsonly,None,None,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:845: in search_ext_s
msgid = self.search_ext(base,scope,filterstr,attrlist,attrsonly,serverctrls,clientctrls,timeout,sizelimit)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:841: in search_ext
timeout,sizelimit,
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf08382630>
func = <built-in method search_ext of LDAP object at 0x7fbf0a9dab98>
args = ('cn=mapping tree,cn=config', 2, '(&(objectclass=nsds5Replica)(nsDS5ReplicaRoot=dc=example,dc=com))', None, 0, None, ...)
kwargs = {}, diagnostic_message_success = None, exc_type = None
exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.SERVER_DOWN: {'desc': "Can't contact LDAP server"}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: SERVER_DOWN
------------------------------ Captured log call -------------------------------
ticket47988_test.py 62 INFO ############################################### ticket47988_test.py 63 INFO ####### ticket47988_test.py 64 INFO ####### test_ticket47988_3 ticket47988_test.py 65 INFO ####### ticket47988_test.py 66 INFO ################################################### ticket47988_test.py 219 INFO ######################### resume RA M2->M1 ######################
Failed tickets/ticket47988_test.py::test_ticket47988_4 0.00
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf0b048f60>

def test_ticket47988_4(topology_m2):
'''
Check schemaCSN is identical on both server
And save the nsschemaCSN to later check they do not change unexpectedly
'''
_header(topology_m2, 'test_ticket47988_4')

> master1_schema_csn = topology_m2.ms["master1"].schema.get_schema_csn()

/export/tests/tickets/ticket47988_test.py:293:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/schema.py:126: in get_schema_csn
"objectclass=*", ['nsSchemaCSN'])
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:852: in search_s
return self.search_ext_s(base,scope,filterstr,attrlist,attrsonly,None,None,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:845: in search_ext_s
msgid = self.search_ext(base,scope,filterstr,attrlist,attrsonly,serverctrls,clientctrls,timeout,sizelimit)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:841: in search_ext
timeout,sizelimit,
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf081d5908>
func = <built-in method search_ext of LDAP object at 0x7fbf0816f670>
args = ('cn=schema', 0, 'objectclass=*', ['nsSchemaCSN'], 0, None, ...)
kwargs = {}, diagnostic_message_success = None, exc_type = None
exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.SERVER_DOWN: {'desc': "Can't contact LDAP server"}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: SERVER_DOWN
------------------------------ Captured log call -------------------------------
ticket47988_test.py 62 INFO ############################################### ticket47988_test.py 63 INFO ####### ticket47988_test.py 64 INFO ####### test_ticket47988_4 ticket47988_test.py 65 INFO ####### ticket47988_test.py 66 INFO ###################################################
Failed tickets/ticket47988_test.py::test_ticket47988_5 0.00
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf0b048f60>

def test_ticket47988_5(topology_m2):
'''
Check schemaCSN do not change unexpectedly
'''
_header(topology_m2, 'test_ticket47988_5')

> _do_update_entry(supplier=topology_m2.ms["master1"], consumer=topology_m2.ms["master2"], attempts=5)

/export/tests/tickets/ticket47988_test.py:311:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/export/tests/tickets/ticket47988_test.py:182: in _do_update_entry
supplier.modify_s(entryDN, mod)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:629: in modify_s
return self.modify_ext_s(dn,modlist,None,None)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:601: in modify_ext_s
msgid = self.modify_ext(dn,modlist,serverctrls,clientctrls)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:598: in modify_ext
return self._ldap_call(self._l.modify_ext,dn,modlist,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls))
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf081d5908>
func = <built-in method modify_ext of LDAP object at 0x7fbf0816f670>
args = ('cn=other_entry0,dc=example,dc=com', [(2, 'telephonenumber', b'129')], None, None)
kwargs = {}, diagnostic_message_success = None, exc_type = None
exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.SERVER_DOWN: {'desc': "Can't contact LDAP server"}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: SERVER_DOWN
------------------------------ Captured log call -------------------------------
ticket47988_test.py 62 INFO ############################################### ticket47988_test.py 63 INFO ####### ticket47988_test.py 64 INFO ####### test_ticket47988_5 ticket47988_test.py 65 INFO ####### ticket47988_test.py 66 INFO ###################################################
Failed tickets/ticket47988_test.py::test_ticket47988_6 0.00
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf0b048f60>

def test_ticket47988_6(topology_m2):
'''
Update M1 schema and trigger update M2->M1
So M2 should learn new/extended definitions that are in M1 schema
'''

_header(topology_m2, 'test_ticket47988_6')

topology_m2.ms["master1"].log.debug("\n\nUpdate M1 schema and an entry on M1\n")
> master1_schema_csn = topology_m2.ms["master1"].schema.get_schema_csn()

/export/tests/tickets/ticket47988_test.py:334:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/schema.py:126: in get_schema_csn
"objectclass=*", ['nsSchemaCSN'])
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:852: in search_s
return self.search_ext_s(base,scope,filterstr,attrlist,attrsonly,None,None,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:845: in search_ext_s
msgid = self.search_ext(base,scope,filterstr,attrlist,attrsonly,serverctrls,clientctrls,timeout,sizelimit)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:841: in search_ext
timeout,sizelimit,
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf081d5908>
func = <built-in method search_ext of LDAP object at 0x7fbf0816f670>
args = ('cn=schema', 0, 'objectclass=*', ['nsSchemaCSN'], 0, None, ...)
kwargs = {}, diagnostic_message_success = None, exc_type = None
exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.SERVER_DOWN: {'desc': "Can't contact LDAP server"}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: SERVER_DOWN
------------------------------ Captured log call -------------------------------
ticket47988_test.py 62 INFO ############################################### ticket47988_test.py 63 INFO ####### ticket47988_test.py 64 INFO ####### test_ticket47988_6 ticket47988_test.py 65 INFO ####### ticket47988_test.py 66 INFO ###################################################
Failed tickets/ticket48194_test.py::test_init 9.01
topology_st = <lib389.topologies.TopologyMain object at 0x7fbf083c1710>

def test_init(topology_st):
"""
Generate self signed cert and import it to the DS cert db.
Enable SSL
"""
_header(topology_st, 'Testing Ticket 48194 - harden the list of ciphers available by default')

nss_ssl = NssSsl(dbpath=topology_st.standalone.get_cert_dir())
nss_ssl.reinit()
nss_ssl.create_rsa_ca()
nss_ssl.create_rsa_key_and_cert()

log.info("\n######################### enable SSL in the directory server with all ciphers ######################\n")
topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
topology_st.standalone.modify_s(ENCRYPTION_DN, [(ldap.MOD_REPLACE, 'nsSSL3', b'off'),
(ldap.MOD_REPLACE, 'nsTLS1', b'on'),
(ldap.MOD_REPLACE, 'nsSSLClientAuth', b'allowed'),
(ldap.MOD_REPLACE, 'allowWeakCipher', b'on'),
(ldap.MOD_REPLACE, 'nsSSL3Ciphers', b'+all')])

topology_st.standalone.modify_s(CONFIG_DN, [(ldap.MOD_REPLACE, 'nsslapd-security', b'on'),
(ldap.MOD_REPLACE, 'nsslapd-ssl-check-hostname', b'off'),
(ldap.MOD_REPLACE, 'nsslapd-secureport', ensure_bytes(LDAPSPORT))])

topology_st.standalone.add_s(Entry((RSA_DN, {'objectclass': "top nsEncryptionModule".split(),
'cn': RSA,
'nsSSLPersonalitySSL': SERVERCERT,
'nsSSLToken': 'internal (software)',
> 'nsSSLActivation': 'on'})))

/export/tests/tickets/ticket48194_test.py:72:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/__init__.py:158: in inner
return f(ent.dn, ent.toTupleList(), *args[2:])
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:428: in add_s
return self.add_ext_s(dn,modlist,None,None)
/usr/lib/python3.6/site-packages/lib389/__init__.py:160: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:414: in add_ext_s
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749: in result3
resp_ctrl_classes=resp_ctrl_classes
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756: in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0b04def0>
func = <built-in method result4 of LDAP object at 0x7fbf0a7bb2d8>
args = (6, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.ALREADY_EXISTS: {'desc': 'Already exists'}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: ALREADY_EXISTS
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
ticket48194_test.py 39 INFO ############################################### ticket48194_test.py 40 INFO ####### Testing Ticket 48194 - harden the list of ciphers available by default ticket48194_test.py 41 INFO ############################################### ticket48194_test.py 56 INFO ######################### enable SSL in the directory server with all ciphers ######################
Failed tickets/ticket48194_test.py::test_run_0 4.50
topology_st = <lib389.topologies.TopologyMain object at 0x7fbf083c1710>

def test_run_0(topology_st):
"""
Check nsSSL3Ciphers: +all
All ciphers are enabled except null.
Note: allowWeakCipher: on
"""
_header(topology_st, 'Test Case 1 - Check the ciphers availability for "+all"; allowWeakCipher: on')

topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
topology_st.standalone.modify_s(CONFIG_DN, [(ldap.MOD_REPLACE, 'nsslapd-errorlog-level', b'64')])

log.info("\n######################### Restarting the server ######################\n")
topology_st.standalone.restart(timeout=120)

> connectWithOpenssl(topology_st, 'DES-CBC3-SHA', True)

/export/tests/tickets/ticket48194_test.py:132:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

topology_st = <lib389.topologies.TopologyMain object at 0x7fbf083c1710>
cipher = 'DES-CBC3-SHA', expect = True

def connectWithOpenssl(topology_st, cipher, expect):
"""
Connect with the given cipher
Condition:
If expect is True, the handshake should be successful.
If expect is False, the handshake should be refused with
access log: "Cannot communicate securely with peer:
no common encryption algorithm(s)."
"""
log.info("Testing %s -- expect to handshake %s", cipher, "successfully" if expect else "failed")

myurl = 'localhost:%s' % LDAPSPORT
cmdline = ['/usr/bin/openssl', 's_client', '-connect', myurl, '-cipher', cipher]

strcmdline = '/usr/bin/openssl s_client -connect localhost:%s -cipher %s' % (LDAPSPORT, cipher)
log.info("Running cmdline: %s", strcmdline)

try:
proc = subprocess.Popen(cmdline, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.STDOUT)
except ValueError:
log.info("%s failed: %s", cmdline, ValueError)
proc.kill()

while True:
l = proc.stdout.readline()
if l == b"":
break
if b'Cipher is' in l:
log.info("Found: %s", l)
if expect:
if b'(NONE)' in l:
> assert False
E assert False

/export/tests/tickets/ticket48194_test.py:106: AssertionError
------------------------------ Captured log call -------------------------------
ticket48194_test.py 39 INFO ############################################### ticket48194_test.py 40 INFO ####### Test Case 1 - Check the ciphers availability for "+all"; allowWeakCipher: on ticket48194_test.py 41 INFO ############################################### ticket48194_test.py 129 INFO ######################### Restarting the server ###################### ticket48194_test.py 84 INFO Testing DES-CBC3-SHA -- expect to handshake successfully ticket48194_test.py 90 INFO Running cmdline: /usr/bin/openssl s_client -connect localhost:63601 -cipher DES-CBC3-SHA ticket48194_test.py 103 INFO Found: b'New, (NONE), Cipher is (NONE)\n'
Failed tickets/ticket48194_test.py::test_run_9 6.06
topology_st = <lib389.topologies.TopologyMain object at 0x7fbf083c1710>

def test_run_9(topology_st):
"""
Check no nsSSL3Ciphers
Default ciphers are enabled.
allowWeakCipher: on
nsslapd-errorlog-level: 0
"""
_header(topology_st,
'Test Case 10 - Check no nsSSL3Ciphers (default setting) with no errorlog-level & allowWeakCipher on')

topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)
topology_st.standalone.modify_s(ENCRYPTION_DN, [(ldap.MOD_REPLACE, 'nsSSL3Ciphers', None),
(ldap.MOD_REPLACE, 'allowWeakCipher', b'on')])
topology_st.standalone.modify_s(CONFIG_DN, [(ldap.MOD_REPLACE, 'nsslapd-errorlog-level', None)])

log.info("\n######################### Restarting the server ######################\n")
topology_st.standalone.stop(timeout=10)
os.system('mv %s %s.48194_8' % (topology_st.standalone.errlog, topology_st.standalone.errlog))
os.system('touch %s' % (topology_st.standalone.errlog))
time.sleep(2)
topology_st.standalone.start(timeout=120)

> connectWithOpenssl(topology_st, 'DES-CBC3-SHA', True)

/export/tests/tickets/ticket48194_test.py:321:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

topology_st = <lib389.topologies.TopologyMain object at 0x7fbf083c1710>
cipher = 'DES-CBC3-SHA', expect = True

def connectWithOpenssl(topology_st, cipher, expect):
"""
Connect with the given cipher
Condition:
If expect is True, the handshake should be successful.
If expect is False, the handshake should be refused with
access log: "Cannot communicate securely with peer:
no common encryption algorithm(s)."
"""
log.info("Testing %s -- expect to handshake %s", cipher, "successfully" if expect else "failed")

myurl = 'localhost:%s' % LDAPSPORT
cmdline = ['/usr/bin/openssl', 's_client', '-connect', myurl, '-cipher', cipher]

strcmdline = '/usr/bin/openssl s_client -connect localhost:%s -cipher %s' % (LDAPSPORT, cipher)
log.info("Running cmdline: %s", strcmdline)

try:
proc = subprocess.Popen(cmdline, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.STDOUT)
except ValueError:
log.info("%s failed: %s", cmdline, ValueError)
proc.kill()

while True:
l = proc.stdout.readline()
if l == b"":
break
if b'Cipher is' in l:
log.info("Found: %s", l)
if expect:
if b'(NONE)' in l:
> assert False
E assert False

/export/tests/tickets/ticket48194_test.py:106: AssertionError
------------------------------ Captured log call -------------------------------
ticket48194_test.py 39 INFO ############################################### ticket48194_test.py 40 INFO ####### Test Case 10 - Check no nsSSL3Ciphers (default setting) with no errorlog-level & allowWeakCipher on ticket48194_test.py 41 INFO ############################################### ticket48194_test.py 314 INFO ######################### Restarting the server ###################### ticket48194_test.py 84 INFO Testing DES-CBC3-SHA -- expect to handshake successfully ticket48194_test.py 90 INFO Running cmdline: /usr/bin/openssl s_client -connect localhost:63601 -cipher DES-CBC3-SHA ticket48194_test.py 103 INFO Found: b'New, (NONE), Cipher is (NONE)\n'
Failed tickets/ticket48226_test.py::test_ticket48226_set_purgedelay 0.00
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf081e4978>

def test_ticket48226_set_purgedelay(topology_m2):
args = {REPLICA_PURGE_DELAY: '5',
REPLICA_PURGE_INTERVAL: '5'}
try:
> topology_m2.ms["master1"].replica.setProperties(DEFAULT_SUFFIX, None, None, args)

/export/tests/tickets/ticket48226_test.py:25:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.replica.ReplicaLegacy object at 0x7fbef845dc88>
suffix = 'dc=example,dc=com', replica_dn = None, replica_entry = None
properties = {'ReplicaPurgeDelay': '5', 'ReplicaTombstonePurgeInterval': '5'}

def setProperties(self, suffix=None, replica_dn=None, replica_entry=None,
properties=None):
'''
Set the properties of the replica. If an 'replica_entry' (Entry) is
provided, it updates the entry, else it updates the entry on the
server. If the 'replica_dn' is provided it retrieves the entry
using it, else it retrieve the replica using the 'suffix'.

@param suffix : suffix stored in that replica (online update)
@param replica_dn: DN of the replica (online update)
@param replica_entry: Entry of a replica (offline update)
@param properties: dictionary of properties
Supported properties are:
REPLICA_SUFFIX
REPLICA_ID
REPLICA_TYPE
REPLICA_BINDDN
REPLICA_PURGE_DELAY
REPLICA_PRECISE_PURGING
REPLICA_REFERRAL
REPLICA_FLAGS

@return None

@raise ValueError: if unknown properties
ValueError: if invalid replica_entry
ValueError: if replica_dn or suffix are not associated to
a replica

'''

# No properties provided
if len(properties) == 0:
return

# check that the given properties are valid
for prop in properties:
# skip the prefix to add/del value
if not inProperties(prop, REPLICA_PROPNAME_TO_ATTRNAME):
raise ValueError("unknown property: %s" % prop)
else:
self.log.debug("setProperties: %s:%s",
prop, properties[prop])

# At least we need to have suffix/replica_dn/replica_entry
if not suffix and not replica_dn and not replica_entry:
raise InvalidArgumentError("suffix and replica_dn and replica_" +
"entry are missing")

# the caller provides a set of properties to set into a replica entry
if replica_entry:
if not isinstance(replica_entry, Entry):
raise ValueError("invalid instance of the replica_entry")

# that is fine, now set the values
for prop in properties:
val = rawProperty(prop)

# for Entry update it is a replace
replica_entry.update({REPLICA_PROPNAME_TO_ATTRNAME[val]:
properties[prop]})

return

# If it provides the suffix or the replicaDN, replica.list will
# return the appropriate entry
ents = self.conn.replica.list(suffix=suffix, replica_dn=replica_dn)
if len(ents) != 1:
if replica_dn:
raise ValueError("invalid replica DN: %s" % replica_dn)
else:
raise ValueError("invalid suffix: %s" % suffix)

# build the MODS
mods = []
for prop in properties:
# take the operation type from the property name
val = rawProperty(prop)
if str(prop).startswith('+'):
op = ldap.MOD_ADD
elif str(prop).startswith('-'):
op = ldap.MOD_DELETE
else:
op = ldap.MOD_REPLACE

mods.append((op, REPLICA_PROPNAME_TO_ATTRNAME[val],
properties[prop]))

# that is fine now to apply the MOD
> self.conn.modify_s(ents[0].dn, mods)

/usr/lib/python3.6/site-packages/lib389/replica.py:266:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = ('cn=replica,cn=dc\\3Dexample\\2Cdc\\3Dcom,cn=mapping tree,cn=config', [(2, 'nsds5ReplicaPurgeDelay', '5'), (2, 'nsds5ReplicaTombstonePurgeInterval', '5')])
kwargs = {}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0ac57518>
dn = 'cn=replica,cn=dc\\3Dexample\\2Cdc\\3Dcom,cn=mapping tree,cn=config'
modlist = [(2, 'nsds5ReplicaPurgeDelay', '5'), (2, 'nsds5ReplicaTombstonePurgeInterval', '5')]

def modify_s(self,dn,modlist):
> return self.modify_ext_s(dn,modlist,None,None)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:629:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = ('cn=replica,cn=dc\\3Dexample\\2Cdc\\3Dcom,cn=mapping tree,cn=config', [(2, 'nsds5ReplicaPurgeDelay', '5'), (2, 'nsds5ReplicaTombstonePurgeInterval', '5')], None, None)
kwargs = {}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0ac57518>
dn = 'cn=replica,cn=dc\\3Dexample\\2Cdc\\3Dcom,cn=mapping tree,cn=config'
modlist = [(2, 'nsds5ReplicaPurgeDelay', '5'), (2, 'nsds5ReplicaTombstonePurgeInterval', '5')]
serverctrls = None, clientctrls = None

def modify_ext_s(self,dn,modlist,serverctrls=None,clientctrls=None):
> msgid = self.modify_ext(dn,modlist,serverctrls,clientctrls)

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:601:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = ('cn=replica,cn=dc\\3Dexample\\2Cdc\\3Dcom,cn=mapping tree,cn=config', [(2, 'nsds5ReplicaPurgeDelay', '5'), (2, 'nsds5ReplicaTombstonePurgeInterval', '5')], None, None)
kwargs = {}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0ac57518>
dn = 'cn=replica,cn=dc\\3Dexample\\2Cdc\\3Dcom,cn=mapping tree,cn=config'
modlist = [(2, 'nsds5ReplicaPurgeDelay', '5'), (2, 'nsds5ReplicaTombstonePurgeInterval', '5')]
serverctrls = None, clientctrls = None

def modify_ext(self,dn,modlist,serverctrls=None,clientctrls=None):
"""
modify_ext(dn, modlist[,serverctrls=None[,clientctrls=None]]) -> int
"""
if PY2:
dn = self._bytesify_input('dn', dn)
modlist = self._bytesify_modlist('modlist', modlist, with_opcode=True)
> return self._ldap_call(self._l.modify_ext,dn,modlist,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls))

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:598:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

args = (<built-in method modify_ext of LDAP object at 0x7fbf081f8a58>, 'cn=replica,cn=dc\\3Dexample\\2Cdc\\3Dcom,cn=mapping tree,cn=config', [(2, 'nsds5ReplicaPurgeDelay', '5'), (2, 'nsds5ReplicaTombstonePurgeInterval', '5')], None, None)
kwargs = {}

def inner(*args, **kwargs):
if name == 'result':
objtype, data = f(*args, **kwargs)
# data is either a 2-tuple or a list of 2-tuples
# print data
if data:
if isinstance(data, tuple):
return objtype, Entry(data)
elif isinstance(data, list):
# AD sends back these search references
# if objtype == ldap.RES_SEARCH_RESULT and \
# isinstance(data[-1],tuple) and \
# not data[-1][0]:
# print "Received search reference: "
# pprint.pprint(data[-1][1])
# data.pop() # remove the last non-entry element

return objtype, [Entry(x) for x in data]
else:
raise TypeError("unknown data type %s returned by result" %
type(data))
else:
return objtype, data
elif name.startswith('add'):
# the first arg is self
# the second and third arg are the dn and the data to send
# We need to convert the Entry into the format used by
# python-ldap
ent = args[0]
if isinstance(ent, Entry):
return f(ent.dn, ent.toTupleList(), *args[2:])
else:
return f(*args, **kwargs)
else:
> return f(*args, **kwargs)

/usr/lib/python3.6/site-packages/lib389/__init__.py:162:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0ac57518>
func = <built-in method modify_ext of LDAP object at 0x7fbf081f8a58>
args = ('cn=replica,cn=dc\\3Dexample\\2Cdc\\3Dcom,cn=mapping tree,cn=config', [(2, 'nsds5ReplicaPurgeDelay', '5'), (2, 'nsds5ReplicaTombstonePurgeInterval', '5')], None, None)
kwargs = {}, diagnostic_message_success = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E TypeError: ('Tuple_to_LDAPMod(): expected a byte string in the list', '5')

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: TypeError

During handling of the above exception, another exception occurred:

topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf081e4978>

def test_ticket48226_set_purgedelay(topology_m2):
args = {REPLICA_PURGE_DELAY: '5',
REPLICA_PURGE_INTERVAL: '5'}
try:
topology_m2.ms["master1"].replica.setProperties(DEFAULT_SUFFIX, None, None, args)
except:
log.fatal('Failed to configure replica')
> assert False
E assert False

/export/tests/tickets/ticket48226_test.py:28: AssertionError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists------------------------------ Captured log call -------------------------------
ticket48226_test.py 27 CRITICAL Failed to configure replica
Failed tickets/ticket48226_test.py::test_ticket48226_1 0.01
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf081e4978>

def test_ticket48226_1(topology_m2):
name = 'test_entry'
dn = "cn=%s,%s" % (name, SUFFIX)

topology_m2.ms["master1"].add_s(Entry((dn, {'objectclass': "top person".split(),
'sn': name,
'cn': name})))

# First do an update that is replicated
mods = [(ldap.MOD_ADD, 'description', '5')]
> topology_m2.ms["master1"].modify_s(dn, mods)

/export/tests/tickets/ticket48226_test.py:50:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:629: in modify_s
return self.modify_ext_s(dn,modlist,None,None)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:601: in modify_ext_s
msgid = self.modify_ext(dn,modlist,serverctrls,clientctrls)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:598: in modify_ext
return self._ldap_call(self._l.modify_ext,dn,modlist,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls))
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0ac57518>
func = <built-in method modify_ext of LDAP object at 0x7fbf081f8a58>
args = ('cn=test_entry,dc=example,dc=com', [(0, 'description', '5')], None, None)
kwargs = {}, diagnostic_message_success = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E TypeError: ('Tuple_to_LDAPMod(): expected a byte string in the list', '5')

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: TypeError
Failed tickets/ticket48252_test.py::test_ticket48252_run_0 4.22
topology_st = <lib389.topologies.TopologyMain object at 0x7fbef8a610b8>

def test_ticket48252_run_0(topology_st):
"""
Delete an entry cn=test_entry0
Check it is not in the 'cn' index file
"""
log.info("Case 1 - Check deleted entry is not in the 'cn' index file")
uas = UserAccounts(topology_st.standalone, DEFAULT_SUFFIX)
del_rdn = "uid=%s0" % TEST_USER
del_entry = uas.get('%s0' % TEST_USER)
log.info(" Deleting a test entry %s..." % del_entry)
del_entry.delete()

> assert in_index_file(topology_st, 0, 'cn') is False

/export/tests/tickets/ticket48252_test.py:78:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

topology_st = <lib389.topologies.TopologyMain object at 0x7fbef8a610b8>, id = 0
index = 'cn'

def in_index_file(topology_st, id, index):
key = "%s%s" % (TEST_USER, id)
log.info(" dbscan - checking %s is in index file %s..." % (key, index))
dbscanOut = topology_st.standalone.dbscan(DEFAULT_BENAME, index)

> if key in dbscanOut:
E TypeError: a bytes-like object is required, not 'str'

/export/tests/tickets/ticket48252_test.py:56: TypeError
----------------------------- Captured stdout call -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log call -------------------------------
__init__.py 3075 INFO Running script: ['/usr/bin/dbscan', '-f', '/var/lib/dirsrv/slapd-standalone1/db/userRoot/cn.db']
Failed tickets/ticket48252_test.py::test_ticket48252_run_1 0.03
topology_st = <lib389.topologies.TopologyMain object at 0x7fbef8a610b8>

def test_ticket48252_run_1(topology_st):
"""
Delete an entry cn=test_entry1
Check it is in the 'objectclass' index file as a tombstone entry
"""
log.info("Case 2 - Check deleted entry is in the 'objectclass' index file as a tombstone entry")
uas = UserAccounts(topology_st.standalone, DEFAULT_SUFFIX)
del_rdn = "uid=%s1" % TEST_USER
del_entry = uas.get('%s1' % TEST_USER)
log.info(" Deleting a test entry %s..." % del_rdn)
del_entry.delete()

entry = topology_st.standalone.search_s(SUFFIX, ldap.SCOPE_SUBTREE, '(&(objectclass=nstombstone)(%s))' % del_rdn)
assert len(entry) == 1
log.info(" entry %s is in the objectclass index file." % del_rdn)

log.info(" db2index - reindexing %s ..." % 'objectclass')
> assert topology_st.standalone.db2index(DEFAULT_BENAME, 'objectclass')
E AssertionError: assert False
E + where False = <bound method DirSrv.db2index of <lib389.DirSrv object at 0x7fbf0ac61a20>>('userRoot', 'objectclass')
E + where <bound method DirSrv.db2index of <lib389.DirSrv object at 0x7fbf0ac61a20>> = <lib389.DirSrv object at 0x7fbf0ac61a20>.db2index
E + where <lib389.DirSrv object at 0x7fbf0ac61a20> = <lib389.topologies.TopologyMain object at 0x7fbef8a610b8>.standalone

/export/tests/tickets/ticket48252_test.py:105: AssertionError
------------------------------ Captured log call -------------------------------
__init__.py 2949 ERROR db2index: Can not operate while directory server is running
Failed tickets/ticket48266_test.py::test_ticket48266_fractional 0.01
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbef8a7b780>
entries = None

def test_ticket48266_fractional(topology_m2, entries):
ents = topology_m2.ms["master1"].agreement.list(suffix=SUFFIX)
assert len(ents) == 1

mod = [(ldap.MOD_REPLACE, 'nsDS5ReplicatedAttributeList', ['(objectclass=*) $ EXCLUDE telephonenumber']),
(ldap.MOD_REPLACE, 'nsds5ReplicaStripAttrs', ['modifiersname modifytimestamp'])]
ents = topology_m2.ms["master1"].agreement.list(suffix=SUFFIX)
assert len(ents) == 1
m1_m2_agmt = ents[0].dn
> topology_m2.ms["master1"].modify_s(ents[0].dn, mod)

/export/tests/tickets/ticket48266_test.py:44:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:629: in modify_s
return self.modify_ext_s(dn,modlist,None,None)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:601: in modify_ext_s
msgid = self.modify_ext(dn,modlist,serverctrls,clientctrls)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:598: in modify_ext
return self._ldap_call(self._l.modify_ext,dn,modlist,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls))
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbef8a79080>
func = <built-in method modify_ext of LDAP object at 0x7fbf08211058>
args = ('cn=002,cn=replica,cn=dc\\3Dexample\\2Cdc\\3Dcom,cn=mapping tree,cn=config', [(2, 'nsDS5ReplicatedAttributeList', ['(...ctclass=*) $ EXCLUDE telephonenumber']), (2, 'nsds5ReplicaStripAttrs', ['modifiersname modifytimestamp'])], None, None)
kwargs = {}, diagnostic_message_success = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E TypeError: ('Tuple_to_LDAPMod(): expected a byte string in the list', '(objectclass=*) $ EXCLUDE telephonenumber')

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: TypeError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists
Failed tickets/ticket48266_test.py::test_ticket48266_check_repl_desc 0.00
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbef8a7b780>
entries = None

def test_ticket48266_check_repl_desc(topology_m2, entries):
name = "cn=%s1,%s" % (NEW_ACCOUNT, SUFFIX)
value = 'check repl. description'
mod = [(ldap.MOD_REPLACE, 'description', value)]
> topology_m2.ms["master1"].modify_s(name, mod)

/export/tests/tickets/ticket48266_test.py:61:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:629: in modify_s
return self.modify_ext_s(dn,modlist,None,None)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:601: in modify_ext_s
msgid = self.modify_ext(dn,modlist,serverctrls,clientctrls)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:598: in modify_ext
return self._ldap_call(self._l.modify_ext,dn,modlist,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls))
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbef8a79080>
func = <built-in method modify_ext of LDAP object at 0x7fbf08211058>
args = ('cn=new_account1,dc=example,dc=com', [(2, 'description', 'check repl. description')], None, None)
kwargs = {}, diagnostic_message_success = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E TypeError: ('Tuple_to_LDAPMod(): expected a byte string in the list', 'c')

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: TypeError
Failed tickets/ticket48266_test.py::test_ticket48266_count_csn_evaluation 0.01
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbef8a7b780>
entries = None

def test_ticket48266_count_csn_evaluation(topology_m2, entries):
ents = topology_m2.ms["master1"].agreement.list(suffix=SUFFIX)
assert len(ents) == 1
> first_csn = _get_first_not_replicated_csn(topology_m2)

/export/tests/tickets/ticket48266_test.py:172:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/export/tests/tickets/ticket48266_test.py:116: in _get_first_not_replicated_csn
topology_m2.ms["master1"].modify_s(name, mod)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:629: in modify_s
return self.modify_ext_s(dn,modlist,None,None)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:601: in modify_ext_s
msgid = self.modify_ext(dn,modlist,serverctrls,clientctrls)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:598: in modify_ext
return self._ldap_call(self._l.modify_ext,dn,modlist,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls))
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbef8a79080>
func = <built-in method modify_ext of LDAP object at 0x7fbf08211058>
args = ('cn=new_account2,dc=example,dc=com', [(2, 'telephonenumber', '123456')], None, None)
kwargs = {}, diagnostic_message_success = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E TypeError: ('Tuple_to_LDAPMod(): expected a byte string in the list', '1')

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: TypeError
Failed tickets/ticket48325_test.py::test_ticket48325 0.00
topology_m1h1c1 = <lib389.topologies.TopologyMain object at 0x7fbf083c0048>

def test_ticket48325(topology_m1h1c1):
"""
Test that the RUV element order is correctly maintained when promoting
a hub or consumer.
"""

#
# Promote consumer to master
#
try:
> topology_m1h1c1.cs["consumer1"].changelog.create()

/export/tests/tickets/ticket48325_test.py:46:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf083addd8>, name = 'changelog'

def __getattr__(self,name):
if name in self.CLASSATTR_OPTION_MAPPING:
return self.get_option(self.CLASSATTR_OPTION_MAPPING[name])
elif name in self.__dict__:
return self.__dict__[name]
else:
raise AttributeError('%s has no attribute %s' % (
> self.__class__.__name__,repr(name)
))
E AttributeError: DirSrv has no attribute 'changelog'

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:352: AttributeError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39101, 'ldap-secureport': 63801, 'server-id': 'hub1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39201, 'ldap-secureport': 63901, 'server-id': 'consumer1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 471 INFO Creating replication topology. replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39101 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39101 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39101 is working replica.py 1590 INFO SUCCESS: joined consumer from ldap://server.example.com:39001 to ldap://server.example.com:39101 replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39201 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39101 to ldap://server.example.com:39201 is was created replica.py 1647 INFO SUCCESS: joined consumer from ldap://server.example.com:39101 to ldap://server.example.com:39201 replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39201 is working
Failed tickets/ticket48759_test.py::test_ticket48759 0.00
topology_st = <lib389.topologies.TopologyMain object at 0x7fbef84756a0>

def test_ticket48759(topology_st):
"""
The fix for ticket 48759 has to prevent plugin calls for tombstone purging

The test uses the memberof and retrocl plugins to verify this.
In tombstone purging without the fix the mmeberof plugin is called,
if the tombstone entry is a group,
it modifies the user entries for the group
and if retrocl is enabled this mod is written to the retrocl

The test sequence is:
- enable replication
- enable memberof and retro cl plugin
- add user entries
- add a group and add the users as members
- verify memberof is set to users
- delete the group
- verify memberof is removed from users
- add group again
- verify memberof is set to users
- get number of changes in retro cl for one user
- configure tombstone purging
- wait for purge interval to pass
- add a dummy entry to increase maxcsn
- wait for purge interval to pass two times
- get number of changes in retro cl for user again
- assert there was no additional change
"""

log.info('Testing Ticket 48759 - no plugin calls for tombstone purging')

#
# Setup Replication
#
log.info('Setting up replication...')
topology_st.standalone.replica.enableReplication(suffix=DEFAULT_SUFFIX, role=ReplicaRole.MASTER,
> replicaId=REPLICAID_MASTER_1)

/export/tests/tickets/ticket48759_test.py:109:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/replica.py:562: in enableReplication
self.conn.changelog.create()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf081e4470>, name = 'changelog'

def __getattr__(self,name):
if name in self.CLASSATTR_OPTION_MAPPING:
return self.get_option(self.CLASSATTR_OPTION_MAPPING[name])
elif name in self.__dict__:
return self.__dict__[name]
else:
raise AttributeError('%s has no attribute %s' % (
> self.__class__.__name__,repr(name)
))
E AttributeError: DirSrv has no attribute 'changelog'

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:352: AttributeError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
backend.py 71 INFO List backend with suffix=dc=example,dc=com
Failed tickets/ticket48906_test.py::test_ticket48906_setup 0.14
topology_st = <lib389.topologies.TopologyMain object at 0x7fbf0a7de9e8>

def test_ticket48906_setup(topology_st):
"""
Check there is no core
Create a second backend
stop DS (that should trigger the core)
check there is no core
"""
log.info('Testing Ticket 48906 - ns-slapd crashes during the shutdown after adding attribute with a matching rule')

# bind as directory manager
topology_st.standalone.log.info("Bind as %s" % DN_DM)
topology_st.standalone.simple_bind_s(DN_DM, PASSWORD)

# check there is no core
entry = topology_st.standalone.search_s(CONFIG_DN, ldap.SCOPE_BASE, "(cn=config)", ['nsslapd-workingdir'])
assert entry
assert entry[0]
assert entry[0].hasAttr('nsslapd-workingdir')
path = entry[0].getValue('nsslapd-workingdir')
> cores = fnmatch.filter(os.listdir(path), 'core.*')

/export/tests/tickets/ticket48906_test.py:70:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

names = [b'errors.rotationinfo', b'audit.rotationinfo', b'audit', b'access.rotationinfo', b'access', b'errors']
pat = 'core.*'

def filter(names, pat):
"""Return the subset of the list NAMES that match PAT."""
result = []
pat = os.path.normcase(pat)
match = _compile_pattern(pat)
if os.path is posixpath:
# normcase on posix is NOP. Optimize it away from the loop.
for name in names:
> if match(name):
E TypeError: cannot use a string pattern on a bytes-like object

/usr/lib64/python3.6/fnmatch.py:56: TypeError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
ticket48906_test.py 61 INFO Bind as cn=Directory Manager
Failed tickets/ticket48906_test.py::test_ticket48906_dblock_default 0.01
topology_st = <lib389.topologies.TopologyMain object at 0x7fbf0a7de9e8>

def test_ticket48906_dblock_default(topology_st):
topology_st.standalone.log.info('###################################')
topology_st.standalone.log.info('###')
topology_st.standalone.log.info('### Check that before any change config/monitor')
topology_st.standalone.log.info('### contains the default value')
topology_st.standalone.log.info('###')
topology_st.standalone.log.info('###################################')
> _check_monitored_value(topology_st, DBLOCK_DEFAULT)

/export/tests/tickets/ticket48906_test.py:153:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

topology_st = <lib389.topologies.TopologyMain object at 0x7fbf0a7de9e8>
expected_value = '10000'

def _check_monitored_value(topology_st, expected_value):
entries = topology_st.standalone.search_s(ldbm_monitor, ldap.SCOPE_BASE, '(objectclass=*)')
> assert (entries[0].hasValue(DBLOCK_ATTR_MONITOR) and entries[0].getValue(DBLOCK_ATTR_MONITOR) == expected_value)
E AssertionError: assert (True and b'10000' == '10000')
E + where True = <bound method Entry.hasValue of dn: cn=database,cn=monitor,cn=ldbm database,cn=plugins,cn=config\ncn: database\nnsslapd-...rate: 0\nnsslapd-db-pages-in-use: 8\nnsslapd-db-txn-region-wait-rate: 0\nobjectClass: top\nobjectClass: extensibleObject\n\n>('nsslapd-db-configured-locks')
E + where <bound method Entry.hasValue of dn: cn=database,cn=monitor,cn=ldbm database,cn=plugins,cn=config\ncn: database\nnsslapd-...rate: 0\nnsslapd-db-pages-in-use: 8\nnsslapd-db-txn-region-wait-rate: 0\nobjectClass: top\nobjectClass: extensibleObject\n\n> = dn: cn=database,cn=monitor,cn=ldbm database,cn=plugins,cn=config\ncn: database\nnsslapd-db-abort-rate: 0\nnsslapd-db-acti...-rate: 0\nnsslapd-db-pages-in-use: 8\nnsslapd-db-txn-region-wait-rate: 0\nobjectClass: top\nobjectClass: extensibleObject\n\n.hasValue
E + and b'10000' = <bound method Entry.getValue of dn: cn=database,cn=monitor,cn=ldbm database,cn=plugins,cn=config\ncn: database\nnsslapd-...rate: 0\nnsslapd-db-pages-in-use: 8\nnsslapd-db-txn-region-wait-rate: 0\nobjectClass: top\nobjectClass: extensibleObject\n\n>('nsslapd-db-configured-locks')
E + where <bound method Entry.getValue of dn: cn=database,cn=monitor,cn=ldbm database,cn=plugins,cn=config\ncn: database\nnsslapd-...rate: 0\nnsslapd-db-pages-in-use: 8\nnsslapd-db-txn-region-wait-rate: 0\nobjectClass: top\nobjectClass: extensibleObject\n\n> = dn: cn=database,cn=monitor,cn=ldbm database,cn=plugins,cn=config\ncn: database\nnsslapd-db-abort-rate: 0\nnsslapd-db-acti...-rate: 0\nnsslapd-db-pages-in-use: 8\nnsslapd-db-txn-region-wait-rate: 0\nobjectClass: top\nobjectClass: extensibleObject\n\n.getValue

/export/tests/tickets/ticket48906_test.py:103: AssertionError
------------------------------ Captured log call -------------------------------
ticket48906_test.py 147 INFO ################################### ticket48906_test.py 148 INFO ### ticket48906_test.py 149 INFO ### Check that before any change config/monitor ticket48906_test.py 150 INFO ### contains the default value ticket48906_test.py 151 INFO ### ticket48906_test.py 152 INFO ###################################
Failed tickets/ticket48906_test.py::test_ticket48906_dblock_ldap_update 0.00
topology_st = <lib389.topologies.TopologyMain object at 0x7fbf0a7de9e8>

def test_ticket48906_dblock_ldap_update(topology_st):
topology_st.standalone.log.info('###################################')
topology_st.standalone.log.info('###')
topology_st.standalone.log.info('### Check that after ldap update')
topology_st.standalone.log.info('### - monitor contains DEFAULT')
topology_st.standalone.log.info('### - configured contains DBLOCK_LDAP_UPDATE')
topology_st.standalone.log.info('### - After stop dse.ldif contains DBLOCK_LDAP_UPDATE')
topology_st.standalone.log.info('### - After stop guardian contains DEFAULT')
topology_st.standalone.log.info('### In fact guardian should differ from config to recreate the env')
topology_st.standalone.log.info('### Check that after restart (DBenv recreated)')
topology_st.standalone.log.info('### - monitor contains DBLOCK_LDAP_UPDATE ')
topology_st.standalone.log.info('### - configured contains DBLOCK_LDAP_UPDATE')
topology_st.standalone.log.info('### - dse.ldif contains DBLOCK_LDAP_UPDATE')
topology_st.standalone.log.info('###')
topology_st.standalone.log.info('###################################')

> topology_st.standalone.modify_s(ldbm_config, [(ldap.MOD_REPLACE, DBLOCK_ATTR_CONFIG, DBLOCK_LDAP_UPDATE)])

/export/tests/tickets/ticket48906_test.py:173:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:629: in modify_s
return self.modify_ext_s(dn,modlist,None,None)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:601: in modify_ext_s
msgid = self.modify_ext(dn,modlist,serverctrls,clientctrls)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:598: in modify_ext
return self._ldap_call(self._l.modify_ext,dn,modlist,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls))
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0a7de6d8>
func = <built-in method modify_ext of LDAP object at 0x7fbef8477aa8>
args = ('cn=config,cn=ldbm database,cn=plugins,cn=config', [(2, 'nsslapd-db-locks', '20000')], None, None)
kwargs = {}, diagnostic_message_success = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E TypeError: ('Tuple_to_LDAPMod(): expected a byte string in the list', '2')

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: TypeError
------------------------------ Captured log call -------------------------------
ticket48906_test.py 158 INFO ################################### ticket48906_test.py 159 INFO ### ticket48906_test.py 160 INFO ### Check that after ldap update ticket48906_test.py 161 INFO ### - monitor contains DEFAULT ticket48906_test.py 162 INFO ### - configured contains DBLOCK_LDAP_UPDATE ticket48906_test.py 163 INFO ### - After stop dse.ldif contains DBLOCK_LDAP_UPDATE ticket48906_test.py 164 INFO ### - After stop guardian contains DEFAULT ticket48906_test.py 165 INFO ### In fact guardian should differ from config to recreate the env ticket48906_test.py 166 INFO ### Check that after restart (DBenv recreated) ticket48906_test.py 167 INFO ### - monitor contains DBLOCK_LDAP_UPDATE ticket48906_test.py 168 INFO ### - configured contains DBLOCK_LDAP_UPDATE ticket48906_test.py 169 INFO ### - dse.ldif contains DBLOCK_LDAP_UPDATE ticket48906_test.py 170 INFO ### ticket48906_test.py 171 INFO ###################################
Failed tickets/ticket48906_test.py::test_ticket48906_dblock_edit_update 0.82
topology_st = <lib389.topologies.TopologyMain object at 0x7fbf0a7de9e8>

def test_ticket48906_dblock_edit_update(topology_st):
topology_st.standalone.log.info('###################################')
topology_st.standalone.log.info('###')
topology_st.standalone.log.info('### Check that after stop')
topology_st.standalone.log.info('### - dse.ldif contains DBLOCK_LDAP_UPDATE')
topology_st.standalone.log.info('### - guardian contains DBLOCK_LDAP_UPDATE')
topology_st.standalone.log.info('### Check that edit dse+restart')
topology_st.standalone.log.info('### - monitor contains DBLOCK_EDIT_UPDATE')
topology_st.standalone.log.info('### - configured contains DBLOCK_EDIT_UPDATE')
topology_st.standalone.log.info('### Check that after stop')
topology_st.standalone.log.info('### - dse.ldif contains DBLOCK_EDIT_UPDATE')
topology_st.standalone.log.info('### - guardian contains DBLOCK_EDIT_UPDATE')
topology_st.standalone.log.info('###')
topology_st.standalone.log.info('###################################')

topology_st.standalone.stop(timeout=10)
> _check_dse_ldif_value(topology_st, attr=DBLOCK_ATTR_CONFIG, expected_value=DBLOCK_LDAP_UPDATE)

/export/tests/tickets/ticket48906_test.py:204:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

topology_st = <lib389.topologies.TopologyMain object at 0x7fbf0a7de9e8>
attr = 'nsslapd-db-locks', expected_value = '20000'

def _check_dse_ldif_value(topology_st, attr=DBLOCK_ATTR_CONFIG, expected_value=DBLOCK_LDAP_UPDATE):
dse_ref_ldif = topology_st.standalone.confdir + '/dse.ldif'
dse_ref = open(dse_ref_ldif, "r")

# Check the DBLOCK in dse.ldif
value = None
while True:
line = dse_ref.readline()
if (line == ''):
break
elif attr in line.lower():
value = line.split()[1]
> assert (value == expected_value)
E AssertionError: assert '10000' == '20000'
E - 10000
E ? ^
E + 20000
E ? ^

/export/tests/tickets/ticket48906_test.py:118: AssertionError
------------------------------ Captured log call -------------------------------
ticket48906_test.py 189 INFO ################################### ticket48906_test.py 190 INFO ### ticket48906_test.py 191 INFO ### Check that after stop ticket48906_test.py 192 INFO ### - dse.ldif contains DBLOCK_LDAP_UPDATE ticket48906_test.py 193 INFO ### - guardian contains DBLOCK_LDAP_UPDATE ticket48906_test.py 194 INFO ### Check that edit dse+restart ticket48906_test.py 195 INFO ### - monitor contains DBLOCK_EDIT_UPDATE ticket48906_test.py 196 INFO ### - configured contains DBLOCK_EDIT_UPDATE ticket48906_test.py 197 INFO ### Check that after stop ticket48906_test.py 198 INFO ### - dse.ldif contains DBLOCK_EDIT_UPDATE ticket48906_test.py 199 INFO ### - guardian contains DBLOCK_EDIT_UPDATE ticket48906_test.py 200 INFO ### ticket48906_test.py 201 INFO ###################################
Failed tickets/ticket48906_test.py::test_ticket48906_dblock_robust 1.23
topology_st = <lib389.topologies.TopologyMain object at 0x7fbf0a7de9e8>

def test_ticket48906_dblock_robust(topology_st):
topology_st.standalone.log.info('###################################')
topology_st.standalone.log.info('###')
topology_st.standalone.log.info('### Check that the following values are rejected')
topology_st.standalone.log.info('### - negative value')
topology_st.standalone.log.info('### - insuffisant value')
topology_st.standalone.log.info('### - invalid value')
topology_st.standalone.log.info('### Check that minimum value is accepted')
topology_st.standalone.log.info('###')
topology_st.standalone.log.info('###################################')

topology_st.standalone.start(timeout=10)
> _check_monitored_value(topology_st, DBLOCK_EDIT_UPDATE)

/export/tests/tickets/ticket48906_test.py:254:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

topology_st = <lib389.topologies.TopologyMain object at 0x7fbf0a7de9e8>
expected_value = '40000'

def _check_monitored_value(topology_st, expected_value):
entries = topology_st.standalone.search_s(ldbm_monitor, ldap.SCOPE_BASE, '(objectclass=*)')
> assert (entries[0].hasValue(DBLOCK_ATTR_MONITOR) and entries[0].getValue(DBLOCK_ATTR_MONITOR) == expected_value)
E AssertionError: assert (True and b'10000' == '40000')
E + where True = <bound method Entry.hasValue of dn: cn=database,cn=monitor,cn=ldbm database,cn=plugins,cn=config\ncn: database\nnsslapd-...rate: 0\nnsslapd-db-pages-in-use: 8\nnsslapd-db-txn-region-wait-rate: 0\nobjectClass: top\nobjectClass: extensibleObject\n\n>('nsslapd-db-configured-locks')
E + where <bound method Entry.hasValue of dn: cn=database,cn=monitor,cn=ldbm database,cn=plugins,cn=config\ncn: database\nnsslapd-...rate: 0\nnsslapd-db-pages-in-use: 8\nnsslapd-db-txn-region-wait-rate: 0\nobjectClass: top\nobjectClass: extensibleObject\n\n> = dn: cn=database,cn=monitor,cn=ldbm database,cn=plugins,cn=config\ncn: database\nnsslapd-db-abort-rate: 0\nnsslapd-db-acti...-rate: 0\nnsslapd-db-pages-in-use: 8\nnsslapd-db-txn-region-wait-rate: 0\nobjectClass: top\nobjectClass: extensibleObject\n\n.hasValue
E + and b'10000' = <bound method Entry.getValue of dn: cn=database,cn=monitor,cn=ldbm database,cn=plugins,cn=config\ncn: database\nnsslapd-...rate: 0\nnsslapd-db-pages-in-use: 8\nnsslapd-db-txn-region-wait-rate: 0\nobjectClass: top\nobjectClass: extensibleObject\n\n>('nsslapd-db-configured-locks')
E + where <bound method Entry.getValue of dn: cn=database,cn=monitor,cn=ldbm database,cn=plugins,cn=config\ncn: database\nnsslapd-...rate: 0\nnsslapd-db-pages-in-use: 8\nnsslapd-db-txn-region-wait-rate: 0\nobjectClass: top\nobjectClass: extensibleObject\n\n> = dn: cn=database,cn=monitor,cn=ldbm database,cn=plugins,cn=config\ncn: database\nnsslapd-db-abort-rate: 0\nnsslapd-db-acti...-rate: 0\nnsslapd-db-pages-in-use: 8\nnsslapd-db-txn-region-wait-rate: 0\nobjectClass: top\nobjectClass: extensibleObject\n\n.getValue

/export/tests/tickets/ticket48906_test.py:103: AssertionError
------------------------------ Captured log call -------------------------------
ticket48906_test.py 243 INFO ################################### ticket48906_test.py 244 INFO ### ticket48906_test.py 245 INFO ### Check that the following values are rejected ticket48906_test.py 246 INFO ### - negative value ticket48906_test.py 247 INFO ### - insuffisant value ticket48906_test.py 248 INFO ### - invalid value ticket48906_test.py 249 INFO ### Check that minimum value is accepted ticket48906_test.py 250 INFO ### ticket48906_test.py 251 INFO ###################################
Failed tickets/ticket48944_test.py::test_ticket48944 50.38
topo = <lib389.topologies.TopologyMain object at 0x7fbf0a952400>

def test_ticket48944(topo):
"""On a read only replica invalid state info can accumulate

:ID: 833be131-f3bf-493e-97c6-3121438a07b1
:feature: Account Policy Plugin
:setup: Two master and two consumer setup
:steps: 1. Configure Account policy plugin with alwaysrecordlogin set to yes
2. Check if entries are synced across masters and consumers
3. Stop all masters and consumers
4. Start master1 and bind as user1 to create lastLoginTime attribute
5. Start master2 and wait for the sync of lastLoginTime attribute
6. Stop master1 and bind as user1 from master2
7. Check if lastLoginTime attribute is updated and greater than master1
8. Stop master2, start consumer1, consumer2 and then master2
9. Check if lastLoginTime attribute is updated on both consumers
10. Bind as user1 to both consumers and check the value is updated
11. Check if lastLoginTime attribute is not updated from consumers
12. Start master1 and make sure the lastLoginTime attribute is not updated on consumers
13. Bind as user1 from master1 and check if all masters and consumers have the same value
14. Check error logs of consumers for "deletedattribute;deleted" message
:expectedresults: No accumulation of replica invalid state info on consumers
"""

log.info("Ticket 48944 - On a read only replica invalid state info can accumulate")
user_name = 'newbzusr'
tuserdn = 'uid={}1,ou=people,{}'.format(user_name, SUFFIX)
inst_list = ['master1', 'master2', 'consumer1', 'consumer2']
for inst_name in inst_list:
_enable_plugin(topo, inst_name)

log.info('Sleep for 10secs for the server to come up')
time.sleep(10)
log.info('Add few entries to server and check if entries are replicated')
for nos in range(10):
userdn = 'uid={}{},ou=people,{}'.format(user_name, nos, SUFFIX)
try:
topo.ms['master1'].add_s(Entry((userdn, {
'objectclass': 'top person'.split(),
'objectclass': 'inetorgperson',
'cn': user_name,
'sn': user_name,
'userpassword': USER_PW,
'mail': '{}@redhat.com'.format(user_name)})))
except ldap.LDAPError as e:
log.error('Failed to add {} user: error {}'.format(userdn, e.message['desc']))
raise e

log.info('Checking if entries are synced across masters and consumers')
entries_m1 = topo.ms['master1'].search_s(SUFFIX, ldap.SCOPE_SUBTREE, 'uid={}*'.format(user_name), ['uid=*'])
exp_entries = str(entries_m1).count('dn: uid={}*'.format(user_name))
entries_m2 = topo.ms['master2'].search_s(SUFFIX, ldap.SCOPE_SUBTREE, 'uid={}*'.format(user_name), ['uid=*'])
act_entries = str(entries_m2).count('dn: uid={}*'.format(user_name))
assert act_entries == exp_entries
inst_list = ['consumer1', 'consumer2']
for inst in inst_list:
entries_other = topo.cs[inst].search_s(SUFFIX, ldap.SCOPE_SUBTREE, 'uid={}*'.format(user_name), ['uid=*'])
act_entries = str(entries_other).count('dn: uid={}*'.format(user_name))
assert act_entries == exp_entries

topo.ms['master2'].stop(timeout=10)
topo.ms['master1'].stop(timeout=10)
topo.cs['consumer1'].stop(timeout=10)
topo.cs['consumer2'].stop(timeout=10)

topo.ms['master1'].start(timeout=10)
lastLogin_m1_1 = _last_login_time(topo, tuserdn, 'master1', 'bind_n_check')

log.info('Start master2 to sync lastLoginTime attribute from master1')
topo.ms['master2'].start(timeout=10)
time.sleep(5)
log.info('Stop master1')
topo.ms['master1'].stop(timeout=10)
log.info('Bind as user1 to master2 and check if lastLoginTime attribute is greater than master1')
> lastLogin_m2_1 = _last_login_time(topo, tuserdn, 'master2', 'bind_n_check')

/export/tests/tickets/ticket48944_test.py:156:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/export/tests/tickets/ticket48944_test.py:34: in _last_login_time
topo.ms[inst_name].simple_bind_s(userdn, USER_PW)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:444: in simple_bind_s
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749: in result3
resp_ctrl_classes=resp_ctrl_classes
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756: in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbef8475cc0>
func = <built-in method result4 of LDAP object at 0x7fbf0ad56260>
args = (2, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.INVALID_CREDENTIALS: {'desc': 'Invalid credentials'}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: INVALID_CREDENTIALS
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39201, 'ldap-secureport': 63901, 'server-id': 'consumer1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39202, 'ldap-secureport': 63902, 'server-id': 'consumer2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists topologies.py 166 INFO Joining consumer consumer1 from master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39201 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39201 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39201 is working replica.py 1647 INFO SUCCESS: joined consumer from ldap://server.example.com:39001 to ldap://server.example.com:39201 topologies.py 166 INFO Joining consumer consumer2 from master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39202 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39202 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39202 is working replica.py 1647 INFO SUCCESS: joined consumer from ldap://server.example.com:39001 to ldap://server.example.com:39202 topologies.py 171 INFO Ensuring consumer consumer1 from master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39201 already exists topologies.py 171 INFO Ensuring consumer consumer2 from master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39202 already exists topologies.py 171 INFO Ensuring consumer consumer1 from master2 ... replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39201 is was created topologies.py 171 INFO Ensuring consumer consumer2 from master2 ... replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39202 is was created------------------------------ Captured log call -------------------------------
ticket48944_test.py 106 INFO Ticket 48944 - On a read only replica invalid state info can accumulate ticket48944_test.py 50 INFO Enable account policy plugin and configure required attributes ticket48944_test.py 52 INFO Configure Account policy plugin on master1 ticket48944_test.py 50 INFO Enable account policy plugin and configure required attributes ticket48944_test.py 52 INFO Configure Account policy plugin on master2 ticket48944_test.py 50 INFO Enable account policy plugin and configure required attributes ticket48944_test.py 67 INFO Configure Account policy plugin on consumer1 ticket48944_test.py 50 INFO Enable account policy plugin and configure required attributes ticket48944_test.py 67 INFO Configure Account policy plugin on consumer2 ticket48944_test.py 113 INFO Sleep for 10secs for the server to come up ticket48944_test.py 115 INFO Add few entries to server and check if entries are replicated ticket48944_test.py 130 INFO Checking if entries are synced across masters and consumers ticket48944_test.py 150 INFO Start master2 to sync lastLoginTime attribute from master1 ticket48944_test.py 153 INFO Stop master1 ticket48944_test.py 155 INFO Bind as user1 to master2 and check if lastLoginTime attribute is greater than master1
Failed tickets/ticket48961_test.py::test_ticket48961_storagescheme 0.05
topology_st = <lib389.topologies.TopologyMain object at 0x7fbf083ada90>

def test_ticket48961_storagescheme(topology_st):
"""
Test deleting of the storage scheme.
"""

default = topology_st.standalone.config.get_attr_val('passwordStorageScheme')
# Change it
topology_st.standalone.config.set('passwordStorageScheme', 'CLEAR')
# Now delete it
> topology_st.standalone.config.remove('passwordStorageScheme', None)

/export/tests/tickets/ticket48961_test.py:27:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:286: in remove
self.set(key, value, action=ldap.MOD_DELETE)
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:356: in set
serverctrls=self._server_controls, clientctrls=self._client_controls)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:602: in modify_ext_s
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749: in result3
resp_ctrl_classes=resp_ctrl_classes
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756: in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0a9e8160>
func = <built-in method result4 of LDAP object at 0x7fbf0ad56620>
args = (4, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.OPERATIONS_ERROR: {'desc': 'Operations error', 'info': 'passwordStorageScheme: deleting the value is not allowed.'}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: OPERATIONS_ERROR
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.
Failed tickets/ticket48961_test.py::test_ticket48961_deleteall 11.44
topology_st = <lib389.topologies.TopologyMain object at 0x7fbf083ada90>

def test_ticket48961_deleteall(topology_st):
"""
Test that we can delete all valid attrs, and that a few are rejected.
"""
attr_to_test = {
'nsslapd-listenhost': 'localhost',
'nsslapd-securelistenhost': 'localhost',
'nsslapd-allowed-sasl-mechanisms': 'GSSAPI',
'nsslapd-svrtab': 'Some bogus data', # This one could reset?
}
attr_to_fail = {
# These are the values that should always be dn dse.ldif too
'nsslapd-localuser': 'dirsrv',
'nsslapd-defaultnamingcontext': 'dc=example,dc=com', # Can't delete
'nsslapd-accesslog': '/opt/dirsrv/var/log/dirsrv/slapd-standalone/access',
'nsslapd-auditlog': '/opt/dirsrv/var/log/dirsrv/slapd-standalone/audit',
'nsslapd-errorlog': '/opt/dirsrv/var/log/dirsrv/slapd-standalone/errors',
'nsslapd-tmpdir': '/tmp',
'nsslapd-rundir': '/opt/dirsrv/var/run/dirsrv',
'nsslapd-bakdir': '/opt/dirsrv/var/lib/dirsrv/slapd-standalone/bak',
'nsslapd-certdir': '/opt/dirsrv/etc/dirsrv/slapd-standalone',
'nsslapd-instancedir': '/opt/dirsrv/lib/dirsrv/slapd-standalone',
'nsslapd-ldifdir': '/opt/dirsrv/var/lib/dirsrv/slapd-standalone/ldif',
'nsslapd-lockdir': '/opt/dirsrv/var/lock/dirsrv/slapd-standalone',
'nsslapd-schemadir': '/opt/dirsrv/etc/dirsrv/slapd-standalone/schema',
'nsslapd-workingdir': '/opt/dirsrv/var/log/dirsrv/slapd-standalone',
'nsslapd-localhost': 'localhost.localdomain',
# These can't be reset, but might be in dse.ldif. Probably in libglobs.
'nsslapd-certmap-basedn': 'cn=certmap,cn=config',
'nsslapd-port': '38931', # Can't delete
'nsslapd-secureport': '636', # Can't delete
'nsslapd-conntablesize': '1048576',
'nsslapd-rootpw': '{SSHA512}...',
# These are hardcoded server magic.
'nsslapd-hash-filters': 'off', # Can't delete
'nsslapd-requiresrestart': 'cn=config:nsslapd-port', # Can't change
'nsslapd-plugin': 'cn=case ignore string syntax,cn=plugins,cn=config', # Can't change
'nsslapd-privatenamespaces': 'cn=schema', # Can't change
'nsslapd-allowed-to-delete-attrs': 'None', # Can't delete
'nsslapd-accesslog-list': 'List!', # Can't delete
'nsslapd-auditfaillog-list': 'List!',
'nsslapd-auditlog-list': 'List!',
'nsslapd-errorlog-list': 'List!',
'nsslapd-config': 'cn=config',
'nsslapd-versionstring': '389-Directory/1.3.6.0',
'objectclass': '',
'cn': '',
# These are the odd values
'nsslapd-backendconfig': 'cn=config,cn=userRoot,cn=ldbm database,cn=plugins,cn=config', # Doesn't exist?
'nsslapd-betype': 'ldbm database', # Doesn't exist?
'nsslapd-connection-buffer': 1, # Has an ldap problem
'nsslapd-malloc-mmap-threshold': '-10', # Defunct anyway
'nsslapd-malloc-mxfast': '-10',
'nsslapd-malloc-trim-threshold': '-10',
'nsslapd-referralmode': '',
'nsslapd-saslpath': '',
'passwordadmindn': '',
}

config_entry = topology_st.standalone.config.raw_entry()

for attr in config_entry.getAttrs():
if attr.lower() in attr_to_fail:
# We know this will fail, so skip
pass
else:
log.info("Reseting %s" % (attr))
# Check if we have to do some override of this attr.
# Some attributes need specific syntax, so we override just these.
newval = topology_st.standalone.config.get_attr_vals(attr)
log.info(" --> %s" % newval)
if attr.lower() in attr_to_test:
newval = attr_to_test[attr]
log.info("override --> %s" % newval)
# We need to set the attr to its own value
# so that it's "written".
topology_st.standalone.config.set(attr, newval)
# Now we can really reset
> _reset_config_value(topology_st.standalone, attr)

/export/tests/tickets/ticket48961_test.py:119:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/export/tests/tickets/ticket48961_test.py:36: in _reset_config_value
inst.config.remove(attrname, None)
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:286: in remove
self.set(key, value, action=ldap.MOD_DELETE)
/usr/lib/python3.6/site-packages/lib389/_mapped_object.py:356: in set
serverctrls=self._server_controls, clientctrls=self._client_controls)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:602: in modify_ext_s
resp_type, resp_data, resp_msgid, resp_ctrls = self.result3(msgid,all=1,timeout=self.timeout)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:749: in result3
resp_ctrl_classes=resp_ctrl_classes
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:756: in result4
ldap_result = self._ldap_call(self._l.result4,msgid,all,timeout,add_ctrls,add_intermediates,add_extop)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:329: in _ldap_call
reraise(exc_type, exc_value, exc_traceback)
/usr/lib64/python3.6/site-packages/ldap/compat.py:44: in reraise
raise exc_value
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0a9e8160>
func = <built-in method result4 of LDAP object at 0x7fbf0ad56620>
args = (712, 1, -1, 0, 0, 0), kwargs = {}, diagnostic_message_success = None
exc_type = None, exc_value = None, exc_traceback = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E ldap.OPERATIONS_ERROR: {'desc': 'Operations error', 'info': 'passwordStorageScheme: deleting the value is not allowed.'}

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: OPERATIONS_ERROR
------------------------------ Captured log call -------------------------------
ticket48961_test.py 107 INFO Reseting nsslapd-auditlog-mode ticket48961_test.py 111 INFO --> [b'600'] ticket48961_test.py 38 INFO Reset nsslapd-auditlog-mode to b'600' ticket48961_test.py 107 INFO Reseting nsslapd-auditlog-logrotationsync-enabled ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-auditlog-logrotationsync-enabled to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-auditlog-logrotationsynchour ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset nsslapd-auditlog-logrotationsynchour to b'0' ticket48961_test.py 107 INFO Reseting nsslapd-auditlog-logrotationsyncmin ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset nsslapd-auditlog-logrotationsyncmin to b'0' ticket48961_test.py 107 INFO Reseting nsslapd-auditlog-logrotationtime ticket48961_test.py 111 INFO --> [b'1'] ticket48961_test.py 38 INFO Reset nsslapd-auditlog-logrotationtime to b'1' ticket48961_test.py 107 INFO Reseting nsslapd-accesslog-mode ticket48961_test.py 111 INFO --> [b'600'] ticket48961_test.py 38 INFO Reset nsslapd-accesslog-mode to b'600' ticket48961_test.py 107 INFO Reseting nsslapd-accesslog-maxlogsperdir ticket48961_test.py 111 INFO --> [b'10'] ticket48961_test.py 38 INFO Reset nsslapd-accesslog-maxlogsperdir to b'10' ticket48961_test.py 107 INFO Reseting nsslapd-errorlog-level ticket48961_test.py 111 INFO --> [b'16384'] ticket48961_test.py 38 INFO Reset nsslapd-errorlog-level to b'16384' ticket48961_test.py 107 INFO Reseting nsslapd-errorlog-logging-enabled ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-errorlog-logging-enabled to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-errorlog-mode ticket48961_test.py 111 INFO --> [b'600'] ticket48961_test.py 38 INFO Reset nsslapd-errorlog-mode to b'600' ticket48961_test.py 107 INFO Reseting nsslapd-errorlog-logexpirationtime ticket48961_test.py 111 INFO --> [b'1'] ticket48961_test.py 38 INFO Reset nsslapd-errorlog-logexpirationtime to b'1' ticket48961_test.py 107 INFO Reseting nsslapd-accesslog-logging-enabled ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-accesslog-logging-enabled to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-maxthreadsperconn ticket48961_test.py 111 INFO --> [b'5'] ticket48961_test.py 38 INFO Reset nsslapd-maxthreadsperconn to b'5' ticket48961_test.py 107 INFO Reseting nsslapd-accesslog-logexpirationtime ticket48961_test.py 111 INFO --> [b'1'] ticket48961_test.py 38 INFO Reset nsslapd-accesslog-logexpirationtime to b'1' ticket48961_test.py 107 INFO Reseting nsslapd-errorlog-logrotationsync-enabled ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-errorlog-logrotationsync-enabled to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-errorlog-logrotationsynchour ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset nsslapd-errorlog-logrotationsynchour to b'0' ticket48961_test.py 107 INFO Reseting nsslapd-errorlog-logrotationsyncmin ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset nsslapd-errorlog-logrotationsyncmin to b'0' ticket48961_test.py 107 INFO Reseting nsslapd-errorlog-logrotationtime ticket48961_test.py 111 INFO --> [b'1'] ticket48961_test.py 38 INFO Reset nsslapd-errorlog-logrotationtime to b'1' ticket48961_test.py 107 INFO Reseting passwordInHistory ticket48961_test.py 111 INFO --> [b'6'] ticket48961_test.py 38 INFO Reset passwordInHistory to b'6' ticket48961_test.py 107 INFO Reseting passwordUnlock ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset passwordUnlock to b'on' ticket48961_test.py 107 INFO Reseting passwordGraceLimit ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset passwordGraceLimit to b'0' ticket48961_test.py 107 INFO Reseting nsslapd-accesslog-logrotationsync-enabled ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-accesslog-logrotationsync-enabled to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-accesslog-logrotationsynchour ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset nsslapd-accesslog-logrotationsynchour to b'0' ticket48961_test.py 107 INFO Reseting nsslapd-accesslog-logrotationsyncmin ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset nsslapd-accesslog-logrotationsyncmin to b'0' ticket48961_test.py 107 INFO Reseting nsslapd-accesslog-logrotationtime ticket48961_test.py 111 INFO --> [b'1'] ticket48961_test.py 38 INFO Reset nsslapd-accesslog-logrotationtime to b'1' ticket48961_test.py 107 INFO Reseting passwordMustChange ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset passwordMustChange to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-pwpolicy-local ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-pwpolicy-local to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-pwpolicy-inherit-global ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-pwpolicy-inherit-global to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-auditlog-logmaxdiskspace ticket48961_test.py 111 INFO --> [b'100'] ticket48961_test.py 38 INFO Reset nsslapd-auditlog-logmaxdiskspace to b'100' ticket48961_test.py 107 INFO Reseting nsslapd-sizelimit ticket48961_test.py 111 INFO --> [b'2000'] ticket48961_test.py 38 INFO Reset nsslapd-sizelimit to b'2000' ticket48961_test.py 107 INFO Reseting nsslapd-auditlog-maxlogsize ticket48961_test.py 111 INFO --> [b'100'] ticket48961_test.py 38 INFO Reset nsslapd-auditlog-maxlogsize to b'100' ticket48961_test.py 107 INFO Reseting passwordWarning ticket48961_test.py 111 INFO --> [b'86400'] ticket48961_test.py 38 INFO Reset passwordWarning to b'86400' ticket48961_test.py 107 INFO Reseting nsslapd-readonly ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-readonly to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-sasl-mapping-fallback ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-sasl-mapping-fallback to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-threadnumber ticket48961_test.py 111 INFO --> [b'24'] ticket48961_test.py 38 INFO Reset nsslapd-threadnumber to b'24' ticket48961_test.py 107 INFO Reseting passwordLockout ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset passwordLockout to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-enquote-sup-oc ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-enquote-sup-oc to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-ioblocktimeout ticket48961_test.py 111 INFO --> [b'300000'] ticket48961_test.py 38 INFO Reset nsslapd-ioblocktimeout to b'300000' ticket48961_test.py 107 INFO Reseting nsslapd-max-filter-nest-level ticket48961_test.py 111 INFO --> [b'40'] ticket48961_test.py 38 INFO Reset nsslapd-max-filter-nest-level to b'40' ticket48961_test.py 107 INFO Reseting nsslapd-errorlog-logmaxdiskspace ticket48961_test.py 111 INFO --> [b'100'] ticket48961_test.py 38 INFO Reset nsslapd-errorlog-logmaxdiskspace to b'100' ticket48961_test.py 107 INFO Reseting passwordMinLength ticket48961_test.py 111 INFO --> [b'8'] ticket48961_test.py 38 INFO Reset passwordMinLength to b'8' ticket48961_test.py 107 INFO Reseting passwordMinDigits ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset passwordMinDigits to b'0' ticket48961_test.py 107 INFO Reseting passwordMinAlphas ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset passwordMinAlphas to b'0' ticket48961_test.py 107 INFO Reseting passwordMinUppers ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset passwordMinUppers to b'0' ticket48961_test.py 107 INFO Reseting passwordMinLowers ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset passwordMinLowers to b'0' ticket48961_test.py 107 INFO Reseting passwordMinSpecials ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset passwordMinSpecials to b'0' ticket48961_test.py 107 INFO Reseting passwordMin8bit ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset passwordMin8bit to b'0' ticket48961_test.py 107 INFO Reseting passwordMaxRepeats ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset passwordMaxRepeats to b'0' ticket48961_test.py 107 INFO Reseting passwordMinCategories ticket48961_test.py 111 INFO --> [b'3'] ticket48961_test.py 38 INFO Reset passwordMinCategories to b'3' ticket48961_test.py 107 INFO Reseting passwordMinTokenLength ticket48961_test.py 111 INFO --> [b'3'] ticket48961_test.py 38 INFO Reset passwordMinTokenLength to b'3' ticket48961_test.py 107 INFO Reseting nsslapd-auditlog-logexpirationtime ticket48961_test.py 111 INFO --> [b'1'] ticket48961_test.py 38 INFO Reset nsslapd-auditlog-logexpirationtime to b'1' ticket48961_test.py 107 INFO Reseting nsslapd-schemacheck ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-schemacheck to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-schemamod ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-schemamod to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-syntaxcheck ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-syntaxcheck to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-syntaxlogging ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-syntaxlogging to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-dn-validate-strict ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-dn-validate-strict to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-ds4-compatible-schema ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-ds4-compatible-schema to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-schema-ignore-trailing-spaces ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-schema-ignore-trailing-spaces to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-schemareplace ticket48961_test.py 111 INFO --> [b'replication-only'] ticket48961_test.py 38 INFO Reset nsslapd-schemareplace to b'replication-only' ticket48961_test.py 107 INFO Reseting nsslapd-accesslog-logmaxdiskspace ticket48961_test.py 111 INFO --> [b'500'] ticket48961_test.py 38 INFO Reset nsslapd-accesslog-logmaxdiskspace to b'500' ticket48961_test.py 107 INFO Reseting passwordMaxFailure ticket48961_test.py 111 INFO --> [b'3'] ticket48961_test.py 38 INFO Reset passwordMaxFailure to b'3' ticket48961_test.py 107 INFO Reseting nsslapd-lastmod ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-lastmod to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-security ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-security to b'off' ticket48961_test.py 107 INFO Reseting passwordMaxAge ticket48961_test.py 111 INFO --> [b'8640000'] ticket48961_test.py 38 INFO Reset passwordMaxAge to b'8640000' ticket48961_test.py 107 INFO Reseting nsslapd-auditlog-logrotationtimeunit ticket48961_test.py 111 INFO --> [b'week'] ticket48961_test.py 38 INFO Reset nsslapd-auditlog-logrotationtimeunit to b'week' ticket48961_test.py 107 INFO Reseting passwordResetFailureCount ticket48961_test.py 111 INFO --> [b'600'] ticket48961_test.py 38 INFO Reset passwordResetFailureCount to b'600' ticket48961_test.py 107 INFO Reseting passwordIsGlobalPolicy ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset passwordIsGlobalPolicy to b'off' ticket48961_test.py 107 INFO Reseting passwordLegacyPolicy ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset passwordLegacyPolicy to b'on' ticket48961_test.py 107 INFO Reseting passwordTrackUpdateTime ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset passwordTrackUpdateTime to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-auditlog-maxlogsperdir ticket48961_test.py 111 INFO --> [b'1'] ticket48961_test.py 38 INFO Reset nsslapd-auditlog-maxlogsperdir to b'1' ticket48961_test.py 107 INFO Reseting nsslapd-errorlog-logexpirationtimeunit ticket48961_test.py 111 INFO --> [b'month'] ticket48961_test.py 38 INFO Reset nsslapd-errorlog-logexpirationtimeunit to b'month' ticket48961_test.py 107 INFO Reseting nsslapd-groupevalnestlevel ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset nsslapd-groupevalnestlevel to b'0' ticket48961_test.py 107 INFO Reseting nsslapd-accesslog-logexpirationtimeunit ticket48961_test.py 111 INFO --> [b'month'] ticket48961_test.py 38 INFO Reset nsslapd-accesslog-logexpirationtimeunit to b'month' ticket48961_test.py 107 INFO Reseting passwordChange ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset passwordChange to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-accesslog-level ticket48961_test.py 111 INFO --> [b'256'] ticket48961_test.py 38 INFO Reset nsslapd-accesslog-level to b'256' ticket48961_test.py 107 INFO Reseting nsslapd-errorlog-logrotationtimeunit ticket48961_test.py 111 INFO --> [b'week'] ticket48961_test.py 38 INFO Reset nsslapd-errorlog-logrotationtimeunit to b'week' ticket48961_test.py 107 INFO Reseting nsslapd-timelimit ticket48961_test.py 111 INFO --> [b'3600'] ticket48961_test.py 38 INFO Reset nsslapd-timelimit to b'3600' ticket48961_test.py 107 INFO Reseting nsslapd-errorlog-maxlogsize ticket48961_test.py 111 INFO --> [b'100'] ticket48961_test.py 38 INFO Reset nsslapd-errorlog-maxlogsize to b'100' ticket48961_test.py 107 INFO Reseting nsslapd-reservedescriptors ticket48961_test.py 111 INFO --> [b'64'] ticket48961_test.py 38 INFO Reset nsslapd-reservedescriptors to b'64' ticket48961_test.py 107 INFO Reseting nsslapd-svrtab ticket48961_test.py 111 INFO --> [b''] ticket48961_test.py 114 INFO override --> Some bogus data ticket48961_test.py 38 INFO Reset nsslapd-svrtab to b'' ticket48961_test.py 107 INFO Reseting passwordExp ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset passwordExp to b'off' ticket48961_test.py 107 INFO Reseting passwordSendExpiringTime ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset passwordSendExpiringTime to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-accesscontrol ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-accesscontrol to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-accesslog-logrotationtimeunit ticket48961_test.py 111 INFO --> [b'day'] ticket48961_test.py 38 INFO Reset nsslapd-accesslog-logrotationtimeunit to b'day' ticket48961_test.py 107 INFO Reseting passwordLockoutDuration ticket48961_test.py 111 INFO --> [b'3600'] ticket48961_test.py 38 INFO Reset passwordLockoutDuration to b'3600' ticket48961_test.py 107 INFO Reseting nsslapd-accesslog-maxlogsize ticket48961_test.py 111 INFO --> [b'100'] ticket48961_test.py 38 INFO Reset nsslapd-accesslog-maxlogsize to b'100' ticket48961_test.py 107 INFO Reseting nsslapd-idletimeout ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset nsslapd-idletimeout to b'0' ticket48961_test.py 107 INFO Reseting nsslapd-nagle ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-nagle to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-errorlog-logminfreediskspace ticket48961_test.py 111 INFO --> [b'5'] ticket48961_test.py 38 INFO Reset nsslapd-errorlog-logminfreediskspace to b'5' ticket48961_test.py 107 INFO Reseting nsslapd-auditlog-logging-enabled ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-auditlog-logging-enabled to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-auditlog-logging-hide-unhashed-pw ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-auditlog-logging-hide-unhashed-pw to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-accesslog-logbuffering ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-accesslog-logbuffering to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-csnlogging ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-csnlogging to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-auditlog-logexpirationtimeunit ticket48961_test.py 111 INFO --> [b'month'] ticket48961_test.py 38 INFO Reset nsslapd-auditlog-logexpirationtimeunit to b'month' ticket48961_test.py 107 INFO Reseting nsslapd-allow-hashed-passwords ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-allow-hashed-passwords to b'off' ticket48961_test.py 107 INFO Reseting passwordCheckSyntax ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset passwordCheckSyntax to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-listenhost ticket48961_test.py 111 INFO --> [b''] ticket48961_test.py 114 INFO override --> localhost ticket48961_test.py 38 INFO Reset nsslapd-listenhost to b'' ticket48961_test.py 107 INFO Reseting nsslapd-snmp-index ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset nsslapd-snmp-index to b'0' ticket48961_test.py 107 INFO Reseting nsslapd-ldapifilepath ticket48961_test.py 111 INFO --> [b'/var/run/slapd-standalone1.socket'] ticket48961_test.py 38 INFO Reset nsslapd-ldapifilepath to b'/var/run/ldapi' ticket48961_test.py 107 INFO Reseting nsslapd-ldapilisten ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-ldapilisten to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-ldapiautobind ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-ldapiautobind to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-ldapimaprootdn ticket48961_test.py 111 INFO --> [b'cn=Directory Manager'] ticket48961_test.py 38 INFO Reset nsslapd-ldapimaprootdn to b'cn=Directory Manager' ticket48961_test.py 107 INFO Reseting nsslapd-ldapimaptoentries ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-ldapimaptoentries to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-ldapiuidnumbertype ticket48961_test.py 111 INFO --> [b'uidNumber'] ticket48961_test.py 38 INFO Reset nsslapd-ldapiuidnumbertype to b'uidNumber' ticket48961_test.py 107 INFO Reseting nsslapd-ldapigidnumbertype ticket48961_test.py 111 INFO --> [b'gidNumber'] ticket48961_test.py 38 INFO Reset nsslapd-ldapigidnumbertype to b'gidNumber' ticket48961_test.py 107 INFO Reseting nsslapd-ldapientrysearchbase ticket48961_test.py 111 INFO --> [b'dc=example,dc=com'] ticket48961_test.py 38 INFO Reset nsslapd-ldapientrysearchbase to b'dc=example,dc=com' ticket48961_test.py 107 INFO Reseting nsslapd-anonlimitsdn ticket48961_test.py 111 INFO --> [b''] ticket48961_test.py 38 INFO Reset nsslapd-anonlimitsdn to b'' ticket48961_test.py 107 INFO Reseting nsslapd-counters ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-counters to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-accesslog-logminfreediskspace ticket48961_test.py 111 INFO --> [b'5'] ticket48961_test.py 38 INFO Reset nsslapd-accesslog-logminfreediskspace to b'5' ticket48961_test.py 107 INFO Reseting nsslapd-errorlog-maxlogsperdir ticket48961_test.py 111 INFO --> [b'1'] ticket48961_test.py 38 INFO Reset nsslapd-errorlog-maxlogsperdir to b'1' ticket48961_test.py 107 INFO Reseting nsslapd-securelistenhost ticket48961_test.py 111 INFO --> [b''] ticket48961_test.py 114 INFO override --> localhost ticket48961_test.py 38 INFO Reset nsslapd-securelistenhost to b'' ticket48961_test.py 107 INFO Reseting nsslapd-auditlog-logminfreediskspace ticket48961_test.py 111 INFO --> [b'5'] ticket48961_test.py 38 INFO Reset nsslapd-auditlog-logminfreediskspace to b'5' ticket48961_test.py 107 INFO Reseting nsslapd-rootdn ticket48961_test.py 111 INFO --> [b'cn=Directory Manager'] ticket48961_test.py 38 INFO Reset nsslapd-rootdn to b'cn=Directory Manager' ticket48961_test.py 107 INFO Reseting passwordMinAge ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset passwordMinAge to b'0' ticket48961_test.py 107 INFO Reseting nsslapd-return-exact-case ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-return-exact-case to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-result-tweak ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-result-tweak to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-plugin-binddn-tracking ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-plugin-binddn-tracking to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-moddn-aci ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-moddn-aci to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-attribute-name-exceptions ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-attribute-name-exceptions to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-maxbersize ticket48961_test.py 111 INFO --> [b'2097152'] ticket48961_test.py 38 INFO Reset nsslapd-maxbersize to b'2097152' ticket48961_test.py 107 INFO Reseting nsslapd-maxsasliosize ticket48961_test.py 111 INFO --> [b'2097152'] ticket48961_test.py 38 INFO Reset nsslapd-maxsasliosize to b'2097152' ticket48961_test.py 107 INFO Reseting nsslapd-maxdescriptors ticket48961_test.py 111 INFO --> [b'1024'] ticket48961_test.py 38 INFO Reset nsslapd-maxdescriptors to b'1024' ticket48961_test.py 107 INFO Reseting nsslapd-SSLclientAuth ticket48961_test.py 111 INFO --> [b'allowed'] ticket48961_test.py 38 INFO Reset nsslapd-SSLclientAuth to b'allowed' ticket48961_test.py 107 INFO Reseting nsslapd-rewrite-rfc1274 ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-rewrite-rfc1274 to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-outbound-ldap-io-timeout ticket48961_test.py 111 INFO --> [b'300000'] ticket48961_test.py 38 INFO Reset nsslapd-outbound-ldap-io-timeout to b'300000' ticket48961_test.py 107 INFO Reseting nsslapd-allow-unauthenticated-binds ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-allow-unauthenticated-binds to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-require-secure-binds ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-require-secure-binds to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-allow-anonymous-access ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-allow-anonymous-access to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-localssf ticket48961_test.py 111 INFO --> [b'71'] ticket48961_test.py 38 INFO Reset nsslapd-localssf to b'71' ticket48961_test.py 107 INFO Reseting nsslapd-minssf ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset nsslapd-minssf to b'0' ticket48961_test.py 107 INFO Reseting nsslapd-minssf-exclude-rootdse ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-minssf-exclude-rootdse to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-force-sasl-external ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-force-sasl-external to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-entryusn-global ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-entryusn-global to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-entryusn-import-initval ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset nsslapd-entryusn-import-initval to b'0' ticket48961_test.py 107 INFO Reseting nsslapd-validate-cert ticket48961_test.py 111 INFO --> [b'warn'] ticket48961_test.py 38 INFO Reset nsslapd-validate-cert to b'warn' ticket48961_test.py 107 INFO Reseting nsslapd-pagedsizelimit ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset nsslapd-pagedsizelimit to b'0' ticket48961_test.py 107 INFO Reseting nsslapd-disk-monitoring ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-disk-monitoring to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-disk-monitoring-threshold ticket48961_test.py 111 INFO --> [b'2097152'] ticket48961_test.py 38 INFO Reset nsslapd-disk-monitoring-threshold to b'2097152' ticket48961_test.py 107 INFO Reseting nsslapd-disk-monitoring-grace-period ticket48961_test.py 111 INFO --> [b'60'] ticket48961_test.py 38 INFO Reset nsslapd-disk-monitoring-grace-period to b'60' ticket48961_test.py 107 INFO Reseting nsslapd-disk-monitoring-logging-critical ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-disk-monitoring-logging-critical to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-ndn-cache-enabled ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-ndn-cache-enabled to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-ndn-cache-max-size ticket48961_test.py 111 INFO --> [b'20971520'] ticket48961_test.py 38 INFO Reset nsslapd-ndn-cache-max-size to b'20971520' ticket48961_test.py 107 INFO Reseting nsslapd-allowed-sasl-mechanisms ticket48961_test.py 111 INFO --> [b''] ticket48961_test.py 114 INFO override --> GSSAPI ticket48961_test.py 38 INFO Reset nsslapd-allowed-sasl-mechanisms to b'' ticket48961_test.py 107 INFO Reseting nsslapd-ignore-virtual-attrs ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-ignore-virtual-attrs to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-unhashed-pw-switch ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-unhashed-pw-switch to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-sasl-max-buffer-size ticket48961_test.py 111 INFO --> [b'2097152'] ticket48961_test.py 38 INFO Reset nsslapd-sasl-max-buffer-size to b'2097152' ticket48961_test.py 107 INFO Reseting nsslapd-search-return-original-type-switch ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-search-return-original-type-switch to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-enable-turbo-mode ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-enable-turbo-mode to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-connection-nocanon ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-connection-nocanon to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-plugin-logging ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-plugin-logging to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-listen-backlog-size ticket48961_test.py 111 INFO --> [b'128'] ticket48961_test.py 38 INFO Reset nsslapd-listen-backlog-size to b'128' ticket48961_test.py 107 INFO Reseting nsslapd-dynamic-plugins ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-dynamic-plugins to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-cn-uses-dn-syntax-in-dns ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-cn-uses-dn-syntax-in-dns to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-ignore-time-skew ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-ignore-time-skew to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-global-backend-lock ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-global-backend-lock to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-maxsimplepaged-per-conn ticket48961_test.py 111 INFO --> [b'-1'] ticket48961_test.py 38 INFO Reset nsslapd-maxsimplepaged-per-conn to b'-1' ticket48961_test.py 107 INFO Reseting nsslapd-enable-nunc-stans ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-enable-nunc-stans to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-auditfaillog-mode ticket48961_test.py 111 INFO --> [b'600'] ticket48961_test.py 38 INFO Reset nsslapd-auditfaillog-mode to b'600' ticket48961_test.py 107 INFO Reseting nsslapd-auditfaillog-logrotationsync-enabled ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-auditfaillog-logrotationsync-enabled to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-auditfaillog-logrotationsynchour ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset nsslapd-auditfaillog-logrotationsynchour to b'0' ticket48961_test.py 107 INFO Reseting nsslapd-auditfaillog-logrotationsyncmin ticket48961_test.py 111 INFO --> [b'0'] ticket48961_test.py 38 INFO Reset nsslapd-auditfaillog-logrotationsyncmin to b'0' ticket48961_test.py 107 INFO Reseting nsslapd-auditfaillog-logrotationtime ticket48961_test.py 111 INFO --> [b'1'] ticket48961_test.py 38 INFO Reset nsslapd-auditfaillog-logrotationtime to b'1' ticket48961_test.py 107 INFO Reseting nsslapd-auditfaillog-logmaxdiskspace ticket48961_test.py 111 INFO --> [b'100'] ticket48961_test.py 38 INFO Reset nsslapd-auditfaillog-logmaxdiskspace to b'100' ticket48961_test.py 107 INFO Reseting nsslapd-auditfaillog-maxlogsize ticket48961_test.py 111 INFO --> [b'100'] ticket48961_test.py 38 INFO Reset nsslapd-auditfaillog-maxlogsize to b'100' ticket48961_test.py 107 INFO Reseting nsslapd-auditfaillog-logexpirationtime ticket48961_test.py 111 INFO --> [b'1'] ticket48961_test.py 38 INFO Reset nsslapd-auditfaillog-logexpirationtime to b'1' ticket48961_test.py 107 INFO Reseting nsslapd-auditfaillog-maxlogsperdir ticket48961_test.py 111 INFO --> [b'1'] ticket48961_test.py 38 INFO Reset nsslapd-auditfaillog-maxlogsperdir to b'1' ticket48961_test.py 107 INFO Reseting nsslapd-auditfaillog-logging-enabled ticket48961_test.py 111 INFO --> [b'off'] ticket48961_test.py 38 INFO Reset nsslapd-auditfaillog-logging-enabled to b'off' ticket48961_test.py 107 INFO Reseting nsslapd-auditfaillog-logging-hide-unhashed-pw ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-auditfaillog-logging-hide-unhashed-pw to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-auditfaillog-logexpirationtimeunit ticket48961_test.py 111 INFO --> [b'month'] ticket48961_test.py 38 INFO Reset nsslapd-auditfaillog-logexpirationtimeunit to b'month' ticket48961_test.py 107 INFO Reseting nsslapd-auditfaillog-logminfreediskspace ticket48961_test.py 111 INFO --> [b'5'] ticket48961_test.py 38 INFO Reset nsslapd-auditfaillog-logminfreediskspace to b'5' ticket48961_test.py 107 INFO Reseting nsslapd-auditfaillog-logrotationtimeunit ticket48961_test.py 111 INFO --> [b'week'] ticket48961_test.py 38 INFO Reset nsslapd-auditfaillog-logrotationtimeunit to b'week' ticket48961_test.py 107 INFO Reseting nsslapd-auditfaillog ticket48961_test.py 111 INFO --> [b'/var/log/dirsrv/slapd-standalone1/audit'] ticket48961_test.py 38 INFO Reset nsslapd-auditfaillog to b'' ticket48961_test.py 107 INFO Reseting nsslapd-logging-hr-timestamps-enabled ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-logging-hr-timestamps-enabled to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-extract-pemfiles ticket48961_test.py 111 INFO --> [b'on'] ticket48961_test.py 38 INFO Reset nsslapd-extract-pemfiles to b'on' ticket48961_test.py 107 INFO Reseting nsslapd-logging-backend ticket48961_test.py 111 INFO --> [b'dirsrv-log'] ticket48961_test.py 38 INFO Reset nsslapd-logging-backend to b'dirsrv-log' ticket48961_test.py 107 INFO Reseting nsslapd-tls-check-crl ticket48961_test.py 111 INFO --> [b'none'] ticket48961_test.py 38 INFO Reset nsslapd-tls-check-crl to b'none' ticket48961_test.py 107 INFO Reseting passwordStorageScheme ticket48961_test.py 111 INFO --> [b'CLEAR']
Failed tickets/ticket49020_test.py::test_ticket49020 15.30
T = <lib389.topologies.TopologyMain object at 0x7fbf0824a240>

def test_ticket49020(T):
A = T.ms['master1']
B = T.ms['master2']
C = T.ms['master3']

A.enableReplLogging()
B.enableReplLogging()
C.enableReplLogging()

AtoB = A.agreement.list(suffix=DEFAULT_SUFFIX)[0].dn
AtoC = A.agreement.list(suffix=DEFAULT_SUFFIX)[1].dn
CtoB = C.agreement.list(suffix=DEFAULT_SUFFIX)[1].dn

A.agreement.pause(AtoB)
C.agreement.pause(CtoB)
time.sleep(5)
name = "userX"
dn = "cn={},{}".format(name, DEFAULT_SUFFIX)
A.add_s(Entry((dn, {'objectclass': "top person".split(),
'sn': name,'cn': name})))

> A.agreement.init(DEFAULT_SUFFIX, HOST_MASTER_3, PORT_MASTER_3)

/export/tests/tickets/ticket49020_test.py:45:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/agreement.py:794: in init
filt)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbef8c9dda0>
args = ('cn=replica,cn=dc\\3Dexample\\2Cdc\\3Dcom,cn=mapping tree,cn=config', 1, '(&(objectclass=nsds5replicationagreement)(nsds5replicahost=localhost)(nsds5replicaport=39003)(nsds5replicaroot=dc=example,dc=com))')
kwargs = {}, res = 100, restype = 101, obj = []

def getEntry(self, *args, **kwargs):
"""Wrapper around SimpleLDAPObject.search. It is common to just get
one entry.
@param - entry dn
@param - search scope, in ldap.SCOPE_BASE (default),
ldap.SCOPE_SUB, ldap.SCOPE_ONE
@param filterstr - filterstr, default '(objectClass=*)' from
SimpleLDAPObject
@param attrlist - list of attributes to retrieve. eg ['cn', 'uid']
@oaram attrsonly - default None from SimpleLDAPObject
eg. getEntry(dn, scope, filter, attributes)

XXX This cannot return None
"""
if self.verbose:
self.log.debug("Retrieving entry with %r", [args])
if len(args) == 1 and 'scope' not in kwargs:
args += (ldap.SCOPE_BASE, )

res = self.search(*args, **kwargs)
restype, obj = self.result(res)
# TODO: why not test restype?
if not obj:
> raise NoSuchEntryError("no such entry for %r", [args])
E lib389.exceptions.NoSuchEntryError: ('no such entry for %r', [('cn=replica,cn=dc\\3Dexample\\2Cdc\\3Dcom,cn=mapping tree,cn=config', 1, '(&(objectclass=nsds5replicationagreement)(nsds5replicahost=localhost)(nsds5replicaport=39003)(nsds5replicaroot=dc=example,dc=com))')])

/usr/lib/python3.6/site-packages/lib389/__init__.py:1808: NoSuchEntryError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39003, 'ldap-secureport': 63703, 'server-id': 'master3', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 153 INFO Joining master master3 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39003 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39003 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39003 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39003 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39003 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39003 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master1 to master3 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39003 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists topologies.py 161 INFO Ensuring master master2 to master3 ... replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39003 is was created topologies.py 161 INFO Ensuring master master3 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39003 to ldap://server.example.com:39001 already exists topologies.py 161 INFO Ensuring master master3 to master2 ... replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39003 to ldap://server.example.com:39002 is was created------------------------------ Captured log call -------------------------------
agreement.py 830 INFO Pausing replication cn=002,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config agreement.py 830 INFO Pausing replication cn=002,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config agreement.py 799 CRITICAL initAgreement: No replica agreement to localhost:39003 for suffix dc=example,dc=com
Failed tickets/ticket49039_test.py::test_ticket49039 2.08
topo = <lib389.topologies.TopologyMain object at 0x7fbf0ad5b9b0>

def test_ticket49039(topo):
"""Test "password must change" verses "password min age". Min age should not
block password update if the password was reset.
"""

# Setup SSL (for ldappasswd test)
> ssl_init(topo)

/export/tests/tickets/ticket49039_test.py:70:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/export/tests/tickets/ticket49039_test.py:35: in ssl_init
topo.standalone.nss_ssl.reinit()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0a964908>, name = 'nss_ssl'

def __getattr__(self,name):
if name in self.CLASSATTR_OPTION_MAPPING:
return self.get_option(self.CLASSATTR_OPTION_MAPPING[name])
elif name in self.__dict__:
return self.__dict__[name]
else:
raise AttributeError('%s has no attribute %s' % (
> self.__class__.__name__,repr(name)
))
E AttributeError: DirSrv has no attribute 'nss_ssl'

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:352: AttributeError
---------------------------- Captured stdout setup -----------------------------
Instance slapd-standalone1 removed. OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.
Failed tickets/ticket49073_test.py::test_ticket49073 10.84
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf0a92ce48>

def test_ticket49073(topology_m2):
"""Write your replication test here.

To access each DirSrv instance use: topology_m2.ms["master1"], topology_m2.ms["master2"],
..., topology_m2.hub1, ..., topology_m2.consumer1,...

Also, if you need any testcase initialization,
please, write additional fixture for that(include finalizer).
"""
topology_m2.ms["master1"].plugins.enable(name=PLUGIN_MEMBER_OF)
topology_m2.ms["master1"].restart(timeout=10)
topology_m2.ms["master2"].plugins.enable(name=PLUGIN_MEMBER_OF)
topology_m2.ms["master2"].restart(timeout=10)

# Configure fractional to prevent total init to send memberof
ents = topology_m2.ms["master1"].agreement.list(suffix=SUFFIX)
assert len(ents) == 1
log.info('update %s to add nsDS5ReplicatedAttributeListTotal' % ents[0].dn)
topology_m2.ms["master1"].modify_s(ents[0].dn,
[(ldap.MOD_REPLACE,
'nsDS5ReplicatedAttributeListTotal',
'(objectclass=*) $ EXCLUDE '),
(ldap.MOD_REPLACE,
'nsDS5ReplicatedAttributeList',
> '(objectclass=*) $ EXCLUDE memberOf')])

/export/tests/tickets/ticket49073_test.py:102:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:629: in modify_s
return self.modify_ext_s(dn,modlist,None,None)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:601: in modify_ext_s
msgid = self.modify_ext(dn,modlist,serverctrls,clientctrls)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:598: in modify_ext
return self._ldap_call(self._l.modify_ext,dn,modlist,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls))
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0ad3e908>
func = <built-in method modify_ext of LDAP object at 0x7fbef8c4cdf0>
args = ('cn=002,cn=replica,cn=dc\\3Dexample\\2Cdc\\3Dcom,cn=mapping tree,cn=config', [(2, 'nsDS5ReplicatedAttributeListTotal', '(objectclass=*) $ EXCLUDE '), (2, 'nsDS5ReplicatedAttributeList', '(objectclass=*) $ EXCLUDE memberOf')], None, None)
kwargs = {}, diagnostic_message_success = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E TypeError: ('Tuple_to_LDAPMod(): expected a byte string in the list', '(')

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: TypeError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists------------------------------ Captured log call -------------------------------
ticket49073_test.py 95 INFO update cn=002,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config to add nsDS5ReplicatedAttributeListTotal
Failed tickets/ticket49121_test.py::test_ticket49121 0.00
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf08196358>

def test_ticket49121(topology_m2):
"""
Creating some users.
Deleting quite a number of attributes which may or may not be in the entry.
The attribute type names are to be long.
Under the conditions, it did not estimate the size of string format entry
shorter than the real size and caused the Invalid write / server crash.
"""
> reload(sys)
E NameError: name 'reload' is not defined

/export/tests/tickets/ticket49121_test.py:38: NameError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists
Failed tickets/ticket49180_test.py::test_ticket49180 24.65
topology_m4 = <lib389.topologies.TopologyMain object at 0x7fbef8c9df60>

def test_ticket49180(topology_m4):

log.info('Running test_ticket49180...')

log.info('Check that replication works properly on all masters')
agmt_nums = {"master1": ("2", "3", "4"),
"master2": ("1", "3", "4"),
"master3": ("1", "2", "4"),
"master4": ("1", "2", "3")}

for inst_name, agmts in agmt_nums.items():
for num in agmts:
if not topology_m4.ms[inst_name].testReplication(DEFAULT_SUFFIX, topology_m4.ms["master{}".format(num)]):
log.fatal(
'test_replication: Replication is not working between {} and master {}.'.format(inst_name,
num))
assert False

# Disable master 4
log.info('test_clean: disable master 4...')
topology_m4.ms["master4"].replica.disableReplication(DEFAULT_SUFFIX)

# Remove the agreements from the other masters that point to master 4
remove_master4_agmts("test_clean", topology_m4)

# Cleanup - restore master 4
> restore_master4(topology_m4, 4444)

/export/tests/tickets/ticket49180_test.py:148:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/export/tests/tickets/ticket49180_test.py:52: in restore_master4
replicaId=newReplicaId)
/usr/lib/python3.6/site-packages/lib389/replica.py:562: in enableReplication
self.conn.changelog.create()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf081825f8>, name = 'changelog'

def __getattr__(self,name):
if name in self.CLASSATTR_OPTION_MAPPING:
return self.get_option(self.CLASSATTR_OPTION_MAPPING[name])
elif name in self.__dict__:
return self.__dict__[name]
else:
raise AttributeError('%s has no attribute %s' % (
> self.__class__.__name__,repr(name)
))
E AttributeError: DirSrv has no attribute 'changelog'

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:352: AttributeError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39003, 'ldap-secureport': 63703, 'server-id': 'master3', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39004, 'ldap-secureport': 63704, 'server-id': 'master4', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 153 INFO Joining master master3 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39003 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39003 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39003 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39003 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39003 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39003 topologies.py 153 INFO Joining master master4 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39004 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39004 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39004 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39004 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39004 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39004 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master1 to master3 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39003 already exists topologies.py 161 INFO Ensuring master master1 to master4 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39004 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists topologies.py 161 INFO Ensuring master master2 to master3 ... replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39003 is was created topologies.py 161 INFO Ensuring master master2 to master4 ... replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39004 is was created topologies.py 161 INFO Ensuring master master3 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39003 to ldap://server.example.com:39001 already exists topologies.py 161 INFO Ensuring master master3 to master2 ... replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39003 to ldap://server.example.com:39002 is was created topologies.py 161 INFO Ensuring master master3 to master4 ... replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39003 to ldap://server.example.com:39004 is was created topologies.py 161 INFO Ensuring master master4 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39004 to ldap://server.example.com:39001 already exists topologies.py 161 INFO Ensuring master master4 to master2 ... replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39004 to ldap://server.example.com:39002 is was created topologies.py 161 INFO Ensuring master master4 to master3 ... replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39004 to ldap://server.example.com:39003 is was created------------------------------ Captured log call -------------------------------
ticket49180_test.py 124 INFO Running test_ticket49180... ticket49180_test.py 126 INFO Check that replication works properly on all masters ticket49180_test.py 141 INFO test_clean: disable master 4... ticket49180_test.py 32 INFO test_clean: remove all the agreements to master 4... agreement.py 731 INFO Agreement (cn=004,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config) was successfully removed agreement.py 731 INFO Agreement (cn=004,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config) was successfully removed agreement.py 731 INFO Agreement (cn=004,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config) was successfully removed ticket49180_test.py 48 INFO Restoring master 4... backend.py 71 INFO List backend with suffix=dc=example,dc=com
Failed tickets/ticket49287_test.py::test_ticket49287 0.01
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf0aa36438>

def test_ticket49287(topology_m2):
"""
test case for memberof and conflict entries

"""

# return

M1 = topology_m2.ms["master1"]
M2 = topology_m2.ms["master2"]

> config_memberof(M1)

/export/tests/tickets/ticket49287_test.py:285:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/export/tests/tickets/ticket49287_test.py:71: in config_memberof
'on')])
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:629: in modify_s
return self.modify_ext_s(dn,modlist,None,None)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:601: in modify_ext_s
msgid = self.modify_ext(dn,modlist,serverctrls,clientctrls)
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:598: in modify_ext
return self._ldap_call(self._l.modify_ext,dn,modlist,RequestControlTuples(serverctrls),RequestControlTuples(clientctrls))
/usr/lib/python3.6/site-packages/lib389/__init__.py:162: in inner
return f(*args, **kwargs)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbf0815f128>
func = <built-in method modify_ext of LDAP object at 0x7fbf08263bc0>
args = ('cn=MemberOf Plugin,cn=plugins,cn=config', [(2, 'memberOfAllBackends', 'on')], None, None)
kwargs = {}, diagnostic_message_success = None

def _ldap_call(self,func,*args,**kwargs):
"""
Wrapper method mainly for serializing calls into OpenLDAP libs
and trace logs
"""
self._ldap_object_lock.acquire()
if __debug__:
if self._trace_level>=1:
self._trace_file.write('*** %s %s - %s\n%s\n' % (
repr(self),
self._uri,
'.'.join((self.__class__.__name__,func.__name__)),
pprint.pformat((args,kwargs))
))
if self._trace_level>=9:
traceback.print_stack(limit=self._trace_stack_limit,file=self._trace_file)
diagnostic_message_success = None
try:
try:
> result = func(*args,**kwargs)
E TypeError: ('Tuple_to_LDAPMod(): expected a byte string in the list', 'o')

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: TypeError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists
Failed tickets/ticket49303_test.py::test_ticket49303 1.81
topo = <lib389.topologies.TopologyMain object at 0x7fbef8c9db38>

def test_ticket49303(topo):
"""
Test the nsTLSAllowClientRenegotiation setting.
"""
sslport = SECUREPORT_STANDALONE1

log.info("Ticket 49303 - Allow disabling of SSL renegotiation")

# No value set, defaults to reneg allowed
> enable_ssl(topo.standalone, sslport)

/export/tests/tickets/ticket49303_test.py:84:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/export/tests/tickets/ticket49303_test.py:58: in enable_ssl
server.nss_ssl.reinit()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <lib389.DirSrv object at 0x7fbef8c9df60>, name = 'nss_ssl'

def __getattr__(self,name):
if name in self.CLASSATTR_OPTION_MAPPING:
return self.get_option(self.CLASSATTR_OPTION_MAPPING[name])
elif name in self.__dict__:
return self.__dict__[name]
else:
raise AttributeError('%s has no attribute %s' % (
> self.__class__.__name__,repr(name)
))
E AttributeError: DirSrv has no attribute 'nss_ssl'

/usr/lib64/python3.6/site-packages/ldap/ldapobject.py:352: AttributeError
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
ticket49303_test.py 81 INFO Ticket 49303 - Allow disabling of SSL renegotiation
XFailed suites/replication/conflict_resolve_test.py::TestTwoMasters::()::test_memberof_groups 0.00
self = <tests.suites.replication.conflict_resolve_test.TestTwoMasters object at 0x7fbf0af6d9b0>
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf0af92940>
test_base = <lib389.idm.nscontainer.nsContainer object at 0x7fbf0af91a20>

def test_memberof_groups(self, topology_m2, test_base):
"""Check that conflict properly resolved for operations
with memberOf and groups

:id: 77f09b18-03d1-45da-940b-1ad2c2908eb3
:setup: Two master replication, test container for entries, enable plugin logging,
audit log, error log for replica and access log for internal
:steps:
1. Enable memberOf plugin
2. Add 30 users to m1 and wait for replication to happen
3. Pause replication
4. Create a group on m1 and m2
5. Create a group on m1 and m2, delete from m1
6. Create a group on m1, delete from m1, and create on m2,
7. Create a group on m2 and m1, delete from m1
8. Create two different groups on m2
9. Resume replication
10. Check that the entries on both masters are the same and replication is working
:expectedresults:
1. It should pass
2. It should pass
3. It should pass
4. It should pass
5. It should pass
6. It should pass
7. It should pass
8. It should pass
9. It should pass
10. It should pass
"""

> pytest.xfail("Issue 49591 - work in progress")
E _pytest.outcomes.XFailed: Issue 49591 - work in progress

suites/replication/conflict_resolve_test.py:399: XFailed
XFailed suites/replication/conflict_resolve_test.py::TestTwoMasters::()::test_managed_entries 0.00
self = <tests.suites.replication.conflict_resolve_test.TestTwoMasters object at 0x7fbef944af60>
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf0af92940>

def test_managed_entries(self, topology_m2):
"""Check that conflict properly resolved for operations
with managed entries

:id: 77f09b18-03d1-45da-940b-1ad2c2908eb4
:setup: Two master replication, test container for entries, enable plugin logging,
audit log, error log for replica and access log for internal
:steps:
1. Create ou=managed_users and ou=managed_groups under test container
2. Configure managed entries plugin and add a template to test container
3. Add a user to m1 and wait for replication to happen
4. Pause replication
5. Create a user on m1 and m2 with a same group ID on both master
6. Create a user on m1 and m2 with a different group ID on both master
7. Resume replication
8. Check that the entries on both masters are the same and replication is working
:expectedresults:
1. It should pass
2. It should pass
3. It should pass
4. It should pass
5. It should pass
6. It should pass
7. It should pass
8. It should pass
"""

> pytest.xfail("Issue 49591 - work in progress")
E _pytest.outcomes.XFailed: Issue 49591 - work in progress

suites/replication/conflict_resolve_test.py:490: XFailed
XFailed suites/replication/conflict_resolve_test.py::TestTwoMasters::()::test_nested_entries_with_children 0.00
self = <tests.suites.replication.conflict_resolve_test.TestTwoMasters object at 0x7fbf0add1e80>
topology_m2 = <lib389.topologies.TopologyMain object at 0x7fbf0af92940>
test_base = <lib389.idm.nscontainer.nsContainer object at 0x7fbf0add1940>

def test_nested_entries_with_children(self, topology_m2, test_base):
"""Check that conflict properly resolved for operations
with nested entries with children

:id: 77f09b18-03d1-45da-940b-1ad2c2908eb5
:setup: Two master replication, test container for entries, enable plugin logging,
audit log, error log for replica and access log for internal
:steps:
1. Add 15 containers to m1 and wait for replication to happen
2. Pause replication
3. Create parent-child on master2 and master1
4. Create parent-child on master1 and master2
5. Create parent-child on master1 and master2 different child rdn
6. Create parent-child on master1 and delete parent on master2
7. Create parent on master1, delete it and parent-child on master2, delete them
8. Create parent on master1, delete it and parent-two children on master2
9. Create parent-two children on master1 and parent-child on master2, delete them
10. Create three subsets inside existing container entry, applying only part of changes on m2
11. Create more combinations of the subset with parent-child on m1 and parent on m2
12. Delete container on m1, modify user1 on m1, create parent on m2 and modify user2 on m2
13. Resume replication
14. Check that the entries on both masters are the same and replication is working
:expectedresults:
1. It should pass
2. It should pass
3. It should pass
4. It should pass
5. It should pass
6. It should pass
7. It should pass
8. It should pass
9. It should pass
10. It should pass
11. It should pass
12. It should pass
13. It should pass
14. It should pass
"""

> pytest.xfail("Issue 49591 - work in progress")
E _pytest.outcomes.XFailed: Issue 49591 - work in progress

suites/replication/conflict_resolve_test.py:581: XFailed
XFailed suites/replication/conflict_resolve_test.py::TestThreeMasters::()::test_nested_entries 0.00
self = <tests.suites.replication.conflict_resolve_test.TestThreeMasters object at 0x7fbf0af8e4a8>
topology_m3 = <lib389.topologies.TopologyMain object at 0x7fbef5cc84e0>
test_base_m3 = <lib389.idm.nscontainer.nsContainer object at 0x7fbf0af92358>

def test_nested_entries(self, topology_m3, test_base_m3):
"""Check that conflict properly resolved for operations
with nested entries with children

:id: 77f09b18-03d1-45da-940b-1ad2c2908eb6
:setup: Three master replication, test container for entries, enable plugin logging,
audit log, error log for replica and access log for internal
:steps:
1. Add 15 containers to m1 and wait for replication to happen
2. Pause replication
3. Create two child entries under each of two entries
4. Create three child entries under each of three entries
5. Create two parents on m1 and m2, then on m1 - create a child and delete one parent,
on m2 - delete one parent and create a child
6. Test a few more parent-child combinations with three instances
7. Resume replication
8. Check that the entries on both masters are the same and replication is working
:expectedresults:
1. It should pass
2. It should pass
3. It should pass
4. It should pass
5. It should pass
6. It should pass
7. It should pass
8. It should pass
"""

> pytest.xfail("Issue 49591 - work in progress")
E _pytest.outcomes.XFailed: Issue 49591 - work in progress

suites/replication/conflict_resolve_test.py:794: XFailed
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39003, 'ldap-secureport': 63703, 'server-id': 'master3', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 153 INFO Joining master master3 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39003 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39003 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39003 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39003 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39003 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39003 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master1 to master3 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39003 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists topologies.py 161 INFO Ensuring master master2 to master3 ... replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39003 is was created topologies.py 161 INFO Ensuring master master3 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39003 to ldap://server.example.com:39001 already exists topologies.py 161 INFO Ensuring master master3 to master2 ... replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39003 to ldap://server.example.com:39002 is was created
Skipped suites/memory_leaks/range_search_test.py::test_range_search::setup 0.00
('suites/memory_leaks/range_search_test.py', 21, "Skipped: Don't run if ASAN is not enabled")
Skipped suites/replication/replica_config_test.py::test_agmt_num_add[nsds5ReplicaPort-0-65535-9999999999999999999999999999999999999999999999999999999999999999999-invalid-389]::setup 0.00
('suites/replication/replica_config_test.py', 180, 'Skipped: Agreement validation current does not work.')
Skipped suites/replication/replica_config_test.py::test_agmt_num_add[nsds5ReplicaTimeout--1-9223372036854775807-9999999999999999999999999999999999999999999999999999999999999999999-invalid-6]::setup 0.00
('suites/replication/replica_config_test.py', 180, 'Skipped: Agreement validation current does not work.')
Skipped suites/replication/replica_config_test.py::test_agmt_num_add[nsds5ReplicaBusyWaitTime--1-9223372036854775807-9999999999999999999999999999999999999999999999999999999999999999999-invalid-6]::setup 0.00
('suites/replication/replica_config_test.py', 180, 'Skipped: Agreement validation current does not work.')
Skipped suites/replication/replica_config_test.py::test_agmt_num_add[nsds5ReplicaSessionPauseTime--1-9223372036854775807-9999999999999999999999999999999999999999999999999999999999999999999-invalid-6]::setup 0.00
('suites/replication/replica_config_test.py', 180, 'Skipped: Agreement validation current does not work.')
Skipped suites/replication/replica_config_test.py::test_agmt_num_add[nsds5ReplicaFlowControlWindow--1-9223372036854775807-9999999999999999999999999999999999999999999999999999999999999999999-invalid-6]::setup 0.00
('suites/replication/replica_config_test.py', 180, 'Skipped: Agreement validation current does not work.')
Skipped suites/replication/replica_config_test.py::test_agmt_num_add[nsds5ReplicaFlowControlPause--1-9223372036854775807-9999999999999999999999999999999999999999999999999999999999999999999-invalid-6]::setup 0.00
('suites/replication/replica_config_test.py', 180, 'Skipped: Agreement validation current does not work.')
Skipped suites/replication/replica_config_test.py::test_agmt_num_add[nsds5ReplicaProtocolTimeout--1-9223372036854775807-9999999999999999999999999999999999999999999999999999999999999999999-invalid-6]::setup 0.00
('suites/replication/replica_config_test.py', 180, 'Skipped: Agreement validation current does not work.')
Skipped suites/replication/replica_config_test.py::test_agmt_num_modify[nsds5ReplicaPort-0-65535-9999999999999999999999999999999999999999999999999999999999999999999-invalid-389]::setup 0.00
('suites/replication/replica_config_test.py', 219, 'Skipped: Agreement validation current does not work.')
Skipped suites/replication/replica_config_test.py::test_agmt_num_modify[nsds5ReplicaTimeout--1-9223372036854775807-9999999999999999999999999999999999999999999999999999999999999999999-invalid-6]::setup 0.00
('suites/replication/replica_config_test.py', 219, 'Skipped: Agreement validation current does not work.')
Skipped suites/replication/replica_config_test.py::test_agmt_num_modify[nsds5ReplicaBusyWaitTime--1-9223372036854775807-9999999999999999999999999999999999999999999999999999999999999999999-invalid-6]::setup 0.00
('suites/replication/replica_config_test.py', 219, 'Skipped: Agreement validation current does not work.')
Skipped suites/replication/replica_config_test.py::test_agmt_num_modify[nsds5ReplicaSessionPauseTime--1-9223372036854775807-9999999999999999999999999999999999999999999999999999999999999999999-invalid-6]::setup 0.00
('suites/replication/replica_config_test.py', 219, 'Skipped: Agreement validation current does not work.')
Skipped suites/replication/replica_config_test.py::test_agmt_num_modify[nsds5ReplicaFlowControlWindow--1-9223372036854775807-9999999999999999999999999999999999999999999999999999999999999999999-invalid-6]::setup 0.00
('suites/replication/replica_config_test.py', 219, 'Skipped: Agreement validation current does not work.')
Skipped suites/replication/replica_config_test.py::test_agmt_num_modify[nsds5ReplicaFlowControlPause--1-9223372036854775807-9999999999999999999999999999999999999999999999999999999999999999999-invalid-6]::setup 0.00
('suites/replication/replica_config_test.py', 219, 'Skipped: Agreement validation current does not work.')
Skipped suites/replication/replica_config_test.py::test_agmt_num_modify[nsds5ReplicaProtocolTimeout--1-9223372036854775807-9999999999999999999999999999999999999999999999999999999999999999999-invalid-6]::setup 0.00
('suites/replication/replica_config_test.py', 219, 'Skipped: Agreement validation current does not work.')
Skipped suites/replication/ruvstore_test.py::test_memoryruv_sync_with_databaseruv::setup 0.00
('suites/replication/ruvstore_test.py', 115, 'Skipped: No method to safety access DB ruv currenty exists online.')
Skipped tickets/ticket47815_test.py::test_ticket47815::setup 0.00
('tickets/ticket47815_test.py', 23, 'Skipped: Not implemented, or invalid by nsMemberOf')
Passed suites/acl/acl_deny_test.py::test_multi_deny_aci 12.58
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created. acl_deny_test.py 37 INFO Add uid=tuser1,ou=People,dc=example,dc=com acl_deny_test.py 48 INFO Add uid=tuser,ou=People,dc=example,dc=com------------------------------ Captured log call -------------------------------
acl_deny_test.py 80 INFO Pass 1 acl_deny_test.py 83 INFO Testing two searches behave the same... acl_deny_test.py 126 INFO Testing search does not return any entries... acl_deny_test.py 80 INFO Pass 2 acl_deny_test.py 83 INFO Testing two searches behave the same... acl_deny_test.py 126 INFO Testing search does not return any entries... acl_deny_test.py 190 INFO Test PASSED
Passed suites/acl/acl_test.py::test_aci_attr_subtype_targetattr[lang-ja] 0.00
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists acl_test.py 75 INFO ========Executing test with 'lang-ja' subtype======== acl_test.py 76 INFO Add a target attribute acl_test.py 79 INFO Add a user attribute acl_test.py 87 INFO Add an ACI with attribute subtype------------------------------ Captured log call -------------------------------
acl_test.py 116 INFO Search for the added attribute acl_test.py 123 INFO The added attribute was found
Passed suites/acl/acl_test.py::test_aci_attr_subtype_targetattr[binary] 0.00
------------------------------ Captured log setup ------------------------------
acl_test.py 75 INFO ========Executing test with 'binary' subtype======== acl_test.py 76 INFO Add a target attribute acl_test.py 79 INFO Add a user attribute acl_test.py 87 INFO Add an ACI with attribute subtype------------------------------ Captured log call -------------------------------
acl_test.py 116 INFO Search for the added attribute acl_test.py 123 INFO The added attribute was found
Passed suites/acl/acl_test.py::test_aci_attr_subtype_targetattr[phonetic] 0.00
------------------------------ Captured log setup ------------------------------
acl_test.py 75 INFO ========Executing test with 'phonetic' subtype======== acl_test.py 76 INFO Add a target attribute acl_test.py 79 INFO Add a user attribute acl_test.py 87 INFO Add an ACI with attribute subtype------------------------------ Captured log call -------------------------------
acl_test.py 116 INFO Search for the added attribute acl_test.py 123 INFO The added attribute was found
Passed suites/acl/acl_test.py::test_mode_default_add_deny 0.04
------------------------------ Captured log setup ------------------------------
acl_test.py 231 INFO ######## INITIALIZATION ######## acl_test.py 234 INFO Add uid=bind_entry,dc=example,dc=com acl_test.py 244 INFO Add cn=staged user,dc=example,dc=com acl_test.py 248 INFO Add cn=accounts,dc=example,dc=com acl_test.py 252 INFO Add cn=excepts,cn=accounts,dc=example,dc=com------------------------------ Captured log call -------------------------------
acl_test.py 284 INFO ######## mode moddn_aci : ADD (should fail) ######## acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 292 INFO Try to add cn=accounts,dc=example,dc=com acl_test.py 301 INFO Exception (expected): INSUFFICIENT_ACCESS
Passed suites/acl/acl_test.py::test_mode_default_delete_deny 0.04
------------------------------ Captured log call -------------------------------
acl_test.py 319 INFO ######## DELETE (should fail) ######## acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 326 INFO Try to delete cn=staged user,dc=example,dc=com acl_test.py 331 INFO Exception (expected): INSUFFICIENT_ACCESS
Passed suites/acl/acl_test.py::test_moddn_staging_prod[0-cn=staged user,dc=example,dc=com-cn=accounts,dc=example,dc=com-False] 0.41
------------------------------ Captured log call -------------------------------
acl_test.py 365 INFO ######## MOVE staging -> Prod (0) ######## acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 377 INFO Try to MODDN uid=new_account0,cn=staged user,dc=example,dc=com -> uid=new_account0,cn=accounts,dc=example,dc=com acl_test.py 384 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 388 INFO ######## MOVE to and from equality filter ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 395 INFO Try to MODDN uid=new_account0,cn=staged user,dc=example,dc=com -> uid=new_account0,cn=accounts,dc=example,dc=com acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com
Passed suites/acl/acl_test.py::test_moddn_staging_prod[1-cn=staged user,dc=example,dc=com-cn=accounts,dc=example,dc=com-False] 0.42
------------------------------ Captured log call -------------------------------
acl_test.py 365 INFO ######## MOVE staging -> Prod (1) ######## acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 377 INFO Try to MODDN uid=new_account1,cn=staged user,dc=example,dc=com -> uid=new_account1,cn=accounts,dc=example,dc=com acl_test.py 384 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 388 INFO ######## MOVE to and from equality filter ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 395 INFO Try to MODDN uid=new_account1,cn=staged user,dc=example,dc=com -> uid=new_account1,cn=accounts,dc=example,dc=com acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com
Passed suites/acl/acl_test.py::test_moddn_staging_prod[2-cn=staged user,dc=example,dc=com-cn=bad*,dc=example,dc=com-True] 0.38
------------------------------ Captured log call -------------------------------
acl_test.py 365 INFO ######## MOVE staging -> Prod (2) ######## acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 377 INFO Try to MODDN uid=new_account2,cn=staged user,dc=example,dc=com -> uid=new_account2,cn=accounts,dc=example,dc=com acl_test.py 384 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 388 INFO ######## MOVE to and from equality filter ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 395 INFO Try to MODDN uid=new_account2,cn=staged user,dc=example,dc=com -> uid=new_account2,cn=accounts,dc=example,dc=com acl_test.py 398 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com
Passed suites/acl/acl_test.py::test_moddn_staging_prod[3-cn=st*,dc=example,dc=com-cn=accounts,dc=example,dc=com-False] 0.39
------------------------------ Captured log call -------------------------------
acl_test.py 365 INFO ######## MOVE staging -> Prod (3) ######## acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 377 INFO Try to MODDN uid=new_account3,cn=staged user,dc=example,dc=com -> uid=new_account3,cn=accounts,dc=example,dc=com acl_test.py 384 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 388 INFO ######## MOVE to and from equality filter ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 395 INFO Try to MODDN uid=new_account3,cn=staged user,dc=example,dc=com -> uid=new_account3,cn=accounts,dc=example,dc=com acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com
Passed suites/acl/acl_test.py::test_moddn_staging_prod[4-cn=bad*,dc=example,dc=com-cn=accounts,dc=example,dc=com-True] 0.39
------------------------------ Captured log call -------------------------------
acl_test.py 365 INFO ######## MOVE staging -> Prod (4) ######## acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 377 INFO Try to MODDN uid=new_account4,cn=staged user,dc=example,dc=com -> uid=new_account4,cn=accounts,dc=example,dc=com acl_test.py 384 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 388 INFO ######## MOVE to and from equality filter ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 395 INFO Try to MODDN uid=new_account4,cn=staged user,dc=example,dc=com -> uid=new_account4,cn=accounts,dc=example,dc=com acl_test.py 398 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com
Passed suites/acl/acl_test.py::test_moddn_staging_prod[5-cn=st*,dc=example,dc=com-cn=ac*,dc=example,dc=com-False] 0.40
------------------------------ Captured log call -------------------------------
acl_test.py 365 INFO ######## MOVE staging -> Prod (5) ######## acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 377 INFO Try to MODDN uid=new_account5,cn=staged user,dc=example,dc=com -> uid=new_account5,cn=accounts,dc=example,dc=com acl_test.py 384 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 388 INFO ######## MOVE to and from equality filter ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 395 INFO Try to MODDN uid=new_account5,cn=staged user,dc=example,dc=com -> uid=new_account5,cn=accounts,dc=example,dc=com acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com
Passed suites/acl/acl_test.py::test_moddn_staging_prod[6-None-cn=ac*,dc=example,dc=com-False] 0.42
------------------------------ Captured log call -------------------------------
acl_test.py 365 INFO ######## MOVE staging -> Prod (6) ######## acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 377 INFO Try to MODDN uid=new_account6,cn=staged user,dc=example,dc=com -> uid=new_account6,cn=accounts,dc=example,dc=com acl_test.py 384 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 388 INFO ######## MOVE to and from equality filter ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 395 INFO Try to MODDN uid=new_account6,cn=staged user,dc=example,dc=com -> uid=new_account6,cn=accounts,dc=example,dc=com acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com
Passed suites/acl/acl_test.py::test_moddn_staging_prod[7-cn=st*,dc=example,dc=com-None-False] 0.41
------------------------------ Captured log call -------------------------------
acl_test.py 365 INFO ######## MOVE staging -> Prod (7) ######## acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 377 INFO Try to MODDN uid=new_account7,cn=staged user,dc=example,dc=com -> uid=new_account7,cn=accounts,dc=example,dc=com acl_test.py 384 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 388 INFO ######## MOVE to and from equality filter ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 395 INFO Try to MODDN uid=new_account7,cn=staged user,dc=example,dc=com -> uid=new_account7,cn=accounts,dc=example,dc=com acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com
Passed suites/acl/acl_test.py::test_moddn_staging_prod[8-None-None-False] 0.41
------------------------------ Captured log call -------------------------------
acl_test.py 365 INFO ######## MOVE staging -> Prod (8) ######## acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 377 INFO Try to MODDN uid=new_account8,cn=staged user,dc=example,dc=com -> uid=new_account8,cn=accounts,dc=example,dc=com acl_test.py 384 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 388 INFO ######## MOVE to and from equality filter ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 395 INFO Try to MODDN uid=new_account8,cn=staged user,dc=example,dc=com -> uid=new_account8,cn=accounts,dc=example,dc=com acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com
Passed suites/acl/acl_test.py::test_moddn_staging_prod_9 1.87
------------------------------ Captured log call -------------------------------
acl_test.py 441 INFO ######## MOVE staging -> Prod (9) ######## acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 454 INFO Try to MODDN uid=new_account9,cn=staged user,dc=example,dc=com -> uid=new_account9,cn=accounts,dc=example,dc=com acl_test.py 461 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 467 INFO Disable the moddn right acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 472 INFO ######## MOVE to and from equality filter ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 480 INFO Try to MODDN uid=new_account9,cn=staged user,dc=example,dc=com -> uid=new_account9,cn=accounts,dc=example,dc=com acl_test.py 487 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 509 INFO Try to MODDN uid=new_account9,cn=staged user,dc=example,dc=com -> uid=new_account9,cn=accounts,dc=example,dc=com acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 520 INFO Enable the moddn right acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 524 INFO ######## MOVE staging -> Prod (10) ######## acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 536 INFO Try to MODDN uid=new_account10,cn=staged user,dc=example,dc=com -> uid=new_account10,cn=accounts,dc=example,dc=com acl_test.py 543 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 560 INFO Try to MODDN uid=new_account10,cn=staged user,dc=example,dc=com -> uid=new_account10,cn=accounts,dc=example,dc=com acl_test.py 567 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 576 INFO ######## MOVE to and from equality filter ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 582 INFO Try to MODDN uid=new_account10,cn=staged user,dc=example,dc=com -> uid=new_account10,cn=accounts,dc=example,dc=com acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com
Passed suites/acl/acl_test.py::test_moddn_prod_staging 0.74
------------------------------ Captured log call -------------------------------
acl_test.py 611 INFO ######## MOVE staging -> Prod (11) ######## acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 624 INFO Try to MODDN uid=new_account11,cn=staged user,dc=example,dc=com -> uid=new_account11,cn=accounts,dc=example,dc=com acl_test.py 631 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 635 INFO ######## MOVE to and from equality filter ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 641 INFO Try to MODDN uid=new_account11,cn=staged user,dc=example,dc=com -> uid=new_account11,cn=accounts,dc=example,dc=com acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 656 INFO Try to move back MODDN uid=new_account11,cn=accounts,dc=example,dc=com -> uid=new_account11,cn=staged user,dc=example,dc=com acl_test.py 663 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com
Passed suites/acl/acl_test.py::test_check_repl_M2_to_M1 1.15
------------------------------ Captured log call -------------------------------
acl_test.py 693 INFO Bind as cn=Directory Manager (M2) acl_test.py 713 INFO Update (M2) uid=new_account12,cn=staged user,dc=example,dc=com (description) acl_test.py 726 INFO Update uid=new_account12,cn=staged user,dc=example,dc=com (description) replicated on M1
Passed suites/acl/acl_test.py::test_moddn_staging_prod_except 0.40
------------------------------ Captured log call -------------------------------
acl_test.py 751 INFO ######## MOVE staging -> Prod (13) ######## acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 763 INFO Try to MODDN uid=new_account13,cn=staged user,dc=example,dc=com -> uid=new_account13,cn=accounts,dc=example,dc=com acl_test.py 770 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 774 INFO ######## MOVE to and from equality filter ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 158 INFO Add a DENY aci under cn=excepts,cn=accounts,dc=example,dc=com acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 781 INFO Try to MODDN uid=new_account13,cn=staged user,dc=example,dc=com -> uid=new_account13,cn=accounts,dc=example,dc=com acl_test.py 787 INFO ######## MOVE staging -> Prod/Except (14) ######## acl_test.py 793 INFO Try to MODDN uid=new_account14,cn=staged user,dc=example,dc=com -> uid=new_account14,cn=excepts,cn=accounts,dc=example,dc=com acl_test.py 800 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 158 INFO Add a DENY aci under cn=excepts,cn=accounts,dc=example,dc=com acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com
Passed suites/acl/acl_test.py::test_mode_default_ger_no_moddn 0.01
------------------------------ Captured log call -------------------------------
acl_test.py 827 INFO ######## mode moddn_aci : GER no moddn ######## acl_test.py 838 INFO dn: cn=accounts,dc=example,dc=com acl_test.py 838 INFO dn: cn=excepts,cn=accounts,dc=example,dc=com acl_test.py 838 INFO dn: uid=new_account0,cn=accounts,dc=example,dc=com acl_test.py 838 INFO dn: uid=new_account1,cn=accounts,dc=example,dc=com acl_test.py 838 INFO dn: uid=new_account3,cn=accounts,dc=example,dc=com acl_test.py 838 INFO dn: uid=new_account5,cn=accounts,dc=example,dc=com acl_test.py 838 INFO dn: uid=new_account6,cn=accounts,dc=example,dc=com acl_test.py 838 INFO dn: uid=new_account7,cn=accounts,dc=example,dc=com acl_test.py 838 INFO dn: uid=new_account8,cn=accounts,dc=example,dc=com acl_test.py 838 INFO dn: uid=new_account9,cn=accounts,dc=example,dc=com acl_test.py 838 INFO dn: uid=new_account10,cn=accounts,dc=example,dc=com acl_test.py 838 INFO dn: uid=new_account11,cn=accounts,dc=example,dc=com acl_test.py 838 INFO dn: uid=new_account13,cn=accounts,dc=example,dc=com acl_test.py 841 INFO ######## entryLevelRights: b'v'
Passed suites/acl/acl_test.py::test_mode_default_ger_with_moddn 0.37
------------------------------ Captured log call -------------------------------
acl_test.py 865 INFO ######## mode moddn_aci: GER with moddn ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 883 INFO dn: cn=accounts,dc=example,dc=com acl_test.py 883 INFO dn: cn=excepts,cn=accounts,dc=example,dc=com acl_test.py 883 INFO dn: uid=new_account0,cn=accounts,dc=example,dc=com acl_test.py 883 INFO dn: uid=new_account1,cn=accounts,dc=example,dc=com acl_test.py 883 INFO dn: uid=new_account3,cn=accounts,dc=example,dc=com acl_test.py 883 INFO dn: uid=new_account5,cn=accounts,dc=example,dc=com acl_test.py 883 INFO dn: uid=new_account6,cn=accounts,dc=example,dc=com acl_test.py 883 INFO dn: uid=new_account7,cn=accounts,dc=example,dc=com acl_test.py 883 INFO dn: uid=new_account8,cn=accounts,dc=example,dc=com acl_test.py 883 INFO dn: uid=new_account9,cn=accounts,dc=example,dc=com acl_test.py 883 INFO dn: uid=new_account10,cn=accounts,dc=example,dc=com acl_test.py 883 INFO dn: uid=new_account11,cn=accounts,dc=example,dc=com acl_test.py 883 INFO dn: uid=new_account13,cn=accounts,dc=example,dc=com acl_test.py 886 INFO ######## entryLevelRights: b'vn' acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com
Passed suites/acl/acl_test.py::test_mode_legacy_ger_no_moddn1 0.18
------------------------------ Captured log call -------------------------------
acl_test.py 916 INFO ######## Disable the moddn aci mod ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 920 INFO ######## mode legacy 1: GER no moddn ######## acl_test.py 930 INFO dn: cn=accounts,dc=example,dc=com acl_test.py 930 INFO dn: cn=excepts,cn=accounts,dc=example,dc=com acl_test.py 930 INFO dn: uid=new_account0,cn=accounts,dc=example,dc=com acl_test.py 930 INFO dn: uid=new_account1,cn=accounts,dc=example,dc=com acl_test.py 930 INFO dn: uid=new_account3,cn=accounts,dc=example,dc=com acl_test.py 930 INFO dn: uid=new_account5,cn=accounts,dc=example,dc=com acl_test.py 930 INFO dn: uid=new_account6,cn=accounts,dc=example,dc=com acl_test.py 930 INFO dn: uid=new_account7,cn=accounts,dc=example,dc=com acl_test.py 930 INFO dn: uid=new_account8,cn=accounts,dc=example,dc=com acl_test.py 930 INFO dn: uid=new_account9,cn=accounts,dc=example,dc=com acl_test.py 930 INFO dn: uid=new_account10,cn=accounts,dc=example,dc=com acl_test.py 930 INFO dn: uid=new_account11,cn=accounts,dc=example,dc=com acl_test.py 930 INFO dn: uid=new_account13,cn=accounts,dc=example,dc=com acl_test.py 933 INFO ######## entryLevelRights: b'v'
Passed suites/acl/acl_test.py::test_mode_legacy_ger_no_moddn2 0.53
------------------------------ Captured log call -------------------------------
acl_test.py 959 INFO ######## Disable the moddn aci mod ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 963 INFO ######## mode legacy 2: GER no moddn ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 980 INFO dn: cn=accounts,dc=example,dc=com acl_test.py 980 INFO dn: cn=excepts,cn=accounts,dc=example,dc=com acl_test.py 980 INFO dn: uid=new_account0,cn=accounts,dc=example,dc=com acl_test.py 980 INFO dn: uid=new_account1,cn=accounts,dc=example,dc=com acl_test.py 980 INFO dn: uid=new_account3,cn=accounts,dc=example,dc=com acl_test.py 980 INFO dn: uid=new_account5,cn=accounts,dc=example,dc=com acl_test.py 980 INFO dn: uid=new_account6,cn=accounts,dc=example,dc=com acl_test.py 980 INFO dn: uid=new_account7,cn=accounts,dc=example,dc=com acl_test.py 980 INFO dn: uid=new_account8,cn=accounts,dc=example,dc=com acl_test.py 980 INFO dn: uid=new_account9,cn=accounts,dc=example,dc=com acl_test.py 980 INFO dn: uid=new_account10,cn=accounts,dc=example,dc=com acl_test.py 980 INFO dn: uid=new_account11,cn=accounts,dc=example,dc=com acl_test.py 980 INFO dn: uid=new_account13,cn=accounts,dc=example,dc=com acl_test.py 983 INFO ######## entryLevelRights: b'v' acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com
Passed suites/acl/acl_test.py::test_mode_legacy_ger_with_moddn 0.49
------------------------------ Captured log call -------------------------------
acl_test.py 1019 INFO ######## Disable the moddn aci mod ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 1023 INFO ######## mode legacy : GER with moddn ######## acl_test.py 131 INFO Bind as cn=Directory Manager acl_test.py 137 INFO Bind as uid=bind_entry,dc=example,dc=com acl_test.py 1045 INFO dn: cn=accounts,dc=example,dc=com acl_test.py 1045 INFO dn: cn=excepts,cn=accounts,dc=example,dc=com acl_test.py 1045 INFO dn: uid=new_account0,cn=accounts,dc=example,dc=com acl_test.py 1045 INFO dn: uid=new_account1,cn=accounts,dc=example,dc=com acl_test.py 1045 INFO dn: uid=new_account3,cn=accounts,dc=example,dc=com acl_test.py 1045 INFO dn: uid=new_account5,cn=accounts,dc=example,dc=com acl_test.py 1045 INFO dn: uid=new_account6,cn=accounts,dc=example,dc=com acl_test.py 1045 INFO dn: uid=new_account7,cn=accounts,dc=example,dc=com acl_test.py 1045 INFO dn: uid=new_account8,cn=accounts,dc=example,dc=com acl_test.py 1045 INFO dn: uid=new_account9,cn=accounts,dc=example,dc=com acl_test.py 1045 INFO dn: uid=new_account10,cn=accounts,dc=example,dc=com acl_test.py 1045 INFO dn: uid=new_account11,cn=accounts,dc=example,dc=com acl_test.py 1045 INFO dn: uid=new_account13,cn=accounts,dc=example,dc=com acl_test.py 1048 INFO ######## entryLevelRights: b'vn' acl_test.py 131 INFO Bind as cn=Directory Manager
Passed suites/acl/acl_test.py::test_rdn_write_get_ger 0.02
------------------------------ Captured log setup ------------------------------
acl_test.py 1059 INFO ######## Add entry tuser ########------------------------------ Captured log call -------------------------------
acl_test.py 1083 INFO ######## GER rights for anonymous ######## acl_test.py 1093 INFO dn: dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: cn=Directory Administrators,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: ou=Groups,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: ou=People,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: ou=Special Users,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: cn=Accounting Managers,ou=Groups,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: cn=HR Managers,ou=Groups,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: cn=QA Managers,ou=Groups,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: cn=PD Managers,ou=Groups,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: cn=replication_managers,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: ou=Services,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: cn=server.example.com:63701,ou=Services,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: cn=server.example.com:63702,ou=Services,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=bind_entry,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: cn=staged user,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: cn=accounts,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: cn=excepts,cn=accounts,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account0,cn=accounts,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account1,cn=accounts,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account2,cn=staged user,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account3,cn=accounts,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account4,cn=staged user,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account5,cn=accounts,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account6,cn=accounts,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account7,cn=accounts,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account8,cn=accounts,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account9,cn=accounts,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account10,cn=accounts,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account11,cn=accounts,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account12,cn=staged user,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account13,cn=accounts,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account14,cn=staged user,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account15,cn=staged user,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account16,cn=staged user,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account17,cn=staged user,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account18,cn=staged user,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: uid=new_account19,cn=staged user,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v' acl_test.py 1093 INFO dn: cn=tuser,dc=example,dc=com acl_test.py 1095 INFO ######## entryLevelRights: b'v'
Passed suites/acl/acl_test.py::test_rdn_write_modrdn_anonymous 0.20
------------------------------ Captured log call -------------------------------
acl_test.py 1122 INFO dn: acl_test.py 1124 INFO ######## 'objectClass': [b'top'] acl_test.py 1124 INFO ######## 'defaultnamingcontext': [b'dc=example,dc=com'] acl_test.py 1124 INFO ######## 'dataversion': [b'020180722234332'] acl_test.py 1124 INFO ######## 'netscapemdsuffix': [b'cn=ldap://dc=server,dc=example,dc=com:39001'] acl_test.py 1129 INFO Exception (expected): INSUFFICIENT_ACCESS acl_test.py 1136 INFO The entry was not renamed (expected) acl_test.py 131 INFO Bind as cn=Directory Manager
Passed suites/acl/enhanced_aci_modrnd_test.py::test_enhanced_aci_modrnd 0.05
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created. enhanced_aci_modrnd_test.py 30 INFO Add a container: ou=test_ou_1,dc=example,dc=com enhanced_aci_modrnd_test.py 37 INFO Add a container: ou=test_ou_2,dc=example,dc=com enhanced_aci_modrnd_test.py 44 INFO Add a user: cn=test_user,ou=test_ou_1,dc=example,dc=com enhanced_aci_modrnd_test.py 59 INFO Add an ACI 'allow (all)' by cn=test_user,ou=test_ou_1,dc=example,dc=com to the ou=test_ou_1,dc=example,dc=com enhanced_aci_modrnd_test.py 63 INFO Add an ACI 'allow (all)' by cn=test_user,ou=test_ou_1,dc=example,dc=com to the ou=test_ou_2,dc=example,dc=com------------------------------ Captured log call -------------------------------
enhanced_aci_modrnd_test.py 93 INFO Bind as cn=test_user,ou=test_ou_1,dc=example,dc=com enhanced_aci_modrnd_test.py 98 INFO User MODRDN operation from ou=test_ou_1,dc=example,dc=com to ou=test_ou_2,dc=example,dc=com enhanced_aci_modrnd_test.py 103 INFO Check there is no user in ou=test_ou_1,dc=example,dc=com enhanced_aci_modrnd_test.py 109 INFO Check there is our user in ou=test_ou_2,dc=example,dc=com
Passed suites/acl/repeated_ldap_add_test.py::test_repeated_ldap_add 34.53
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.----------------------------- Captured stdout call -----------------------------
uid=buser123,ou=BOU,dc=example,dc=com inactivated. ------------------------------ Captured log call -------------------------------
repeated_ldap_add_test.py 182 INFO Testing Bug 1347760 - Information disclosure via repeated use of LDAP ADD operation, etc. repeated_ldap_add_test.py 184 INFO Disabling accesslog logbuffering repeated_ldap_add_test.py 187 INFO Bind as {cn=Directory Manager,password} repeated_ldap_add_test.py 190 INFO Adding ou=BOU a bind user belongs to. repeated_ldap_add_test.py 195 INFO Adding a bind user. repeated_ldap_add_test.py 202 INFO Adding a test user. repeated_ldap_add_test.py 209 INFO Deleting aci in dc=example,dc=com. repeated_ldap_add_test.py 212 INFO While binding as DM, acquire an access log path and instance dir repeated_ldap_add_test.py 218 INFO Bind case 1. the bind user has no rights to read the entry itself, bind should be successful. repeated_ldap_add_test.py 219 INFO Bind as {uid=buser123,ou=BOU,dc=example,dc=com,buser123} who has no access rights. repeated_ldap_add_test.py 227 INFO Access log path: /var/log/dirsrv/slapd-standalone1/access repeated_ldap_add_test.py 230 INFO Bind case 2-1. the bind user does not exist, bind should fail with error INVALID_CREDENTIALS repeated_ldap_add_test.py 231 INFO Bind as {uid=bogus,dc=example,dc=com,bogus} who does not exist. repeated_ldap_add_test.py 235 INFO Exception (expected): INVALID_CREDENTIALS repeated_ldap_add_test.py 236 INFO Desc Invalid credentials repeated_ldap_add_test.py 244 INFO Cause found - [22/Jul/2018:19:44:25.426715916 -0400] conn=1 op=10 RESULT err=49 tag=97 nentries=0 etime=0.0001646540 - No such entry repeated_ldap_add_test.py 248 INFO Bind case 2-2. the bind user's suffix does not exist, bind should fail with error INVALID_CREDENTIALS repeated_ldap_add_test.py 249 INFO Bind as {uid=bogus,ou=people,dc=bogus,bogus} who does not exist. repeated_ldap_add_test.py 258 INFO Cause found - [22/Jul/2018:19:44:26.431974227 -0400] conn=1 op=11 RESULT err=49 tag=97 nentries=0 etime=0.0001457338 - No suffix for bind dn found repeated_ldap_add_test.py 262 INFO Bind case 2-3. the bind user's password is wrong, bind should fail with error INVALID_CREDENTIALS repeated_ldap_add_test.py 263 INFO Bind as {uid=buser123,ou=BOU,dc=example,dc=com,bogus} who does not exist. repeated_ldap_add_test.py 267 INFO Exception (expected): INVALID_CREDENTIALS repeated_ldap_add_test.py 268 INFO Desc Invalid credentials repeated_ldap_add_test.py 276 INFO Cause found - 22/Jul/2018:19:44:27.472033243 -0400] conn=1 op=12 RESULT err=49 tag=97 nentries=0 etime=0.0037222777 - Invalid credentials repeated_ldap_add_test.py 279 INFO Adding aci for uid=buser123,ou=BOU,dc=example,dc=com to ou=BOU,dc=example,dc=com. repeated_ldap_add_test.py 281 INFO aci: (targetattr="*")(version 3.0; acl "buser123"; allow(all) userdn = "ldap:///uid=buser123,ou=BOU,dc=example,dc=com";) repeated_ldap_add_test.py 282 INFO Bind as {cn=Directory Manager,password} repeated_ldap_add_test.py 287 INFO Bind case 3. the bind user has the right to read the entry itself, bind should be successful. repeated_ldap_add_test.py 288 INFO Bind as {uid=buser123,ou=BOU,dc=example,dc=com,buser123} which should be ok. repeated_ldap_add_test.py 291 INFO The following operations are against the subtree the bind user uid=buser123,ou=BOU,dc=example,dc=com has no rights. repeated_ldap_add_test.py 296 INFO Search case 1. the bind user has no rights to read the search entry, it should return no search results with <class 'ldap.SUCCESS'> repeated_ldap_add_test.py 106 INFO Searching existing entry uid=tuser0,ou=people,dc=example,dc=com, which should be ok. repeated_ldap_add_test.py 139 INFO Search should return none repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 302 INFO Search case 2-1. the search entry does not exist, the search should return no search results with SUCCESS repeated_ldap_add_test.py 106 INFO Searching non-existing entry uid=bogus,dc=example,dc=com, which should be ok. repeated_ldap_add_test.py 139 INFO Search should return none repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 308 INFO Search case 2-2. the search entry does not exist, the search should return no search results with SUCCESS repeated_ldap_add_test.py 106 INFO Searching non-existing entry uid=bogus,ou=people,dc=example,dc=com, which should be ok. repeated_ldap_add_test.py 139 INFO Search should return none repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 315 INFO Add case 1. the bind user has no rights AND the adding entry exists, it should fail with INSUFFICIENT_ACCESS repeated_ldap_add_test.py 106 INFO Adding existing entry uid=tuser0,ou=people,dc=example,dc=com, which should fail with INSUFFICIENT_ACCESS. repeated_ldap_add_test.py 129 INFO Exception (expected): INSUFFICIENT_ACCESS repeated_ldap_add_test.py 130 INFO Desc Insufficient access repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 321 INFO Add case 2-1. the bind user has no rights AND the adding entry does not exist, it should fail with INSUFFICIENT_ACCESS repeated_ldap_add_test.py 106 INFO Adding non-existing entry uid=bogus,dc=example,dc=com, which should fail with INSUFFICIENT_ACCESS. repeated_ldap_add_test.py 129 INFO Exception (expected): INSUFFICIENT_ACCESS repeated_ldap_add_test.py 130 INFO Desc Insufficient access repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 327 INFO Add case 2-2. the bind user has no rights AND the adding entry does not exist, it should fail with INSUFFICIENT_ACCESS repeated_ldap_add_test.py 106 INFO Adding non-existing entry uid=bogus,ou=people,dc=example,dc=com, which should fail with INSUFFICIENT_ACCESS. repeated_ldap_add_test.py 129 INFO Exception (expected): INSUFFICIENT_ACCESS repeated_ldap_add_test.py 130 INFO Desc Insufficient access repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 334 INFO Modify case 1. the bind user has no rights AND the modifying entry exists, it should fail with INSUFFICIENT_ACCESS repeated_ldap_add_test.py 106 INFO Modifying existing entry uid=tuser0,ou=people,dc=example,dc=com, which should fail with INSUFFICIENT_ACCESS. repeated_ldap_add_test.py 129 INFO Exception (expected): INSUFFICIENT_ACCESS repeated_ldap_add_test.py 130 INFO Desc Insufficient access repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 340 INFO Modify case 2-1. the bind user has no rights AND the modifying entry does not exist, it should fail with INSUFFICIENT_ACCESS repeated_ldap_add_test.py 106 INFO Modifying non-existing entry uid=bogus,dc=example,dc=com, which should fail with INSUFFICIENT_ACCESS. repeated_ldap_add_test.py 129 INFO Exception (expected): INSUFFICIENT_ACCESS repeated_ldap_add_test.py 130 INFO Desc Insufficient access repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 346 INFO Modify case 2-2. the bind user has no rights AND the modifying entry does not exist, it should fail with INSUFFICIENT_ACCESS repeated_ldap_add_test.py 106 INFO Modifying non-existing entry uid=bogus,ou=people,dc=example,dc=com, which should fail with INSUFFICIENT_ACCESS. repeated_ldap_add_test.py 129 INFO Exception (expected): INSUFFICIENT_ACCESS repeated_ldap_add_test.py 130 INFO Desc Insufficient access repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 353 INFO Modrdn case 1. the bind user has no rights AND the renaming entry exists, it should fail with INSUFFICIENT_ACCESS repeated_ldap_add_test.py 106 INFO Renaming existing entry uid=tuser0,ou=people,dc=example,dc=com, which should fail with INSUFFICIENT_ACCESS. repeated_ldap_add_test.py 129 INFO Exception (expected): INSUFFICIENT_ACCESS repeated_ldap_add_test.py 130 INFO Desc Insufficient access repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 359 INFO Modrdn case 2-1. the bind user has no rights AND the renaming entry does not exist, it should fail with INSUFFICIENT_ACCESS repeated_ldap_add_test.py 106 INFO Renaming non-existing entry uid=bogus,dc=example,dc=com, which should fail with INSUFFICIENT_ACCESS. repeated_ldap_add_test.py 129 INFO Exception (expected): INSUFFICIENT_ACCESS repeated_ldap_add_test.py 130 INFO Desc Insufficient access repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 365 INFO Modrdn case 2-2. the bind user has no rights AND the renaming entry does not exist, it should fail with INSUFFICIENT_ACCESS repeated_ldap_add_test.py 106 INFO Renaming non-existing entry uid=bogus,ou=people,dc=example,dc=com, which should fail with INSUFFICIENT_ACCESS. repeated_ldap_add_test.py 129 INFO Exception (expected): INSUFFICIENT_ACCESS repeated_ldap_add_test.py 130 INFO Desc Insufficient access repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 371 INFO Modrdn case 3. the bind user has no rights AND the node moving an entry to exists, it should fail with INSUFFICIENT_ACCESS repeated_ldap_add_test.py 106 INFO Moving to existing superior ou=groups,dc=example,dc=com, which should fail with INSUFFICIENT_ACCESS. repeated_ldap_add_test.py 129 INFO Exception (expected): INSUFFICIENT_ACCESS repeated_ldap_add_test.py 130 INFO Desc Insufficient access repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 377 INFO Modrdn case 4-1. the bind user has no rights AND the node moving an entry to does not, it should fail with INSUFFICIENT_ACCESS repeated_ldap_add_test.py 106 INFO Moving to non-existing superior ou=OU,dc=example,dc=com, which should fail with INSUFFICIENT_ACCESS. repeated_ldap_add_test.py 129 INFO Exception (expected): INSUFFICIENT_ACCESS repeated_ldap_add_test.py 130 INFO Desc Insufficient access repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 383 INFO Modrdn case 4-2. the bind user has no rights AND the node moving an entry to does not, it should fail with INSUFFICIENT_ACCESS repeated_ldap_add_test.py 106 INFO Moving to non-existing superior ou=OU,dc=example,dc=com, which should fail with INSUFFICIENT_ACCESS. repeated_ldap_add_test.py 129 INFO Exception (expected): INSUFFICIENT_ACCESS repeated_ldap_add_test.py 130 INFO Desc Insufficient access repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 390 INFO Delete case 1. the bind user has no rights AND the deleting entry exists, it should fail with INSUFFICIENT_ACCESS repeated_ldap_add_test.py 106 INFO Deleting existing entry uid=tuser0,ou=people,dc=example,dc=com, which should fail with INSUFFICIENT_ACCESS. repeated_ldap_add_test.py 129 INFO Exception (expected): INSUFFICIENT_ACCESS repeated_ldap_add_test.py 130 INFO Desc Insufficient access repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 396 INFO Delete case 2-1. the bind user has no rights AND the deleting entry does not exist, it should fail with INSUFFICIENT_ACCESS repeated_ldap_add_test.py 106 INFO Deleting non-existing entry uid=bogus,dc=example,dc=com, which should fail with INSUFFICIENT_ACCESS. repeated_ldap_add_test.py 129 INFO Exception (expected): INSUFFICIENT_ACCESS repeated_ldap_add_test.py 130 INFO Desc Insufficient access repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 402 INFO Delete case 2-2. the bind user has no rights AND the deleting entry does not exist, it should fail with INSUFFICIENT_ACCESS repeated_ldap_add_test.py 106 INFO Deleting non-existing entry uid=bogus,ou=people,dc=example,dc=com, which should fail with INSUFFICIENT_ACCESS. repeated_ldap_add_test.py 129 INFO Exception (expected): INSUFFICIENT_ACCESS repeated_ldap_add_test.py 130 INFO Desc Insufficient access repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 405 INFO EXTRA: Check no regressions repeated_ldap_add_test.py 406 INFO Adding aci for uid=buser123,ou=BOU,dc=example,dc=com to dc=example,dc=com. repeated_ldap_add_test.py 408 INFO Bind as {cn=Directory Manager,password} repeated_ldap_add_test.py 413 INFO Bind as {uid=buser123,ou=BOU,dc=example,dc=com,buser123}. repeated_ldap_add_test.py 423 INFO Search case. the search entry does not exist, the search should fail with NO_SUCH_OBJECT repeated_ldap_add_test.py 106 INFO Searching non-existing entry uid=bogus,ou=people,dc=example,dc=com, which should fail with NO_SUCH_OBJECT. repeated_ldap_add_test.py 129 INFO Exception (expected): NO_SUCH_OBJECT repeated_ldap_add_test.py 130 INFO Desc No such object repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 429 INFO Add case. the adding entry already exists, it should fail with ALREADY_EXISTS repeated_ldap_add_test.py 106 INFO Adding existing entry uid=tuser0,ou=people,dc=example,dc=com, which should fail with ALREADY_EXISTS. repeated_ldap_add_test.py 129 INFO Exception (expected): ALREADY_EXISTS repeated_ldap_add_test.py 130 INFO Desc Already exists repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 434 INFO Modify case. the modifying entry does not exist, it should fail with NO_SUCH_OBJECT repeated_ldap_add_test.py 106 INFO Modifying non-existing entry uid=bogus,dc=example,dc=com, which should fail with NO_SUCH_OBJECT. repeated_ldap_add_test.py 129 INFO Exception (expected): NO_SUCH_OBJECT repeated_ldap_add_test.py 130 INFO Desc No such object repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 439 INFO Modrdn case 1. the renaming entry does not exist, it should fail with NO_SUCH_OBJECT repeated_ldap_add_test.py 106 INFO Renaming non-existing entry uid=bogus,dc=example,dc=com, which should fail with NO_SUCH_OBJECT. repeated_ldap_add_test.py 129 INFO Exception (expected): NO_SUCH_OBJECT repeated_ldap_add_test.py 130 INFO Desc No such object repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 444 INFO Modrdn case 2. the node moving an entry to does not, it should fail with NO_SUCH_OBJECT repeated_ldap_add_test.py 106 INFO Moving to non-existing superior ou=OU,dc=example,dc=com, which should fail with NO_SUCH_OBJECT. repeated_ldap_add_test.py 129 INFO Exception (expected): NO_SUCH_OBJECT repeated_ldap_add_test.py 130 INFO Desc No such object repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 449 INFO Delete case. the deleting entry does not exist, it should fail with NO_SUCH_OBJECT repeated_ldap_add_test.py 106 INFO Deleting non-existing entry uid=bogus,dc=example,dc=com, which should fail with NO_SUCH_OBJECT. repeated_ldap_add_test.py 129 INFO Exception (expected): NO_SUCH_OBJECT repeated_ldap_add_test.py 130 INFO Desc No such object repeated_ldap_add_test.py 146 INFO PASSED repeated_ldap_add_test.py 452 INFO Inactivate uid=buser123,ou=BOU,dc=example,dc=com repeated_ldap_add_test.py 459 INFO ['/usr/sbin/ns-inactivate.pl', '-Z', 'standalone1', '-D', 'cn=Directory Manager', '-w', 'password', '-I', 'uid=buser123,ou=BOU,dc=example,dc=com'] repeated_ldap_add_test.py 463 INFO Bind as {uid=buser123,ou=BOU,dc=example,dc=com,buser123} which should fail with UNWILLING_TO_PERFORM. repeated_ldap_add_test.py 467 INFO Exception (expected): UNWILLING_TO_PERFORM repeated_ldap_add_test.py 468 INFO Desc Server is unwilling to perform repeated_ldap_add_test.py 471 INFO Bind as {uid=buser123,ou=BOU,dc=example,dc=com,bogus} which should fail with UNWILLING_TO_PERFORM. repeated_ldap_add_test.py 475 INFO Exception (expected): UNWILLING_TO_PERFORM repeated_ldap_add_test.py 476 INFO Desc Server is unwilling to perform repeated_ldap_add_test.py 479 INFO SUCCESS
Passed suites/acl/selfdn_permissions_test.py::test_selfdn_permission_add 0.30
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created. selfdn_permissions_test.py 57 INFO Add OCticket47653 that allows 'member' attribute selfdn_permissions_test.py 62 INFO Add cn=bind_entry, dc=example,dc=com------------------------------ Captured log call -------------------------------
selfdn_permissions_test.py 105 INFO ######################### ADD ###################### selfdn_permissions_test.py 108 INFO Bind as cn=bind_entry, dc=example,dc=com selfdn_permissions_test.py 138 INFO Try to add Add cn=test_entry, dc=example,dc=com (aci is missing): dn: cn=test_entry, dc=example,dc=com cn: test_entry member: cn=bind_entry, dc=example,dc=com objectclass: top objectclass: person objectclass: OCticket47653 postalAddress: here postalCode: 1234 sn: test_entry selfdn_permissions_test.py 142 INFO Exception (expected): INSUFFICIENT_ACCESS selfdn_permissions_test.py 146 INFO Bind as cn=Directory Manager and add the ADD SELFDN aci selfdn_permissions_test.py 158 INFO Bind as cn=bind_entry, dc=example,dc=com selfdn_permissions_test.py 163 INFO Try to add Add cn=test_entry, dc=example,dc=com (member is missing) selfdn_permissions_test.py 171 INFO Exception (expected): INSUFFICIENT_ACCESS selfdn_permissions_test.py 177 INFO Try to add Add cn=test_entry, dc=example,dc=com (with several member values) selfdn_permissions_test.py 180 INFO Exception (expected): INSUFFICIENT_ACCESS selfdn_permissions_test.py 183 INFO Try to add Add cn=test_entry, dc=example,dc=com should be successful
Passed suites/acl/selfdn_permissions_test.py::test_selfdn_permission_search 0.27
------------------------------ Captured log call -------------------------------
selfdn_permissions_test.py 204 INFO ######################### SEARCH ###################### selfdn_permissions_test.py 206 INFO Bind as cn=bind_entry, dc=example,dc=com selfdn_permissions_test.py 210 INFO Try to search cn=test_entry, dc=example,dc=com (aci is missing) selfdn_permissions_test.py 215 INFO Bind as cn=Directory Manager and add the READ/SEARCH SELFDN aci selfdn_permissions_test.py 228 INFO Bind as cn=bind_entry, dc=example,dc=com selfdn_permissions_test.py 232 INFO Try to search cn=test_entry, dc=example,dc=com should be successful
Passed suites/acl/selfdn_permissions_test.py::test_selfdn_permission_modify 0.31
------------------------------ Captured log call -------------------------------
selfdn_permissions_test.py 255 INFO Bind as cn=bind_entry, dc=example,dc=com selfdn_permissions_test.py 258 INFO ######################### MODIFY ###################### selfdn_permissions_test.py 262 INFO Try to modify cn=test_entry, dc=example,dc=com (aci is missing) selfdn_permissions_test.py 266 INFO Exception (expected): INSUFFICIENT_ACCESS selfdn_permissions_test.py 270 INFO Bind as cn=Directory Manager and add the WRITE SELFDN aci selfdn_permissions_test.py 283 INFO Bind as cn=bind_entry, dc=example,dc=com selfdn_permissions_test.py 287 INFO Try to modify cn=test_entry, dc=example,dc=com. It should succeeds
Passed suites/acl/selfdn_permissions_test.py::test_selfdn_permission_delete 0.24
------------------------------ Captured log call -------------------------------
selfdn_permissions_test.py 312 INFO ######################### DELETE ###################### selfdn_permissions_test.py 315 INFO Bind as cn=bind_entry, dc=example,dc=com selfdn_permissions_test.py 320 INFO Try to delete cn=test_entry, dc=example,dc=com (aci is missing) selfdn_permissions_test.py 323 INFO Exception (expected): INSUFFICIENT_ACCESS selfdn_permissions_test.py 327 INFO Bind as cn=Directory Manager and add the READ/SEARCH SELFDN aci selfdn_permissions_test.py 339 INFO Bind as cn=bind_entry, dc=example,dc=com selfdn_permissions_test.py 343 INFO Try to delete cn=test_entry, dc=example,dc=com should be successful
Passed suites/automember_plugin/automember_test.py::test_automemberscope 0.01
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.
Passed suites/automember_plugin/automember_test.py::test_automemberfilter 0.02
No log output captured.
Passed suites/automember_plugin/automember_test.py::test_adduser 0.02
No log output captured.
Passed suites/basic/basic_test.py::test_basic_ops 0.13
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created. tasks.py 338 INFO Import task import_07222018_194534 for file /var/lib/dirsrv/slapd-standalone1/ldif/Example.ldif completed successfully
Passed suites/basic/basic_test.py::test_basic_import_export 105.79
----------------------------- Captured stdout call -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ----------------------------- Captured stderr call -----------------------------
[22/Jul/2018:19:46:10.045593855 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:19:46:10.125202966 -0400] - INFO - dblayer_instance_start - Import is running with nsslapd-db-private-import-mem on; No other process is allowed to access the database [22/Jul/2018:19:46:10.126750297 -0400] - INFO - check_and_set_import_cache - pagesize: 4096, available bytes 7834071040, process usage 21303296 [22/Jul/2018:19:46:10.127705290 -0400] - INFO - check_and_set_import_cache - Import allocates 3060184KB import cache. [22/Jul/2018:19:46:10.439123196 -0400] - INFO - import_main_offline - import userRoot: Beginning import job... [22/Jul/2018:19:46:10.440821693 -0400] - INFO - import_main_offline - import userRoot: Index buffering enabled with bucket size 100 [22/Jul/2018:19:46:10.642420136 -0400] - INFO - import_producer - import userRoot: Processing file "/var/lib/dirsrv/slapd-standalone1/ldif/basic_import.ldif" [22/Jul/2018:19:46:30.719033146 -0400] - INFO - import_monitor_threads - import userRoot: Processed 41803 entries -- average rate 2075.6/sec, recent rate 2075.5/sec, hit ratio 0% [22/Jul/2018:19:46:34.724580031 -0400] - INFO - import_producer - import userRoot: Finished scanning file "/var/lib/dirsrv/slapd-standalone1/ldif/basic_import.ldif" (50008 entries) [22/Jul/2018:19:46:35.056631907 -0400] - INFO - import_monitor_threads - import userRoot: Workers finished; cleaning up... [22/Jul/2018:19:46:35.258049753 -0400] - INFO - import_monitor_threads - import userRoot: Workers cleaned up. [22/Jul/2018:19:46:35.259532316 -0400] - INFO - import_main_offline - import userRoot: Cleaning up producer thread... [22/Jul/2018:19:46:35.260283864 -0400] - INFO - import_main_offline - import userRoot: Indexing complete. Post-processing... [22/Jul/2018:19:46:35.261216930 -0400] - INFO - import_main_offline - import userRoot: Generating numsubordinates (this may take several minutes to complete)... [22/Jul/2018:19:46:35.271456716 -0400] - INFO - import_main_offline - import userRoot: Generating numSubordinates complete. [22/Jul/2018:19:46:35.272394988 -0400] - INFO - ldbm_get_nonleaf_ids - import userRoot: Gathering ancestorid non-leaf IDs... [22/Jul/2018:19:46:35.273151015 -0400] - INFO - ldbm_get_nonleaf_ids - import userRoot: Finished gathering ancestorid non-leaf IDs. [22/Jul/2018:19:46:35.274799426 -0400] - INFO - ldbm_ancestorid_new_idl_create_index - import userRoot: Creating ancestorid index (new idl)... [22/Jul/2018:19:46:35.923956458 -0400] - INFO - ldbm_ancestorid_new_idl_create_index - import userRoot: Created ancestorid index (new idl). [22/Jul/2018:19:46:35.925238655 -0400] - INFO - import_main_offline - import userRoot: Flushing caches... [22/Jul/2018:19:46:35.926203979 -0400] - INFO - import_main_offline - import userRoot: Closing files... [22/Jul/2018:19:46:37.234723146 -0400] - INFO - dblayer_pre_close - All database threads now stopped [22/Jul/2018:19:46:37.236068762 -0400] - INFO - import_main_offline - import userRoot: Import complete. Processed 50008 entries in 27 seconds. (1852.15 entries/sec) ldiffile: /var/lib/dirsrv/slapd-standalone1/ldif/export.ldif [22/Jul/2018:19:47:01.074634614 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:19:47:01.443466504 -0400] - INFO - export_one_entry - export userRoot: Processed 1000 entries (1%). [22/Jul/2018:19:47:01.770806854 -0400] - INFO - export_one_entry - export userRoot: Processed 2000 entries (3%). [22/Jul/2018:19:47:02.090503883 -0400] - INFO - export_one_entry - export userRoot: Processed 3000 entries (5%). [22/Jul/2018:19:47:02.413347324 -0400] - INFO - export_one_entry - export userRoot: Processed 4000 entries (7%). [22/Jul/2018:19:47:02.737572550 -0400] - INFO - export_one_entry - export userRoot: Processed 5000 entries (9%). [22/Jul/2018:19:47:03.060056800 -0400] - INFO - export_one_entry - export userRoot: Processed 6000 entries (11%). [22/Jul/2018:19:47:03.382557587 -0400] - INFO - export_one_entry - export userRoot: Processed 7000 entries (13%). [22/Jul/2018:19:47:03.714261116 -0400] - INFO - export_one_entry - export userRoot: Processed 8000 entries (15%). [22/Jul/2018:19:47:04.038098408 -0400] - INFO - export_one_entry - export userRoot: Processed 9000 entries (17%). [22/Jul/2018:19:47:04.364995579 -0400] - INFO - export_one_entry - export userRoot: Processed 10000 entries (19%). [22/Jul/2018:19:47:04.691536297 -0400] - INFO - export_one_entry - export userRoot: Processed 11000 entries (21%). [22/Jul/2018:19:47:05.020878228 -0400] - INFO - export_one_entry - export userRoot: Processed 12000 entries (23%). [22/Jul/2018:19:47:05.348375635 -0400] - INFO - export_one_entry - export userRoot: Processed 13000 entries (25%). [22/Jul/2018:19:47:05.674006196 -0400] - INFO - export_one_entry - export userRoot: Processed 14000 entries (27%). [22/Jul/2018:19:47:06.003184668 -0400] - INFO - export_one_entry - export userRoot: Processed 15000 entries (29%). [22/Jul/2018:19:47:06.330544806 -0400] - INFO - export_one_entry - export userRoot: Processed 16000 entries (31%). [22/Jul/2018:19:47:06.659802049 -0400] - INFO - export_one_entry - export userRoot: Processed 17000 entries (33%). [22/Jul/2018:19:47:06.986967346 -0400] - INFO - export_one_entry - export userRoot: Processed 18000 entries (35%). [22/Jul/2018:19:47:07.318477062 -0400] - INFO - export_one_entry - export userRoot: Processed 19000 entries (37%). [22/Jul/2018:19:47:07.649027542 -0400] - INFO - export_one_entry - export userRoot: Processed 20000 entries (39%). [22/Jul/2018:19:47:07.978896212 -0400] - INFO - export_one_entry - export userRoot: Processed 21000 entries (41%). [22/Jul/2018:19:47:08.307548835 -0400] - INFO - export_one_entry - export userRoot: Processed 22000 entries (43%). [22/Jul/2018:19:47:08.632887948 -0400] - INFO - export_one_entry - export userRoot: Processed 23000 entries (45%). [22/Jul/2018:19:47:08.959677099 -0400] - INFO - export_one_entry - export userRoot: Processed 24000 entries (47%). [22/Jul/2018:19:47:09.289717119 -0400] - INFO - export_one_entry - export userRoot: Processed 25000 entries (49%). [22/Jul/2018:19:47:09.631037609 -0400] - INFO - export_one_entry - export userRoot: Processed 26000 entries (51%). [22/Jul/2018:19:47:09.969450974 -0400] - INFO - export_one_entry - export userRoot: Processed 27000 entries (53%). [22/Jul/2018:19:47:10.300726110 -0400] - INFO - export_one_entry - export userRoot: Processed 28000 entries (55%). [22/Jul/2018:19:47:10.633545402 -0400] - INFO - export_one_entry - export userRoot: Processed 29000 entries (57%). [22/Jul/2018:19:47:10.964370909 -0400] - INFO - export_one_entry - export userRoot: Processed 30000 entries (59%). [22/Jul/2018:19:47:11.293798482 -0400] - INFO - export_one_entry - export userRoot: Processed 31000 entries (61%). [22/Jul/2018:19:47:11.625612505 -0400] - INFO - export_one_entry - export userRoot: Processed 32000 entries (63%). [22/Jul/2018:19:47:11.957319427 -0400] - INFO - export_one_entry - export userRoot: Processed 33000 entries (65%). [22/Jul/2018:19:47:12.289786122 -0400] - INFO - export_one_entry - export userRoot: Processed 34000 entries (67%). [22/Jul/2018:19:47:12.641540468 -0400] - INFO - export_one_entry - export userRoot: Processed 35000 entries (69%). [22/Jul/2018:19:47:12.973706805 -0400] - INFO - export_one_entry - export userRoot: Processed 36000 entries (71%). [22/Jul/2018:19:47:13.305682533 -0400] - INFO - export_one_entry - export userRoot: Processed 37000 entries (73%). [22/Jul/2018:19:47:13.635173972 -0400] - INFO - export_one_entry - export userRoot: Processed 38000 entries (75%). [22/Jul/2018:19:47:13.967158614 -0400] - INFO - export_one_entry - export userRoot: Processed 39000 entries (77%). [22/Jul/2018:19:47:14.298988221 -0400] - INFO - export_one_entry - export userRoot: Processed 40000 entries (79%). [22/Jul/2018:19:47:14.631894639 -0400] - INFO - export_one_entry - export userRoot: Processed 41000 entries (81%). [22/Jul/2018:19:47:14.965084706 -0400] - INFO - export_one_entry - export userRoot: Processed 42000 entries (83%). [22/Jul/2018:19:47:15.300212087 -0400] - INFO - export_one_entry - export userRoot: Processed 43000 entries (85%). [22/Jul/2018:19:47:15.636088807 -0400] - INFO - export_one_entry - export userRoot: Processed 44000 entries (87%). [22/Jul/2018:19:47:15.973592128 -0400] - INFO - export_one_entry - export userRoot: Processed 45000 entries (89%). [22/Jul/2018:19:47:16.312409079 -0400] - INFO - export_one_entry - export userRoot: Processed 46000 entries (91%). [22/Jul/2018:19:47:16.650974722 -0400] - INFO - export_one_entry - export userRoot: Processed 47000 entries (93%). [22/Jul/2018:19:47:16.987713062 -0400] - INFO - export_one_entry - export userRoot: Processed 48000 entries (95%). [22/Jul/2018:19:47:17.318818481 -0400] - INFO - export_one_entry - export userRoot: Processed 49000 entries (97%). [22/Jul/2018:19:47:17.686569539 -0400] - INFO - export_one_entry - export userRoot: Processed 50000 entries (99%). [22/Jul/2018:19:47:17.690276918 -0400] - INFO - ldbm_back_ldbm2ldif - export userRoot: Processed 50008 entries (100%). [22/Jul/2018:19:47:17.719026521 -0400] - INFO - dblayer_pre_close - All database threads now stopped ------------------------------ Captured log call -------------------------------
tasks.py 338 INFO Import task import_07222018_194539 for file /var/lib/dirsrv/slapd-standalone1/ldif/basic_import.ldif completed successfully tasks.py 407 INFO Export task export_07222018_194639 for file /var/lib/dirsrv/slapd-standalone1/ldif/export.ldif completed successfully tasks.py 338 INFO Import task import_07222018_194720 for file /var/lib/dirsrv/slapd-standalone1/ldif/Example.ldif completed successfully
Passed suites/basic/basic_test.py::test_basic_backup 10.55
----------------------------- Captured stdout call -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ----------------------------- Captured stderr call -----------------------------
[22/Jul/2018:19:47:29.020739765 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:19:47:29.036839817 -0400] - INFO - ldbm_back_ldbm2archive - /var/lib/dirsrv/slapd-standalone1/bak/backup_test exists. Renaming to /var/lib/dirsrv/slapd-standalone1/bak/backup_test.bak [22/Jul/2018:19:47:29.038106421 -0400] - INFO - dblayer_copy_directory - Backing up file 1 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/objectclass.db) [22/Jul/2018:19:47:29.039129530 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/userRoot/objectclass.db to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/objectclass.db [22/Jul/2018:19:47:29.040191287 -0400] - INFO - dblayer_copy_directory - Backing up file 2 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/uid.db) [22/Jul/2018:19:47:29.041203898 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/userRoot/uid.db to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/uid.db [22/Jul/2018:19:47:29.042177117 -0400] - INFO - dblayer_copy_directory - Backing up file 3 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/parentid.db) [22/Jul/2018:19:47:29.043177738 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/userRoot/parentid.db to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/parentid.db [22/Jul/2018:19:47:29.044300405 -0400] - INFO - dblayer_copy_directory - Backing up file 4 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/entryusn.db) [22/Jul/2018:19:47:29.045347516 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/userRoot/entryusn.db to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/entryusn.db [22/Jul/2018:19:47:29.046400841 -0400] - INFO - dblayer_copy_directory - Backing up file 5 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/sn.db) [22/Jul/2018:19:47:29.047252829 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/userRoot/sn.db to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/sn.db [22/Jul/2018:19:47:29.048340100 -0400] - INFO - dblayer_copy_directory - Backing up file 6 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/DBVERSION) [22/Jul/2018:19:47:29.049209506 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/userRoot/DBVERSION to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/DBVERSION [22/Jul/2018:19:47:29.050048403 -0400] - INFO - dblayer_copy_directory - Backing up file 7 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/nsuniqueid.db) [22/Jul/2018:19:47:29.050868417 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/userRoot/nsuniqueid.db to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/nsuniqueid.db [22/Jul/2018:19:47:29.051749101 -0400] - INFO - dblayer_copy_directory - Backing up file 8 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/telephoneNumber.db) [22/Jul/2018:19:47:29.052535483 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/userRoot/telephoneNumber.db to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/telephoneNumber.db [22/Jul/2018:19:47:29.053409736 -0400] - INFO - dblayer_copy_directory - Backing up file 9 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/givenName.db) [22/Jul/2018:19:47:29.054216342 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/userRoot/givenName.db to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/givenName.db [22/Jul/2018:19:47:29.055046470 -0400] - INFO - dblayer_copy_directory - Backing up file 10 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/uniquemember.db) [22/Jul/2018:19:47:29.055851138 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/userRoot/uniquemember.db to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/uniquemember.db [22/Jul/2018:19:47:29.056620256 -0400] - INFO - dblayer_copy_directory - Backing up file 11 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/numsubordinates.db) [22/Jul/2018:19:47:29.057355019 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/userRoot/numsubordinates.db to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/numsubordinates.db [22/Jul/2018:19:47:29.058243750 -0400] - INFO - dblayer_copy_directory - Backing up file 12 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/cn.db) [22/Jul/2018:19:47:29.058974968 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/userRoot/cn.db to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/cn.db [22/Jul/2018:19:47:29.059827163 -0400] - INFO - dblayer_copy_directory - Backing up file 13 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/ancestorid.db) [22/Jul/2018:19:47:29.060617046 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/userRoot/ancestorid.db to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/ancestorid.db [22/Jul/2018:19:47:29.061418235 -0400] - INFO - dblayer_copy_directory - Backing up file 14 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/entryrdn.db) [22/Jul/2018:19:47:29.062083763 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/userRoot/entryrdn.db to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/entryrdn.db [22/Jul/2018:19:47:29.062885137 -0400] - INFO - dblayer_copy_directory - Backing up file 15 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/aci.db) [22/Jul/2018:19:47:29.063582765 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/userRoot/aci.db to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/aci.db [22/Jul/2018:19:47:29.064348038 -0400] - INFO - dblayer_copy_directory - Backing up file 16 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/id2entry.db) [22/Jul/2018:19:47:29.065082086 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/userRoot/id2entry.db to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/id2entry.db [22/Jul/2018:19:47:29.066076954 -0400] - INFO - dblayer_copy_directory - Backing up file 17 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/mail.db) [22/Jul/2018:19:47:29.066881458 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/userRoot/mail.db to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/mail.db [22/Jul/2018:19:47:29.067814732 -0400] - INFO - dblayer_backup - Backing up file 18 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/log.0000000001) [22/Jul/2018:19:47:29.068575412 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/log.0000000001 to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/log.0000000001 [22/Jul/2018:19:47:29.085622027 -0400] - INFO - dblayer_backup - Backing up file 19 (/var/lib/dirsrv/slapd-standalone1/bak/backup_test/DBVERSION) [22/Jul/2018:19:47:29.086747432 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/db/DBVERSION to /var/lib/dirsrv/slapd-standalone1/bak/backup_test/DBVERSION [22/Jul/2018:19:47:29.093646331 -0400] - INFO - dblayer_pre_close - All database threads now stopped [22/Jul/2018:19:47:30.614127909 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:19:47:30.634862002 -0400] - INFO - dblayer_delete_transaction_logs - Deleting log file: (/var/lib/dirsrv/slapd-standalone1/db/log.0000000001) [22/Jul/2018:19:47:30.639097415 -0400] - INFO - dblayer_restore - Restoring file 1 (/var/lib/dirsrv/slapd-standalone1/db/log.0000000001) [22/Jul/2018:19:47:30.639982589 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/log.0000000001 to /var/lib/dirsrv/slapd-standalone1/db/log.0000000001 [22/Jul/2018:19:47:30.657034556 -0400] - INFO - dblayer_restore - Restoring file 2 (/var/lib/dirsrv/slapd-standalone1/db/DBVERSION) [22/Jul/2018:19:47:30.658251975 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/DBVERSION to /var/lib/dirsrv/slapd-standalone1/db/DBVERSION [22/Jul/2018:19:47:30.659487067 -0400] - INFO - dblayer_copy_directory - Restoring file 3 (/var/lib/dirsrv/slapd-standalone1/db/userRoot/objectclass.db) [22/Jul/2018:19:47:30.660425831 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/objectclass.db to /var/lib/dirsrv/slapd-standalone1/db/userRoot/objectclass.db [22/Jul/2018:19:47:30.661342050 -0400] - INFO - dblayer_copy_directory - Restoring file 4 (/var/lib/dirsrv/slapd-standalone1/db/userRoot/uid.db) [22/Jul/2018:19:47:30.662148338 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/uid.db to /var/lib/dirsrv/slapd-standalone1/db/userRoot/uid.db [22/Jul/2018:19:47:30.662969904 -0400] - INFO - dblayer_copy_directory - Restoring file 5 (/var/lib/dirsrv/slapd-standalone1/db/userRoot/parentid.db) [22/Jul/2018:19:47:30.663690124 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/parentid.db to /var/lib/dirsrv/slapd-standalone1/db/userRoot/parentid.db [22/Jul/2018:19:47:30.664591964 -0400] - INFO - dblayer_copy_directory - Restoring file 6 (/var/lib/dirsrv/slapd-standalone1/db/userRoot/entryusn.db) [22/Jul/2018:19:47:30.665343605 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/entryusn.db to /var/lib/dirsrv/slapd-standalone1/db/userRoot/entryusn.db [22/Jul/2018:19:47:30.666035223 -0400] - INFO - dblayer_copy_directory - Restoring file 7 (/var/lib/dirsrv/slapd-standalone1/db/userRoot/sn.db) [22/Jul/2018:19:47:30.666895648 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/sn.db to /var/lib/dirsrv/slapd-standalone1/db/userRoot/sn.db [22/Jul/2018:19:47:30.667667546 -0400] - INFO - dblayer_copy_directory - Restoring file 8 (/var/lib/dirsrv/slapd-standalone1/db/userRoot/DBVERSION) [22/Jul/2018:19:47:30.668397959 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/DBVERSION to /var/lib/dirsrv/slapd-standalone1/db/userRoot/DBVERSION [22/Jul/2018:19:47:30.669075663 -0400] - INFO - dblayer_copy_directory - Restoring file 9 (/var/lib/dirsrv/slapd-standalone1/db/userRoot/nsuniqueid.db) [22/Jul/2018:19:47:30.669835978 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/nsuniqueid.db to /var/lib/dirsrv/slapd-standalone1/db/userRoot/nsuniqueid.db [22/Jul/2018:19:47:30.670689848 -0400] - INFO - dblayer_copy_directory - Restoring file 10 (/var/lib/dirsrv/slapd-standalone1/db/userRoot/telephoneNumber.db) [22/Jul/2018:19:47:30.671467621 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/telephoneNumber.db to /var/lib/dirsrv/slapd-standalone1/db/userRoot/telephoneNumber.db [22/Jul/2018:19:47:30.672478478 -0400] - INFO - dblayer_copy_directory - Restoring file 11 (/var/lib/dirsrv/slapd-standalone1/db/userRoot/givenName.db) [22/Jul/2018:19:47:30.673257766 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/givenName.db to /var/lib/dirsrv/slapd-standalone1/db/userRoot/givenName.db [22/Jul/2018:19:47:30.674015664 -0400] - INFO - dblayer_copy_directory - Restoring file 12 (/var/lib/dirsrv/slapd-standalone1/db/userRoot/uniquemember.db) [22/Jul/2018:19:47:30.674829369 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/uniquemember.db to /var/lib/dirsrv/slapd-standalone1/db/userRoot/uniquemember.db [22/Jul/2018:19:47:30.675589134 -0400] - INFO - dblayer_copy_directory - Restoring file 13 (/var/lib/dirsrv/slapd-standalone1/db/userRoot/numsubordinates.db) [22/Jul/2018:19:47:30.676321558 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/numsubordinates.db to /var/lib/dirsrv/slapd-standalone1/db/userRoot/numsubordinates.db [22/Jul/2018:19:47:30.677033586 -0400] - INFO - dblayer_copy_directory - Restoring file 14 (/var/lib/dirsrv/slapd-standalone1/db/userRoot/cn.db) [22/Jul/2018:19:47:30.677832532 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/cn.db to /var/lib/dirsrv/slapd-standalone1/db/userRoot/cn.db [22/Jul/2018:19:47:30.678716354 -0400] - INFO - dblayer_copy_directory - Restoring file 15 (/var/lib/dirsrv/slapd-standalone1/db/userRoot/ancestorid.db) [22/Jul/2018:19:47:30.679488817 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/ancestorid.db to /var/lib/dirsrv/slapd-standalone1/db/userRoot/ancestorid.db [22/Jul/2018:19:47:30.680366334 -0400] - INFO - dblayer_copy_directory - Restoring file 16 (/var/lib/dirsrv/slapd-standalone1/db/userRoot/entryrdn.db) [22/Jul/2018:19:47:30.681115101 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/entryrdn.db to /var/lib/dirsrv/slapd-standalone1/db/userRoot/entryrdn.db [22/Jul/2018:19:47:30.693165675 -0400] - INFO - dblayer_copy_directory - Restoring file 17 (/var/lib/dirsrv/slapd-standalone1/db/userRoot/aci.db) [22/Jul/2018:19:47:30.694091127 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/aci.db to /var/lib/dirsrv/slapd-standalone1/db/userRoot/aci.db [22/Jul/2018:19:47:30.694945229 -0400] - INFO - dblayer_copy_directory - Restoring file 18 (/var/lib/dirsrv/slapd-standalone1/db/userRoot/id2entry.db) [22/Jul/2018:19:47:30.695709360 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/id2entry.db to /var/lib/dirsrv/slapd-standalone1/db/userRoot/id2entry.db [22/Jul/2018:19:47:30.696676211 -0400] - INFO - dblayer_copy_directory - Restoring file 19 (/var/lib/dirsrv/slapd-standalone1/db/userRoot/mail.db) [22/Jul/2018:19:47:30.697467386 -0400] - INFO - dblayer_copyfile - Copying /var/lib/dirsrv/slapd-standalone1/bak/backup_test/userRoot/mail.db to /var/lib/dirsrv/slapd-standalone1/db/userRoot/mail.db [22/Jul/2018:19:47:30.790493190 -0400] - INFO - dblayer_pre_close - All database threads now stopped ------------------------------ Captured log call -------------------------------
tasks.py 458 INFO Backup task backup_07222018_194722 completed successfully tasks.py 520 INFO Restore task restore_07222018_194724 completed successfully
Passed suites/basic/basic_test.py::test_basic_db2index 5.81
----------------------------- Captured stderr call -----------------------------
[22/Jul/2018:19:47:35.510592639 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:19:47:35.525927062 -0400] - INFO - check_and_set_import_cache - pagesize: 4096, available bytes 7834333184, process usage 21372928 [22/Jul/2018:19:47:35.526833853 -0400] - INFO - check_and_set_import_cache - Import allocates 3060286KB import cache. [22/Jul/2018:19:47:35.527808721 -0400] - INFO - ldbm_back_upgradedb - Index version is up-to-date [22/Jul/2018:19:47:36.043744599 -0400] - INFO - slapd_exemode_db2index - Backend Instance: userRoot [22/Jul/2018:19:47:36.048039267 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:19:47:36.063791855 -0400] - INFO - dblayer_instance_start - Import is running with nsslapd-db-private-import-mem on; No other process is allowed to access the database [22/Jul/2018:19:47:36.064973807 -0400] - INFO - check_and_set_import_cache - pagesize: 4096, available bytes 7834083328, process usage 20955136 [22/Jul/2018:19:47:36.065865829 -0400] - INFO - check_and_set_import_cache - Import allocates 3060188KB import cache. [22/Jul/2018:19:47:36.543924869 -0400] - INFO - ldbm_back_ldbm2index - userRoot: Indexing attribute: uid [22/Jul/2018:19:47:36.572609982 -0400] - INFO - ldbm_back_ldbm2index - userRoot: Finished indexing. [22/Jul/2018:19:47:36.608639474 -0400] - INFO - dblayer_pre_close - All database threads now stopped
Passed suites/basic/basic_test.py::test_basic_acl 0.38
No log output captured.
Passed suites/basic/basic_test.py::test_basic_searches 0.33
No log output captured.
Passed suites/basic/basic_test.py::test_basic_referrals 4.16
No log output captured.
Passed suites/basic/basic_test.py::test_basic_systemctl 13.28
----------------------------- Captured stderr call -----------------------------
Job for dirsrv@standalone1.service failed because the control process exited with error code. See "systemctl status dirsrv@standalone1.service" and "journalctl -xe" for details.
Passed suites/basic/basic_test.py::test_basic_ldapagent 5.04
No log output captured.
Passed suites/basic/basic_test.py::test_basic_dse 12.41
No log output captured.
Passed suites/basic/basic_test.py::test_def_rootdse_attr[namingContexts] 0.02
No log output captured.
Passed suites/basic/basic_test.py::test_def_rootdse_attr[supportedLDAPVersion] 0.02
No log output captured.
Passed suites/basic/basic_test.py::test_def_rootdse_attr[supportedControl] 0.02
No log output captured.
Passed suites/basic/basic_test.py::test_def_rootdse_attr[supportedExtension] 0.02
No log output captured.
Passed suites/basic/basic_test.py::test_def_rootdse_attr[supportedSASLMechanisms] 0.02
No log output captured.
Passed suites/basic/basic_test.py::test_def_rootdse_attr[vendorName] 0.02
No log output captured.
Passed suites/basic/basic_test.py::test_def_rootdse_attr[vendorVersion] 0.02
No log output captured.
Passed suites/basic/basic_test.py::test_mod_def_rootdse_attr[namingContexts] 0.00
No log output captured.
Passed suites/basic/basic_test.py::test_mod_def_rootdse_attr[supportedLDAPVersion] 0.00
No log output captured.
Passed suites/basic/basic_test.py::test_mod_def_rootdse_attr[supportedControl] 0.00
No log output captured.
Passed suites/basic/basic_test.py::test_mod_def_rootdse_attr[supportedExtension] 0.00
No log output captured.
Passed suites/basic/basic_test.py::test_mod_def_rootdse_attr[supportedSASLMechanisms] 0.00
No log output captured.
Passed suites/basic/basic_test.py::test_mod_def_rootdse_attr[vendorName] 0.00
No log output captured.
Passed suites/basic/basic_test.py::test_mod_def_rootdse_attr[vendorVersion] 0.00
No log output captured.
Passed suites/betxns/betxn_test.py::test_betxt_7bit 4.94
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
betxn_test.py 46 INFO Running test_betxt_7bit... betxn_test.py 65 INFO Modrdn failed as expected: error {'desc': 'Constraint violation', 'info': 'The value is not 7-bit clean: FuÄè'} betxn_test.py 77 INFO test_betxt_7bit: PASSED
Passed suites/betxns/betxn_test.py::test_betxn_attr_uniqueness 5.05
------------------------------ Captured log call -------------------------------
betxn_test.py 131 ERROR test_betxn_attr_uniqueness: Failed to add test user as expected: betxn_test.py 135 INFO test_betxn_attr_uniqueness: PASSED
Passed suites/betxns/betxn_test.py::test_betxn_memberof 5.11
------------------------------ Captured log call -------------------------------
betxn_test.py 190 INFO test_betxn_memberof: Group2 was correctly rejected (mod add): error betxn_test.py 195 INFO test_betxn_memberof: PASSED
Passed suites/clu/clu_test.py::test_clu_pwdhash 0.08
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
clu_test.py 38 INFO Running test_clu_pwdhash... clu_test.py 52 INFO pwdhash generated: {SSHA}/1d71xcVhY9n881VN0WIo5HTG4JI91hrSjftUw== clu_test.py 53 INFO test_clu_pwdhash: PASSED
Passed suites/clu/clu_test.py::test_clu_pwdhash_mod 0.14
------------------------------ Captured log call -------------------------------
clu_test.py 76 INFO Running test_clu_pwdhash_mod... clu_test.py 85 INFO pwdhash generated: {SSHA256}v+SsRuiFApuXwJYhY01RtzyfnqFy7Q3T4v1tkKWcSGj4dX0DlBX9/Q== clu_test.py 86 INFO returned the hashed string using the algorithm set in nsslapd-rootpwstoragescheme
Passed suites/config/autotuning_test.py::test_threads_basic 0.04
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
autotuning_test.py 37 INFO Set nsslapd-threadnumber: -1 to enable autotuning autotuning_test.py 40 INFO Assert nsslapd-threadnumber is equal to the documented expected value
Passed suites/config/autotuning_test.py::test_threads_invalid_value[-2] 0.01
------------------------------ Captured log call -------------------------------
autotuning_test.py 56 INFO Set nsslapd-threadnumber: -2. Operation should fail
Passed suites/config/autotuning_test.py::test_threads_invalid_value[0] 0.01
------------------------------ Captured log call -------------------------------
autotuning_test.py 56 INFO Set nsslapd-threadnumber: 0. Operation should fail
Passed suites/config/autotuning_test.py::test_threads_invalid_value[invalid] 0.01
------------------------------ Captured log call -------------------------------
autotuning_test.py 56 INFO Set nsslapd-threadnumber: invalid. Operation should fail
Passed suites/config/autotuning_test.py::test_threads_back_from_manual_value 0.11
------------------------------ Captured log call -------------------------------
autotuning_test.py 78 INFO Set nsslapd-threadnumber: -1 to enable autotuning and save the new value autotuning_test.py 82 INFO Set nsslapd-threadnumber to the autotuned value decreased by 2 autotuning_test.py 87 INFO Set nsslapd-threadnumber: -1 to enable autotuning autotuning_test.py 90 INFO Assert nsslapd-threadnumber is back to the autotuned value
Passed suites/config/autotuning_test.py::test_cache_autosize_non_zero[-] 4.15
------------------------------ Captured log call -------------------------------
autotuning_test.py 130 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize before the test autotuning_test.py 131 INFO nsslapd-dbcachesize == b'167257784' autotuning_test.py 132 INFO nsslapd-cachememsize == b'603979776' autotuning_test.py 133 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 134 INFO nsslapd-cache-autosize == b'10' autotuning_test.py 135 INFO nsslapd-cache-autosize-split == b'25' autotuning_test.py 141 INFO Delete nsslapd-cache-autosize autotuning_test.py 151 INFO Delete nsslapd-cache-autosize-split autotuning_test.py 157 INFO Trying to set nsslapd-cachememsize to 33333333 autotuning_test.py 160 INFO Trying to set nsslapd-dbcachesize to 33333333 autotuning_test.py 171 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize in the appropriate range. autotuning_test.py 172 INFO nsslapd-dbcachesize == b'167257784' autotuning_test.py 173 INFO nsslapd-cachememsize == b'603979776' autotuning_test.py 174 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 175 INFO nsslapd-cache-autosize == b'10' autotuning_test.py 176 INFO nsslapd-cache-autosize-split == b'25'
Passed suites/config/autotuning_test.py::test_cache_autosize_non_zero[-0] 5.08
------------------------------ Captured log call -------------------------------
autotuning_test.py 130 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize before the test autotuning_test.py 131 INFO nsslapd-dbcachesize == b'167257784' autotuning_test.py 132 INFO nsslapd-cachememsize == b'603979776' autotuning_test.py 133 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 134 INFO nsslapd-cache-autosize == b'10' autotuning_test.py 135 INFO nsslapd-cache-autosize-split == b'25' autotuning_test.py 141 INFO Delete nsslapd-cache-autosize autotuning_test.py 148 INFO Set nsslapd-cache-autosize-split to 0 autotuning_test.py 157 INFO Trying to set nsslapd-cachememsize to 33333333 autotuning_test.py 160 INFO Trying to set nsslapd-dbcachesize to 33333333 autotuning_test.py 171 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize in the appropriate range. autotuning_test.py 172 INFO nsslapd-dbcachesize == b'167257784' autotuning_test.py 173 INFO nsslapd-cachememsize == b'603979776' autotuning_test.py 174 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 175 INFO nsslapd-cache-autosize == b'10' autotuning_test.py 176 INFO nsslapd-cache-autosize-split == b'0'
Passed suites/config/autotuning_test.py::test_cache_autosize_non_zero[10-400] 5.12
------------------------------ Captured log call -------------------------------
autotuning_test.py 130 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize before the test autotuning_test.py 131 INFO nsslapd-dbcachesize == b'167257784' autotuning_test.py 132 INFO nsslapd-cachememsize == b'603979776' autotuning_test.py 133 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 134 INFO nsslapd-cache-autosize == b'10' autotuning_test.py 135 INFO nsslapd-cache-autosize-split == b'0' autotuning_test.py 138 INFO Set nsslapd-cache-autosize to 10 autotuning_test.py 148 INFO Set nsslapd-cache-autosize-split to 40 autotuning_test.py 157 INFO Trying to set nsslapd-cachememsize to 33333333 autotuning_test.py 160 INFO Trying to set nsslapd-dbcachesize to 33333333 autotuning_test.py 171 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize in the appropriate range. autotuning_test.py 172 INFO nsslapd-dbcachesize == b'267612454' autotuning_test.py 173 INFO nsslapd-cachememsize == b'469762048' autotuning_test.py 174 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 175 INFO nsslapd-cache-autosize == b'10' autotuning_test.py 176 INFO nsslapd-cache-autosize-split == b'40'
Passed suites/config/autotuning_test.py::test_cache_autosize_non_zero[-40] 5.13
------------------------------ Captured log call -------------------------------
autotuning_test.py 130 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize before the test autotuning_test.py 131 INFO nsslapd-dbcachesize == b'267612454' autotuning_test.py 132 INFO nsslapd-cachememsize == b'469762048' autotuning_test.py 133 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 134 INFO nsslapd-cache-autosize == b'10' autotuning_test.py 135 INFO nsslapd-cache-autosize-split == b'40' autotuning_test.py 141 INFO Delete nsslapd-cache-autosize autotuning_test.py 148 INFO Set nsslapd-cache-autosize-split to 40 autotuning_test.py 157 INFO Trying to set nsslapd-cachememsize to 33333333 autotuning_test.py 160 INFO Trying to set nsslapd-dbcachesize to 33333333 autotuning_test.py 171 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize in the appropriate range. autotuning_test.py 172 INFO nsslapd-dbcachesize == b'267612454' autotuning_test.py 173 INFO nsslapd-cachememsize == b'469762048' autotuning_test.py 174 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 175 INFO nsslapd-cache-autosize == b'10' autotuning_test.py 176 INFO nsslapd-cache-autosize-split == b'40'
Passed suites/config/autotuning_test.py::test_cache_autosize_non_zero[10-] 5.14
------------------------------ Captured log call -------------------------------
autotuning_test.py 130 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize before the test autotuning_test.py 131 INFO nsslapd-dbcachesize == b'267612454' autotuning_test.py 132 INFO nsslapd-cachememsize == b'469762048' autotuning_test.py 133 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 134 INFO nsslapd-cache-autosize == b'10' autotuning_test.py 135 INFO nsslapd-cache-autosize-split == b'40' autotuning_test.py 138 INFO Set nsslapd-cache-autosize to 10 autotuning_test.py 151 INFO Delete nsslapd-cache-autosize-split autotuning_test.py 157 INFO Trying to set nsslapd-cachememsize to 33333333 autotuning_test.py 160 INFO Trying to set nsslapd-dbcachesize to 33333333 autotuning_test.py 171 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize in the appropriate range. autotuning_test.py 172 INFO nsslapd-dbcachesize == b'167257784' autotuning_test.py 173 INFO nsslapd-cachememsize == b'603979776' autotuning_test.py 174 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 175 INFO nsslapd-cache-autosize == b'10' autotuning_test.py 176 INFO nsslapd-cache-autosize-split == b'25'
Passed suites/config/autotuning_test.py::test_cache_autosize_non_zero[10-401] 5.19
------------------------------ Captured log call -------------------------------
autotuning_test.py 130 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize before the test autotuning_test.py 131 INFO nsslapd-dbcachesize == b'167257784' autotuning_test.py 132 INFO nsslapd-cachememsize == b'603979776' autotuning_test.py 133 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 134 INFO nsslapd-cache-autosize == b'10' autotuning_test.py 135 INFO nsslapd-cache-autosize-split == b'25' autotuning_test.py 138 INFO Set nsslapd-cache-autosize to 10 autotuning_test.py 148 INFO Set nsslapd-cache-autosize-split to 40 autotuning_test.py 157 INFO Trying to set nsslapd-cachememsize to 33333333 autotuning_test.py 160 INFO Trying to set nsslapd-dbcachesize to 33333333 autotuning_test.py 171 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize in the appropriate range. autotuning_test.py 172 INFO nsslapd-dbcachesize == b'267612454' autotuning_test.py 173 INFO nsslapd-cachememsize == b'469762048' autotuning_test.py 174 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 175 INFO nsslapd-cache-autosize == b'10' autotuning_test.py 176 INFO nsslapd-cache-autosize-split == b'40'
Passed suites/config/autotuning_test.py::test_cache_autosize_non_zero[10-0] 5.11
------------------------------ Captured log call -------------------------------
autotuning_test.py 130 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize before the test autotuning_test.py 131 INFO nsslapd-dbcachesize == b'267612454' autotuning_test.py 132 INFO nsslapd-cachememsize == b'469762048' autotuning_test.py 133 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 134 INFO nsslapd-cache-autosize == b'10' autotuning_test.py 135 INFO nsslapd-cache-autosize-split == b'40' autotuning_test.py 138 INFO Set nsslapd-cache-autosize to 10 autotuning_test.py 148 INFO Set nsslapd-cache-autosize-split to 0 autotuning_test.py 157 INFO Trying to set nsslapd-cachememsize to 33333333 autotuning_test.py 160 INFO Trying to set nsslapd-dbcachesize to 33333333 autotuning_test.py 171 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize in the appropriate range. autotuning_test.py 172 INFO nsslapd-dbcachesize == b'167257784' autotuning_test.py 173 INFO nsslapd-cachememsize == b'603979776' autotuning_test.py 174 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 175 INFO nsslapd-cache-autosize == b'10' autotuning_test.py 176 INFO nsslapd-cache-autosize-split == b'0'
Passed suites/config/autotuning_test.py::test_cache_autosize_basic_sane[0] 10.36
------------------------------ Captured log call -------------------------------
autotuning_test.py 220 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize before the test autotuning_test.py 221 INFO nsslapd-dbcachesize == b'167257784' autotuning_test.py 222 INFO nsslapd-cachememsize == b'603979776' autotuning_test.py 223 INFO nsslapd-cache-autosize == b'0' autotuning_test.py 224 INFO nsslapd-cache-autosize-split == b'0' autotuning_test.py 227 INFO Set nsslapd-cache-autosize-split to 0 autotuning_test.py 236 INFO Set nsslapd-dbcachesize to 0 autotuning_test.py 238 INFO Set nsslapd-cachememsize to 0 autotuning_test.py 248 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize in the appropriate range. autotuning_test.py 249 INFO nsslapd-dbcachesize == b'167257784' autotuning_test.py 250 INFO nsslapd-cachememsize == b'603979776' autotuning_test.py 251 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 252 INFO nsslapd-cache-autosize == b'0' autotuning_test.py 253 INFO nsslapd-cache-autosize-split == b'0' autotuning_test.py 220 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize before the test autotuning_test.py 221 INFO nsslapd-dbcachesize == b'167257784' autotuning_test.py 222 INFO nsslapd-cachememsize == b'603979776' autotuning_test.py 223 INFO nsslapd-cache-autosize == b'0' autotuning_test.py 224 INFO nsslapd-cache-autosize-split == b'0' autotuning_test.py 227 INFO Set nsslapd-cache-autosize-split to 0 autotuning_test.py 236 INFO Set nsslapd-dbcachesize to 33333333 autotuning_test.py 238 INFO Set nsslapd-cachememsize to 33333333 autotuning_test.py 248 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize in the appropriate range. autotuning_test.py 249 INFO nsslapd-dbcachesize == b'33333333' autotuning_test.py 250 INFO nsslapd-cachememsize == b'33333333' autotuning_test.py 251 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 252 INFO nsslapd-cache-autosize == b'0' autotuning_test.py 253 INFO nsslapd-cache-autosize-split == b'0'
Passed suites/config/autotuning_test.py::test_cache_autosize_basic_sane[] 10.29
------------------------------ Captured log call -------------------------------
autotuning_test.py 220 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize before the test autotuning_test.py 221 INFO nsslapd-dbcachesize == b'33333333' autotuning_test.py 222 INFO nsslapd-cachememsize == b'33333333' autotuning_test.py 223 INFO nsslapd-cache-autosize == b'0' autotuning_test.py 224 INFO nsslapd-cache-autosize-split == b'0' autotuning_test.py 230 INFO Delete nsslapd-cache-autosize-split autotuning_test.py 236 INFO Set nsslapd-dbcachesize to 0 autotuning_test.py 238 INFO Set nsslapd-cachememsize to 0 autotuning_test.py 248 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize in the appropriate range. autotuning_test.py 249 INFO nsslapd-dbcachesize == b'167257784' autotuning_test.py 250 INFO nsslapd-cachememsize == b'603979776' autotuning_test.py 251 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 252 INFO nsslapd-cache-autosize == b'0' autotuning_test.py 253 INFO nsslapd-cache-autosize-split == b'25' autotuning_test.py 220 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize before the test autotuning_test.py 221 INFO nsslapd-dbcachesize == b'167257784' autotuning_test.py 222 INFO nsslapd-cachememsize == b'603979776' autotuning_test.py 223 INFO nsslapd-cache-autosize == b'0' autotuning_test.py 224 INFO nsslapd-cache-autosize-split == b'25' autotuning_test.py 230 INFO Delete nsslapd-cache-autosize-split autotuning_test.py 236 INFO Set nsslapd-dbcachesize to 33333333 autotuning_test.py 238 INFO Set nsslapd-cachememsize to 33333333 autotuning_test.py 248 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize in the appropriate range. autotuning_test.py 249 INFO nsslapd-dbcachesize == b'33333333' autotuning_test.py 250 INFO nsslapd-cachememsize == b'33333333' autotuning_test.py 251 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 252 INFO nsslapd-cache-autosize == b'0' autotuning_test.py 253 INFO nsslapd-cache-autosize-split == b'25'
Passed suites/config/autotuning_test.py::test_cache_autosize_basic_sane[40] 10.34
------------------------------ Captured log call -------------------------------
autotuning_test.py 220 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize before the test autotuning_test.py 221 INFO nsslapd-dbcachesize == b'33333333' autotuning_test.py 222 INFO nsslapd-cachememsize == b'33333333' autotuning_test.py 223 INFO nsslapd-cache-autosize == b'0' autotuning_test.py 224 INFO nsslapd-cache-autosize-split == b'25' autotuning_test.py 227 INFO Set nsslapd-cache-autosize-split to 40 autotuning_test.py 236 INFO Set nsslapd-dbcachesize to 0 autotuning_test.py 238 INFO Set nsslapd-cachememsize to 0 autotuning_test.py 248 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize in the appropriate range. autotuning_test.py 249 INFO nsslapd-dbcachesize == b'267612454' autotuning_test.py 250 INFO nsslapd-cachememsize == b'469762048' autotuning_test.py 251 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 252 INFO nsslapd-cache-autosize == b'0' autotuning_test.py 253 INFO nsslapd-cache-autosize-split == b'40' autotuning_test.py 220 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize before the test autotuning_test.py 221 INFO nsslapd-dbcachesize == b'267612454' autotuning_test.py 222 INFO nsslapd-cachememsize == b'469762048' autotuning_test.py 223 INFO nsslapd-cache-autosize == b'0' autotuning_test.py 224 INFO nsslapd-cache-autosize-split == b'40' autotuning_test.py 227 INFO Set nsslapd-cache-autosize-split to 40 autotuning_test.py 236 INFO Set nsslapd-dbcachesize to 33333333 autotuning_test.py 238 INFO Set nsslapd-cachememsize to 33333333 autotuning_test.py 248 INFO Check nsslapd-dbcachesize and nsslapd-cachememsize in the appropriate range. autotuning_test.py 249 INFO nsslapd-dbcachesize == b'33333333' autotuning_test.py 250 INFO nsslapd-cachememsize == b'33333333' autotuning_test.py 251 INFO nsslapd-dncachememsize == b'67108864' autotuning_test.py 252 INFO nsslapd-cache-autosize == b'0' autotuning_test.py 253 INFO nsslapd-cache-autosize-split == b'40'
Passed suites/config/autotuning_test.py::test_cache_autosize_invalid_values[-2] 0.03
------------------------------ Captured log call -------------------------------
autotuning_test.py 281 INFO Set nsslapd-cache-autosize-split to -2 autotuning_test.py 287 INFO Set nsslapd-cache-autosize to -2
Passed suites/config/autotuning_test.py::test_cache_autosize_invalid_values[102] 0.03
------------------------------ Captured log call -------------------------------
autotuning_test.py 281 INFO Set nsslapd-cache-autosize-split to 102 autotuning_test.py 287 INFO Set nsslapd-cache-autosize to 102
Passed suites/config/autotuning_test.py::test_cache_autosize_invalid_values[invalid] 0.04
------------------------------ Captured log call -------------------------------
autotuning_test.py 281 INFO Set nsslapd-cache-autosize-split to invalid autotuning_test.py 287 INFO Set nsslapd-cache-autosize to invalid
Passed suites/config/config_test.py::test_maxbersize_repl 18.95
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists------------------------------ Captured log call -------------------------------
config_test.py 64 INFO Set nsslapd-maxbersize: 20K to master2 config_test.py 69 INFO Try to add attribute with a big value to master2 - expect to FAIL config_test.py 76 INFO Try to add attribute with a big value to master1 - expect to PASS config_test.py 81 INFO Check if a big value was successfully added to master1 config_test.py 85 INFO Check if a big value was successfully replicated to master2
Passed suites/config/config_test.py::test_config_listen_backport_size 0.10
No log output captured.
Passed suites/config/config_test.py::test_config_deadlock_policy 0.06
No log output captured.
Passed suites/config/regression_test.py::test_maxbersize_repl 8.20
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
regression_test.py 41 INFO Set nsslapd-errorlog-maxlogsize before nsslapd-errorlog-logmaxdiskspace regression_test.py 45 INFO Assert no init_dse_file errors in the error log regression_test.py 49 INFO Set nsslapd-errorlog-maxlogsize after nsslapd-errorlog-logmaxdiskspace regression_test.py 53 INFO Assert no init_dse_file errors in the error log
Passed suites/config/removed_config_49298_test.py::test_restore_config 3.93
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
removed_config_49298_test.py 41 INFO /etc/dirsrv/slapd-standalone1
Passed suites/config/removed_config_49298_test.py::test_removed_config 1.94
----------------------------- Captured stderr call -----------------------------
Job for dirsrv@standalone1.service failed because the control process exited with error code. See "systemctl status dirsrv@standalone1.service" and "journalctl -xe" for details. ------------------------------ Captured log call -------------------------------
removed_config_49298_test.py 70 INFO /etc/dirsrv/slapd-standalone1
Passed suites/cos/indirect_cos_test.py::test_indirect_cos 1.62
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created. indirect_cos_test.py 106 INFO Add custom schema... indirect_cos_test.py 119 INFO Add test user... indirect_cos_test.py 136 INFO Setup indirect COS...------------------------------ Captured log call -------------------------------
indirect_cos_test.py 156 INFO Checking user... indirect_cos_test.py 55 INFO Create password policy for subtree ou=people,dc=example,dc=com indirect_cos_test.py 163 INFO Checking user...
Passed suites/ds_logs/ds_logs_test.py::test_check_default 0.01
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
ds_logs_test.py 68 DEBUG on
Passed suites/ds_logs/ds_logs_test.py::test_plugin_set_invalid 0.01
------------------------------ Captured log call -------------------------------
ds_logs_test.py 86 INFO test_plugin_set_invalid - Expect to fail with junk value
Passed suites/ds_logs/ds_logs_test.py::test_log_plugin_on 5.07
------------------------------ Captured log call -------------------------------
ds_logs_test.py 112 INFO Bug 1273549 - Check access logs for millisecond, when attribute is ON ds_logs_test.py 113 INFO perform any ldap operation, which will trigger the logs ds_logs_test.py 27 INFO Adding 10 users ds_logs_test.py 117 INFO Restart the server to flush the logs ds_logs_test.py 120 INFO parse the access logs
Passed suites/ds_logs/ds_logs_test.py::test_log_plugin_off 14.17
------------------------------ Captured log call -------------------------------
ds_logs_test.py 151 INFO Bug 1273549 - Check access logs for missing millisecond, when attribute is OFF ds_logs_test.py 153 INFO test_log_plugin_off - set the configuration attribute to OFF ds_logs_test.py 156 INFO Restart the server to flush the logs ds_logs_test.py 159 INFO test_log_plugin_off - delete the previous access logs ds_logs_test.py 165 INFO Restart the server to flush the logs ds_logs_test.py 168 INFO check access log that microseconds are not present
Passed suites/ds_logs/regression_test.py::test_default_loglevel_stripped[24576] 0.04
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.
Passed suites/ds_logs/regression_test.py::test_default_loglevel_stripped[16512] 0.04
No log output captured.
Passed suites/ds_logs/regression_test.py::test_default_loglevel_stripped[16385] 0.25
No log output captured.
Passed suites/ds_logs/regression_test.py::test_dse_config_loglevel_error 6.26
No log output captured.
Passed suites/ds_tools/logpipe_test.py::test_user_permissions 0.10
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created. logpipe_test.py 30 INFO Add system test user - dirsrv_testuser------------------------------ Captured log call -------------------------------
logpipe_test.py 66 INFO Try to create a logpipe in the log directory with "-u" option specifying the user
Passed suites/dynamic_plugins/dynamic_plugins_test.py::test_acceptance 40.14
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists------------------------------ Captured log call -------------------------------
replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working
Passed suites/dynamic_plugins/dynamic_plugins_test.py::test_memory_corruption 44.01
------------------------------ Captured log call -------------------------------
replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working
Passed suites/dynamic_plugins/dynamic_plugins_test.py::test_stress 364.12
------------------------------ Captured log call -------------------------------
replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working
Passed suites/filter/complex_filters_test.py::test_filters[(&(uid=uid1)(sn=last1)(givenname=first1))-1] 0.00
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(uid=uid1)(sn=last1)(givenname=first1))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(uid=uid1)(&(sn=last1)(givenname=first1)))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(uid=uid1)(&(sn=last1)(givenname=first1)))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(uid=uid1)(&(&(sn=last1))(&(givenname=first1))))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(uid=uid1)(&(&(sn=last1))(&(givenname=first1))))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(uid=*)(sn=last3)(givenname=*))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(uid=*)(sn=last3)(givenname=*))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(uid=*)(&(sn=last3)(givenname=*)))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(uid=*)(&(sn=last3)(givenname=*)))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(uid=uid5)(&(&(sn=*))(&(givenname=*))))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(uid=uid5)(&(&(sn=*))(&(givenname=*))))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(objectclass=*)(uid=*)(sn=last*))-5] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(objectclass=*)(uid=*)(sn=last*))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(objectclass=*)(uid=*)(sn=last1))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(objectclass=*)(uid=*)(sn=last1))"...
Passed suites/filter/complex_filters_test.py::test_filters[(|(uid=uid1)(sn=last1)(givenname=first1))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(|(uid=uid1)(sn=last1)(givenname=first1))"...
Passed suites/filter/complex_filters_test.py::test_filters[(|(uid=uid1)(|(sn=last1)(givenname=first1)))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(|(uid=uid1)(|(sn=last1)(givenname=first1)))"...
Passed suites/filter/complex_filters_test.py::test_filters[(|(uid=uid1)(|(|(sn=last1))(|(givenname=first1))))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(|(uid=uid1)(|(|(sn=last1))(|(givenname=first1))))"...
Passed suites/filter/complex_filters_test.py::test_filters[(|(objectclass=*)(sn=last1)(|(givenname=first1)))-14] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(|(objectclass=*)(sn=last1)(|(givenname=first1)))"...
Passed suites/filter/complex_filters_test.py::test_filters[(|(&(objectclass=*)(sn=last1))(|(givenname=first1)))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(|(&(objectclass=*)(sn=last1))(|(givenname=first1)))"...
Passed suites/filter/complex_filters_test.py::test_filters[(|(&(objectclass=*)(sn=last))(|(givenname=first1)))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(|(&(objectclass=*)(sn=last))(|(givenname=first1)))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(uid=uid1)(!(cn=NULL)))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(uid=uid1)(!(cn=NULL)))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(!(cn=NULL))(uid=uid1))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(!(cn=NULL))(uid=uid1))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(uid=*)(&(!(uid=1))(!(givenname=first1))))-4] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(uid=*)(&(!(uid=1))(!(givenname=first1))))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(|(uid=uid1)(uid=NULL))(sn=last1))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(|(uid=uid1)(uid=NULL))(sn=last1))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(|(uid=uid1)(uid=NULL))(!(sn=NULL)))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(|(uid=uid1)(uid=NULL))(!(sn=NULL)))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(|(uid=uid1)(sn=last2))(givenname=first1))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(|(uid=uid1)(sn=last2))(givenname=first1))"...
Passed suites/filter/complex_filters_test.py::test_filters[(|(&(uid=uid1)(!(uid=NULL)))(sn=last2))-2] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(|(&(uid=uid1)(!(uid=NULL)))(sn=last2))"...
Passed suites/filter/complex_filters_test.py::test_filters[(|(&(uid=uid1)(uid=NULL))(sn=last2))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(|(&(uid=uid1)(uid=NULL))(sn=last2))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(uid=uid5)(sn=*)(cn=*)(givenname=*)(uid=u*)(sn=la*)(cn=full*)(givenname=f*)(uid>=u)(!(givenname=NULL)))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(uid=uid5)(sn=*)(cn=*)(givenname=*)(uid=u*)(sn=la*)(cn=full*)(givenname=f*)(uid>=u)(!(givenname=NULL)))"...
Passed suites/filter/complex_filters_test.py::test_filters[(|(&(objectclass=*)(sn=last))(&(givenname=first1)))-1] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(|(&(objectclass=*)(sn=last))(&(givenname=first1)))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(uid=uid1)(sn=last1)(givenname=NULL))-0] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(uid=uid1)(sn=last1)(givenname=NULL))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(uid=uid1)(&(sn=last1)(givenname=NULL)))-0] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(uid=uid1)(&(sn=last1)(givenname=NULL)))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(uid=uid1)(&(&(sn=last1))(&(givenname=NULL))))-0] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(uid=uid1)(&(&(sn=last1))(&(givenname=NULL))))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(uid=uid1)(&(&(sn=last1))(&(givenname=NULL)(sn=*)))(|(sn=NULL)))-0] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(uid=uid1)(&(&(sn=last1))(&(givenname=NULL)(sn=*)))(|(sn=NULL)))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(uid=uid1)(&(&(sn=last*))(&(givenname=first*)))(&(sn=NULL)))-0] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(uid=uid1)(&(&(sn=last*))(&(givenname=first*)))(&(sn=NULL)))"...
Passed suites/filter/complex_filters_test.py::test_filters[(|(uid=NULL)(sn=NULL)(givenname=NULL))-0] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(|(uid=NULL)(sn=NULL)(givenname=NULL))"...
Passed suites/filter/complex_filters_test.py::test_filters[(|(uid=NULL)(|(sn=NULL)(givenname=NULL)))-0] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(|(uid=NULL)(|(sn=NULL)(givenname=NULL)))"...
Passed suites/filter/complex_filters_test.py::test_filters[(|(uid=NULL)(|(|(sn=NULL))(|(givenname=NULL))))-0] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(|(uid=NULL)(|(|(sn=NULL))(|(givenname=NULL))))"...
Passed suites/filter/complex_filters_test.py::test_filters[(|(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*))-5] 0.01
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(|(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*)(uid=*))"...
Passed suites/filter/complex_filters_test.py::test_filters[(uid>=uid3)-3] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(uid>=uid3)"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(uid=*)(uid>=uid3))-3] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(uid=*)(uid>=uid3))"...
Passed suites/filter/complex_filters_test.py::test_filters[(|(uid>=uid3)(uid<=uid5))-5] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(|(uid>=uid3)(uid<=uid5))"...
Passed suites/filter/complex_filters_test.py::test_filters[(&(uid>=uid3)(uid<=uid5))-3] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(&(uid>=uid3)(uid<=uid5))"...
Passed suites/filter/complex_filters_test.py::test_filters[(|(&(uid>=uid3)(uid<=uid5))(uid=*))-5] 0.00
------------------------------ Captured log call -------------------------------
complex_filters_test.py 119 INFO Testing filter "(|(&(uid>=uid3)(uid<=uid5))(uid=*))"...
Passed suites/filter/filter_logic_test.py::test_eq 0.00
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.
Passed suites/filter/filter_logic_test.py::test_sub 0.00
No log output captured.
Passed suites/filter/filter_logic_test.py::test_not_eq 0.00
No log output captured.
Passed suites/filter/filter_logic_test.py::test_ranges 0.01
No log output captured.
Passed suites/filter/filter_logic_test.py::test_and_eq 0.00
No log output captured.
Passed suites/filter/filter_logic_test.py::test_range 0.00
No log output captured.
Passed suites/filter/filter_logic_test.py::test_and_allid_shortcut 0.00
No log output captured.
Passed suites/filter/filter_logic_test.py::test_or_eq 0.01
No log output captured.
Passed suites/filter/filter_logic_test.py::test_and_not_eq 0.00
No log output captured.
Passed suites/filter/filter_logic_test.py::test_or_not_eq 0.01
No log output captured.
Passed suites/filter/filter_logic_test.py::test_and_range 0.01
No log output captured.
Passed suites/filter/filter_logic_test.py::test_or_range 0.00
No log output captured.
Passed suites/filter/filter_logic_test.py::test_and_and_eq 0.00
No log output captured.
Passed suites/filter/filter_logic_test.py::test_or_or_eq 0.00
No log output captured.
Passed suites/filter/filter_logic_test.py::test_and_or_eq 0.00
No log output captured.
Passed suites/filter/filter_logic_test.py::test_or_and_eq 0.00
No log output captured.
Passed suites/filter/filter_test.py::test_filter_escaped 0.09
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
filter_test.py 38 INFO Running test_filter_escaped... filter_test.py 74 INFO test_filter_escaped: PASSED
Passed suites/filter/filter_test.py::test_filter_search_original_attrs 0.00
------------------------------ Captured log call -------------------------------
filter_test.py 91 INFO Running test_filter_search_original_attrs... filter_test.py 104 INFO test_filter_search_original_attrs: PASSED
Passed suites/filter/filter_test.py::test_filter_scope_one 0.00
------------------------------ Captured log call -------------------------------
filter_test.py 124 INFO Search user using ldapsearch with scope one filter_test.py 126 INFO [dn: cn=Directory Administrators,dc=example,dc=com cn: Directory Administrators ] filter_test.py 128 INFO Search should only have one entry
Passed suites/filter/filter_test.py::test_filter_with_attribute_subtype 0.16
------------------------------ Captured log call -------------------------------
filter_test.py 153 INFO Bind as cn=Directory Manager filter_test.py 160 INFO ######################### ADD ###################### filter_test.py 183 INFO Try to add Add cn=test_entry both, dc=example,dc=com: dn: cn=test_entry both, dc=example,dc=com cn: test_entry both cn;en: test_entry en cn;fr: test_entry fr objectclass: top objectclass: person sn: test_entry both filter_test.py 186 INFO Try to add Add cn=test_entry en only, dc=example,dc=com: dn: cn=test_entry en only, dc=example,dc=com cn: test_entry en only cn;en: test_entry en objectclass: top objectclass: person sn: test_entry en only filter_test.py 189 INFO ######################### SEARCH ###################### filter_test.py 193 INFO Try to search with filter (&(sn=test_entry en only)(!(cn=test_entry fr))) filter_test.py 197 INFO Found cn=test_entry en only,dc=example,dc=com filter_test.py 201 INFO Try to search with filter (&(sn=test_entry en only)(!(cn;fr=test_entry fr))) filter_test.py 205 INFO Found cn=test_entry en only,dc=example,dc=com filter_test.py 209 INFO Try to search with filter (&(sn=test_entry en only)(!(cn;en=test_entry en))) filter_test.py 212 INFO Found none filter_test.py 214 INFO ######################### DELETE ###################### filter_test.py 216 INFO Try to delete cn=test_entry both, dc=example,dc=com filter_test.py 219 INFO Try to delete cn=test_entry en only, dc=example,dc=com filter_test.py 222 INFO Testcase PASSED
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_supported_features 0.00
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-False-oper_attr_list0] 0.14
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 141 INFO bound as: cn=Directory Manager rfc3673_all_oper_attrs_test.py 151 INFO suffix: filter: ['+'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: aci: (targetattr != "aci")(version 3.0; aci "rootdse anon read access"; allow(read,search,compare) userdn="ldap:///anyone";) createTimestamp: 20180723000404Z creatorsName: cn=server,cn=plugins,cn=config modifiersName: cn=server,cn=plugins,cn=config modifyTimestamp: 20180723000404Z namingContexts: dc=example,dc=com nsBackendSuffix: userRoot:dc=example,dc=com nsUniqueId: e904f200-8e0b11e8-80000000-00000000 subschemaSubentry: cn=schema supportedControl: 2.16.840.1.113730.3.4.2 supportedControl: 2.16.840.1.113730.3.4.3 supportedControl: 2.16.840.1.113730.3.4.4 supportedControl: 2.16.840.1.113730.3.4.5 supportedControl: 1.2.840.113556.1.4.473 supportedControl: 2.16.840.1.113730.3.4.9 supportedControl: 2.16.840.1.113730.3.4.16 supportedControl: 2.16.840.1.113730.3.4.15 supportedControl: 2.16.840.1.113730.3.4.17 supportedControl: 2.16.840.1.113730.3.4.19 supportedControl: 1.3.6.1.1.13.1 supportedControl: 1.3.6.1.1.13.2 supportedControl: 1.3.6.1.4.1.42.2.27.8.5.1 supportedControl: 1.3.6.1.4.1.42.2.27.9.5.2 supportedControl: 1.2.840.113556.1.4.319 supportedControl: 1.3.6.1.4.1.42.2.27.9.5.8 supportedControl: 1.3.6.1.4.1.4203.666.5.16 supportedControl: 2.16.840.1.113730.3.4.14 supportedControl: 2.16.840.1.113730.3.4.20 supportedControl: 1.3.6.1.4.1.1466.29539.12 supportedControl: 2.16.840.1.113730.3.4.12 supportedControl: 2.16.840.1.113730.3.4.18 supportedControl: 2.16.840.1.113730.3.4.13 supportedExtension: 2.16.840.1.113730.3.5.7 supportedExtension: 2.16.840.1.113730.3.5.8 supportedExtension: 2.16.840.1.113730.3.5.3 supportedExtension: 2.16.840.1.113730.3.5.12 supportedExtension: 2.16.840.1.113730.3.5.5 supportedExtension: 2.16.840.1.113730.3.5.6 supportedExtension: 2.16.840.1.113730.3.5.9 supportedExtension: 2.16.840.1.113730.3.5.4 supportedExtension: 2.16.840.1.113730.3.6.5 supportedExtension: 2.16.840.1.113730.3.6.6 supportedExtension: 2.16.840.1.113730.3.6.7 supportedExtension: 2.16.840.1.113730.3.6.8 supportedExtension: 1.3.6.1.4.1.4203.1.11.3 supportedExtension: 1.3.6.1.4.1.4203.1.11.1 supportedFeatures: 1.3.6.1.4.1.4203.1.5.1 supportedLDAPVersion: 2 supportedLDAPVersion: 3 supportedSASLMechanisms: EXTERNAL supportedSASLMechanisms: GSS-SPNEGO supportedSASLMechanisms: GSSAPI supportedSASLMechanisms: DIGEST-MD5 supportedSASLMechanisms: CRAM-MD5 supportedSASLMechanisms: PLAIN supportedSASLMechanisms: LOGIN supportedSASLMechanisms: ANONYMOUS vendorName: 389 Project vendorVersion: 389-Directory/1.4.0.13 B2018.203.2329 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-False-oper_attr_list0-*] 0.15
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 141 INFO bound as: cn=Directory Manager rfc3673_all_oper_attrs_test.py 151 INFO suffix: filter: ['+', '*'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: aci: (targetattr != "aci")(version 3.0; aci "rootdse anon read access"; allow(read,search,compare) userdn="ldap:///anyone";) createTimestamp: 20180723000404Z creatorsName: cn=server,cn=plugins,cn=config dataversion: 020180723000405 defaultnamingcontext: dc=example,dc=com modifiersName: cn=server,cn=plugins,cn=config modifyTimestamp: 20180723000404Z namingContexts: dc=example,dc=com netscapemdsuffix: cn=ldap://dc=server,dc=example,dc=com:38901 nsBackendSuffix: userRoot:dc=example,dc=com nsUniqueId: e904f200-8e0b11e8-80000000-00000000 objectClass: top subschemaSubentry: cn=schema supportedControl: 2.16.840.1.113730.3.4.2 supportedControl: 2.16.840.1.113730.3.4.3 supportedControl: 2.16.840.1.113730.3.4.4 supportedControl: 2.16.840.1.113730.3.4.5 supportedControl: 1.2.840.113556.1.4.473 supportedControl: 2.16.840.1.113730.3.4.9 supportedControl: 2.16.840.1.113730.3.4.16 supportedControl: 2.16.840.1.113730.3.4.15 supportedControl: 2.16.840.1.113730.3.4.17 supportedControl: 2.16.840.1.113730.3.4.19 supportedControl: 1.3.6.1.1.13.1 supportedControl: 1.3.6.1.1.13.2 supportedControl: 1.3.6.1.4.1.42.2.27.8.5.1 supportedControl: 1.3.6.1.4.1.42.2.27.9.5.2 supportedControl: 1.2.840.113556.1.4.319 supportedControl: 1.3.6.1.4.1.42.2.27.9.5.8 supportedControl: 1.3.6.1.4.1.4203.666.5.16 supportedControl: 2.16.840.1.113730.3.4.14 supportedControl: 2.16.840.1.113730.3.4.20 supportedControl: 1.3.6.1.4.1.1466.29539.12 supportedControl: 2.16.840.1.113730.3.4.12 supportedControl: 2.16.840.1.113730.3.4.18 supportedControl: 2.16.840.1.113730.3.4.13 supportedExtension: 2.16.840.1.113730.3.5.7 supportedExtension: 2.16.840.1.113730.3.5.8 supportedExtension: 2.16.840.1.113730.3.5.3 supportedExtension: 2.16.840.1.113730.3.5.12 supportedExtension: 2.16.840.1.113730.3.5.5 supportedExtension: 2.16.840.1.113730.3.5.6 supportedExtension: 2.16.840.1.113730.3.5.9 supportedExtension: 2.16.840.1.113730.3.5.4 supportedExtension: 2.16.840.1.113730.3.6.5 supportedExtension: 2.16.840.1.113730.3.6.6 supportedExtension: 2.16.840.1.113730.3.6.7 supportedExtension: 2.16.840.1.113730.3.6.8 supportedExtension: 1.3.6.1.4.1.4203.1.11.3 supportedExtension: 1.3.6.1.4.1.4203.1.11.1 supportedFeatures: 1.3.6.1.4.1.4203.1.5.1 supportedLDAPVersion: 2 supportedLDAPVersion: 3 supportedSASLMechanisms: EXTERNAL supportedSASLMechanisms: GSS-SPNEGO supportedSASLMechanisms: GSSAPI supportedSASLMechanisms: DIGEST-MD5 supportedSASLMechanisms: CRAM-MD5 supportedSASLMechanisms: PLAIN supportedSASLMechanisms: LOGIN supportedSASLMechanisms: ANONYMOUS vendorName: 389 Project vendorVersion: 389-Directory/1.4.0.13 B2018.203.2329 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-False-oper_attr_list0-objectClass] 0.14
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 141 INFO bound as: cn=Directory Manager rfc3673_all_oper_attrs_test.py 151 INFO suffix: filter: ['+', 'objectClass'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: aci: (targetattr != "aci")(version 3.0; aci "rootdse anon read access"; allow(read,search,compare) userdn="ldap:///anyone";) createTimestamp: 20180723000404Z creatorsName: cn=server,cn=plugins,cn=config modifiersName: cn=server,cn=plugins,cn=config modifyTimestamp: 20180723000404Z namingContexts: dc=example,dc=com nsBackendSuffix: userRoot:dc=example,dc=com nsUniqueId: e904f200-8e0b11e8-80000000-00000000 objectClass: top subschemaSubentry: cn=schema supportedControl: 2.16.840.1.113730.3.4.2 supportedControl: 2.16.840.1.113730.3.4.3 supportedControl: 2.16.840.1.113730.3.4.4 supportedControl: 2.16.840.1.113730.3.4.5 supportedControl: 1.2.840.113556.1.4.473 supportedControl: 2.16.840.1.113730.3.4.9 supportedControl: 2.16.840.1.113730.3.4.16 supportedControl: 2.16.840.1.113730.3.4.15 supportedControl: 2.16.840.1.113730.3.4.17 supportedControl: 2.16.840.1.113730.3.4.19 supportedControl: 1.3.6.1.1.13.1 supportedControl: 1.3.6.1.1.13.2 supportedControl: 1.3.6.1.4.1.42.2.27.8.5.1 supportedControl: 1.3.6.1.4.1.42.2.27.9.5.2 supportedControl: 1.2.840.113556.1.4.319 supportedControl: 1.3.6.1.4.1.42.2.27.9.5.8 supportedControl: 1.3.6.1.4.1.4203.666.5.16 supportedControl: 2.16.840.1.113730.3.4.14 supportedControl: 2.16.840.1.113730.3.4.20 supportedControl: 1.3.6.1.4.1.1466.29539.12 supportedControl: 2.16.840.1.113730.3.4.12 supportedControl: 2.16.840.1.113730.3.4.18 supportedControl: 2.16.840.1.113730.3.4.13 supportedExtension: 2.16.840.1.113730.3.5.7 supportedExtension: 2.16.840.1.113730.3.5.8 supportedExtension: 2.16.840.1.113730.3.5.3 supportedExtension: 2.16.840.1.113730.3.5.12 supportedExtension: 2.16.840.1.113730.3.5.5 supportedExtension: 2.16.840.1.113730.3.5.6 supportedExtension: 2.16.840.1.113730.3.5.9 supportedExtension: 2.16.840.1.113730.3.5.4 supportedExtension: 2.16.840.1.113730.3.6.5 supportedExtension: 2.16.840.1.113730.3.6.6 supportedExtension: 2.16.840.1.113730.3.6.7 supportedExtension: 2.16.840.1.113730.3.6.8 supportedExtension: 1.3.6.1.4.1.4203.1.11.3 supportedExtension: 1.3.6.1.4.1.4203.1.11.1 supportedFeatures: 1.3.6.1.4.1.4203.1.5.1 supportedLDAPVersion: 2 supportedLDAPVersion: 3 supportedSASLMechanisms: EXTERNAL supportedSASLMechanisms: GSS-SPNEGO supportedSASLMechanisms: GSSAPI supportedSASLMechanisms: DIGEST-MD5 supportedSASLMechanisms: CRAM-MD5 supportedSASLMechanisms: PLAIN supportedSASLMechanisms: LOGIN supportedSASLMechanisms: ANONYMOUS vendorName: 389 Project vendorVersion: 389-Directory/1.4.0.13 B2018.203.2329 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-True-oper_attr_list1] 0.04
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 138 INFO bound as: uid=all_attrs_test,ou=people,dc=example,dc=com rfc3673_all_oper_attrs_test.py 151 INFO suffix: filter: ['+'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: createTimestamp: 20180723000404Z creatorsName: cn=server,cn=plugins,cn=config modifiersName: cn=server,cn=plugins,cn=config modifyTimestamp: 20180723000404Z namingContexts: dc=example,dc=com nsBackendSuffix: userRoot:dc=example,dc=com nsUniqueId: e904f200-8e0b11e8-80000000-00000000 subschemaSubentry: cn=schema supportedControl: 2.16.840.1.113730.3.4.2 supportedControl: 2.16.840.1.113730.3.4.3 supportedControl: 2.16.840.1.113730.3.4.4 supportedControl: 2.16.840.1.113730.3.4.5 supportedControl: 1.2.840.113556.1.4.473 supportedControl: 2.16.840.1.113730.3.4.9 supportedControl: 2.16.840.1.113730.3.4.16 supportedControl: 2.16.840.1.113730.3.4.15 supportedControl: 2.16.840.1.113730.3.4.17 supportedControl: 2.16.840.1.113730.3.4.19 supportedControl: 1.3.6.1.1.13.1 supportedControl: 1.3.6.1.1.13.2 supportedControl: 1.3.6.1.4.1.42.2.27.8.5.1 supportedControl: 1.3.6.1.4.1.42.2.27.9.5.2 supportedControl: 1.2.840.113556.1.4.319 supportedControl: 1.3.6.1.4.1.42.2.27.9.5.8 supportedControl: 1.3.6.1.4.1.4203.666.5.16 supportedControl: 2.16.840.1.113730.3.4.14 supportedControl: 2.16.840.1.113730.3.4.20 supportedControl: 1.3.6.1.4.1.1466.29539.12 supportedControl: 2.16.840.1.113730.3.4.12 supportedControl: 2.16.840.1.113730.3.4.18 supportedControl: 2.16.840.1.113730.3.4.13 supportedExtension: 2.16.840.1.113730.3.5.7 supportedExtension: 2.16.840.1.113730.3.5.8 supportedExtension: 2.16.840.1.113730.3.5.3 supportedExtension: 2.16.840.1.113730.3.5.12 supportedExtension: 2.16.840.1.113730.3.5.5 supportedExtension: 2.16.840.1.113730.3.5.6 supportedExtension: 2.16.840.1.113730.3.5.9 supportedExtension: 2.16.840.1.113730.3.5.4 supportedExtension: 2.16.840.1.113730.3.6.5 supportedExtension: 2.16.840.1.113730.3.6.6 supportedExtension: 2.16.840.1.113730.3.6.7 supportedExtension: 2.16.840.1.113730.3.6.8 supportedExtension: 1.3.6.1.4.1.4203.1.11.3 supportedExtension: 1.3.6.1.4.1.4203.1.11.1 supportedFeatures: 1.3.6.1.4.1.4203.1.5.1 supportedLDAPVersion: 2 supportedLDAPVersion: 3 supportedSASLMechanisms: EXTERNAL supportedSASLMechanisms: GSS-SPNEGO supportedSASLMechanisms: GSSAPI supportedSASLMechanisms: DIGEST-MD5 supportedSASLMechanisms: CRAM-MD5 supportedSASLMechanisms: PLAIN supportedSASLMechanisms: LOGIN supportedSASLMechanisms: ANONYMOUS vendorName: 389 Project vendorVersion: 389-Directory/1.4.0.13 B2018.203.2329 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-True-oper_attr_list1-*] 0.04
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 138 INFO bound as: uid=all_attrs_test,ou=people,dc=example,dc=com rfc3673_all_oper_attrs_test.py 151 INFO suffix: filter: ['+', '*'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: createTimestamp: 20180723000404Z creatorsName: cn=server,cn=plugins,cn=config dataversion: 020180723000405 defaultnamingcontext: dc=example,dc=com modifiersName: cn=server,cn=plugins,cn=config modifyTimestamp: 20180723000404Z namingContexts: dc=example,dc=com netscapemdsuffix: cn=ldap://dc=server,dc=example,dc=com:38901 nsBackendSuffix: userRoot:dc=example,dc=com nsUniqueId: e904f200-8e0b11e8-80000000-00000000 objectClass: top subschemaSubentry: cn=schema supportedControl: 2.16.840.1.113730.3.4.2 supportedControl: 2.16.840.1.113730.3.4.3 supportedControl: 2.16.840.1.113730.3.4.4 supportedControl: 2.16.840.1.113730.3.4.5 supportedControl: 1.2.840.113556.1.4.473 supportedControl: 2.16.840.1.113730.3.4.9 supportedControl: 2.16.840.1.113730.3.4.16 supportedControl: 2.16.840.1.113730.3.4.15 supportedControl: 2.16.840.1.113730.3.4.17 supportedControl: 2.16.840.1.113730.3.4.19 supportedControl: 1.3.6.1.1.13.1 supportedControl: 1.3.6.1.1.13.2 supportedControl: 1.3.6.1.4.1.42.2.27.8.5.1 supportedControl: 1.3.6.1.4.1.42.2.27.9.5.2 supportedControl: 1.2.840.113556.1.4.319 supportedControl: 1.3.6.1.4.1.42.2.27.9.5.8 supportedControl: 1.3.6.1.4.1.4203.666.5.16 supportedControl: 2.16.840.1.113730.3.4.14 supportedControl: 2.16.840.1.113730.3.4.20 supportedControl: 1.3.6.1.4.1.1466.29539.12 supportedControl: 2.16.840.1.113730.3.4.12 supportedControl: 2.16.840.1.113730.3.4.18 supportedControl: 2.16.840.1.113730.3.4.13 supportedExtension: 2.16.840.1.113730.3.5.7 supportedExtension: 2.16.840.1.113730.3.5.8 supportedExtension: 2.16.840.1.113730.3.5.3 supportedExtension: 2.16.840.1.113730.3.5.12 supportedExtension: 2.16.840.1.113730.3.5.5 supportedExtension: 2.16.840.1.113730.3.5.6 supportedExtension: 2.16.840.1.113730.3.5.9 supportedExtension: 2.16.840.1.113730.3.5.4 supportedExtension: 2.16.840.1.113730.3.6.5 supportedExtension: 2.16.840.1.113730.3.6.6 supportedExtension: 2.16.840.1.113730.3.6.7 supportedExtension: 2.16.840.1.113730.3.6.8 supportedExtension: 1.3.6.1.4.1.4203.1.11.3 supportedExtension: 1.3.6.1.4.1.4203.1.11.1 supportedFeatures: 1.3.6.1.4.1.4203.1.5.1 supportedLDAPVersion: 2 supportedLDAPVersion: 3 supportedSASLMechanisms: EXTERNAL supportedSASLMechanisms: GSS-SPNEGO supportedSASLMechanisms: GSSAPI supportedSASLMechanisms: DIGEST-MD5 supportedSASLMechanisms: CRAM-MD5 supportedSASLMechanisms: PLAIN supportedSASLMechanisms: LOGIN supportedSASLMechanisms: ANONYMOUS vendorName: 389 Project vendorVersion: 389-Directory/1.4.0.13 B2018.203.2329 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[-True-oper_attr_list1-objectClass] 0.04
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 138 INFO bound as: uid=all_attrs_test,ou=people,dc=example,dc=com rfc3673_all_oper_attrs_test.py 151 INFO suffix: filter: ['+', 'objectClass'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: createTimestamp: 20180723000404Z creatorsName: cn=server,cn=plugins,cn=config modifiersName: cn=server,cn=plugins,cn=config modifyTimestamp: 20180723000404Z namingContexts: dc=example,dc=com nsBackendSuffix: userRoot:dc=example,dc=com nsUniqueId: e904f200-8e0b11e8-80000000-00000000 objectClass: top subschemaSubentry: cn=schema supportedControl: 2.16.840.1.113730.3.4.2 supportedControl: 2.16.840.1.113730.3.4.3 supportedControl: 2.16.840.1.113730.3.4.4 supportedControl: 2.16.840.1.113730.3.4.5 supportedControl: 1.2.840.113556.1.4.473 supportedControl: 2.16.840.1.113730.3.4.9 supportedControl: 2.16.840.1.113730.3.4.16 supportedControl: 2.16.840.1.113730.3.4.15 supportedControl: 2.16.840.1.113730.3.4.17 supportedControl: 2.16.840.1.113730.3.4.19 supportedControl: 1.3.6.1.1.13.1 supportedControl: 1.3.6.1.1.13.2 supportedControl: 1.3.6.1.4.1.42.2.27.8.5.1 supportedControl: 1.3.6.1.4.1.42.2.27.9.5.2 supportedControl: 1.2.840.113556.1.4.319 supportedControl: 1.3.6.1.4.1.42.2.27.9.5.8 supportedControl: 1.3.6.1.4.1.4203.666.5.16 supportedControl: 2.16.840.1.113730.3.4.14 supportedControl: 2.16.840.1.113730.3.4.20 supportedControl: 1.3.6.1.4.1.1466.29539.12 supportedControl: 2.16.840.1.113730.3.4.12 supportedControl: 2.16.840.1.113730.3.4.18 supportedControl: 2.16.840.1.113730.3.4.13 supportedExtension: 2.16.840.1.113730.3.5.7 supportedExtension: 2.16.840.1.113730.3.5.8 supportedExtension: 2.16.840.1.113730.3.5.3 supportedExtension: 2.16.840.1.113730.3.5.12 supportedExtension: 2.16.840.1.113730.3.5.5 supportedExtension: 2.16.840.1.113730.3.5.6 supportedExtension: 2.16.840.1.113730.3.5.9 supportedExtension: 2.16.840.1.113730.3.5.4 supportedExtension: 2.16.840.1.113730.3.6.5 supportedExtension: 2.16.840.1.113730.3.6.6 supportedExtension: 2.16.840.1.113730.3.6.7 supportedExtension: 2.16.840.1.113730.3.6.8 supportedExtension: 1.3.6.1.4.1.4203.1.11.3 supportedExtension: 1.3.6.1.4.1.4203.1.11.1 supportedFeatures: 1.3.6.1.4.1.4203.1.5.1 supportedLDAPVersion: 2 supportedLDAPVersion: 3 supportedSASLMechanisms: EXTERNAL supportedSASLMechanisms: GSS-SPNEGO supportedSASLMechanisms: GSSAPI supportedSASLMechanisms: DIGEST-MD5 supportedSASLMechanisms: CRAM-MD5 supportedSASLMechanisms: PLAIN supportedSASLMechanisms: LOGIN supportedSASLMechanisms: ANONYMOUS vendorName: 389 Project vendorVersion: 389-Directory/1.4.0.13 B2018.203.2329 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-False-oper_attr_list2] 0.14
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 141 INFO bound as: cn=Directory Manager rfc3673_all_oper_attrs_test.py 151 INFO suffix: ou=people,dc=example,dc=com filter: ['+'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: ou=People,dc=example,dc=com aci: (targetattr ="userpassword || telephonenumber || facsimiletelephonenumber")(version 3.0;acl "Allow self entry modification";allow (write)(userdn = "ldap:///self");) aci: (targetattr !="cn || sn || uid")(targetfilter ="(ou=Accounting)")(version 3.0;acl "Accounting Managers Group Permissions";allow (write)(groupdn = "ldap:///cn=Accounting Managers,ou=groups,dc=example,dc=com");) aci: (targetattr !="cn || sn || uid")(targetfilter ="(ou=Human Resources)")(version 3.0;acl "HR Group Permissions";allow (write)(groupdn = "ldap:///cn=HR Managers,ou=groups,dc=example,dc=com");) aci: (targetattr !="cn ||sn || uid")(targetfilter ="(ou=Product Testing)")(version 3.0;acl "QA Group Permissions";allow (write)(groupdn = "ldap:///cn=QA Managers,ou=groups,dc=example,dc=com");) aci: (targetattr !="cn || sn || uid")(targetfilter ="(ou=Product Development)")(version 3.0;acl "Engineering Group Permissions";allow (write)(groupdn = "ldap:///cn=PD Managers,ou=groups,dc=example,dc=com");) createTimestamp: 20180723000402Z creatorsName: entrydn: ou=people,dc=example,dc=com entryid: 4 modifiersName: modifyTimestamp: 20180723000402Z nsUniqueId: e7d3c529-8e0b11e8-a6de910a-56c42982 numSubordinates: 1 parentid: 1 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-False-oper_attr_list2-*] 0.14
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 141 INFO bound as: cn=Directory Manager rfc3673_all_oper_attrs_test.py 151 INFO suffix: ou=people,dc=example,dc=com filter: ['+', '*'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: ou=People,dc=example,dc=com aci: (targetattr ="userpassword || telephonenumber || facsimiletelephonenumber")(version 3.0;acl "Allow self entry modification";allow (write)(userdn = "ldap:///self");) aci: (targetattr !="cn || sn || uid")(targetfilter ="(ou=Accounting)")(version 3.0;acl "Accounting Managers Group Permissions";allow (write)(groupdn = "ldap:///cn=Accounting Managers,ou=groups,dc=example,dc=com");) aci: (targetattr !="cn || sn || uid")(targetfilter ="(ou=Human Resources)")(version 3.0;acl "HR Group Permissions";allow (write)(groupdn = "ldap:///cn=HR Managers,ou=groups,dc=example,dc=com");) aci: (targetattr !="cn ||sn || uid")(targetfilter ="(ou=Product Testing)")(version 3.0;acl "QA Group Permissions";allow (write)(groupdn = "ldap:///cn=QA Managers,ou=groups,dc=example,dc=com");) aci: (targetattr !="cn || sn || uid")(targetfilter ="(ou=Product Development)")(version 3.0;acl "Engineering Group Permissions";allow (write)(groupdn = "ldap:///cn=PD Managers,ou=groups,dc=example,dc=com");) createTimestamp: 20180723000402Z creatorsName: entrydn: ou=people,dc=example,dc=com entryid: 4 modifiersName: modifyTimestamp: 20180723000402Z nsUniqueId: e7d3c529-8e0b11e8-a6de910a-56c42982 numSubordinates: 1 objectClass: top objectClass: organizationalunit ou: People parentid: 1 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-False-oper_attr_list2-objectClass] 0.14
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 141 INFO bound as: cn=Directory Manager rfc3673_all_oper_attrs_test.py 151 INFO suffix: ou=people,dc=example,dc=com filter: ['+', 'objectClass'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: ou=People,dc=example,dc=com aci: (targetattr ="userpassword || telephonenumber || facsimiletelephonenumber")(version 3.0;acl "Allow self entry modification";allow (write)(userdn = "ldap:///self");) aci: (targetattr !="cn || sn || uid")(targetfilter ="(ou=Accounting)")(version 3.0;acl "Accounting Managers Group Permissions";allow (write)(groupdn = "ldap:///cn=Accounting Managers,ou=groups,dc=example,dc=com");) aci: (targetattr !="cn || sn || uid")(targetfilter ="(ou=Human Resources)")(version 3.0;acl "HR Group Permissions";allow (write)(groupdn = "ldap:///cn=HR Managers,ou=groups,dc=example,dc=com");) aci: (targetattr !="cn ||sn || uid")(targetfilter ="(ou=Product Testing)")(version 3.0;acl "QA Group Permissions";allow (write)(groupdn = "ldap:///cn=QA Managers,ou=groups,dc=example,dc=com");) aci: (targetattr !="cn || sn || uid")(targetfilter ="(ou=Product Development)")(version 3.0;acl "Engineering Group Permissions";allow (write)(groupdn = "ldap:///cn=PD Managers,ou=groups,dc=example,dc=com");) createTimestamp: 20180723000402Z creatorsName: entrydn: ou=people,dc=example,dc=com entryid: 4 modifiersName: modifyTimestamp: 20180723000402Z nsUniqueId: e7d3c529-8e0b11e8-a6de910a-56c42982 numSubordinates: 1 objectClass: top objectClass: organizationalunit parentid: 1 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-True-oper_attr_list3] 0.04
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 138 INFO bound as: uid=all_attrs_test,ou=people,dc=example,dc=com rfc3673_all_oper_attrs_test.py 151 INFO suffix: ou=people,dc=example,dc=com filter: ['+'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: ou=People,dc=example,dc=com createTimestamp: 20180723000402Z creatorsName: entrydn: ou=people,dc=example,dc=com entryid: 4 modifiersName: modifyTimestamp: 20180723000402Z nsUniqueId: e7d3c529-8e0b11e8-a6de910a-56c42982 numSubordinates: 1 parentid: 1 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-True-oper_attr_list3-*] 0.04
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 138 INFO bound as: uid=all_attrs_test,ou=people,dc=example,dc=com rfc3673_all_oper_attrs_test.py 151 INFO suffix: ou=people,dc=example,dc=com filter: ['+', '*'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: ou=People,dc=example,dc=com createTimestamp: 20180723000402Z creatorsName: entrydn: ou=people,dc=example,dc=com entryid: 4 modifiersName: modifyTimestamp: 20180723000402Z nsUniqueId: e7d3c529-8e0b11e8-a6de910a-56c42982 numSubordinates: 1 objectClass: top objectClass: organizationalunit ou: People parentid: 1 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[ou=people,dc=example,dc=com-True-oper_attr_list3-objectClass] 0.04
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 138 INFO bound as: uid=all_attrs_test,ou=people,dc=example,dc=com rfc3673_all_oper_attrs_test.py 151 INFO suffix: ou=people,dc=example,dc=com filter: ['+', 'objectClass'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: ou=People,dc=example,dc=com createTimestamp: 20180723000402Z creatorsName: entrydn: ou=people,dc=example,dc=com entryid: 4 modifiersName: modifyTimestamp: 20180723000402Z nsUniqueId: e7d3c529-8e0b11e8-a6de910a-56c42982 numSubordinates: 1 objectClass: top objectClass: organizationalunit parentid: 1 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-False-oper_attr_list4] 0.14
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 141 INFO bound as: cn=Directory Manager rfc3673_all_oper_attrs_test.py 151 INFO suffix: uid=all_attrs_test,ou=people,dc=example,dc=com filter: ['+'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: uid=all_attrs_test,ou=People,dc=example,dc=com createTimestamp: 20180723000406Z creatorsName: cn=directory manager entrydn: uid=all_attrs_test,ou=people,dc=example,dc=com entryid: 10 modifiersName: cn=directory manager modifyTimestamp: 20180723000406Z nsUniqueId: e904f289-8e0b11e8-888ccad6-223e08a8 parentid: 4 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-False-oper_attr_list4-*] 0.14
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 141 INFO bound as: cn=Directory Manager rfc3673_all_oper_attrs_test.py 151 INFO suffix: uid=all_attrs_test,ou=people,dc=example,dc=com filter: ['+', '*'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: uid=all_attrs_test,ou=People,dc=example,dc=com cn: all_attrs_test createTimestamp: 20180723000406Z creatorsName: cn=directory manager entrydn: uid=all_attrs_test,ou=people,dc=example,dc=com entryid: 10 gidNumber: 1000 homeDirectory: /home/test mail: all_attrs_test@redhat.com modifiersName: cn=directory manager modifyTimestamp: 20180723000406Z nsUniqueId: e904f289-8e0b11e8-888ccad6-223e08a8 objectClass: top objectClass: account objectClass: posixaccount objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: nsMemberOf objectClass: nsAccount objectClass: person parentid: 4 sn: all_attrs_test uid: all_attrs_test uidNumber: 1000 userPassword: {PBKDF2_SHA256}AAAIABHRaFxD1kPdHC6vSCyHHzyK/T8YUwrG6rmV1RuW8KBzGJB8POknFMtnV2dOmLnjxAoz/VwZeQ0RYM0ftTnE7DnrcRR+6QFK4HUc5YQWNZUr5R5/XthVLSvy45OvX7PnjK7SWRRLsb6VbDf9p9G0U3Thg1k3qTutpgQKk2hnP1oUyhBzRa5eYCnQpi48+3K0uXU7mnHcz4Gaqgpe+g+fNr25H4+smkx6bJXUkD/E85a6/6ufi2rY8wpLgW6pid//iB87irYIuqtHIqwbdObC0zJuOiW1cbTlpz99nqPNArnNouaDTnKsvbyJvDyoeUAAAYha1ayMRk80jXjLivRgbUIblQDQKs20u4S6idSOqds4QGDX37VsEOMCY8gqDgGPCBQGEgQhxVZoltE7QkzZ6+SsHRFD7Hx47ZJLrHnb9y/v ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-False-oper_attr_list4-objectClass] 0.14
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 141 INFO bound as: cn=Directory Manager rfc3673_all_oper_attrs_test.py 151 INFO suffix: uid=all_attrs_test,ou=people,dc=example,dc=com filter: ['+', 'objectClass'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: uid=all_attrs_test,ou=People,dc=example,dc=com createTimestamp: 20180723000406Z creatorsName: cn=directory manager entrydn: uid=all_attrs_test,ou=people,dc=example,dc=com entryid: 10 modifiersName: cn=directory manager modifyTimestamp: 20180723000406Z nsUniqueId: e904f289-8e0b11e8-888ccad6-223e08a8 objectClass: top objectClass: account objectClass: posixaccount objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: nsMemberOf objectClass: nsAccount objectClass: person parentid: 4 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-True-oper_attr_list5] 0.04
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 138 INFO bound as: uid=all_attrs_test,ou=people,dc=example,dc=com rfc3673_all_oper_attrs_test.py 151 INFO suffix: uid=all_attrs_test,ou=people,dc=example,dc=com filter: ['+'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: uid=all_attrs_test,ou=People,dc=example,dc=com createTimestamp: 20180723000406Z creatorsName: cn=directory manager entrydn: uid=all_attrs_test,ou=people,dc=example,dc=com entryid: 10 modifiersName: cn=directory manager modifyTimestamp: 20180723000406Z nsUniqueId: e904f289-8e0b11e8-888ccad6-223e08a8 parentid: 4 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-True-oper_attr_list5-*] 0.04
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 138 INFO bound as: uid=all_attrs_test,ou=people,dc=example,dc=com rfc3673_all_oper_attrs_test.py 151 INFO suffix: uid=all_attrs_test,ou=people,dc=example,dc=com filter: ['+', '*'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: uid=all_attrs_test,ou=People,dc=example,dc=com cn: all_attrs_test createTimestamp: 20180723000406Z creatorsName: cn=directory manager entrydn: uid=all_attrs_test,ou=people,dc=example,dc=com entryid: 10 gidNumber: 1000 homeDirectory: /home/test mail: all_attrs_test@redhat.com modifiersName: cn=directory manager modifyTimestamp: 20180723000406Z nsUniqueId: e904f289-8e0b11e8-888ccad6-223e08a8 objectClass: top objectClass: account objectClass: posixaccount objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: nsMemberOf objectClass: nsAccount objectClass: person parentid: 4 sn: all_attrs_test uid: all_attrs_test uidNumber: 1000 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[uid=all_attrs_test,ou=people,dc=example,dc=com-True-oper_attr_list5-objectClass] 0.04
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 138 INFO bound as: uid=all_attrs_test,ou=people,dc=example,dc=com rfc3673_all_oper_attrs_test.py 151 INFO suffix: uid=all_attrs_test,ou=people,dc=example,dc=com filter: ['+', 'objectClass'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: uid=all_attrs_test,ou=People,dc=example,dc=com createTimestamp: 20180723000406Z creatorsName: cn=directory manager entrydn: uid=all_attrs_test,ou=people,dc=example,dc=com entryid: 10 modifiersName: cn=directory manager modifyTimestamp: 20180723000406Z nsUniqueId: e904f289-8e0b11e8-888ccad6-223e08a8 objectClass: top objectClass: account objectClass: posixaccount objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: nsMemberOf objectClass: nsAccount objectClass: person parentid: 4 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[cn=config-False-oper_attr_list6] 0.14
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 141 INFO bound as: cn=Directory Manager rfc3673_all_oper_attrs_test.py 151 INFO suffix: cn=config filter: ['+'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: cn=config numSubordinates: 10 passwordHistory: off ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[cn=config-False-oper_attr_list6-*] 0.18
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 141 INFO bound as: cn=Directory Manager rfc3673_all_oper_attrs_test.py 151 INFO suffix: cn=config filter: ['+', '*'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: cn=config cn: config nsslapd-SSLclientAuth: allowed nsslapd-accesscontrol: on nsslapd-accesslog: /var/log/dirsrv/slapd-standalone1/access nsslapd-accesslog-level: 256 nsslapd-accesslog-list: nsslapd-accesslog-logbuffering: on nsslapd-accesslog-logexpirationtime: 1 nsslapd-accesslog-logexpirationtimeunit: month nsslapd-accesslog-logging-enabled: on nsslapd-accesslog-logmaxdiskspace: 500 nsslapd-accesslog-logminfreediskspace: 5 nsslapd-accesslog-logrotationsync-enabled: off nsslapd-accesslog-logrotationsynchour: 0 nsslapd-accesslog-logrotationsyncmin: 0 nsslapd-accesslog-logrotationtime: 1 nsslapd-accesslog-logrotationtimeunit: day nsslapd-accesslog-maxlogsize: 100 nsslapd-accesslog-maxlogsperdir: 10 nsslapd-accesslog-mode: 600 nsslapd-allow-anonymous-access: on nsslapd-allow-hashed-passwords: off nsslapd-allow-unauthenticated-binds: off nsslapd-allowed-sasl-mechanisms: nsslapd-anonlimitsdn: nsslapd-attribute-name-exceptions: off nsslapd-auditfaillog: /var/log/dirsrv/slapd-standalone1/audit nsslapd-auditfaillog-list: nsslapd-auditfaillog-logexpirationtime: 1 nsslapd-auditfaillog-logexpirationtimeunit: month nsslapd-auditfaillog-logging-enabled: off nsslapd-auditfaillog-logging-hide-unhashed-pw: on nsslapd-auditfaillog-logmaxdiskspace: 100 nsslapd-auditfaillog-logminfreediskspace: 5 nsslapd-auditfaillog-logrotationsync-enabled: off nsslapd-auditfaillog-logrotationsynchour: 0 nsslapd-auditfaillog-logrotationsyncmin: 0 nsslapd-auditfaillog-logrotationtime: 1 nsslapd-auditfaillog-logrotationtimeunit: week nsslapd-auditfaillog-maxlogsize: 100 nsslapd-auditfaillog-maxlogsperdir: 1 nsslapd-auditfaillog-mode: 600 nsslapd-auditlog: /var/log/dirsrv/slapd-standalone1/audit nsslapd-auditlog-list: nsslapd-auditlog-logexpirationtime: 1 nsslapd-auditlog-logexpirationtimeunit: month nsslapd-auditlog-logging-enabled: off nsslapd-auditlog-logging-hide-unhashed-pw: on nsslapd-auditlog-logmaxdiskspace: 100 nsslapd-auditlog-logminfreediskspace: 5 nsslapd-auditlog-logrotationsync-enabled: off nsslapd-auditlog-logrotationsynchour: 0 nsslapd-auditlog-logrotationsyncmin: 0 nsslapd-auditlog-logrotationtime: 1 nsslapd-auditlog-logrotationtimeunit: week nsslapd-auditlog-maxlogsize: 100 nsslapd-auditlog-maxlogsperdir: 1 nsslapd-auditlog-mode: 600 nsslapd-backendconfig: cn=config,cn=userRoot,cn=ldbm database,cn=plugins,cn=config nsslapd-bakdir: /var/lib/dirsrv/slapd-standalone1/bak nsslapd-betype: ldbm database nsslapd-certdir: /etc/dirsrv/slapd-standalone1 nsslapd-certmap-basedn: nsslapd-cn-uses-dn-syntax-in-dns: off nsslapd-config: cn=config nsslapd-connection-buffer: 1 nsslapd-connection-nocanon: on nsslapd-conntablesize: 16384 nsslapd-counters: on nsslapd-csnlogging: on nsslapd-defaultnamingcontext: dc=example,dc=com nsslapd-disk-monitoring: off nsslapd-disk-monitoring-grace-period: 60 nsslapd-disk-monitoring-logging-critical: off nsslapd-disk-monitoring-threshold: 2097152 nsslapd-dn-validate-strict: off nsslapd-ds4-compatible-schema: off nsslapd-dynamic-plugins: off nsslapd-enable-nunc-stans: on nsslapd-enable-turbo-mode: on nsslapd-enquote-sup-oc: off nsslapd-entryusn-global: off nsslapd-entryusn-import-initval: 0 nsslapd-errorlog: /var/log/dirsrv/slapd-standalone1/errors nsslapd-errorlog-level: 16384 nsslapd-errorlog-list: nsslapd-errorlog-logexpirationtime: 1 nsslapd-errorlog-logexpirationtimeunit: month nsslapd-errorlog-logging-enabled: on nsslapd-errorlog-logmaxdiskspace: 100 nsslapd-errorlog-logminfreediskspace: 5 nsslapd-errorlog-logrotationsync-enabled: off nsslapd-errorlog-logrotationsynchour: 0 nsslapd-errorlog-logrotationsyncmin: 0 nsslapd-errorlog-logrotationtime: 1 nsslapd-errorlog-logrotationtimeunit: week nsslapd-errorlog-maxlogsize: 100 nsslapd-errorlog-maxlogsperdir: 1 nsslapd-errorlog-mode: 600 nsslapd-extract-pemfiles: on nsslapd-force-sasl-external: off nsslapd-global-backend-lock: off nsslapd-groupevalnestlevel: 0 nsslapd-hash-filters: off nsslapd-idletimeout: 0 nsslapd-ignore-time-skew: off nsslapd-ignore-virtual-attrs: off nsslapd-instancedir: /usr/lib64/dirsrv/slapd-standalone1 nsslapd-ioblocktimeout: 300000 nsslapd-lastmod: on nsslapd-ldapiautobind: off nsslapd-ldapientrysearchbase: dc=example,dc=com nsslapd-ldapifilepath: /var/run/slapd-standalone1.socket nsslapd-ldapigidnumbertype: gidNumber nsslapd-ldapilisten: off nsslapd-ldapimaprootdn: cn=Directory Manager nsslapd-ldapimaptoentries: off nsslapd-ldapiuidnumbertype: uidNumber nsslapd-ldifdir: /var/lib/dirsrv/slapd-standalone1/ldif nsslapd-listen-backlog-size: 128 nsslapd-listenhost: nsslapd-localhost: server.example.com nsslapd-localssf: 71 nsslapd-localuser: dirsrv nsslapd-lockdir: /var/lock/dirsrv/slapd-standalone1 nsslapd-logging-backend: dirsrv-log nsslapd-logging-hr-timestamps-enabled: on nsslapd-malloc-mmap-threshold: -10 nsslapd-malloc-mxfast: -10 nsslapd-malloc-trim-threshold: -10 nsslapd-max-filter-nest-level: 40 nsslapd-maxbersize: 2097152 nsslapd-maxdescriptors: 1024 nsslapd-maxsasliosize: 2097152 nsslapd-maxsimplepaged-per-conn: -1 nsslapd-maxthreadsperconn: 5 nsslapd-minssf: 0 nsslapd-minssf-exclude-rootdse: off nsslapd-moddn-aci: on nsslapd-nagle: on nsslapd-ndn-cache-enabled: on nsslapd-ndn-cache-max-size: 20971520 nsslapd-outbound-ldap-io-timeout: 300000 nsslapd-pagedsizelimit: 0 nsslapd-plugin: cn=case ignore string syntax,cn=plugins,cn=config nsslapd-plugin: cn=case exact string syntax,cn=plugins,cn=config nsslapd-plugin: cn=binary syntax,cn=plugins,cn=config nsslapd-plugin: cn=bit string syntax,cn=plugins,cn=config nsslapd-plugin: cn=octet string syntax,cn=plugins,cn=config nsslapd-plugin: cn=boolean syntax,cn=plugins,cn=config nsslapd-plugin: cn=generalized time syntax,cn=plugins,cn=config nsslapd-plugin: cn=telephone syntax,cn=plugins,cn=config nsslapd-plugin: cn=telex number syntax,cn=plugins,cn=config nsslapd-plugin: cn=teletex terminal identifier syntax,cn=plugins,cn=config nsslapd-plugin: cn=enhanced guide syntax,cn=plugins,cn=config nsslapd-plugin: cn=facsimile telephone number syntax,cn=plugins,cn=config nsslapd-plugin: cn=fax syntax,cn=plugins,cn=config nsslapd-plugin: cn=guide syntax,cn=plugins,cn=config nsslapd-plugin: cn=delivery method syntax,cn=plugins,cn=config nsslapd-plugin: cn=integer syntax,cn=plugins,cn=config nsslapd-plugin: cn=distinguished name syntax,cn=plugins,cn=config nsslapd-plugin: cn=name and optional uid syntax,cn=plugins,cn=config nsslapd-plugin: cn=oid syntax,cn=plugins,cn=config nsslapd-plugin: cn=jpeg syntax,cn=plugins,cn=config nsslapd-plugin: cn=country string syntax,cn=plugins,cn=config nsslapd-plugin: cn=postal address syntax,cn=plugins,cn=config nsslapd-plugin: cn=numeric string syntax,cn=plugins,cn=config nsslapd-plugin: cn=printable string syntax,cn=plugins,cn=config nsslapd-plugin: cn=generalizedtimematch,cn=plugins,cn=config nsslapd-plugin: cn=generalizedtimeorderingmatch,cn=plugins,cn=config nsslapd-plugin: cn=booleanmatch,cn=plugins,cn=config nsslapd-plugin: cn=caseignoreia5match,cn=plugins,cn=config nsslapd-plugin: cn=caseignoreia5substringsmatch,cn=plugins,cn=config nsslapd-plugin: cn=caseignorematch,cn=plugins,cn=config nsslapd-plugin: cn=caseignoreorderingmatch,cn=plugins,cn=config nsslapd-plugin: cn=caseignoresubstringsmatch,cn=plugins,cn=config nsslapd-plugin: cn=caseignorelistmatch,cn=plugins,cn=config nsslapd-plugin: cn=caseignorelistsubstringsmatch,cn=plugins,cn=config nsslapd-plugin: cn=objectidentifiermatch,cn=plugins,cn=config nsslapd-plugin: cn=directorystringfirstcomponentmatch,cn=plugins,cn=config nsslapd-plugin: cn=objectidentifierfirstcomponentmatch,cn=plugins,cn=config nsslapd-plugin: cn=caseexactia5match,cn=plugins,cn=config nsslapd-plugin: cn=caseexactmatch,cn=plugins,cn=config nsslapd-plugin: cn=caseexactorderingmatch,cn=plugins,cn=config nsslapd-plugin: cn=caseexactsubstringsmatch,cn=plugins,cn=config nsslapd-plugin: cn=caseexactia5substringsmatch,cn=plugins,cn=config nsslapd-plugin: cn=octetstringmatch,cn=plugins,cn=config nsslapd-plugin: cn=octetstringorderingmatch,cn=plugins,cn=config nsslapd-plugin: cn=bitstringmatch,cn=plugins,cn=config nsslapd-plugin: cn=telephonenumbermatch,cn=plugins,cn=config nsslapd-plugin: cn=telephonenumbersubstringsmatch,cn=plugins,cn=config nsslapd-plugin: cn=integermatch,cn=plugins,cn=config nsslapd-plugin: cn=integerorderingmatch,cn=plugins,cn=config nsslapd-plugin: cn=integerfirstcomponentmatch,cn=plugins,cn=config nsslapd-plugin: cn=distinguishednamematch,cn=plugins,cn=config nsslapd-plugin: cn=uniquemembermatch,cn=plugins,cn=config nsslapd-plugin: cn=numericstringmatch,cn=plugins,cn=config nsslapd-plugin: cn=numericstringorderingmatch,cn=plugins,cn=config nsslapd-plugin: cn=numericstringsubstringsmatch,cn=plugins,cn=config nsslapd-plugin: cn=bitwise plugin,cn=plugins,cn=config nsslapd-plugin: cn=internationalization plugin,cn=plugins,cn=config nsslapd-plugin-binddn-tracking: off nsslapd-plugin-logging: off nsslapd-port: 38901 nsslapd-privatenamespaces: cn=schema nsslapd-privatenamespaces: nsslapd-privatenamespaces: cn=monitor nsslapd-privatenamespaces: cn=config nsslapd-pwpolicy-inherit-global: off nsslapd-pwpolicy-local: off nsslapd-readonly: off nsslapd-referralmode: nsslapd-require-secure-binds: off nsslapd-requiresrestart: cn=config:nsslapd-port nsslapd-requiresrestart: cn=config:nsslapd-secureport nsslapd-requiresrestart: cn=config:nsslapd-ldapifilepath nsslapd-requiresrestart: cn=config:nsslapd-ldapilisten nsslapd-requiresrestart: cn=config:nsslapd-workingdir nsslapd-requiresrestart: cn=config:nsslapd-plugin nsslapd-requiresrestart: cn=config:nsslapd-sslclientauth nsslapd-requiresrestart: cn=config:nsslapd-changelogdir nsslapd-requiresrestart: cn=config:nsslapd-changelogsuffix nsslapd-requiresrestart: cn=config:nsslapd-changelogmaxentries nsslapd-requiresrestart: cn=config:nsslapd-changelogmaxage nsslapd-requiresrestart: cn=config:nsslapd-db-locks nsslapd-requiresrestart: cn=config:nsslapd-maxdescriptors nsslapd-requiresrestart: cn=config:nsslapd-return-exact-case nsslapd-requiresrestart: cn=config:nsslapd-schema-ignore-trailing-spaces nsslapd-requiresrestart: cn=config,cn=ldbm:nsslapd-idlistscanlimit nsslapd-requiresrestart: cn=config,cn=ldbm:nsslapd-parentcheck nsslapd-requiresrestart: cn=config,cn=ldbm:nsslapd-dbcachesize nsslapd-requiresrestart: cn=config,cn=ldbm:nsslapd-dbncache nsslapd-requiresrestart: cn=config,cn=ldbm:nsslapd-cachesize nsslapd-requiresrestart: cn=config,cn=ldbm:nsslapd-plugin nsslapd-requiresrestart: cn=encryption,cn=config:nssslsessiontimeout nsslapd-requiresrestart: cn=encryption,cn=config:nssslclientauth nsslapd-requiresrestart: cn=encryption,cn=config:nsssl2 nsslapd-requiresrestart: cn=encryption,cn=config:nsssl3 nsslapd-reservedescriptors: 64 nsslapd-result-tweak: off nsslapd-return-exact-case: on nsslapd-rewrite-rfc1274: off nsslapd-rootdn: cn=Directory Manager nsslapd-rootpw: {PBKDF2_SHA256}AAAgABDiq83PCRNHm21RR2kT5BmEWMiPeNT1tCtlMcpEUrEjTxBG0mAa005WciFT3CsLgLWBupARWL4cDBEkcJkF4AqlCKFneuoTSsTXVBjOG12Nz0W5xTy9Y2sHZGa8QaYKgECyC7+yM7+RMPeD1L9bBAAmTdQf0MxFD8CmJN1NPeIm83gZ3aAHJ7FYQI18sIjoFzaAM8opV+9eUpHccXwS3E1V4it5B2fHA5QRqNBWA0/o53yMiRWJo6V6oJtv1r8JmGzWs8dpXWy4XtAlFWk/Qfxm7GR2402YyehK/vard78cNYiZYG2i6rcxuGYCntdpOy6Xhbd01TvpVLRoT/epSDQcQFdRhSYThSmuPImm6Jvajlq+P916X+CFryG5J5+pnJYt1RVmyFSdW6vykGo8+4eWJIC00E/MI6wv3cOFPfvl nsslapd-rootpwstoragescheme: PBKDF2_SHA256 nsslapd-rundir: /var/run/dirsrv nsslapd-sasl-mapping-fallback: off nsslapd-sasl-max-buffer-size: 2097152 nsslapd-saslpath: nsslapd-schema-ignore-trailing-spaces: off nsslapd-schemacheck: on nsslapd-schemadir: /etc/dirsrv/slapd-standalone1/schema nsslapd-schemamod: on nsslapd-schemareplace: replication-only nsslapd-search-return-original-type-switch: off nsslapd-securePort: 636 nsslapd-securelistenhost: nsslapd-security: off nsslapd-sizelimit: 2000 nsslapd-snmp-index: 0 nsslapd-ssl-check-hostname: on nsslapd-svrtab: nsslapd-syntaxcheck: on nsslapd-syntaxlogging: off nsslapd-threadnumber: 24 nsslapd-timelimit: 3600 nsslapd-tls-check-crl: none nsslapd-tmpdir: /tmp nsslapd-unhashed-pw-switch: on nsslapd-validate-cert: warn nsslapd-versionstring: 389-Directory/1.4.0.13 nsslapd-workingdir: /var/log/dirsrv/slapd-standalone1 numSubordinates: 10 objectClass: top objectClass: extensibleObject objectClass: nsslapdConfig passwordAdminDN: passwordChange: on passwordCheckSyntax: off passwordExp: off passwordGraceLimit: 0 passwordHistory: off passwordInHistory: 6 passwordIsGlobalPolicy: off passwordLegacyPolicy: on passwordLockout: off passwordLockoutDuration: 3600 passwordMaxAge: 8640000 passwordMaxFailure: 3 passwordMaxRepeats: 0 passwordMin8bit: 0 passwordMinAge: 0 passwordMinAlphas: 0 passwordMinCategories: 3 passwordMinDigits: 0 passwordMinLength: 8 passwordMinLowers: 0 passwordMinSpecials: 0 passwordMinTokenLength: 3 passwordMinUppers: 0 passwordMustChange: off passwordResetFailureCount: 600 passwordSendExpiringTime: off passwordStorageScheme: PBKDF2_SHA256 passwordTrackUpdateTime: off passwordUnlock: on passwordWarning: 86400 ]
Passed suites/filter/rfc3673_all_oper_attrs_test.py::test_search_basic[cn=config-False-oper_attr_list6-objectClass] 0.14
------------------------------ Captured log call -------------------------------
rfc3673_all_oper_attrs_test.py 141 INFO bound as: cn=Directory Manager rfc3673_all_oper_attrs_test.py 151 INFO suffix: cn=config filter: ['+', 'objectClass'] rfc3673_all_oper_attrs_test.py 155 INFO results: [dn: cn=config numSubordinates: 10 objectClass: top objectClass: extensibleObject objectClass: nsslapdConfig passwordHistory: off ]
Passed suites/get_effective_rights/acceptance_test.py::test_group_aci_entry_exists 0.02
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created. acceptance_test.py 28 INFO Adding user testuser------------------------------ Captured log call -------------------------------
acceptance_test.py 55 INFO Adding group group1 acceptance_test.py 68 INFO Add an ACI granting add access to a user matching the groupdn acceptance_test.py 77 INFO dn: uid=testuser,dc=example,dc=com acceptance_test.py 79 INFO ######## entryLevelRights: b'vadn'
Passed suites/get_effective_rights/acceptance_test.py::test_group_aci_template_entry 0.01
------------------------------ Captured log call -------------------------------
acceptance_test.py 103 INFO Add an ACI granting add access to a user matching the userdn acceptance_test.py 113 INFO dn: cn=template_person_objectclass,dc=example,dc=com acceptance_test.py 115 INFO ######## entryLevelRights: b'vadn' acceptance_test.py 118 INFO dn: cn=template_groupofnames_objectclass,dc=example,dc=com acceptance_test.py 120 INFO ######## entryLevelRights: b'v'
Passed suites/gssapi_repl/gssapi_repl_test.py::test_gssapi_repl 0.00
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists
Passed suites/import/regression_test.py::test_import_be_default 6.95
---------------------------- Captured stdout setup -----------------------------
Instance slapd-standalone1 removed. OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.----------------------------- Captured stdout call -----------------------------
OK group dirsrv exists OK user dirsrv exists ----------------------------- Captured stderr call -----------------------------
[22/Jul/2018:20:05:11.025584677 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:20:05:11.041542097 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:20:05:11.058693639 -0400] - INFO - dblayer_instance_start - Import is running with nsslapd-db-private-import-mem on; No other process is allowed to access the database [22/Jul/2018:20:05:11.060131741 -0400] - INFO - check_and_set_import_cache - pagesize: 4096, available bytes 7811129344, process usage 21565440 [22/Jul/2018:20:05:11.061124963 -0400] - INFO - check_and_set_import_cache - Import allocates 3051222KB import cache. [22/Jul/2018:20:05:11.342885584 -0400] - INFO - import_main_offline - import default: Beginning import job... [22/Jul/2018:20:05:11.343983313 -0400] - INFO - import_main_offline - import default: Index buffering enabled with bucket size 100 [22/Jul/2018:20:05:11.545617796 -0400] - INFO - import_producer - import default: Processing file "/var/lib/dirsrv/slapd-standalone1/ldif/default.ldif" [22/Jul/2018:20:05:11.549479925 -0400] - INFO - import_producer - import default: Finished scanning file "/var/lib/dirsrv/slapd-standalone1/ldif/default.ldif" (13 entries) [22/Jul/2018:20:05:12.046836754 -0400] - INFO - import_monitor_threads - import default: Workers finished; cleaning up... [22/Jul/2018:20:05:12.248345818 -0400] - INFO - import_monitor_threads - import default: Workers cleaned up. [22/Jul/2018:20:05:12.249614713 -0400] - INFO - import_main_offline - import default: Cleaning up producer thread... [22/Jul/2018:20:05:12.250517252 -0400] - INFO - import_main_offline - import default: Indexing complete. Post-processing... [22/Jul/2018:20:05:12.251417015 -0400] - INFO - import_main_offline - import default: Generating numsubordinates (this may take several minutes to complete)... [22/Jul/2018:20:05:12.255248515 -0400] - INFO - import_main_offline - import default: Generating numSubordinates complete. [22/Jul/2018:20:05:12.256131000 -0400] - INFO - ldbm_get_nonleaf_ids - import default: Gathering ancestorid non-leaf IDs... [22/Jul/2018:20:05:12.256910716 -0400] - INFO - ldbm_get_nonleaf_ids - import default: Finished gathering ancestorid non-leaf IDs. [22/Jul/2018:20:05:12.258856360 -0400] - INFO - ldbm_ancestorid_new_idl_create_index - import default: Creating ancestorid index (new idl)... [22/Jul/2018:20:05:12.259970533 -0400] - INFO - ldbm_ancestorid_new_idl_create_index - import default: Created ancestorid index (new idl). [22/Jul/2018:20:05:12.260930984 -0400] - INFO - import_main_offline - import default: Flushing caches... [22/Jul/2018:20:05:12.261742807 -0400] - INFO - import_main_offline - import default: Closing files... [22/Jul/2018:20:05:12.357106741 -0400] - INFO - dblayer_pre_close - All database threads now stopped [22/Jul/2018:20:05:12.358166427 -0400] - INFO - import_main_offline - import default: Import complete. Processed 13 entries in 1 seconds. (13.00 entries/sec) ------------------------------ Captured log call -------------------------------
regression_test.py 51 INFO Adding suffix:dc=default,dc=com and backend: default... regression_test.py 56 INFO Create LDIF file and import it... regression_test.py 61 INFO Stopping the server and running offline import... regression_test.py 67 INFO Verifying entry count after import... regression_test.py 73 INFO Test PASSED
Passed suites/import/regression_test.py::test_del_suffix_import 7.06
----------------------------- Captured stdout call -----------------------------
OK group dirsrv exists OK user dirsrv exists ----------------------------- Captured stderr call -----------------------------
[22/Jul/2018:20:05:18.223319654 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:20:05:18.238671169 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:20:05:18.253259655 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:20:05:18.270742090 -0400] - INFO - dblayer_instance_start - Import is running with nsslapd-db-private-import-mem on; No other process is allowed to access the database [22/Jul/2018:20:05:18.272149129 -0400] - INFO - check_and_set_import_cache - pagesize: 4096, available bytes 7810797568, process usage 22130688 [22/Jul/2018:20:05:18.272983178 -0400] - INFO - check_and_set_import_cache - Import allocates 3051092KB import cache. [22/Jul/2018:20:05:18.530700071 -0400] - INFO - import_main_offline - import importest1: Beginning import job... [22/Jul/2018:20:05:18.531764737 -0400] - INFO - import_main_offline - import importest1: Index buffering enabled with bucket size 100 [22/Jul/2018:20:05:18.733540044 -0400] - INFO - import_producer - import importest1: Processing file "/var/lib/dirsrv/slapd-standalone1/ldif/suffix_del1.ldif" [22/Jul/2018:20:05:18.739589318 -0400] - INFO - import_producer - import importest1: Finished scanning file "/var/lib/dirsrv/slapd-standalone1/ldif/suffix_del1.ldif" (0 entries) [22/Jul/2018:20:05:18.834371738 -0400] - INFO - import_monitor_threads - import importest1: Workers finished; cleaning up... [22/Jul/2018:20:05:18.935793661 -0400] - INFO - import_monitor_threads - import importest1: Workers cleaned up. [22/Jul/2018:20:05:18.936861952 -0400] - INFO - import_main_offline - import importest1: Cleaning up producer thread... [22/Jul/2018:20:05:18.937738548 -0400] - INFO - import_main_offline - import importest1: Indexing complete. Post-processing... [22/Jul/2018:20:05:18.938594026 -0400] - INFO - import_main_offline - import importest1: Generating numsubordinates (this may take several minutes to complete)... [22/Jul/2018:20:05:18.941139875 -0400] - INFO - import_main_offline - import importest1: Generating numSubordinates complete. [22/Jul/2018:20:05:18.942056163 -0400] - INFO - ldbm_get_nonleaf_ids - import importest1: Gathering ancestorid non-leaf IDs... [22/Jul/2018:20:05:18.942926133 -0400] - INFO - ldbm_get_nonleaf_ids - import importest1: Finished gathering ancestorid non-leaf IDs. [22/Jul/2018:20:05:18.944886535 -0400] - ERR - ldbm_ancestorid_new_idl_create_index - Nothing to do to build ancestorid index [22/Jul/2018:20:05:18.945814382 -0400] - INFO - ldbm_ancestorid_new_idl_create_index - import importest1: Created ancestorid index (new idl). [22/Jul/2018:20:05:18.946651112 -0400] - INFO - import_main_offline - import importest1: Flushing caches... [22/Jul/2018:20:05:18.947455597 -0400] - INFO - import_main_offline - import importest1: Closing files... [22/Jul/2018:20:05:18.978847137 -0400] - INFO - dblayer_pre_close - All database threads now stopped [22/Jul/2018:20:05:18.980083333 -0400] - INFO - import_main_offline - import importest1: Import complete. Processed 0 entries in 0 seconds. (0.00 entries/sec) ------------------------------ Captured log call -------------------------------
regression_test.py 90 INFO Adding suffix:dc=importest1,dc=com and backend: importest1 regression_test.py 94 INFO Create LDIF file and import it regression_test.py 100 INFO Stopping the server and running offline import regression_test.py 105 INFO Deleting suffix-dc=importest2,dc=com regression_test.py 108 INFO Adding the same database-importest1 after deleting it
Passed suites/import/regression_test.py::test_del_suffix_backend 8.25
------------------------------ Captured log call -------------------------------
regression_test.py 126 INFO Adding suffix:dc=importest2,dc=com and backend: importest2 regression_test.py 130 INFO Create LDIF file and import it tasks.py 338 INFO Import task import_07222018_200522 for file /var/lib/dirsrv/slapd-standalone1/ldif/suffix_del2.ldif completed successfully regression_test.py 138 INFO Deleting suffix-dc=importest2,dc=com regression_test.py 141 INFO Adding the same database-importest2 after deleting it regression_test.py 143 INFO Checking if server can be restarted after re-adding the same database
Passed suites/mapping_tree/referral_during_tot_init_test.py::test_referral_during_tot 12.51
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists----------------------------- Captured stdout call -----------------------------
OK group dirsrv exists OK user dirsrv exists ----------------------------- Captured stderr call -----------------------------
[22/Jul/2018:20:05:59.505004703 -0400] - INFO - slapd_exemode_ldif2db - Backend Instance: userRoot [22/Jul/2018:20:05:59.509789761 -0400] - INFO - ldbm_instance_config_cachememsize_set - force a minimal value 512000 [22/Jul/2018:20:05:59.527941260 -0400] - INFO - dblayer_instance_start - Import is running with nsslapd-db-private-import-mem on; No other process is allowed to access the database [22/Jul/2018:20:05:59.529071750 -0400] - INFO - check_and_set_import_cache - pagesize: 4096, available bytes 7791763456, process usage 21377024 [22/Jul/2018:20:05:59.529856629 -0400] - INFO - check_and_set_import_cache - Import allocates 3043657KB import cache. [22/Jul/2018:20:05:59.868263195 -0400] - INFO - import_main_offline - import userRoot: Beginning import job... [22/Jul/2018:20:05:59.869206054 -0400] - INFO - import_main_offline - import userRoot: Index buffering enabled with bucket size 100 [22/Jul/2018:20:06:00.070737078 -0400] - INFO - import_producer - import userRoot: Processing file "/var/lib/dirsrv/slapd-master1/ldif/ref_during_tot_import.ldif" [22/Jul/2018:20:06:04.897562108 -0400] - INFO - import_producer - import userRoot: Finished scanning file "/var/lib/dirsrv/slapd-master1/ldif/ref_during_tot_import.ldif" (10008 entries) [22/Jul/2018:20:06:05.207210882 -0400] - INFO - import_monitor_threads - import userRoot: Workers finished; cleaning up... [22/Jul/2018:20:06:05.408825880 -0400] - INFO - import_monitor_threads - import userRoot: Workers cleaned up. [22/Jul/2018:20:06:05.409844323 -0400] - INFO - import_main_offline - import userRoot: Cleaning up producer thread... [22/Jul/2018:20:06:05.410680689 -0400] - INFO - import_main_offline - import userRoot: Indexing complete. Post-processing... [22/Jul/2018:20:06:05.411502215 -0400] - INFO - import_main_offline - import userRoot: Generating numsubordinates (this may take several minutes to complete)... [22/Jul/2018:20:06:05.416238732 -0400] - INFO - import_main_offline - import userRoot: Generating numSubordinates complete. [22/Jul/2018:20:06:05.417190660 -0400] - INFO - ldbm_get_nonleaf_ids - import userRoot: Gathering ancestorid non-leaf IDs... [22/Jul/2018:20:06:05.417965168 -0400] - INFO - ldbm_get_nonleaf_ids - import userRoot: Finished gathering ancestorid non-leaf IDs. [22/Jul/2018:20:06:05.419874547 -0400] - INFO - ldbm_ancestorid_new_idl_create_index - import userRoot: Creating ancestorid index (new idl)... [22/Jul/2018:20:06:05.569879433 -0400] - INFO - ldbm_ancestorid_new_idl_create_index - import userRoot: Created ancestorid index (new idl). [22/Jul/2018:20:06:05.571009331 -0400] - INFO - import_main_offline - import userRoot: Flushing caches... [22/Jul/2018:20:06:05.571857289 -0400] - INFO - import_main_offline - import userRoot: Closing files... [22/Jul/2018:20:06:05.858422765 -0400] - INFO - dblayer_pre_close - All database threads now stopped [22/Jul/2018:20:06:05.859629729 -0400] - INFO - import_main_offline - import userRoot: Import complete. Processed 10008 entries in 6 seconds. (1668.00 entries/sec)
Passed suites/memberof_plugin/regression_test.py::test_memberof_with_repl 98.34
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39101, 'ldap-secureport': 63801, 'server-id': 'hub1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39201, 'ldap-secureport': 63901, 'server-id': 'consumer1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 471 INFO Creating replication topology. replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39101 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39101 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39101 is working replica.py 1590 INFO SUCCESS: joined consumer from ldap://server.example.com:39001 to ldap://server.example.com:39101 replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39201 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39101 to ldap://server.example.com:39201 is was created replica.py 1647 INFO SUCCESS: joined consumer from ldap://server.example.com:39101 to ldap://server.example.com:39201 replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39201 is working------------------------------ Captured log call -------------------------------
regression_test.py 77 INFO update cn=101,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config to add nsDS5ReplicatedAttributeListTotal regression_test.py 77 INFO update cn=201,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config to add nsDS5ReplicatedAttributeListTotal regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group11,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group11,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group11,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! cn=group10,ou=Groups,dc=example,dc=com: memberof->b'cn=group11,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! cn=group10,ou=Groups,dc=example,dc=com: memberof->b'cn=group11,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! cn=group10,ou=Groups,dc=example,dc=com: memberof->b'cn=group11,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=user_0,ou=People,dc=example,dc=com: memberof->b'cn=group10,ou=Groups,dc=example,dc=com'
Passed suites/memberof_plugin/regression_test.py::test_scheme_violation_errors_logged 4.85
---------------------------- Captured stdout setup -----------------------------
Instance slapd-master1 removed. OK group dirsrv exists OK user dirsrv exists OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 39001, 'ldap-secureport': 63701, 'server-id': 'master1', 'suffix': 'dc=example,dc=com'} was created. topologies.py 106 INFO Instance with parameters {'ldap-port': 39002, 'ldap-secureport': 63702, 'server-id': 'master2', 'suffix': 'dc=example,dc=com'} was created. topologies.py 139 INFO Creating replication topology. topologies.py 153 INFO Joining master master2 to master1 ... replica.py 1463 INFO SUCCESS: bootstrap to ldap://server.example.com:39002 completed replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 is was created replica.py 1744 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 is was created replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working replica.py 1532 INFO SUCCESS: joined master from ldap://server.example.com:39001 to ldap://server.example.com:39002 topologies.py 161 INFO Ensuring master master1 to master2 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39001 to ldap://server.example.com:39002 already exists topologies.py 161 INFO Ensuring master master2 to master1 ... replica.py 1717 INFO SUCCESS: Agreement from ldap://server.example.com:39002 to ldap://server.example.com:39001 already exists------------------------------ Captured log call -------------------------------
regression_test.py 318 INFO memberOf attr value - cn=group1,ou=Groups,dc=example,dc=com regression_test.py 321 INFO pattern = .*oc_check_allowed_sv.*uid=user_,ou=People,dc=example,dc=com.*memberOf.*not allowed.*
Passed suites/memberof_plugin/regression_test.py::test_memberof_with_changelog_reset 62.69
------------------------------ Captured log call -------------------------------
regression_test.py 353 INFO Configure memberof on M1 and M2 regression_test.py 364 INFO On M1, add 999 test entries allowing memberof regression_test.py 51 INFO Adding 999 users regression_test.py 367 INFO On M1, add a group with these 999 entries as members regression_test.py 375 INFO Adding the test group using async function regression_test.py 385 INFO Check the log messages for error regression_test.py 389 INFO Check that the replication is working fine both ways, M1 <-> M2 replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39001 to ldap://server.example.com:39002 is working replica.py 1875 INFO SUCCESS: Replication from ldap://server.example.com:39002 to ldap://server.example.com:39001 is working
Passed suites/memberof_plugin/regression_test.py::test_memberof_group 5.00
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
regression_test.py 480 INFO Enable memberof plugin and set the scope as cn=sub1,dc=example,dc=com regression_test.py 439 INFO !!!!!!! uid=test_m1,cn=sub1,dc=example,dc=com: memberof->b'cn=g1,cn=sub1,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=test_m2,cn=sub1,dc=example,dc=com: memberof->b'cn=g1,cn=sub1,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=test_m1,cn=sub1,dc=example,dc=com: memberof->b'cn=g1,cn=sub1,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=test_m2,cn=sub1,dc=example,dc=com: memberof->b'cn=g1,cn=sub1,dc=example,dc=com' regression_test.py 426 CRITICAL Renaming user (cn=g2,cn=sub2,dc=example,dc=com): new cn=g2-new regression_test.py 439 INFO !!!!!!! uid=test_m1,cn=sub1,dc=example,dc=com: memberof->b'cn=g1,cn=sub1,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=test_m2,cn=sub1,dc=example,dc=com: memberof->b'cn=g1,cn=sub1,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=test_m1,cn=sub1,dc=example,dc=com: memberof->b'cn=g1,cn=sub1,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=test_m1,cn=sub1,dc=example,dc=com: memberof->b'cn=g2-new,cn=sub1,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=test_m2,cn=sub1,dc=example,dc=com: memberof->b'cn=g1,cn=sub1,dc=example,dc=com' regression_test.py 439 INFO !!!!!!! uid=test_m2,cn=sub1,dc=example,dc=com: memberof->b'cn=g2-new,cn=sub1,dc=example,dc=com'
Passed suites/monitor/monitor_test.py::test_monitor 0.02
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
monitor_test.py 42 INFO connection: ['64:20180723001034Z:2:1:-:cn=directory manager:0:0:0:1:ip=fe80::f816:3eff:fe42:f9f8%eth0'], currentconnections: ['1'], totalconnections: ['1'] monitor_test.py 46 INFO version :: ['64:20180723001034Z:5:4:-:cn=directory manager:0:0:0:1:ip=fe80::f816:3eff:fe42:f9f8%eth0'] monitor_test.py 50 INFO threads: ['24'],currentconnectionsatmaxthreads: ['0'],maxthreadsperconnhits: ['0'] monitor_test.py 54 INFO nbackends: ['1'], backendmonitordn: ['cn=monitor,cn=userRoot,cn=ldbm database,cn=plugins,cn=config'] monitor_test.py 58 INFO opsinitiated: ['11'], opscompleted: ['12'] monitor_test.py 62 INFO dtablesize: ['1024'],readwaiters: ['0'],entriessent: ['13'],bytessent: ['1061'],currenttime: ['20180723001034Z'],starttime: ['20180723001034Z']
Passed suites/paged_results/paged_results_test.py::test_search_success[6-5] 0.34
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created. paged_results_test.py 54 INFO Adding user simplepaged_test------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 5 users paged_results_test.py 244 INFO Set user bind simplepaged_test paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 6; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbf0ad15a20>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 250 INFO 5 results paged_results_test.py 153 INFO Deleting 5 users
Passed suites/paged_results/paged_results_test.py::test_search_success[5-5] 0.32
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 5 users paged_results_test.py 244 INFO Set user bind simplepaged_test paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 5; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbf0b802588>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 250 INFO 5 results paged_results_test.py 153 INFO Deleting 5 users
Passed suites/paged_results/paged_results_test.py::test_search_success[5-25] 1.23
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 25 users paged_results_test.py 244 INFO Set user bind simplepaged_test paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 5; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbf0ad2a128>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 197 INFO Getting page 1 paged_results_test.py 197 INFO Getting page 2 paged_results_test.py 197 INFO Getting page 3 paged_results_test.py 197 INFO Getting page 4 paged_results_test.py 250 INFO 25 results paged_results_test.py 153 INFO Deleting 25 users
Passed suites/paged_results/paged_results_test.py::test_search_limits_fail[50-200-cn=config,cn=ldbm database,cn=plugins,cn=config-nsslapd-idlistscanlimit-100-UNWILLING_TO_PERFORM] 9.20
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 200 users paged_results_test.py 168 INFO Set nsslapd-idlistscanlimit to 100. Previous value - b'4000'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config. paged_results_test.py 295 INFO Set user bind paged_results_test.py 298 INFO Create simple paged results control instance paged_results_test.py 304 INFO Initiate ldapsearch with created control instance paged_results_test.py 316 INFO Getting page 0 paged_results_test.py 153 INFO Deleting 200 users paged_results_test.py 168 INFO Set nsslapd-idlistscanlimit to b'4000'. Previous value - b'100'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config.
Passed suites/paged_results/paged_results_test.py::test_search_limits_fail[5-15-cn=config-nsslapd-timelimit-20-UNAVAILABLE_CRITICAL_EXTENSION] 30.86
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 15 users paged_results_test.py 168 INFO Set nsslapd-timelimit to 20. Previous value - b'3600'. Modified suffix - cn=config. paged_results_test.py 295 INFO Set user bind paged_results_test.py 298 INFO Create simple paged results control instance paged_results_test.py 304 INFO Initiate ldapsearch with created control instance paged_results_test.py 316 INFO Getting page 0 paged_results_test.py 153 INFO Deleting 15 users paged_results_test.py 168 INFO Set nsslapd-timelimit to b'3600'. Previous value - b'20'. Modified suffix - cn=config.
Passed suites/paged_results/paged_results_test.py::test_search_limits_fail[21-50-cn=config-nsslapd-sizelimit-20-SIZELIMIT_EXCEEDED] 2.44
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 50 users paged_results_test.py 168 INFO Set nsslapd-sizelimit to 20. Previous value - b'2000'. Modified suffix - cn=config. paged_results_test.py 295 INFO Set user bind paged_results_test.py 298 INFO Create simple paged results control instance paged_results_test.py 304 INFO Initiate ldapsearch with created control instance paged_results_test.py 316 INFO Getting page 0 paged_results_test.py 153 INFO Deleting 50 users paged_results_test.py 168 INFO Set nsslapd-sizelimit to b'2000'. Previous value - b'20'. Modified suffix - cn=config.
Passed suites/paged_results/paged_results_test.py::test_search_limits_fail[21-50-cn=config-nsslapd-pagedsizelimit-5-SIZELIMIT_EXCEEDED] 2.54
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 50 users paged_results_test.py 168 INFO Set nsslapd-pagedsizelimit to 5. Previous value - b'0'. Modified suffix - cn=config. paged_results_test.py 295 INFO Set user bind paged_results_test.py 298 INFO Create simple paged results control instance paged_results_test.py 304 INFO Initiate ldapsearch with created control instance paged_results_test.py 316 INFO Getting page 0 paged_results_test.py 153 INFO Deleting 50 users paged_results_test.py 168 INFO Set nsslapd-pagedsizelimit to b'0'. Previous value - b'5'. Modified suffix - cn=config.
Passed suites/paged_results/paged_results_test.py::test_search_limits_fail[5-50-cn=config,cn=ldbm database,cn=plugins,cn=config-nsslapd-lookthroughlimit-20-ADMINLIMIT_EXCEEDED] 2.35
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 50 users paged_results_test.py 168 INFO Set nsslapd-lookthroughlimit to 20. Previous value - b'5000'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config. paged_results_test.py 295 INFO Set user bind paged_results_test.py 298 INFO Create simple paged results control instance paged_results_test.py 304 INFO Initiate ldapsearch with created control instance paged_results_test.py 316 INFO Getting page 0 paged_results_test.py 153 INFO Deleting 50 users paged_results_test.py 168 INFO Set nsslapd-lookthroughlimit to b'5000'. Previous value - b'20'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config.
Passed suites/paged_results/paged_results_test.py::test_search_sort_success 2.41
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 50 users paged_results_test.py 375 INFO Initiate ldapsearch with created control instance paged_results_test.py 376 INFO Collect data with sorting paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 5; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbefb38be80>, <lib389._controls.SSSRequestControl object at 0x7fbf0ad154a8>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 197 INFO Getting page 1 paged_results_test.py 197 INFO Getting page 2 paged_results_test.py 197 INFO Getting page 3 paged_results_test.py 197 INFO Getting page 4 paged_results_test.py 197 INFO Getting page 5 paged_results_test.py 197 INFO Getting page 6 paged_results_test.py 197 INFO Getting page 7 paged_results_test.py 197 INFO Getting page 8 paged_results_test.py 197 INFO Getting page 9 paged_results_test.py 381 INFO Substring numbers from user DNs paged_results_test.py 385 INFO Assert that list is sorted paged_results_test.py 153 INFO Deleting 50 users
Passed suites/paged_results/paged_results_test.py::test_search_abandon 5.57
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 10 users paged_results_test.py 416 INFO Set user bind paged_results_test.py 419 INFO Create simple paged results control instance paged_results_test.py 423 INFO Initiate a search with a paged results control paged_results_test.py 426 INFO Abandon the search paged_results_test.py 429 INFO Expect an ldap.TIMEOUT exception, while trying to get the search results paged_results_test.py 153 INFO Deleting 10 users
Passed suites/paged_results/paged_results_test.py::test_search_with_timelimit 34.75
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 100 users paged_results_test.py 465 INFO Set user bind paged_results_test.py 468 INFO Create simple paged results control instance paged_results_test.py 473 INFO Iteration 0 paged_results_test.py 480 INFO Getting page 0 paged_results_test.py 480 INFO Getting page 1 paged_results_test.py 497 INFO Done with this search - sleeping 10 seconds paged_results_test.py 473 INFO Iteration 1 paged_results_test.py 480 INFO Getting page 0 paged_results_test.py 480 INFO Getting page 1 paged_results_test.py 497 INFO Done with this search - sleeping 10 seconds paged_results_test.py 473 INFO Iteration 2 paged_results_test.py 480 INFO Getting page 0 paged_results_test.py 480 INFO Getting page 1 paged_results_test.py 497 INFO Done with this search - sleeping 10 seconds paged_results_test.py 153 INFO Deleting 100 users
Passed suites/paged_results/paged_results_test.py::test_search_dns_ip_aci[dns = "server.example.com"] 4.68
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 100 users paged_results_test.py 542 INFO Back up current suffix ACI paged_results_test.py 545 INFO Add test ACI paged_results_test.py 551 INFO Set user bind paged_results_test.py 554 INFO Create simple paged results control instance paged_results_test.py 558 INFO Initiate three searches with a paged results control paged_results_test.py 560 INFO 1 search paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 5; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbefb32eb70>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 197 INFO Getting page 1 paged_results_test.py 197 INFO Getting page 2 paged_results_test.py 197 INFO Getting page 3 paged_results_test.py 197 INFO Getting page 4 paged_results_test.py 197 INFO Getting page 5 paged_results_test.py 197 INFO Getting page 6 paged_results_test.py 197 INFO Getting page 7 paged_results_test.py 197 INFO Getting page 8 paged_results_test.py 197 INFO Getting page 9 paged_results_test.py 197 INFO Getting page 10 paged_results_test.py 197 INFO Getting page 11 paged_results_test.py 197 INFO Getting page 12 paged_results_test.py 197 INFO Getting page 13 paged_results_test.py 197 INFO Getting page 14 paged_results_test.py 197 INFO Getting page 15 paged_results_test.py 197 INFO Getting page 16 paged_results_test.py 197 INFO Getting page 17 paged_results_test.py 197 INFO Getting page 18 paged_results_test.py 197 INFO Getting page 19 paged_results_test.py 563 INFO 100 results paged_results_test.py 560 INFO 2 search paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 5; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbefb32eb70>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 197 INFO Getting page 1 paged_results_test.py 197 INFO Getting page 2 paged_results_test.py 197 INFO Getting page 3 paged_results_test.py 197 INFO Getting page 4 paged_results_test.py 197 INFO Getting page 5 paged_results_test.py 197 INFO Getting page 6 paged_results_test.py 197 INFO Getting page 7 paged_results_test.py 197 INFO Getting page 8 paged_results_test.py 197 INFO Getting page 9 paged_results_test.py 197 INFO Getting page 10 paged_results_test.py 197 INFO Getting page 11 paged_results_test.py 197 INFO Getting page 12 paged_results_test.py 197 INFO Getting page 13 paged_results_test.py 197 INFO Getting page 14 paged_results_test.py 197 INFO Getting page 15 paged_results_test.py 197 INFO Getting page 16 paged_results_test.py 197 INFO Getting page 17 paged_results_test.py 197 INFO Getting page 18 paged_results_test.py 197 INFO Getting page 19 paged_results_test.py 563 INFO 100 results paged_results_test.py 560 INFO 3 search paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 5; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbefb32eb70>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 197 INFO Getting page 1 paged_results_test.py 197 INFO Getting page 2 paged_results_test.py 197 INFO Getting page 3 paged_results_test.py 197 INFO Getting page 4 paged_results_test.py 197 INFO Getting page 5 paged_results_test.py 197 INFO Getting page 6 paged_results_test.py 197 INFO Getting page 7 paged_results_test.py 197 INFO Getting page 8 paged_results_test.py 197 INFO Getting page 9 paged_results_test.py 197 INFO Getting page 10 paged_results_test.py 197 INFO Getting page 11 paged_results_test.py 197 INFO Getting page 12 paged_results_test.py 197 INFO Getting page 13 paged_results_test.py 197 INFO Getting page 14 paged_results_test.py 197 INFO Getting page 15 paged_results_test.py 197 INFO Getting page 16 paged_results_test.py 197 INFO Getting page 17 paged_results_test.py 197 INFO Getting page 18 paged_results_test.py 197 INFO Getting page 19 paged_results_test.py 563 INFO 100 results paged_results_test.py 565 INFO If we are here, then no error has happened. We are good. paged_results_test.py 568 INFO Restore ACI paged_results_test.py 153 INFO Deleting 100 users
Passed suites/paged_results/paged_results_test.py::test_search_multiple_paging 4.64
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 100 users paged_results_test.py 601 INFO Set user bind paged_results_test.py 604 INFO Create simple paged results control instance paged_results_test.py 609 INFO Iteration 0 paged_results_test.py 609 INFO Iteration 1 paged_results_test.py 609 INFO Iteration 2 paged_results_test.py 153 INFO Deleting 100 users
Passed suites/paged_results/paged_results_test.py::test_search_invalid_cookie[1000] 4.64
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 100 users paged_results_test.py 655 INFO Set user bind paged_results_test.py 658 INFO Create simple paged results control instance paged_results_test.py 667 INFO Put an invalid cookie (1000) to the control. TypeError is expected paged_results_test.py 153 INFO Deleting 100 users
Passed suites/paged_results/paged_results_test.py::test_search_invalid_cookie[-1] 4.70
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 100 users paged_results_test.py 655 INFO Set user bind paged_results_test.py 658 INFO Create simple paged results control instance paged_results_test.py 667 INFO Put an invalid cookie (-1) to the control. TypeError is expected paged_results_test.py 153 INFO Deleting 100 users
Passed suites/paged_results/paged_results_test.py::test_search_abandon_with_zero_size 0.60
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 10 users paged_results_test.py 699 INFO Set user bind paged_results_test.py 702 INFO Create simple paged results control instance paged_results_test.py 153 INFO Deleting 10 users
Passed suites/paged_results/paged_results_test.py::test_search_pagedsizelimit_success 0.61
------------------------------ Captured log call -------------------------------
paged_results_test.py 168 INFO Set nsslapd-pagedsizelimit to 20. Previous value - b'0'. Modified suffix - cn=config. paged_results_test.py 131 INFO Adding 10 users paged_results_test.py 748 INFO Set user bind paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 10; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbf0ae49208>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 756 INFO 10 results paged_results_test.py 153 INFO Deleting 10 users paged_results_test.py 168 INFO Set nsslapd-pagedsizelimit to b'0'. Previous value - b'20'. Modified suffix - cn=config.
Passed suites/paged_results/paged_results_test.py::test_search_nspagedsizelimit[5-15-PASS] 0.63
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 10 users paged_results_test.py 168 INFO Set nsslapd-pagedsizelimit to 5. Previous value - b'0'. Modified suffix - cn=config. paged_results_test.py 168 INFO Set nsPagedSizeLimit to 15. Previous value - None. Modified suffix - uid=simplepaged_test,ou=People,dc=example,dc=com. paged_results_test.py 810 INFO Set user bind paged_results_test.py 821 INFO Expect to pass paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 10; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbf0aa21320>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 823 INFO 10 results paged_results_test.py 153 INFO Deleting 10 users paged_results_test.py 168 INFO Set nsslapd-pagedsizelimit to b'0'. Previous value - b'5'. Modified suffix - cn=config. paged_results_test.py 168 INFO Set nsPagedSizeLimit to None. Previous value - b'15'. Modified suffix - uid=simplepaged_test,ou=People,dc=example,dc=com.
Passed suites/paged_results/paged_results_test.py::test_search_nspagedsizelimit[15-5-SIZELIMIT_EXCEEDED] 0.64
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 10 users paged_results_test.py 168 INFO Set nsslapd-pagedsizelimit to 15. Previous value - b'0'. Modified suffix - cn=config. paged_results_test.py 168 INFO Set nsPagedSizeLimit to 5. Previous value - None. Modified suffix - uid=simplepaged_test,ou=People,dc=example,dc=com. paged_results_test.py 810 INFO Set user bind paged_results_test.py 817 INFO Expect to fail with SIZELIMIT_EXCEEDED paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 10; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbf0b07d6d8>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 153 INFO Deleting 10 users paged_results_test.py 168 INFO Set nsslapd-pagedsizelimit to b'0'. Previous value - b'15'. Modified suffix - cn=config. paged_results_test.py 168 INFO Set nsPagedSizeLimit to None. Previous value - b'5'. Modified suffix - uid=simplepaged_test,ou=People,dc=example,dc=com.
Passed suites/paged_results/paged_results_test.py::test_search_paged_limits[conf_attr_values0-ADMINLIMIT_EXCEEDED] 4.93
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 101 users paged_results_test.py 168 INFO Set nsslapd-sizelimit to 5000. Previous value - b'2000'. Modified suffix - cn=config. paged_results_test.py 168 INFO Set nsslapd-pagedsizelimit to 5000. Previous value - b'0'. Modified suffix - cn=config. paged_results_test.py 168 INFO Set nsslapd-idlistscanlimit to 100. Previous value - b'4000'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config. paged_results_test.py 168 INFO Set nsslapd-lookthroughlimit to 100. Previous value - b'5000'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config. paged_results_test.py 881 INFO Set user bind paged_results_test.py 888 INFO Expect to fail with ADMINLIMIT_EXCEEDED paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 10; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbf0b08b8d0>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 197 INFO Getting page 1 paged_results_test.py 197 INFO Getting page 2 paged_results_test.py 197 INFO Getting page 3 paged_results_test.py 197 INFO Getting page 4 paged_results_test.py 197 INFO Getting page 5 paged_results_test.py 197 INFO Getting page 6 paged_results_test.py 197 INFO Getting page 7 paged_results_test.py 197 INFO Getting page 8 paged_results_test.py 153 INFO Deleting 101 users paged_results_test.py 168 INFO Set nsslapd-sizelimit to b'2000'. Previous value - b'5000'. Modified suffix - cn=config. paged_results_test.py 168 INFO Set nsslapd-pagedsizelimit to b'0'. Previous value - b'5000'. Modified suffix - cn=config. paged_results_test.py 168 INFO Set nsslapd-lookthroughlimit to b'5000'. Previous value - b'100'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config. paged_results_test.py 168 INFO Set nsslapd-idlistscanlimit to b'4000'. Previous value - b'100'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config.
Passed suites/paged_results/paged_results_test.py::test_search_paged_limits[conf_attr_values1-PASS] 4.91
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 101 users paged_results_test.py 168 INFO Set nsslapd-sizelimit to 5000. Previous value - b'2000'. Modified suffix - cn=config. paged_results_test.py 168 INFO Set nsslapd-pagedsizelimit to 5000. Previous value - b'0'. Modified suffix - cn=config. paged_results_test.py 168 INFO Set nsslapd-idlistscanlimit to 120. Previous value - b'4000'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config. paged_results_test.py 168 INFO Set nsslapd-lookthroughlimit to 122. Previous value - b'5000'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config. paged_results_test.py 881 INFO Set user bind paged_results_test.py 892 INFO Expect to pass paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 10; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbf0ae5cef0>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 197 INFO Getting page 1 paged_results_test.py 197 INFO Getting page 2 paged_results_test.py 197 INFO Getting page 3 paged_results_test.py 197 INFO Getting page 4 paged_results_test.py 197 INFO Getting page 5 paged_results_test.py 197 INFO Getting page 6 paged_results_test.py 197 INFO Getting page 7 paged_results_test.py 197 INFO Getting page 8 paged_results_test.py 197 INFO Getting page 9 paged_results_test.py 197 INFO Getting page 10 paged_results_test.py 894 INFO 101 results paged_results_test.py 153 INFO Deleting 101 users paged_results_test.py 168 INFO Set nsslapd-sizelimit to b'2000'. Previous value - b'5000'. Modified suffix - cn=config. paged_results_test.py 168 INFO Set nsslapd-pagedsizelimit to b'0'. Previous value - b'5000'. Modified suffix - cn=config. paged_results_test.py 168 INFO Set nsslapd-lookthroughlimit to b'5000'. Previous value - b'122'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config. paged_results_test.py 168 INFO Set nsslapd-idlistscanlimit to b'4000'. Previous value - b'120'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config.
Passed suites/paged_results/paged_results_test.py::test_search_paged_user_limits[conf_attr_values0-ADMINLIMIT_EXCEEDED] 4.68
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 101 users paged_results_test.py 168 INFO Set nsslapd-lookthroughlimit to 1000. Previous value - b'5000'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config. paged_results_test.py 168 INFO Set nsslapd-idlistscanlimit to 1000. Previous value - b'4000'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config. paged_results_test.py 168 INFO Set nsPagedIDListScanLimit to 100. Previous value - None. Modified suffix - uid=simplepaged_test,ou=People,dc=example,dc=com. paged_results_test.py 168 INFO Set nsPagedLookthroughLimit to 100. Previous value - None. Modified suffix - uid=simplepaged_test,ou=People,dc=example,dc=com. paged_results_test.py 954 INFO Set user bind paged_results_test.py 961 INFO Expect to fail with ADMINLIMIT_EXCEEDED paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 10; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbf0ae631d0>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 197 INFO Getting page 1 paged_results_test.py 197 INFO Getting page 2 paged_results_test.py 197 INFO Getting page 3 paged_results_test.py 197 INFO Getting page 4 paged_results_test.py 197 INFO Getting page 5 paged_results_test.py 197 INFO Getting page 6 paged_results_test.py 197 INFO Getting page 7 paged_results_test.py 197 INFO Getting page 8 paged_results_test.py 153 INFO Deleting 101 users paged_results_test.py 168 INFO Set nsslapd-lookthroughlimit to b'5000'. Previous value - b'1000'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config. paged_results_test.py 168 INFO Set nsslapd-idlistscanlimit to b'4000'. Previous value - b'1000'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config. paged_results_test.py 168 INFO Set nsPagedIDListScanLimit to None. Previous value - b'100'. Modified suffix - uid=simplepaged_test,ou=People,dc=example,dc=com. paged_results_test.py 168 INFO Set nsPagedLookthroughLimit to None. Previous value - b'100'. Modified suffix - uid=simplepaged_test,ou=People,dc=example,dc=com.
Passed suites/paged_results/paged_results_test.py::test_search_paged_user_limits[conf_attr_values1-PASS] 4.81
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 101 users paged_results_test.py 168 INFO Set nsslapd-lookthroughlimit to 1000. Previous value - b'5000'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config. paged_results_test.py 168 INFO Set nsslapd-idlistscanlimit to 1000. Previous value - b'4000'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config. paged_results_test.py 168 INFO Set nsPagedIDListScanLimit to 120. Previous value - None. Modified suffix - uid=simplepaged_test,ou=People,dc=example,dc=com. paged_results_test.py 168 INFO Set nsPagedLookthroughLimit to 122. Previous value - None. Modified suffix - uid=simplepaged_test,ou=People,dc=example,dc=com. paged_results_test.py 954 INFO Set user bind paged_results_test.py 965 INFO Expect to pass paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 10; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbf0ae5c128>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 197 INFO Getting page 1 paged_results_test.py 197 INFO Getting page 2 paged_results_test.py 197 INFO Getting page 3 paged_results_test.py 197 INFO Getting page 4 paged_results_test.py 197 INFO Getting page 5 paged_results_test.py 197 INFO Getting page 6 paged_results_test.py 197 INFO Getting page 7 paged_results_test.py 197 INFO Getting page 8 paged_results_test.py 197 INFO Getting page 9 paged_results_test.py 197 INFO Getting page 10 paged_results_test.py 967 INFO 101 results paged_results_test.py 153 INFO Deleting 101 users paged_results_test.py 168 INFO Set nsslapd-lookthroughlimit to b'5000'. Previous value - b'1000'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config. paged_results_test.py 168 INFO Set nsslapd-idlistscanlimit to b'4000'. Previous value - b'1000'. Modified suffix - cn=config,cn=ldbm database,cn=plugins,cn=config. paged_results_test.py 168 INFO Set nsPagedIDListScanLimit to None. Previous value - b'120'. Modified suffix - uid=simplepaged_test,ou=People,dc=example,dc=com. paged_results_test.py 168 INFO Set nsPagedLookthroughLimit to None. Previous value - b'122'. Modified suffix - uid=simplepaged_test,ou=People,dc=example,dc=com.
Passed suites/paged_results/paged_results_test.py::test_ger_basic 0.89
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 20 users paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 4; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbefb2796d8>, <ldap.controls.simple.GetEffectiveRightsControl object at 0x7fbf0b1c8978>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 197 INFO Getting page 1 paged_results_test.py 197 INFO Getting page 2 paged_results_test.py 197 INFO Getting page 3 paged_results_test.py 197 INFO Getting page 4 paged_results_test.py 197 INFO Getting page 5 paged_results_test.py 1005 INFO 20 results paged_results_test.py 1007 INFO Check for attributeLevelRights paged_results_test.py 1010 INFO Remove added users paged_results_test.py 153 INFO Deleting 20 users
Passed suites/paged_results/paged_results_test.py::test_multi_suffix_search 10.45
------------------------------ Captured log setup ------------------------------
paged_results_test.py 85 INFO Adding suffix:o=test_parent and backend: parent_base paged_results_test.py 94 INFO Adding ACI to allow our test user to search paged_results_test.py 106 INFO Adding suffix:ou=child,o=test_parent and backend: child_base------------------------------ Captured log call -------------------------------
paged_results_test.py 1041 INFO Clear the access log paged_results_test.py 131 INFO Adding 10 users paged_results_test.py 131 INFO Adding 10 users paged_results_test.py 194 INFO Running simple paged result search with - search suffix: o=test_parent; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 4; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbf0a9f3128>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 197 INFO Getting page 1 paged_results_test.py 197 INFO Getting page 2 paged_results_test.py 197 INFO Getting page 3 paged_results_test.py 197 INFO Getting page 4 paged_results_test.py 197 INFO Getting page 5 paged_results_test.py 1052 INFO 20 results paged_results_test.py 1055 INFO Restart the server to flush the logs paged_results_test.py 1061 INFO Assert that last pr_cookie == -1 and others pr_cookie == 0 paged_results_test.py 1066 INFO Remove added users paged_results_test.py 153 INFO Deleting 10 users paged_results_test.py 153 INFO Deleting 10 users
Passed suites/paged_results/paged_results_test.py::test_maxsimplepaged_per_conn_success[None] 1.00
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 20 users paged_results_test.py 1098 INFO Set user bind paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 4; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbf0b1c8ef0>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 197 INFO Getting page 1 paged_results_test.py 197 INFO Getting page 2 paged_results_test.py 197 INFO Getting page 3 paged_results_test.py 197 INFO Getting page 4 paged_results_test.py 1105 INFO 20 results paged_results_test.py 1108 INFO Remove added users paged_results_test.py 153 INFO Deleting 20 users
Passed suites/paged_results/paged_results_test.py::test_maxsimplepaged_per_conn_success[-1] 1.07
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 20 users paged_results_test.py 168 INFO Set nsslapd-maxsimplepaged-per-conn to -1. Previous value - b'-1'. Modified suffix - cn=config. paged_results_test.py 1098 INFO Set user bind paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 4; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbefb101d68>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 197 INFO Getting page 1 paged_results_test.py 197 INFO Getting page 2 paged_results_test.py 197 INFO Getting page 3 paged_results_test.py 197 INFO Getting page 4 paged_results_test.py 1105 INFO 20 results paged_results_test.py 1108 INFO Remove added users paged_results_test.py 153 INFO Deleting 20 users paged_results_test.py 168 INFO Set nsslapd-maxsimplepaged-per-conn to b'-1'. Previous value - b'-1'. Modified suffix - cn=config.
Passed suites/paged_results/paged_results_test.py::test_maxsimplepaged_per_conn_success[1000] 1.12
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 20 users paged_results_test.py 168 INFO Set nsslapd-maxsimplepaged-per-conn to 1000. Previous value - b'-1'. Modified suffix - cn=config. paged_results_test.py 1098 INFO Set user bind paged_results_test.py 194 INFO Running simple paged result search with - search suffix: dc=example,dc=com; filter: (uid=test*); attr list ['dn', 'sn']; page_size = 4; controls: [<ldap.controls.libldap.SimplePagedResultsControl object at 0x7fbefb32e128>]. paged_results_test.py 197 INFO Getting page 0 paged_results_test.py 197 INFO Getting page 1 paged_results_test.py 197 INFO Getting page 2 paged_results_test.py 197 INFO Getting page 3 paged_results_test.py 197 INFO Getting page 4 paged_results_test.py 1105 INFO 20 results paged_results_test.py 1108 INFO Remove added users paged_results_test.py 153 INFO Deleting 20 users paged_results_test.py 168 INFO Set nsslapd-maxsimplepaged-per-conn to b'-1'. Previous value - b'1000'. Modified suffix - cn=config.
Passed suites/paged_results/paged_results_test.py::test_maxsimplepaged_per_conn_failure[0] 1.15
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 20 users paged_results_test.py 168 INFO Set nsslapd-maxsimplepaged-per-conn to 0. Previous value - b'-1'. Modified suffix - cn=config. paged_results_test.py 1142 INFO Set user bind paged_results_test.py 1145 INFO Create simple paged results control instance paged_results_test.py 1160 INFO Remove added users paged_results_test.py 153 INFO Deleting 20 users paged_results_test.py 168 INFO Set nsslapd-maxsimplepaged-per-conn to b'-1'. Previous value - b'0'. Modified suffix - cn=config.
Passed suites/paged_results/paged_results_test.py::test_maxsimplepaged_per_conn_failure[1] 1.08
------------------------------ Captured log call -------------------------------
paged_results_test.py 131 INFO Adding 20 users paged_results_test.py 168 INFO Set nsslapd-maxsimplepaged-per-conn to 1. Previous value - b'-1'. Modified suffix - cn=config. paged_results_test.py 1142 INFO Set user bind paged_results_test.py 1145 INFO Create simple paged results control instance paged_results_test.py 1160 INFO Remove added users paged_results_test.py 153 INFO Deleting 20 users paged_results_test.py 168 INFO Set nsslapd-maxsimplepaged-per-conn to b'-1'. Previous value - b'1'. Modified suffix - cn=config.
Passed suites/password/password_test.py::test_password_delete_specific_password 0.11
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
password_test.py 40 INFO Running test_password_delete_specific_password... password_test.py 61 INFO test_password_delete_specific_password: PASSED
Passed suites/password/pbkdf2_upgrade_plugin_test.py::test_pbkdf2_upgrade 9.98
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.
Passed suites/password/pwdAdmin_test.py::test_pwdAdmin_bypass 0.27
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created. pwdAdmin_test.py 44 INFO test_pwdAdmin_init: Creating Password Administrator entries... pwdAdmin_test.py 83 INFO test_pwdAdmin_init: Configuring password policy... pwdAdmin_test.py 98 INFO Add aci to allow password admin to add/update entries... pwdAdmin_test.py 113 INFO test_pwdAdmin_init: Bind as the Password Administrator (before activating)... pwdAdmin_test.py 126 INFO test_pwdAdmin_init: Attempt to add entries with invalid passwords, these adds should fail...------------------------------ Captured log call -------------------------------
pwdAdmin_test.py 165 INFO test_pwdAdmin: Activate the Password Administator...
Passed suites/password/pwdAdmin_test.py::test_pwdAdmin_no_admin 0.17
No log output captured.
Passed suites/password/pwdAdmin_test.py::test_pwdAdmin_modify 0.27
No log output captured.
Passed suites/password/pwdAdmin_test.py::test_pwdAdmin_group 0.25
No log output captured.
Passed suites/password/pwdAdmin_test.py::test_pwdAdmin_config_validation 0.07
No log output captured.
Passed suites/password/pwdPolicy_attribute_test.py::test_change_pwd[on-off-UNWILLING_TO_PERFORM] 1.21
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ---------------------------- Captured stderr setup -----------------------------
ldap_add: Already exists (68) Container entries added. ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created. pwdPolicy_attribute_test.py 38 INFO Adding user uid=simplepaged_test,ou=people,dc=example,dc=com pwdPolicy_attribute_test.py 66 INFO Enable fine-grained policy pwdPolicy_attribute_test.py 76 INFO Create password policy for subtree ou=people,dc=example,dc=com pwdPolicy_attribute_test.py 87 INFO Add pwdpolicysubentry attribute to ou=people,dc=example,dc=com pwdPolicy_attribute_test.py 98 INFO Create password policy for subtree uid=simplepaged_test,ou=people,dc=example,dc=com pwdPolicy_attribute_test.py 109 INFO Add pwdpolicysubentry attribute to uid=simplepaged_test,ou=people,dc=example,dc=com------------------------------ Captured log call -------------------------------
pwdPolicy_attribute_test.py 149 INFO Set passwordChange to "on" - cn="cn=nsPwPolicyEntry,ou=people,dc=example,dc=com",cn=nsPwPolicyContainer,ou=people,dc=example,dc=com pwdPolicy_attribute_test.py 161 INFO Set passwordChange to "off" - cn="cn=nsPwPolicyEntry,uid=simplepaged_test,ou=people,dc=example,dc=com",cn=nsPwPolicyContainer,ou=people,dc=example,dc=com pwdPolicy_attribute_test.py 174 INFO Bind as user and modify userPassword pwdPolicy_attribute_test.py 190 INFO Bind as DM
Passed suites/password/pwdPolicy_attribute_test.py::test_change_pwd[off-off-UNWILLING_TO_PERFORM] 1.22
------------------------------ Captured log call -------------------------------
pwdPolicy_attribute_test.py 149 INFO Set passwordChange to "off" - cn="cn=nsPwPolicyEntry,ou=people,dc=example,dc=com",cn=nsPwPolicyContainer,ou=people,dc=example,dc=com pwdPolicy_attribute_test.py 161 INFO Set passwordChange to "off" - cn="cn=nsPwPolicyEntry,uid=simplepaged_test,ou=people,dc=example,dc=com",cn=nsPwPolicyContainer,ou=people,dc=example,dc=com pwdPolicy_attribute_test.py 174 INFO Bind as user and modify userPassword pwdPolicy_attribute_test.py 190 INFO Bind as DM
Passed suites/password/pwdPolicy_attribute_test.py::test_change_pwd[off-on-None] 1.25
------------------------------ Captured log call -------------------------------
pwdPolicy_attribute_test.py 149 INFO Set passwordChange to "off" - cn="cn=nsPwPolicyEntry,ou=people,dc=example,dc=com",cn=nsPwPolicyContainer,ou=people,dc=example,dc=com pwdPolicy_attribute_test.py 161 INFO Set passwordChange to "on" - cn="cn=nsPwPolicyEntry,uid=simplepaged_test,ou=people,dc=example,dc=com",cn=nsPwPolicyContainer,ou=people,dc=example,dc=com pwdPolicy_attribute_test.py 174 INFO Bind as user and modify userPassword pwdPolicy_attribute_test.py 190 INFO Bind as DM
Passed suites/password/pwdPolicy_attribute_test.py::test_change_pwd[on-on-None] 1.25
------------------------------ Captured log call -------------------------------
pwdPolicy_attribute_test.py 149 INFO Set passwordChange to "on" - cn="cn=nsPwPolicyEntry,ou=people,dc=example,dc=com",cn=nsPwPolicyContainer,ou=people,dc=example,dc=com pwdPolicy_attribute_test.py 161 INFO Set passwordChange to "on" - cn="cn=nsPwPolicyEntry,uid=simplepaged_test,ou=people,dc=example,dc=com",cn=nsPwPolicyContainer,ou=people,dc=example,dc=com pwdPolicy_attribute_test.py 174 INFO Bind as user and modify userPassword pwdPolicy_attribute_test.py 190 INFO Bind as DM
Passed suites/password/pwdPolicy_attribute_test.py::test_pwd_min_age 14.40
------------------------------ Captured log call -------------------------------
pwdPolicy_attribute_test.py 227 INFO Set passwordminage to "10" - cn="cn=nsPwPolicyEntry,ou=people,dc=example,dc=com",cn=nsPwPolicyContainer,ou=people,dc=example,dc=com pwdPolicy_attribute_test.py 238 INFO Set passwordminage to "10" - cn="cn=nsPwPolicyEntry,uid=simplepaged_test,ou=people,dc=example,dc=com",cn=nsPwPolicyContainer,ou=people,dc=example,dc=com pwdPolicy_attribute_test.py 249 INFO Set passwordminage to "10" - cn=config pwdPolicy_attribute_test.py 262 INFO Bind as user and modify userPassword pwdPolicy_attribute_test.py 273 INFO Bind as user and modify userPassword straight away after previous change pwdPolicy_attribute_test.py 280 INFO Wait 12 second pwdPolicy_attribute_test.py 284 INFO Bind as user and modify userPassword pwdPolicy_attribute_test.py 294 INFO Bind as DM
Passed suites/password/pwdPolicy_controls_test.py::test_pwd_must_change 2.36
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
pwdPolicy_controls_test.py 109 INFO Configure password policy with paswordMustChange set to "on" pwdPolicy_controls_test.py 116 INFO Reset userpassword as Directory Manager pwdPolicy_controls_test.py 125 INFO Bind should return ctrl with error code 2 (changeAfterReset)
Passed suites/password/pwdPolicy_controls_test.py::test_pwd_expired_grace_limit 6.80
------------------------------ Captured log call -------------------------------
pwdPolicy_controls_test.py 159 INFO Configure password policy with grace limit set tot 2 pwdPolicy_controls_test.py 164 INFO Change password and wait for it to expire pwdPolicy_controls_test.py 168 INFO Bind and use up one grace login (only one left) pwdPolicy_controls_test.py 178 INFO Use up last grace login, should get control pwdPolicy_controls_test.py 184 INFO No grace login available, bind should fail, and no control should be returned
Passed suites/password/pwdPolicy_controls_test.py::test_pwd_expiring_with_warning 5.63
------------------------------ Captured log call -------------------------------
pwdPolicy_controls_test.py 206 INFO Configure password policy pwdPolicy_controls_test.py 211 INFO Change password and get controls pwdPolicy_controls_test.py 222 INFO Warning has been sent, try the bind again, and recheck the expiring time
Passed suites/password/pwdPolicy_controls_test.py::test_pwd_expiring_with_no_warning 6.86
------------------------------ Captured log call -------------------------------
pwdPolicy_controls_test.py 250 INFO Configure password policy pwdPolicy_controls_test.py 255 INFO When the warning is less than the max age, we never send expiring control response pwdPolicy_controls_test.py 262 INFO Turn on sending expiring control regardless of warning pwdPolicy_controls_test.py 274 INFO Check expiring time again pwdPolicy_controls_test.py 285 INFO Turn off sending expiring control (restore the default setting)
Passed suites/password/pwdPolicy_inherit_global_test.py::test_entry_has_no_restrictions[off-off] 1.29
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created. pwdPolicy_inherit_global_test.py 43 INFO Adding user uid=buser,dc=example,dc=com pwdPolicy_inherit_global_test.py 53 INFO Adding an aci for the bind user pwdPolicy_inherit_global_test.py 82 INFO Enable fine-grained policy pwdPolicy_inherit_global_test.py 90 INFO Create password policy for subtree ou=People,dc=example,dc=com pwdPolicy_inherit_global_test.py 101 INFO Add pwdpolicysubentry attribute to ou=People,dc=example,dc=com pwdPolicy_inherit_global_test.py 112 INFO Set the default settings for the policy container. pwdPolicy_inherit_global_test.py 135 INFO Default value of nsslapd-pwpolicy-inherit-global is off pwdPolicy_inherit_global_test.py 135 INFO Default value of passwordCheckSyntax is off------------------------------ Captured log call -------------------------------
pwdPolicy_inherit_global_test.py 164 INFO Set nsslapd-pwpolicy-inherit-global to off pwdPolicy_inherit_global_test.py 165 INFO Set passwordCheckSyntax to off pwdPolicy_inherit_global_test.py 135 INFO Default value of nsslapd-pwpolicy-inherit-global is off pwdPolicy_inherit_global_test.py 135 INFO Default value of passwordCheckSyntax is off pwdPolicy_inherit_global_test.py 174 INFO Bind as test user pwdPolicy_inherit_global_test.py 177 INFO Make sure an entry added to ou=people has no password syntax restrictions. pwdPolicy_inherit_global_test.py 193 INFO Bind as DM user pwdPolicy_inherit_global_test.py 195 INFO Remove cn=test0,ou=People,dc=example,dc=com
Passed suites/password/pwdPolicy_inherit_global_test.py::test_entry_has_no_restrictions[on-off] 1.29
------------------------------ Captured log call -------------------------------
pwdPolicy_inherit_global_test.py 164 INFO Set nsslapd-pwpolicy-inherit-global to on pwdPolicy_inherit_global_test.py 165 INFO Set passwordCheckSyntax to off pwdPolicy_inherit_global_test.py 135 INFO Default value of nsslapd-pwpolicy-inherit-global is on pwdPolicy_inherit_global_test.py 135 INFO Default value of passwordCheckSyntax is off pwdPolicy_inherit_global_test.py 174 INFO Bind as test user pwdPolicy_inherit_global_test.py 177 INFO Make sure an entry added to ou=people has no password syntax restrictions. pwdPolicy_inherit_global_test.py 193 INFO Bind as DM user pwdPolicy_inherit_global_test.py 195 INFO Remove cn=test0,ou=People,dc=example,dc=com
Passed suites/password/pwdPolicy_inherit_global_test.py::test_entry_has_no_restrictions[off-on] 1.28
------------------------------ Captured log call -------------------------------
pwdPolicy_inherit_global_test.py 164 INFO Set nsslapd-pwpolicy-inherit-global to off pwdPolicy_inherit_global_test.py 165 INFO Set passwordCheckSyntax to on pwdPolicy_inherit_global_test.py 135 INFO Default value of nsslapd-pwpolicy-inherit-global is off pwdPolicy_inherit_global_test.py 135 INFO Default value of passwordCheckSyntax is on pwdPolicy_inherit_global_test.py 174 INFO Bind as test user pwdPolicy_inherit_global_test.py 177 INFO Make sure an entry added to ou=people has no password syntax restrictions. pwdPolicy_inherit_global_test.py 193 INFO Bind as DM user pwdPolicy_inherit_global_test.py 195 INFO Remove cn=test0,ou=People,dc=example,dc=com
Passed suites/password/pwdPolicy_inherit_global_test.py::test_entry_has_restrictions[cn=config] 1.31
------------------------------ Captured log call -------------------------------
pwdPolicy_inherit_global_test.py 231 INFO Set nsslapd-pwpolicy-inherit-global to on pwdPolicy_inherit_global_test.py 232 INFO Set passwordCheckSyntax to on pwdPolicy_inherit_global_test.py 135 INFO Default value of nsslapd-pwpolicy-inherit-global is on pwdPolicy_inherit_global_test.py 135 INFO Default value of passwordCheckSyntax is on pwdPolicy_inherit_global_test.py 243 INFO Bind as test user pwdPolicy_inherit_global_test.py 246 INFO Try to add user with a short password (<9) pwdPolicy_inherit_global_test.py 257 INFO Try to add user with a long password (>9) pwdPolicy_inherit_global_test.py 272 INFO Bind as DM user pwdPolicy_inherit_global_test.py 274 INFO Remove cn=test0,ou=People,dc=example,dc=com pwdPolicy_inherit_global_test.py 278 INFO There is no cn=test0,ou=People,dc=example,dc=com, it is okay
Passed suites/password/pwdPolicy_inherit_global_test.py::test_entry_has_restrictions[cn="cn=nsPwPolicyEntry,ou=People,dc=example,dc=com",cn=nsPwPolicyContainer,ou=People,dc=example,dc=com] 1.31
------------------------------ Captured log call -------------------------------
pwdPolicy_inherit_global_test.py 231 INFO Set nsslapd-pwpolicy-inherit-global to on pwdPolicy_inherit_global_test.py 232 INFO Set passwordCheckSyntax to on pwdPolicy_inherit_global_test.py 135 INFO Default value of nsslapd-pwpolicy-inherit-global is on pwdPolicy_inherit_global_test.py 135 INFO Default value of passwordCheckSyntax is on pwdPolicy_inherit_global_test.py 243 INFO Bind as test user pwdPolicy_inherit_global_test.py 246 INFO Try to add user with a short password (<9) pwdPolicy_inherit_global_test.py 257 INFO Try to add user with a long password (>9) pwdPolicy_inherit_global_test.py 272 INFO Bind as DM user pwdPolicy_inherit_global_test.py 274 INFO Remove cn=test0,ou=People,dc=example,dc=com pwdPolicy_inherit_global_test.py 278 INFO There is no cn=test0,ou=People,dc=example,dc=com, it is okay
Passed suites/password/pwdPolicy_syntax_test.py::test_basic 4.23
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created. pwdPolicy_syntax_test.py 30 INFO Enable global password policy. Check for syntax.------------------------------ Captured log call -------------------------------
pwdPolicy_syntax_test.py 115 INFO Invalid password correctly rejected by passwordMinLength: length too short pwdPolicy_syntax_test.py 115 INFO Invalid password correctly rejected by passwordMinDigits: does not contain minimum number of digits pwdPolicy_syntax_test.py 115 INFO Invalid password correctly rejected by passwordMinAlphas: does not contain minimum number of alphas pwdPolicy_syntax_test.py 115 INFO Invalid password correctly rejected by passwordMaxRepeats: too many repeating characters pwdPolicy_syntax_test.py 115 INFO Invalid password correctly rejected by passwordMinSpecials: does not contain minimum number of special characters pwdPolicy_syntax_test.py 115 INFO Invalid password correctly rejected by passwordMinLowers: does not contain minimum number of lowercase characters pwdPolicy_syntax_test.py 115 INFO Invalid password correctly rejected by passwordMinUppers: does not contain minimum number of lowercase characters pwdPolicy_syntax_test.py 238 INFO pwdPolicy tests PASSED
Passed suites/password/pwdPolicy_token_test.py::test_token_lengths 3.68
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
pwdPolicy_token_test.py 59 INFO Testing password len 4 token (test) pwdPolicy_token_test.py 64 INFO Password correctly rejected: {'desc': 'Constraint violation', 'info': 'invalid password syntax - password based off of user entry'} pwdPolicy_token_test.py 59 INFO Testing password len 6 token (test_u) pwdPolicy_token_test.py 64 INFO Password correctly rejected: {'desc': 'Constraint violation', 'info': 'invalid password syntax - password based off of user entry'} pwdPolicy_token_test.py 59 INFO Testing password len 10 token (test_user1) pwdPolicy_token_test.py 64 INFO Password correctly rejected: {'desc': 'Constraint violation', 'info': 'invalid password syntax - password based off of user entry'}
Passed suites/password/pwdPolicy_warning_test.py::test_different_values[ ] 0.03
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
pwdPolicy_warning_test.py 247 INFO Get the default value pwdPolicy_warning_test.py 251 INFO An invalid value is being tested pwdPolicy_warning_test.py 162 INFO Setting passwordSendExpiringTime to pwdPolicy_warning_test.py 255 INFO Now check the value is unchanged pwdPolicy_warning_test.py 258 INFO Invalid value was rejected correctly
Passed suites/password/pwdPolicy_warning_test.py::test_different_values[junk123] 0.03
------------------------------ Captured log call -------------------------------
pwdPolicy_warning_test.py 247 INFO Get the default value pwdPolicy_warning_test.py 251 INFO An invalid value is being tested pwdPolicy_warning_test.py 162 INFO Setting passwordSendExpiringTime to junk123 pwdPolicy_warning_test.py 255 INFO Now check the value is unchanged pwdPolicy_warning_test.py 258 INFO Invalid value junk123 was rejected correctly
Passed suites/password/pwdPolicy_warning_test.py::test_different_values[on] 1.08
------------------------------ Captured log call -------------------------------
pwdPolicy_warning_test.py 247 INFO Get the default value pwdPolicy_warning_test.py 260 INFO A valid value is being tested pwdPolicy_warning_test.py 162 INFO Setting passwordSendExpiringTime to on pwdPolicy_warning_test.py 263 INFO Now check that the value has been changed pwdPolicy_warning_test.py 266 INFO passwordSendExpiringTime is now set to on pwdPolicy_warning_test.py 268 INFO Set passwordSendExpiringTime back to the default value pwdPolicy_warning_test.py 162 INFO Setting passwordSendExpiringTime to b'off'
Passed suites/password/pwdPolicy_warning_test.py::test_different_values[off] 1.07
------------------------------ Captured log call -------------------------------
pwdPolicy_warning_test.py 247 INFO Get the default value pwdPolicy_warning_test.py 260 INFO A valid value is being tested pwdPolicy_warning_test.py 162 INFO Setting passwordSendExpiringTime to off pwdPolicy_warning_test.py 263 INFO Now check that the value has been changed pwdPolicy_warning_test.py 266 INFO passwordSendExpiringTime is now set to off pwdPolicy_warning_test.py 268 INFO Set passwordSendExpiringTime back to the default value pwdPolicy_warning_test.py 162 INFO Setting passwordSendExpiringTime to b'off'
Passed suites/password/pwdPolicy_warning_test.py::test_expiry_time 0.17
------------------------------ Captured log setup ------------------------------
pwdPolicy_warning_test.py 41 INFO Get the default values pwdPolicy_warning_test.py 48 INFO Set the new values pwdPolicy_warning_test.py 115 INFO Add the user------------------------------ Captured log call -------------------------------
pwdPolicy_warning_test.py 295 INFO Get the password expiry warning time pwdPolicy_warning_test.py 297 INFO Binding with (uid=tuser,dc=example,dc=com) and requesting the password expiry warning time pwdPolicy_warning_test.py 149 INFO Bind with the user and request the password expiry warning time pwdPolicy_warning_test.py 300 INFO Check whether the time is returned pwdPolicy_warning_test.py 304 INFO user's password will expire in 172800 seconds pwdPolicy_warning_test.py 306 INFO Rebinding as DM
Passed suites/password/pwdPolicy_warning_test.py::test_password_warning[passwordSendExpiringTime-off] 0.70
------------------------------ Captured log setup ------------------------------
pwdPolicy_warning_test.py 41 INFO Get the default values pwdPolicy_warning_test.py 48 INFO Set the new values pwdPolicy_warning_test.py 115 INFO Add the user------------------------------ Captured log call -------------------------------
pwdPolicy_warning_test.py 337 INFO Set configuration parameter pwdPolicy_warning_test.py 162 INFO Setting passwordSendExpiringTime to off pwdPolicy_warning_test.py 341 INFO Binding with (uid=tuser,dc=example,dc=com) and requesting password expiry warning time pwdPolicy_warning_test.py 149 INFO Bind with the user and request the password expiry warning time pwdPolicy_warning_test.py 344 INFO Check the state of the control pwdPolicy_warning_test.py 347 INFO Password Expiry warning time is not returned as passwordSendExpiringTime is set to off pwdPolicy_warning_test.py 352 INFO Rebinding as DM
Passed suites/password/pwdPolicy_warning_test.py::test_password_warning[passwordWarning-3600] 0.70
------------------------------ Captured log setup ------------------------------
pwdPolicy_warning_test.py 41 INFO Get the default values pwdPolicy_warning_test.py 48 INFO Set the new values pwdPolicy_warning_test.py 115 INFO Add the user------------------------------ Captured log call -------------------------------
pwdPolicy_warning_test.py 337 INFO Set configuration parameter pwdPolicy_warning_test.py 162 INFO Setting passwordWarning to 3600 pwdPolicy_warning_test.py 341 INFO Binding with (uid=tuser,dc=example,dc=com) and requesting password expiry warning time pwdPolicy_warning_test.py 149 INFO Bind with the user and request the password expiry warning time pwdPolicy_warning_test.py 344 INFO Check the state of the control pwdPolicy_warning_test.py 350 INFO (uid=tuser,dc=example,dc=com) password will expire in 172799 seconds pwdPolicy_warning_test.py 352 INFO Rebinding as DM
Passed suites/password/pwdPolicy_warning_test.py::test_with_different_password_states 0.34
------------------------------ Captured log setup ------------------------------
pwdPolicy_warning_test.py 41 INFO Get the default values pwdPolicy_warning_test.py 48 INFO Set the new values pwdPolicy_warning_test.py 115 INFO Add the user------------------------------ Captured log call -------------------------------
pwdPolicy_warning_test.py 385 INFO Expire user's password by changingpasswordExpirationTime timestamp pwdPolicy_warning_test.py 390 INFO Old passwordExpirationTime: b'20180725001605Z' pwdPolicy_warning_test.py 392 INFO New passwordExpirationTime: 20180624001605Z pwdPolicy_warning_test.py 396 INFO Attempting to bind with user uid=tuser,dc=example,dc=com and retrive the password expiry warning time pwdPolicy_warning_test.py 149 INFO Bind with the user and request the password expiry warning time pwdPolicy_warning_test.py 400 INFO Bind Failed, error: /usr/lib64/python3.6/site-packages/ldap/ldapobject.py:313: ldap.INVALID_CREDENTIALS: {'desc': 'Invalid credentials', 'info': 'password expired!'} pwdPolicy_warning_test.py 402 INFO Rebinding as DM pwdPolicy_warning_test.py 405 INFO Reverting back user's passwordExpirationTime pwdPolicy_warning_test.py 409 INFO Rebinding with uid=tuser,dc=example,dc=com and retrieving the password expiry warning time pwdPolicy_warning_test.py 149 INFO Bind with the user and request the password expiry warning time pwdPolicy_warning_test.py 412 INFO Check that the control is returned pwdPolicy_warning_test.py 416 INFO user's password will expire in 172800 seconds pwdPolicy_warning_test.py 418 INFO Rebinding as DM
Passed suites/password/pwdPolicy_warning_test.py::test_default_behavior 0.17
------------------------------ Captured log setup ------------------------------
pwdPolicy_warning_test.py 78 INFO Get the default values pwdPolicy_warning_test.py 84 INFO Set the new values pwdPolicy_warning_test.py 115 INFO Add the user------------------------------ Captured log call -------------------------------
pwdPolicy_warning_test.py 445 INFO Binding with uid=tuser,dc=example,dc=com and requesting the password expiry warning time pwdPolicy_warning_test.py 149 INFO Bind with the user and request the password expiry warning time pwdPolicy_warning_test.py 448 INFO Check that no control is returned pwdPolicy_warning_test.py 451 INFO Rebinding as DM
Passed suites/password/pwdPolicy_warning_test.py::test_when_maxage_and_warning_are_the_same 0.27
------------------------------ Captured log setup ------------------------------
pwdPolicy_warning_test.py 78 INFO Get the default values pwdPolicy_warning_test.py 84 INFO Set the new values pwdPolicy_warning_test.py 115 INFO Add the user------------------------------ Captured log call -------------------------------
pwdPolicy_warning_test.py 480 INFO Set the new values pwdPolicy_warning_test.py 484 INFO First change user's password to reset its password expiration time pwdPolicy_warning_test.py 490 INFO Binding with uid=tuser,dc=example,dc=com and requesting the password expiry warning time pwdPolicy_warning_test.py 149 INFO Bind with the user and request the password expiry warning time pwdPolicy_warning_test.py 493 INFO Check that control is returned evenif passwordSendExpiringTime is set to off pwdPolicy_warning_test.py 498 INFO user's password will expire in 86400 seconds pwdPolicy_warning_test.py 500 INFO Rebinding as DM
Passed suites/password/pwdPolicy_warning_test.py::test_with_local_policy 0.17
---------------------------- Captured stderr setup -----------------------------
Container entries added. ------------------------------ Captured log setup ------------------------------
pwdPolicy_warning_test.py 41 INFO Get the default values pwdPolicy_warning_test.py 48 INFO Set the new values pwdPolicy_warning_test.py 115 INFO Add the user pwdPolicy_warning_test.py 132 INFO Setting fine grained policy for user (uid=tuser,dc=example,dc=com)------------------------------ Captured log call -------------------------------
pwdPolicy_warning_test.py 528 INFO Attempting to get password expiry warning time for user uid=tuser,dc=example,dc=com pwdPolicy_warning_test.py 149 INFO Bind with the user and request the password expiry warning time pwdPolicy_warning_test.py 531 INFO Check that the control is not returned pwdPolicy_warning_test.py 534 INFO Password expiry warning time is not returned pwdPolicy_warning_test.py 536 INFO Rebinding as DM
Passed suites/password/pwd_algo_test.py::test_pwd_algo_test[CLEAR] 0.47
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
pwd_algo_test.py 139 INFO Test CLEAR PASSED
Passed suites/password/pwd_algo_test.py::test_pwd_algo_test[CRYPT] 0.34
------------------------------ Captured log call -------------------------------
pwd_algo_test.py 139 INFO Test CRYPT PASSED
Passed suites/password/pwd_algo_test.py::test_pwd_algo_test[CRYPT-MD5] 0.34
------------------------------ Captured log call -------------------------------
pwd_algo_test.py 139 INFO Test CRYPT-MD5 PASSED
Passed suites/password/pwd_algo_test.py::test_pwd_algo_test[CRYPT-SHA256] 0.39
------------------------------ Captured log call -------------------------------
pwd_algo_test.py 139 INFO Test CRYPT-SHA256 PASSED
Passed suites/password/pwd_algo_test.py::test_pwd_algo_test[CRYPT-SHA512] 0.40
------------------------------ Captured log call -------------------------------
pwd_algo_test.py 139 INFO Test CRYPT-SHA512 PASSED
Passed suites/password/pwd_algo_test.py::test_pwd_algo_test[MD5] 0.47
------------------------------ Captured log call -------------------------------
pwd_algo_test.py 139 INFO Test MD5 PASSED
Passed suites/password/pwd_algo_test.py::test_pwd_algo_test[SHA] 0.46
------------------------------ Captured log call -------------------------------
pwd_algo_test.py 139 INFO Test SHA PASSED
Passed suites/password/pwd_algo_test.py::test_pwd_algo_test[SHA256] 0.46
------------------------------ Captured log call -------------------------------
pwd_algo_test.py 139 INFO Test SHA256 PASSED
Passed suites/password/pwd_algo_test.py::test_pwd_algo_test[SHA384] 0.47
------------------------------ Captured log call -------------------------------
pwd_algo_test.py 139 INFO Test SHA384 PASSED
Passed suites/password/pwd_algo_test.py::test_pwd_algo_test[SHA512] 0.46
------------------------------ Captured log call -------------------------------
pwd_algo_test.py 139 INFO Test SHA512 PASSED
Passed suites/password/pwd_algo_test.py::test_pwd_algo_test[SMD5] 0.47
------------------------------ Captured log call -------------------------------
pwd_algo_test.py 139 INFO Test SMD5 PASSED
Passed suites/password/pwd_algo_test.py::test_pwd_algo_test[SSHA] 0.46
------------------------------ Captured log call -------------------------------
pwd_algo_test.py 139 INFO Test SSHA PASSED
Passed suites/password/pwd_algo_test.py::test_pwd_algo_test[SSHA256] 0.48
------------------------------ Captured log call -------------------------------
pwd_algo_test.py 139 INFO Test SSHA256 PASSED
Passed suites/password/pwd_algo_test.py::test_pwd_algo_test[SSHA384] 0.47
------------------------------ Captured log call -------------------------------
pwd_algo_test.py 139 INFO Test SSHA384 PASSED
Passed suites/password/pwd_algo_test.py::test_pwd_algo_test[SSHA512] 0.45
------------------------------ Captured log call -------------------------------
pwd_algo_test.py 139 INFO Test SSHA512 PASSED
Passed suites/password/pwd_algo_test.py::test_pwd_algo_test[PBKDF2_SHA256] 0.73
------------------------------ Captured log call -------------------------------
pwd_algo_test.py 139 INFO Test PBKDF2_SHA256 PASSED
Passed suites/password/pwd_algo_test.py::test_pwd_algo_test[DEFAULT] 0.76
------------------------------ Captured log call -------------------------------
pwd_algo_test.py 139 INFO Test DEFAULT PASSED
Passed suites/password/pwd_algo_test.py::test_pbkdf2_algo 3.49
------------------------------ Captured log call -------------------------------
pwd_algo_test.py 170 INFO Test PASSED
Passed suites/password/pwd_lockout_bypass_test.py::test_lockout_bypass 0.46
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.
Passed suites/password/pwd_log_test.py::test_hide_unhashed_pwd 4.21
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
pwd_log_test.py 97 INFO Test complete pwd_log_test.py 112 INFO Test complete
Passed suites/password/pwp_history_test.py::test_basic 8.21
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ------------------------------ Captured log setup ------------------------------
topologies.py 106 INFO Instance with parameters {'ldap-port': 38901, 'ldap-secureport': 63601, 'server-id': 'standalone1', 'suffix': 'dc=example,dc=com'} was created.------------------------------ Captured log call -------------------------------
pwp_history_test.py 62 INFO Configured password policy. pwp_history_test.py 95 INFO Password change correctly rejected pwp_history_test.py 173 INFO Correct number of passwords found in history. pwp_history_test.py 187 INFO Password change correctly rejected pwp_history_test.py 199 INFO Password change correctly rejected pwp_history_test.py 209 INFO Password change correctly rejected pwp_history_test.py 246 INFO Password change correctly rejected pwp_history_test.py 251 INFO Test suite PASSED.
Passed suites/password/regression_test.py::test_pwp_local_unlock 4.46
---------------------------- Captured stdout setup -----------------------------
OK group dirsrv exists OK user dirsrv exists ou=people,dc=example,dc=com ------------------------------ Captured log setup ------------------------------