summaryrefslogtreecommitdiffstats
path: root/SharedModules/Globals
diff options
context:
space:
mode:
Diffstat (limited to 'SharedModules/Globals')
-rw-r--r--SharedModules/Globals/atfglobals.py85
-rw-r--r--SharedModules/Globals/logger.py211
-rwxr-xr-xSharedModules/Globals/manager.py64
-rwxr-xr-xSharedModules/Globals/testenv.py462
-rw-r--r--SharedModules/Globals/testruninfo.py144
5 files changed, 0 insertions, 966 deletions
diff --git a/SharedModules/Globals/atfglobals.py b/SharedModules/Globals/atfglobals.py
deleted file mode 100644
index ff1faad..0000000
--- a/SharedModules/Globals/atfglobals.py
+++ /dev/null
@@ -1,85 +0,0 @@
-"""atfglobals module contain AtfGlobal class and GlobalObj
-
-AtfGlobals class wrapps all global objects used in the framework
-*) TestrunInfo
-*) Logger
-*) Testenv
-*) ConnectionsManager
-
-GlobalObj is 'The Instance' of AtfGlobals which will be referred throughout
-the framework utilities.
-"""
-
-import testruninfo
-import logger
-import testenv
-import manager
-
-class AtfGlobals:
-
-
- def __init__(self):
- self._testruninfo = None
- self._logger = logger.Log()
- self._env = None
- self._connectionsmanager = manager.ConnectionsManager()
-
- def getTestrunInfoObj(self):
- """Returns TestrunInfo Object
- """
- return self._testruninfo
-
- def getLoggerObj(self):
- """Returns Logger Object
- """
- return self._logger
-
- def getTestenvObj(self):
- """Returns Current TestEnvironment Object.
- """
- return self._env
-
- def getConnectionsManagerObj(self):
- """Returns ConnectionsManager Object
- """
- return self._connectionsmanager
-
- def initTestrunInfoObj(self):
- """Instantiation of TestrunInfo Object
- """
- self._testruninfo = testruninfo.TestRunInfo()
-
- def initLoggerObj(self):
- """Instantiation of Logger Object
- """
- self._logger = logger.Log()
-
- def initTestenvObj(self):
- """Instantiation of Testenv Object
- """
- self._env = testenv.TestEnv()
-
- def initConnectionsManagerObj(self):
- """Instantiation of ConnectionsManager Object
- """
- self._connectionsmanager = manager.ConnectionsManager()
-
-GlobalObj = AtfGlobals()
-__all__ = ['GlobalObj']
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/SharedModules/Globals/logger.py b/SharedModules/Globals/logger.py
deleted file mode 100644
index 9d11bd7..0000000
--- a/SharedModules/Globals/logger.py
+++ /dev/null
@@ -1,211 +0,0 @@
-"""
- logger class contains variables and methods for Logging
- the events during the test run.
-
- Variables:
- SummaryLog: [filename, loglevel, format]
-
- DetailLog: [filename, loglevel, format]
-
- StdoutLog: [loglevel, format]
-
-"""
-import logging
-
-class Log():
-
- def __init__(self):
- self._summarylog = {'format':
- '%(asctime)s %(levelname)s : %(filename)s %(lineno)d - \
- \'%(message)s\''}
- self._detaillog = {'format':
- '%(asctime)s %(levelname)s : %(pathname)s %(funcName)s \
- %(lineno)d - \'%(message)s\''}
- self._stdoutlog = {'logstatus':'false', 'format':'%(asctime)s \
- %(levelname)s : %(filename)s %(lineno)d - \'%(message)s\''}
- self._loggers = []
-
-
- def getLogLevel(self, loglevel):
- """
- Description:
- Returns logging.(LogLevel) for loglevel
-
- Parameters:
- loglevel: String specifying the loglevel
-
- Returns:
- logging.(Loglevel)
- """
-
- LEVELS = {'DEBUG': logging.DEBUG,
- 'INFO': logging.INFO,
- 'WARNING': logging.WARNING,
- 'ERROR': logging.ERROR,
- 'CRITICAL': logging.CRITICAL,
- 'debug': logging.DEBUG,
- 'info': logging.INFO,
- 'warning': logging.WARNING,
- 'error': logging.ERROR,
- 'critical': logging.CRITICAL}
- return LEVELS.get(loglevel, logging.NOTSET)
-
- def setSummaryLog(self, filename='SummaryLog.out', loglevel='INFO'):
- """
- Description:
- Set Summary Log Name and Log Level
-
- Parameters:
- filename: SummaryLog File Name
- loglevel : Log level to be set for summary log
- """
-
- self._summarylog['filename'] = filename
- self._summarylog['loglevel'] = self.getLogLevel(loglevel)
-
- def setDetailLog(self, filename='DetailLog.out', loglevel = 'DEBUG'):
- """
- Description:
- Set Detail Log Name and Log Level
-
- Parameters:
- filename: DetailLog FIle name
- loglevel: Log level to be set for detail log
- """
-
- self._detaillog['filename'] = filename
- self._detaillog['loglevel'] = self.getLogLevel(loglevel)
-
- def setStdoutLog(self, do_log=True, loglevel='INFO'):
- """
- Description:
- Set Log Level for logging to STDOUT
-
- Parameters:
- loglevel: Log level for logging to STDOUT
- """
- self._stdoutlog['do_log'] = do_log
- self._stdoutlog['loglevel'] = self.getLogLevel(loglevel)
-
- def createLogger(self, atfdir, logname='ATFLOG'):
- """
- Description:
- Create a Logger with LogName 'logname'
-
- Parameters:
- logname: Name of the Logger
-
- Return:
- Success: 0 (Successful creation of logger with name : 'logname')
- Failure: 1 (Unable to create logger with name: logname)
- """
-
- # Create a Logger Object with name "logname".
- # Set the log level to 'DEBUG'
- logger = logging.getLogger(logname)
- logger.setLevel(logging.DEBUG)
- self.loggers.append({'logname': logname})
-
- # Create Summary Log File Handler
- # Set the Log Level
- # Set the Log Record format for Summary Log
- summarylog_abspath = atfdir + "/" + self._summarylog['filename']
- try:
- summary_handler = logging.FileHandler(summarylog_abspath, mode='w')
-
- except IOError as (errno, errstr):
- print "I/0 error({0}): {1}".format(errno, errstr)
- return 1
-
- else:
- summary_formatter = logging.Formatter(self._summarylog['format'])
- summary_handler.setFormatter(summary_formatter)
- summary_handler.setLevel(self._summarylog['loglevel'])
- logger.addHandler(summary_handler)
- for log in self._loggers:
- if log['logname'] == logname:
- log['summary_handler'] = summary_handler
- break
-
- # Create Stdout Log StreamHandler if log to stdout is defined
- # Set the Log Level
- # Set the Log Record format for STDOUT
- if self._stdoutlog['do_log'] == 'true':
- stdout_handler = logging.StreamHandler()
- stdout_handler.setLevel(self._stdoutlog['loglevel'])
- stdout_formatter = logging.Formatter(self._stdoutlog['format'])
- stdout_handler.setFormatter(stdout_formatter)
- logger.addHandler(stdout_handler)
- for log in self._loggers:
- if log['logname'] == logname:
- log['stdout_handler'] = stdout_handler
- break
- return 0
-
- def addDetaillogHandler(self, abspath, logname):
- """
- Description:
- Add a Detail Log FileHandler to Logger with logname 'logname'
-
- Parameters:
- logname: Name of the Logger
-
- Returns:
- Success: 0
- Failure: 1
- """
-
- logger = logging.getLogger(logname)
-
- # Create Detail Log File Handler
- # Set the Log Level
- # Set the Log Record format for Detail Log
- abspath = abspath + self._detaillog['filename']
-
- try:
- detail_handler = logging.FileHandler(abspath, mode='w')
-
- except IOError as (errno, errstr):
- logger.error("IOError ({0}): {1}".format(errno, errstr))
- return 1
-
- else:
- detail_handler.setLevel(self._detaillog['loglevel'])
- detail_formatter = logging.Formatter(self._detaillog['format'])
- detail_handler.setFormatter(detail_formatter)
- logger.addHandler(detail_handler)
-
- for log in self._loggers:
- if log['logname'] == logname:
- log['detail_handler'] = detail_handler
- break
-
- logger.debug("Detail Log File Handler Successfully Added")
-
- return 0
-
- def removeDetaillogHandler(self, logname):
- """
- Description:
- Remove Detail Log File Handler from Logger with
- logname 'logname'
-
- Parameters:
- logname: Name of the Logger
- """
-
- logger = logging.getLogger(logname)
- Map = {}
- for log in self._loggers:
- Map = log
-
- if Map.has_key('detail_handler'):
- detail_handler = log.pop('detail_handler')
- logger.removeHandler(detail_handler)
- logger.info("DetailLog Handler Removed for the Logger: " +
- logname)
- else:
- logger.warning("DetailLog Handler Not Found for the Logger: " +
- logname)
- return
-
diff --git a/SharedModules/Globals/manager.py b/SharedModules/Globals/manager.py
deleted file mode 100755
index d73cf15..0000000
--- a/SharedModules/Globals/manager.py
+++ /dev/null
@@ -1,64 +0,0 @@
-""" manager module contains:
-
-*) ConnectionsManager Class
-"""
-class ConnectionsManager():
- """
- *) Manages Client SSH Connections in the current TestEnvironment
- *) Manages Server SSH Connections in the current TestEnvironment
- *) Manages allhosts SSH Connection in the current TestEnvironment
- """
- def __init__(self):
-
- self._serverpool = {}
- self._clientpool = {}
- self._all = {}
-
- def addServer(self, key, server):
- """
- Add a server to _serverpool
- """
-
- self._serverpool[key] = server
- self._all[key] = server
- return
-
- def addClient(self, key, client):
- """
- Add a client to clientpool
- """
-
- self._clientpool[key] = client
- self._all[key] = client
- return
-
- def getServers(self):
- """
- Return the server object
- """
-
- return self._serverpool
-
- def getClients(self):
- """
- Return the client object
- """
-
- return self._clientpool
-
- def getConnection(self, key):
- """
- """
- value = None
- if self._all.has_key(key):
- value = self._all[key]
- return value
-
- def getConnections(self):
- """
- """
- return self._all
-
-
-
-
diff --git a/SharedModules/Globals/testenv.py b/SharedModules/Globals/testenv.py
deleted file mode 100755
index 9aa8ec8..0000000
--- a/SharedModules/Globals/testenv.py
+++ /dev/null
@@ -1,462 +0,0 @@
-"""testenv module.
-
-TestEnv Class has attributes which holds information of the current
-testenvironment. It includes information about Servers, Clients, Volume,
-Bricks, MountPoints etc.
-TestEnv Class provides methods to access the testenvironment info
-"""
-
-from collections import namedtuple
-import re
-
-class TestEnv():
-
- def __init__(self):
- self._exportdirs = {}
- self._servers = {}
- self._bricks = {}
- self._volumes = {}
- self._clients = {}
- self._mountdevices = {}
- self._mounts = {}
- self._gluster_download_paths = []
- self._active_volume = None
-
- self._exportdir_tuple = namedtuple('ExportDir',
- ['dir', 'fstype', 'device'])
-
- self._server_tuple = namedtuple('Server',
- ['hostname', 'user', 'password',
- 'glusterversion', 'installpath'])
-
- self._brick_tuple = namedtuple('Brick',
- ['hostname', 'path'])
-
- self._volume_tuple = namedtuple('Volume',
- ['volumename', 'volumetype', 'count',
- 'transporttype', 'bricks'])
-
- self._client_tuple = namedtuple('Client',
- ['hostname', 'user', 'password',
- 'glusterversion', 'installpath'])
-
- self._mountdevice_tuple = namedtuple('MountDevice',
- ['hostname', 'volumename'])
-
- self._mount_tuple = namedtuple('Mount',
- ['client', 'dir', 'device',
- 'type', 'logfile', 'options'])
-
- def addExportdir(self, key, dir_, **arguments):
- """
- """
- fstype = device = None
- if (arguments.has_key('fstype') and arguments['fstype']):
- fstype = arguments['fstype']
-
- if (arguments.has_key('device') and arguments['device']):
- device = arguments['device']
-
- exportdir_obj = self._exportdir_tuple(dir_, fstype, device)
- self._exportdirs[key] = exportdir_obj
-
- def getExportdir(self, exportdirkey):
- """
- """
- exportdir_obj = None
- if self._exportdirs.has_key(exportdirkey):
- exportdir_obj = self._exportdirs[exportdirkey]
-
- return exportdir_obj
-
- def getExportdirs(self):
- """Returns self._exportdirs dictionary.
- 'key' in dict is exportdirkey
- 'value' is exportdir namedtuple object
- """
-
- return self._exportdirs
-
- def addServer(self, key, hostname, user, password,
- glusterversion, **arguments):
- """
- """
- installpath = None
- if (arguments.has_key('installpath') and arguments['installpath']):
- installpath = arguments['installpath']
-
- server_obj = self._server_tuple(hostname, user, password,
- glusterversion, installpath)
-
- self._servers[key] = server_obj
-
- def getServer(self, serverkey):
- """
- """
- server_obj = None
- if self._servers.has_key(serverkey):
- server_obj = self._servers[serverkey]
-
- return server_obj
-
- def getServers(self):
- """
- """
- servers = {}
-
- for serverkey in self._servers.keys():
- servers[serverkey] = self.getServer(serverkey)
-
- return servers
-
- def addClient(self, key, hostname, user, password,
- glusterversion, **arguments):
- """
- """
- installpath = None
- if arguments.has_key('installpath') and arguments['installpath']:
- installpath = arguments['installpath']
-
- client_obj = self._client_tuple(hostname, user, password,
- glusterversion, installpath)
- self._clients[key] = client_obj
-
- def getClient(self, clientkey):
- """
- """
- client_obj = None
- if self._clients.has_key(clientkey):
- client_obj = self._clients[clientkey]
-
- return client_obj
-
- def getClients(self):
- """
- """
- clients = {}
-
- for clientkey in self._clients.keys():
- clients[clientkey] = self.getClient(clientkey)
-
- return clients
-
- def addBrick(self, key, hostname, path, **arguments):
- """
- """
- brick_obj = self._brick_tuple(hostname, path)
- self._bricks[key] = brick_obj
-
- def getBrick(self, brickkey):
- """
- """
- return_brick_obj = None
- newhostname = newpath = ''
-
- if self._bricks.has_key(brickkey):
- brick_obj = self._bricks[brickkey]
- else:
- return return_brick_obj
-
- hostname_value = brick_obj.hostname
- serverkey = re.split("\.", hostname_value, maxsplit=1)[0]
- server_obj = self.getServer(serverkey)
- if server_obj:
- newhostname = server_obj.hostname
- else:
- return return_brick_obj
-
- path_value = brick_obj.path
- if re.match("^\/", path_value):
- path = path_value
- else:
- exportdir_obj = self.getExportdir(path_value)
- if exportdir_obj:
- newpath = exportdir_obj.dir
- else:
- brick_obj = None
- return return_brick_obj
-
- return_brick_obj = brick_obj._replace(hostname=newhostname,
- path=newpath)
-
- return return_brick_obj
-
- def getBricks(self):
- """
- """
- return_bricks = {}
-
- for brickkey in self._bricks.keys():
- return_bricks[brickkey] = self.getBrick(brickkey)
-
- return return_bricks
-
- def getRawBrick(self, brickkey):
- brick_obj = None
- if self._bricks.has_key(brickkey):
- brick_obj = self._bricks[brickkey]
- return brick_obj
-
- def getBrickKeys(self):
- """
- """
- brick_keys = []
- brick_keys.extend(self._bricks.keys())
- return brick_keys
-
- def addBricksToVolume(self, volumekey="ActiveVolume", *bricks):
- """
- """
- volume_obj = None
- if volumekey == "ActiveVolume":
- volumekey = self._active_volume
-
- if not (volumekey and self._volumes.has_key(volumekey)):
- return 1
-
- volume_obj = self._volumes[volumekey]
-
- for brick in bricks:
- volume_obj.bricks.append(brick)
-
- return 0
-
- def replaceBrickInVolume(self, replace_brick, to_brick,
- volumekey="ActiveVolume"):
- """
- """
- volume_obj = None
- replaced_status = False
- if volumekey == "ActiveVolume":
- volumekey = self._active_volume
-
- if not (volumekey and self._volumes.has_key(volumekey)):
- return 1
-
- volume_obj = self._volumes[volumekey]
- for index, brick in enumerate(volume_obj.bricks):
- if brick == replace_brick:
- volume_obj.bricks[index] = to_brick
- replaced_status = True
- break
- else:
- continue
-
- if replaced_status:
- return 0
- else:
- return 1
-
- def addVolume(self, key, volumename, volumetype, count,
- transporttype, bricks):
- """
- """
- brickskeylist = [x.strip() for x in bricks.split(",")]
- volume_obj = self._volume_tuple(volumename, volumetype,
- count, transporttype, brickskeylist)
- self._volumes[key] = volume_obj
-
- def getVolume(self, volumekey):
- """
- """
- return_volume_obj = None
-
- if not self._volumes.has_key(volumekey):
- return return_volume_obj
-
- volume_obj = self._volumes[volumekey]
- brickslist = []
- for brickkey in volume_obj.bricks:
- brick_obj = self.getBrick(brickkey)
- if not brick_obj:
- return return_volume_obj
- else:
- brickslist.append(brick_obj)
-
- return_volume_obj = volume_obj._replace(bricks=brickslist)
-
- return return_volume_obj
-
- def getVolumes(self):
- """
- """
- return_volumes = {}
- for volumekey in self._volumes.keys():
- return_volumes[volumekey] = self.getVolume(volumekey)
-
- return return_volumes
-
- def addMountDevice(self, key, hostname, volumename):
- """
- """
- mountdevice_obj = self._mountdevice_tuple(hostname, volumename)
- self._mountdevices[key] = mountdevice_obj
-
- def getMountDevice(self, mountdevicekey):
- """
- *) Check the hostname = IPAddress
- *) Check hostname refers to any server
- *) Check the volume is defined.
- *) Substitute all values
- """
- returndevice_obj = None
- ip_pattern = re.compile('(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})\.(?:[\d]{1,3})')
-
- if not self._mountdevices.has_key(mountdevicekey):
- return returndevice_obj
-
- else:
- mountdevice_obj = self._mountdevices[mountdevicekey]
-
- hostname_value = mountdevice_obj.hostname
- if ip_pattern.match(hostname_value):
- newhostname = hostname_value
- elif re.match('(([a-z]|[A-Z])+[0-9]+)\.hostname', hostname_value):
- serverkey = re.split("\.", hostname_value, maxsplit=1)[0]
- server_obj = self.getServer(serverkey)
- if server_obj:
- newhostname = server_obj.hostname
- else:
- return returndevice_obj
- else:
- newhostname = hostname_value
- volumekey = re.split("\.", mountdevice_obj.volumename, maxsplit=1)[0]
- volume_obj = self.getVolume(volumekey)
- if volume_obj:
- newvolumename = volume_obj.volumename
- else:
- return returndevice_obj
-
-
- returndevice_obj = mountdevice_obj._replace(hostname=newhostname,
- volumename=newvolumename)
- return returndevice_obj
-
- def getMountDevices(self):
- """
- """
- return_mount_devices = {}
-
- for mountdevicekey in self._mountdevices.keys():
- return_mount_devices[mountdevicekey] = self.getMountDevice(mountdevicekey)
-
- return return_mount_devices
-
- def addMount(self, key, client, dir_, device, **arguments):
- """
- """
- logfile = options = None
- type_ = "glusterfs"
-
- if (arguments.has_key("type") and arguments['type']):
- type_ = arguments['type']
-
- if (arguments.has_key("logfile") and arguments['logfile']):
- logfile = arguments['logfile']
-
- if (arguments.has_key("options") and arguments['options']):
- options = arguments['options']
-
- mount_obj = self._mount_tuple(client, dir_, device,
- type_, logfile, options)
- self._mounts[key] = mount_obj
-
- def getMount(self, mountkey):
- """
- """
- return_mount_obj = None
- if not self._mounts.has_key(mountkey):
- return return_mount_obj
-
- mount_obj = self._mounts[mountkey]
- devicekey = mount_obj.device
- device_obj = self.getMountDevice(devicekey)
- if not device_obj:
- return return_mount_obj
- else:
- return_mount_obj = mount_obj._replace(device=device_obj)
-
- return return_mount_obj
-
- def getMounts(self):
- """
- """
- return_mounts = {}
-
- for mountkey in self._mounts.keys():
- return_mounts[mountkey] = self.getMount(mountkey)
-
- return return_mounts
-
- def getMountsKeys(self):
- """
- """
- mounts_keys = []
- mounts_keys.extend(self._mounts.keys())
- return mounts_keys
-
- def addDefaults(self, **arguments):
- """
- """
- downloadpaths = []
-
- if (arguments.has_key('downloadpath') and arguments['downloadpath']):
- paths = arguments['downloadpath']
- downloadpaths = [x.strip() for x in paths.split(",")]
-
- self._gluster_download_paths = downloadpaths
-
- def setActiveVolume(self, volumekey):
- """
- """
- if self._volumes.has_key(volumekey):
- self._active_volume = volumekey
- return 0
- else:
- return 1
-
- def getActiveVolume(self):
- """
- """
- active_volume_key = self._active_volume
- active_volume = self.getVolume(active_volume_key)
- return active_volume
-
- def getGlusterDownloadPaths(self):
- """
- """
- return self._gluster_download_paths
-
- def getHosts(self):
- """
- """
- all_hosts = {}
- all_hosts.update(self.getServers)
- all_hosts.update(self.getClients)
- return all_hosts
-
- def getHostsKeys(self):
- """
- """
- hosts_keys = []
- hosts_keys.extend(self._servers.keys())
- hosts_keys.extend(self._clients.keys())
- return hosts_keys
-
- def getHost(self, hostkey):
- """
- """
- host_obj = None
- host_obj = self.getServer(hostkey)
- if host_obj:
- return host_obj
- else:
- host_obj = self.getClient(hostkey)
- return host_obj
-
-
-
-
-
-
-
diff --git a/SharedModules/Globals/testruninfo.py b/SharedModules/Globals/testruninfo.py
deleted file mode 100644
index 9b012e8..0000000
--- a/SharedModules/Globals/testruninfo.py
+++ /dev/null
@@ -1,144 +0,0 @@
-"""testruninfo module
-
-TestRunInfo Class contains variables and methods for storing and retrieving
-information about current "TestRun".
-"""
-import re
-
-class TestRunInfo():
- def __init__(self):
- self._testunits = []
- self._keywords = ''
- self._glusterversion = ''
- self._atfdir = ''
- self._summaryloginfo = {}
- self._detailloginfo = {}
- self._stdoutloginfo = {}
-
- def addGlusterVersion(self, version):
- """
- """
- self._glusterversion = version
-
- def getGlusterVersion(self):
- """
- """
- return self._glusterversion
-
- def addSummaryLogInfo(self, filename, loglevel):
- """
- """
- if not filename:
- filename = "SummaryLog.out"
-
- if not loglevel:
- loglevel = "info"
-
- self._summaryloginfo['filename'] = filename
- self._summaryloginfo['loglevel'] = loglevel
-
- def getSummaryLogInfo(self):
- """
- """
- return self._summaryloginfo
-
- def addDetailLogInfo(self, filename, loglevel):
- """
- """
- if not filename:
- filename = "DetailLog.out"
-
- if not loglevel:
- loglevel = "info"
-
- self._detailloginfo['filename'] = filename
- self._detailloginfo['loglevel'] = loglevel
-
- def getDetailLogInfo(self):
- """
- """
- return self._detailloginfo
-
- def addStdoutLogInfo(self, do_log, loglevel):
- """
- """
- true_pattern = re.compile('True|Yes', re.IGNORECASE)
- false_pattern = re.compile('False|No', re.IGNORECASE)
-
- if not loglevel:
- loglevel = "info"
-
- if true_pattern.match(do_log):
- do_log = True
-
- elif false_pattern.match(do_log):
- do_log = False
-
- else:
- do_log = True
-
- self._stdoutloginfo['do_log'] = do_log
- self._stdoutloginfo['loglevel'] = loglevel
-
- def getStdoutLogInfo(self):
- """
- """
- return self._stdoutloginfo
-
- def addAtfDir(self, atfdir):
- """
- """
- self._atfdir = atfdir
-
- def getAtfDir(self):
- """
- """
- return self._atfdir
-
- def addTestUnits(self, testunit):
- """
- Description:
- Add a testunit to TestUnits List
-
- Parameter:
- testunit: Name of the Testing Unit
-
- Returns:
- """
-
- self._testunits.append(testunit)
- return
-
- def getTestUnits(self):
- """
- Description:
- Return TestUnits List
-
- Parameters:
-
- Returns:
- Success: Testunit Name
- Failure: ''
- """
-
- return self._testunits
-
- def addKeywords(self, keywords):
- """
- Description:
- Add Keywords to KeyWords List
-
- Parameters:
- keyname: Keyword
-
- Returns:
- """
- self._keywords = keywords
-
- def getKeywords(self):
- """
- """
- return self._keywords
-
-
-