This is an automated email from the git hooks/post-receive script.
firstyear pushed a commit to branch master
in repository 389-ds-base.
commit 691b14442dbe7b05daf00babefea9bac346a807f
Author: Amita Sharma <amsharma(a)redhat.com>
Date: Fri Nov 17 13:23:29 2017 +0530
Ticket 49455- Add tests to monitor test suit.
Description: Add test cases for monitor test suit
Add methods in lib389 monitor.py to support test cases
https://fedorahosted.org/389/ticket/49455
Reviewed by: William Brown
---
dirsrvtests/tests/suites/monitor/monitor_test.py | 69 ++++++++++++++++++
src/lib389/lib389/monitor.py | 91 +++++++++++++++++-------
2 files changed, 136 insertions(+), 24 deletions(-)
diff --git a/dirsrvtests/tests/suites/monitor/monitor_test.py
b/dirsrvtests/tests/suites/monitor/monitor_test.py
new file mode 100644
index 0000000..5c53021
--- /dev/null
+++ b/dirsrvtests/tests/suites/monitor/monitor_test.py
@@ -0,0 +1,69 @@
+import logging
+import pytest
+import os
+from lib389.monitor import *
+from lib389._constants import *
+from lib389.topologies import topology_st as topo
+
+DEBUGGING = os.getenv("DEBUGGING", default=False)
+if DEBUGGING:
+ logging.getLogger(__name__).setLevel(logging.DEBUG)
+else:
+ logging.getLogger(__name__).setLevel(logging.INFO)
+log = logging.getLogger(__name__)
+
+def test_monitor(topo):
+ """This test is to display monitor attributes to check the performace
+
+ :id: f7c8a815-07cf-4e67-9574-d26a0937d3db
+ :setup: Single instance
+ :steps:
+ 1. Get the cn=monitor connections attributes
+ 2. Print connections attributes
+ 3. Get the cn=monitor version
+ 4. Print cn=monitor version
+ 5. Get the cn=monitor threads attributes
+ 6. Print cn=monitor threads attributes
+ 7. Get cn=monitor backends attributes
+ 8. Print cn=monitor backends attributes
+ 9. Get cn=monitor operations attributes
+ 10. Print cn=monitor operations attributes
+ 11. Get cn=monitor statistics attributes
+ 12. Print cn=monitor statistics attributes
+ :expectedresults:
+ 1. cn=monitor attributes should be fetched and printed successfully.
+ """
+
+ #define the monitor object from Monitor class in lib389
+ monitor = Monitor(topo.standalone)
+
+ #get monitor connections
+ connections = monitor.get_connections()
+ log.info('connection: {0[0]}, currentconnections: {0[1]}, totalconnections:
{0[2]}'.format(connections))
+
+ #get monitor version
+ version = monitor.get_version()
+ log.info('version :: %s' %version)
+
+ #get monitor threads
+ threads = monitor.get_threads()
+ log.info('threads: {0[0]},currentconnectionsatmaxthreads:
{0[1]},maxthreadsperconnhits: {0[2]}'.format(threads))
+
+ #get monitor backends
+ backend = monitor.get_backends()
+ log.info('nbackends: {0[0]}, backendmonitordn: {0[1]}'.format(backend))
+
+ #get monitor operations
+ operations = monitor.get_operations()
+ log.info('opsinitiated: {0[0]}, opscompleted: {0[1]}'.format(operations))
+
+ #get monitor stats
+ stats = monitor.get_statistics()
+ log.info('dtablesize: {0[0]},readwaiters: {0[1]},entriessent: {0[2]},bytessent:
{0[3]},currenttime: {0[4]},starttime: {0[5]}'.format(stats))
+
+
+if __name__ == '__main__':
+ # Run isolated
+ # -s for DEBUG mode
+ CURRENT_FILE = os.path.realpath(__file__)
+ pytest.main("-s %s" % CURRENT_FILE)
diff --git a/src/lib389/lib389/monitor.py b/src/lib389/lib389/monitor.py
index 5226a67..557e04b 100644
--- a/src/lib389/lib389/monitor.py
+++ b/src/lib389/lib389/monitor.py
@@ -6,39 +6,83 @@
# See LICENSE for details.
# --- END COPYRIGHT BLOCK ---
-"""
-Monitor class to display current server performance details
-"""
-
import ldap
from ldap import filter as ldap_filter
from lib389._constants import *
-from lib389._mapped_object import DSLdapObject
-
+from lib389._mapped_object import DSLdapObjects, DSLdapObject
class Monitor(DSLdapObject):
+ """An object that helps reading of cn=monitor for server statistics.
+ :param instance: An instance
+ :type instance: lib389.DirSrv
+ :param dn: not used
+ :param batch: not used
"""
- Allows reading of cn=monitor for server statistics.
- """
-
def __init__(self, instance, dn=None, batch=False):
super(Monitor, self).__init__(instance=instance, batch=batch)
self._dn = DN_MONITOR
- self._monitor_keys = [
- 'instanceection',
- 'currentinstanceections',
- 'currentconnections',
- 'opscompleted',
- 'opsinitiated',
- 'threads',
- 'totalinstanceections',
- 'version',
- 'currenttime',
- 'connection',
- ]
- def status(self):
- return self.get_attrs_vals(self._monitor_keys)
+ def get_connections(self):
+ """Get connection related attribute values for cn=monitor
+
+ :returns: Values of connection, currentconnections,
+ totalconnections attributes of cn=monitor
+ """
+ connection = self.get_attr_vals_utf8('connection')
+ currentconnections = self.get_attr_vals_utf8('currentconnections')
+ totalconnections = self.get_attr_vals_utf8('totalconnections')
+ return (connection, currentconnections, totalconnections)
+
+ def get_version(self):
+ """Get version attribute value for cn=monitor
+
+ :returns: Value of version attribute of cn=monitor
+ """
+ version = self.get_attr_vals_utf8('connection')
+ return version
+
+ def get_threads(self):
+ """Get thread related attributes value for cn=monitor
+
+ :returns: Values of threads, currentconnectionsatmaxthreads, and
+ maxthreadsperconnhits attributes of cn=monitor
+ """
+ threads = self.get_attr_vals_utf8('threads')
+ currentconnectionsatmaxthreads =
self.get_attr_vals_utf8('currentconnectionsatmaxthreads')
+ maxthreadsperconnhits = self.get_attr_vals_utf8('maxthreadsperconnhits')
+ return (threads, currentconnectionsatmaxthreads, maxthreadsperconnhits)
+
+ def get_backends(self):
+ """Get backends related attributes value for cn=monitor
+
+ :returns: Values of nbackends and backendmonitordn attributes of cn=monitor
+ """
+ nbackends = self.get_attr_vals_utf8('nbackends')
+ backendmonitordn = self.get_attr_vals_utf8('backendmonitordn')
+ return (nbackends, backendmonitordn)
+
+ def get_operations(self):
+ """Get operations related attributes value for cn=monitor
+
+ :returns: Values of opsinitiated and opscompleted attributes of cn=monitor
+ """
+ opsinitiated = self.get_attr_vals_utf8('opsinitiated')
+ opscompleted = self.get_attr_vals_utf8('opsinitiated')
+ return (opsinitiated, opscompleted)
+
+ def get_statistics(self):
+ """Get statistics attributes value for cn=monitor
+
+ :returns: Values of dtablesize, readwaiters, entriessent,
+ bytessent, currenttime, starttime attributes of cn=monitor
+ """
+ dtablesize = self.get_attr_vals_utf8('dtablesize')
+ readwaiters = self.get_attr_vals_utf8('readwaiters')
+ entriessent = self.get_attr_vals_utf8('entriessent')
+ bytessent = self.get_attr_vals_utf8('bytessent')
+ currenttime = self.get_attr_vals_utf8('currenttime')
+ starttime = self.get_attr_vals_utf8('starttime')
+ return (dtablesize, readwaiters, entriessent, bytessent, currenttime, starttime)
class MonitorLDBM(DSLdapObject):
def __init__(self, instance, dn=None, batch=False):
@@ -53,7 +97,6 @@ class MonitorLDBM(DSLdapObject):
'dbcacheroevict',
'dbcacherwevict',
]
-
def status(self):
return self.get_attrs_vals(self._backend_keys)
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.