dirsrvtests/create_test.py | 173 ++++++++++++++++++++++++++++-----------------
1 file changed, 108 insertions(+), 65 deletions(-)
New commits:
commit 17f30c60cfdbd6b4f7a68f93ad0f9b6f0d8c52f5
Author: Mark Reynolds <mreynolds(a)redhat.com>
Date: Fri May 20 17:22:01 2016 -0400
Ticket 48795 - Make various improvements to create_test.py
Description: Made the following improvements to the create_test.py script:
- Added a new line at the end of the generated script (pep8)
- Fixed the way replication agreement names were generated
- Added docstrings where needed (sphinx documentation)
- Added a new DEBUGGING flag that if set stops instances
instead of removing them, sets "verbose=True" for
Dirsrv
objects, and adds an area where debugging steps can be set.
https://fedorahosted.org/389/ticket/48795
Reviewed by: spichugi(Thanks!)
diff --git a/dirsrvtests/create_test.py b/dirsrvtests/create_test.py
index 7b06fdb..46c8217 100755
--- a/dirsrvtests/create_test.py
+++ b/dirsrvtests/create_test.py
@@ -1,7 +1,7 @@
#!/usr/bin/python
#
# --- BEGIN COPYRIGHT BLOCK ---
-# Copyright (C) 2015 Red Hat, Inc.
+# Copyright (C) 2016 Red Hat, Inc.
# All rights reserved.
#
# License: GPL (version 3 or any later version).
@@ -21,6 +21,7 @@ non-interesting parts of a test script:
def displayUsage():
+ """Display the usage"""
print ('\nUsage:\ncreate_ticket.py -t|--ticket <ticket number> ' +
'-s|--suite <suite name> ' +
'[ i|--instances <number of standalone instances> ' +
@@ -36,29 +37,43 @@ def displayUsage():
def writeFinalizer():
- """Write the finalizer function - delete each
instance"""
+ """Write the finalizer function - delete/stop each
instance"""
+
+ def writeInstanceOp(action):
+ """Write instance finializer action"""
+ if repl_deployment:
+ for idx in range(masters):
+ idx += 1
+ TEST.write(' master' + str(idx) + '.' + action
+
+ '()\n')
+ for idx in range(hubs):
+ idx += 1
+ TEST.write(' hub' + str(idx) + '.' + action +
+ '()\n')
+ for idx in range(consumers):
+ idx += 1
+ TEST.write(' consumer' + str(idx) + '.' +
action +
+ '()\n')
+ else:
+ for idx in range(instances):
+ idx += 1
+ if idx == 1:
+ idx = ''
+ else:
+ idx = str(idx)
+ TEST.write(' standalone' + idx + '.' + action
+
+ '()\n')
- TEST.write(' # Delete each instance in the end\n')
TEST.write(' def fin():\n')
- if repl_deployment:
- for idx in range(masters):
- idx += 1
- TEST.write(' master' + str(idx) + '.delete()\n')
- for idx in range(hubs):
- idx += 1
- TEST.write(' hub' + str(idx) + '.delete()\n')
- for idx in range(consumers):
- idx += 1
- TEST.write(' consumer' + str(idx) + '.delete()\n')
- else:
- for idx in range(instances):
- idx += 1
- if idx == 1:
- idx = ''
- else:
- idx = str(idx)
- TEST.write(' standalone' + idx + '.delete()\n')
- TEST.write(' request.addfinalizer(fin)')
+ TEST.write(' """')
+ TEST.write('If we are debugging just stop the instances, ' +
+ 'otherwise remove\n them\n')
+ TEST.write(' """\n')
+ TEST.write(' if DEBUGGING:\n')
+ writeInstanceOp('stop')
+ TEST.write(' else:\n')
+ writeInstanceOp('delete')
+ TEST.write('\n request.addfinalizer(fin)')
TEST.write('\n\n')
@@ -170,13 +185,14 @@ if len(sys.argv) > 0:
'from lib389.tasks import *\nfrom lib389.utils import *\n\n')
#
- # Set the logger and installation prefix
+ # Set the logger and other settings
#
- TEST.write('logging.getLogger(__name__).setLevel(logging.DEBUG)\n')
- TEST.write('log = logging.getLogger(__name__)\n\n')
-
- # We don't need the prefix anymore, it's worked out in lib389
- # TEST.write('installation1_prefix = None\n\n\n')
+ TEST.write('DEBUGGING = False\n\n')
+ TEST.write('if DEBUGGING:\n')
+ TEST.write(' logging.getLogger(__name__).setLevel(logging.DEBUG)\n')
+ TEST.write('else:\n')
+ TEST.write(' logging.getLogger(__name__).setLevel(logging.INFO)\n\n\n')
+ TEST.write('log = logging.getLogger(__name__)\n\n\n')
#
# Write the replication or standalone classes
@@ -189,6 +205,7 @@ if len(sys.argv) > 0:
repl_deployment = True
TEST.write('class TopologyReplication(object):\n')
+ TEST.write(' """The Replication Topology
Class"""\n')
TEST.write(' def __init__(self')
for idx in range(masters):
TEST.write(', master' + str(idx + 1))
@@ -197,6 +214,7 @@ if len(sys.argv) > 0:
for idx in range(consumers):
TEST.write(', consumer' + str(idx + 1))
TEST.write('):\n')
+ TEST.write(' """Init"""\n')
for idx in range(masters):
TEST.write(' master' + str(idx + 1) + '.open()\n')
@@ -216,6 +234,7 @@ if len(sys.argv) > 0:
# Write the standalone class
#
TEST.write('class TopologyStandalone(object):\n')
+ TEST.write(' """The DS Topology
Class"""\n')
TEST.write(' def __init__(self')
for idx in range(instances):
idx += 1
@@ -225,7 +244,7 @@ if len(sys.argv) > 0:
idx = str(idx)
TEST.write(', standalone' + idx)
TEST.write('):\n')
-
+ TEST.write(' """Init"""\n')
for idx in range(instances):
idx += 1
if idx == 1:
@@ -242,19 +261,19 @@ if len(sys.argv) > 0:
#
TEST.write('(a)pytest.fixture(scope="module")\n')
TEST.write('def topology(request):\n')
- #TEST.write(' global installation1_prefix\n')
- #TEST.write(' if installation1_prefix:\n')
- #TEST.write(' args_instance[SER_DEPLOYED_DIR] = ' +
- # 'installation1_prefix\n\n')
if repl_deployment:
#
# Create the replication instances
#
+ TEST.write(' """Create Replication
Deployment"""\n\n')
for idx in range(masters):
idx = str(idx + 1)
TEST.write(' # Creating master ' + idx + '...\n')
- TEST.write(' master' + idx + ' =
DirSrv(verbose=False)\n')
+ TEST.write(' if DEBUGGING:\n')
+ TEST.write(' master' + idx + ' =
DirSrv(verbose=True)\n')
+ TEST.write(' else:\n')
+ TEST.write(' master' + idx + ' =
DirSrv(verbose=False)\n')
TEST.write(' args_instance[SER_HOST] = HOST_MASTER_' + idx +
'\n')
TEST.write(' args_instance[SER_PORT] = PORT_MASTER_' + idx +
@@ -278,7 +297,10 @@ if len(sys.argv) > 0:
for idx in range(hubs):
idx = str(idx + 1)
TEST.write(' # Creating hub ' + idx + '...\n')
- TEST.write(' hub' + idx + ' = DirSrv(verbose=False)\n')
+ TEST.write(' if DEBUGGING:\n')
+ TEST.write(' hub' + idx + ' =
DirSrv(verbose=True)\n')
+ TEST.write(' else:\n')
+ TEST.write(' hub' + idx + ' =
DirSrv(verbose=False)\n')
TEST.write(' args_instance[SER_HOST] = HOST_HUB_' + idx +
'\n')
TEST.write(' args_instance[SER_PORT] = PORT_HUB_' + idx +
'\n')
TEST.write(' args_instance[SER_SERVERID_PROP] = SERVERID_HUB_' +
@@ -300,7 +322,10 @@ if len(sys.argv) > 0:
for idx in range(consumers):
idx = str(idx + 1)
TEST.write(' # Creating consumer ' + idx + '...\n')
- TEST.write(' consumer' + idx + ' =
DirSrv(verbose=False)\n')
+ TEST.write(' if DEBUGGING:\n')
+ TEST.write(' consumer' + idx + ' =
DirSrv(verbose=True)\n')
+ TEST.write(' else:\n')
+ TEST.write(' consumer' + idx + ' =
DirSrv(verbose=False)\n')
TEST.write(' args_instance[SER_HOST] = HOST_CONSUMER_' + idx +
'\n')
TEST.write(' args_instance[SER_PORT] = PORT_CONSUMER_' + idx +
@@ -340,13 +365,15 @@ if len(sys.argv) > 0:
continue
TEST.write(' # Creating agreement from master ' +
str(master_idx) + ' to master ' + str(idx) +
'\n')
- TEST.write(" properties = {RA_NAME: " +
- "r'meTo_$host:$port',\n")
- TEST.write(" RA_BINDDN: " +
+ TEST.write(" properties = {RA_NAME: " +
+ "'meTo_' + master" + str(idx) +
+ ".host + ':' + str(master" + str(idx) +
+ ".port),\n")
+ TEST.write(" RA_BINDDN: " +
"defaultProperties[REPLICATION_BIND_DN],\n")
- TEST.write(" RA_BINDPW: " +
+ TEST.write(" RA_BINDPW: " +
"defaultProperties[REPLICATION_BIND_PW],\n")
- TEST.write(" RA_METHOD: " +
+ TEST.write(" RA_METHOD: " +
"defaultProperties[REPLICATION_BIND_METHOD],\n")
TEST.write(" RA_TRANSPORT_PROT: " +
"defaultProperties[REPLICATION_TRANSPORT]}\n")
@@ -371,13 +398,15 @@ if len(sys.argv) > 0:
#
TEST.write(' # Creating agreement from master ' +
str(master_idx) + ' to hub ' + str(idx) +
'\n')
- TEST.write(" properties = {RA_NAME: " +
- "r'meTo_$host:$port',\n")
- TEST.write(" RA_BINDDN: " +
+ TEST.write(" properties = {RA_NAME: " +
+ "'meTo_' + hub" + str(idx) +
+ ".host + ':' + str(hub" + str(idx) +
+ ".port),\n")
+ TEST.write(" RA_BINDDN: " +
"defaultProperties[REPLICATION_BIND_DN],\n")
- TEST.write(" RA_BINDPW: " +
+ TEST.write(" RA_BINDPW: " +
"defaultProperties[REPLICATION_BIND_PW],\n")
- TEST.write(" RA_METHOD: " +
+ TEST.write(" RA_METHOD: " +
"defaultProperties[REPLICATION_BIND_METHOD],\n")
TEST.write(" RA_TRANSPORT_PROT: " +
"defaultProperties[REPLICATION_TRANSPORT]}\n")
@@ -410,13 +439,15 @@ if len(sys.argv) > 0:
#
TEST.write(' # Creating agreement from hub ' + str(hub_idx)
+ ' to consumer ' + str(idx) + '\n')
- TEST.write(" properties = {RA_NAME: " +
- "r'meTo_$host:$port',\n")
- TEST.write(" RA_BINDDN: " +
+ TEST.write(" properties = {RA_NAME: " +
+ "'meTo_' + consumer" + str(idx) +
+ ".host + ':' + str(consumer" + str(idx) +
+ ".port),\n")
+ TEST.write(" RA_BINDDN: " +
"defaultProperties[REPLICATION_BIND_DN],\n")
- TEST.write(" RA_BINDPW: " +
+ TEST.write(" RA_BINDPW: " +
"defaultProperties[REPLICATION_BIND_PW],\n")
- TEST.write(" RA_METHOD: " +
+ TEST.write(" RA_METHOD: " +
"defaultProperties[REPLICATION_BIND_METHOD],\n")
TEST.write(" RA_TRANSPORT_PROT: " +
"defaultProperties[REPLICATION_TRANSPORT]}\n")
@@ -451,13 +482,15 @@ if len(sys.argv) > 0:
TEST.write(' # Creating agreement from master ' +
str(master_idx) + ' to consumer ' + str(idx) +
'\n')
- TEST.write(" properties = {RA_NAME: " +
- "r'meTo_$host:$port',\n")
- TEST.write(" RA_BINDDN: " +
+ TEST.write(" properties = {RA_NAME: " +
+ "'meTo_' + consumer" + str(idx) +
+ ".host + ':' + str(consumer" + str(idx)
+
+ ".port),\n")
+ TEST.write(" RA_BINDDN: " +
"defaultProperties[REPLICATION_BIND_DN],\n")
- TEST.write(" RA_BINDPW: " +
+ TEST.write(" RA_BINDPW: " +
"defaultProperties[REPLICATION_BIND_PW],\n")
- TEST.write(" RA_METHOD: " +
+ TEST.write(" RA_METHOD: " +
"defaultProperties[REPLICATION_BIND_METHOD],\n")
TEST.write(" RA_TRANSPORT_PROT: " +
"defaultProperties[REPLICATION_TRANSPORT]}\n")
@@ -575,6 +608,7 @@ if len(sys.argv) > 0:
#
# Args for the standalone instance
+ TEST.write(' """Create DS
Deployment"""\n\n')
for idx in range(instances):
idx += 1
if idx == 1:
@@ -582,7 +616,12 @@ if len(sys.argv) > 0:
else:
idx = str(idx)
TEST.write(' # Creating standalone instance ' + idx +
'...\n')
- TEST.write(' standalone' + idx + ' =
DirSrv(verbose=False)\n')
+ TEST.write(' if DEBUGGING:\n')
+ TEST.write(' standalone' + idx +
+ ' = DirSrv(verbose=True)\n')
+ TEST.write(' else:\n')
+ TEST.write(' standalone' + idx +
+ ' = DirSrv(verbose=False)\n')
TEST.write(' args_instance[SER_HOST] = HOST_STANDALONE' +
idx + '\n')
TEST.write(' args_instance[SER_PORT] = PORT_STANDALONE' +
@@ -630,7 +669,7 @@ if len(sys.argv) > 0:
if ticket:
TEST.write('def test_ticket' + ticket + '(topology):\n')
if repl_deployment:
- TEST.write(' """Write your replication testcase
here.\n\n')
+ TEST.write(' """Write your replication test
here.\n\n')
TEST.write(' To access each DirSrv instance use: ' +
'topology.master1, topology.master2,\n' +
' ..., topology.hub1, ..., topology.consumer1' +
@@ -643,17 +682,21 @@ if len(sys.argv) > 0:
TEST.write(' Also, if you need any testcase initialization,\n')
TEST.write(' please, write additional fixture for that' +
'(include finalizer).\n')
- TEST.write(' """\n\n')
- TEST.write(" log.info('Test complete')\n")
- TEST.write('\n\n')
+ TEST.write('\n """\n\n')
+
else:
# Write the first initial empty test function
- TEST.write('def test_' + suite + '_#####(topology):\n')
+ TEST.write('def test_' + suite + '(topology):\n')
TEST.write(' """Write a single test here...\n\n')
TEST.write(' Also, if you need any test suite initialization,\n')
TEST.write(' please, write additional fixture for that(include ' +
- 'finalizer).\n')
- TEST.write(' """\n\n return\n\n\n')
+ 'finalizer).\n """\n')
+
+ TEST.write(' if DEBUGGING:\n')
+ TEST.write(' # Add debugging steps(if any)...\n')
+ TEST.write(' pass\n\n')
+ TEST.write(" log.info('Test PASSED')\n")
+ TEST.write('\n\n')
#
# Write the main function
@@ -662,7 +705,7 @@ if len(sys.argv) > 0:
TEST.write(' # Run isolated\n')
TEST.write(' # -s for DEBUG mode\n')
TEST.write(' CURRENT_FILE = os.path.realpath(__file__)\n')
- TEST.write(' pytest.main("-s %s" % CURRENT_FILE)\n')
+ TEST.write(' pytest.main("-s %s" % CURRENT_FILE)\n\n')
#
# Done, close things up