From e3bfe2bafa89c8536235c9664f22017d08a24450 Mon Sep 17 00:00:00 2001
From: Christophe Sovant <christophe.sovant@forgerock.com>
Date: Sat, 31 May 2008 11:31:52 +0000
Subject: [PATCH] Add compare_property_table function to common.py and add snmp.py file

---
 opends/tests/shared/functions/environment.xml |    1 
 opends/tests/shared/python/snmp.py            |  113 +++++++++++++++++++++++++++++++++++++
 opends/tests/shared/python/common.py          |   29 +++++++++
 3 files changed, 142 insertions(+), 1 deletions(-)

diff --git a/opends/tests/shared/functions/environment.xml b/opends/tests/shared/functions/environment.xml
index ec812f2..a7f94c0 100755
--- a/opends/tests/shared/functions/environment.xml
+++ b/opends/tests/shared/functions/environment.xml
@@ -107,6 +107,7 @@
         from common import *
         from security import *
         from replication import *
+        from snmp import *
       </script>     
                         
     
diff --git a/opends/tests/shared/python/common.py b/opends/tests/shared/python/common.py
index 535f5bd..63928f7 100644
--- a/opends/tests/shared/python/common.py
+++ b/opends/tests/shared/python/common.py
@@ -36,6 +36,7 @@
             "compare_file", 
             "is_windows_platform", 
             "create_property_table", 
+            "compare_property_table", 
             "exception_thrown" ]
 
 class format_testcase:
@@ -202,7 +203,33 @@
       try:
         value = line.split(separator)[1].strip()
       except IndexError:
-        value = '-'
+        value = ''
       table[key] = value
 
     return table
+
+def compare_property_table(refTable, newTable):
+    import re
+
+    result = ''
+
+    refKeys=newTable.keys()
+    for refKey in refKeys:
+      if not refTable.has_key(refKey):
+        result = result + 'ERROR: Entry ' + refKey + ' does not exists'
+        result = result + ' in the reference table.\n'
+
+    refKeys=refTable.keys()
+    for refKey in refKeys:
+      if not newTable.has_key(refKey):
+        result = result + 'ERROR: Entry ' + refKey + ' does not exists'
+        result = result + ' in the new table.\n'
+      else:
+        result = result + refKey + '=> expected: ' + refTable[refKey] 
+        result = result + ' , result: ' + newTable[refKey] + '\n'
+
+        if refTable[refKey] != newTable[refKey]:
+          result = result + 'ERROR: Value for ' + refKey 
+          result = result + ' should be the same.\n'
+
+    return result
diff --git a/opends/tests/shared/python/snmp.py b/opends/tests/shared/python/snmp.py
new file mode 100644
index 0000000..a6fa1ea
--- /dev/null
+++ b/opends/tests/shared/python/snmp.py
@@ -0,0 +1,113 @@
+#!/usr/bin/python
+
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License, Version 1.0 only
+# (the "License").  You may not use this file except in compliance
+# with the License.
+#
+# You can obtain a copy of the license at
+# trunk/opends/resource/legal-notices/OpenDS.LICENSE
+# or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at
+# trunk/opends/resource/legal-notices/OpenDS.LICENSE.  If applicable,
+# add the following below this CDDL HEADER, with the fields enclosed
+# information:
+#      Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+#
+#      Copyright 2008 Sun Microsystems, Inc.
+
+__version__ = "$Revision$"
+# $Source$
+
+# public symbols
+__all__ = [ "create_table_fromoutput",
+            "compare_snmp_values",
+            "get_handler_count",
+            "get_handler_index" ]
+
+def create_table_fromoutput(output):
+    table = {}
+    separator = '='
+    start= 'ds'
+
+    for line in output.splitlines():
+      if line.startswith('ds'):
+        key = line.split(separator)[0].strip()
+        try:
+          value = line.split(separator)[1].strip()
+        except IndexError:
+          value = '-'
+        table[key] = value
+
+    return table
+
+def compare_snmp_values(refTable, newTable):
+    import re
+
+    result = ''
+
+    refKeys=newTable.keys()
+    for refKey in refKeys:
+      if not refTable.has_key(refKey):
+        result = result + 'ERROR: Entry ' + refKey + ' does not exists'
+        result = result + ' in the reference table.\n'
+
+    refKeys=refTable.keys()
+    for refKey in refKeys:
+      if not newTable.has_key(refKey):
+        result = result + 'ERROR: Entry ' + refKey + ' does not exists'
+        result = result + ' in the new table.\n'
+      else:
+        result = result + refKey + '=> expected: ' + refTable[refKey] 
+        result = result + ' , result: ' + newTable[refKey] + '\n'
+
+      pattern1 = re.compile('dsApplIfOutBytes.*')
+      pattern2 = re.compile('dsApplIfInBytes.*')
+      if pattern1.search(refKey) != None or pattern2.search(refKey) != None:
+        if refTable[refKey] > newTable[refKey]:
+          result = result + 'ERROR: Value for ' + refKey 
+          result = result + ' should be greater.\n'
+      else:
+        if refTable[refKey] != newTable[refKey]:
+          result = result + 'ERROR: Value for ' + refKey 
+          result = result + ' should be the same.\n'
+
+    return result
+
+def get_handler_count(table):
+    import re
+
+    count = 0
+
+    keys=table.keys()
+    for key in keys:
+      pattern = re.compile('dsApplIfProtocol\..*')
+      if pattern.search(key) != None:
+        count = count + 1
+
+    return count
+
+def get_handler_index(table, handler):
+    import re
+
+    index = 0
+
+    keys=table.keys()
+    for key in keys:
+      pattern = re.compile('dsApplIfProtocol\..*')
+      if pattern.search(key) != None:
+        if table[key] == handler:
+          regexp = re.compile('^.*\.')
+          index = re.sub(regexp, '', key)
+          break
+
+    return index

--
Gitblit v1.10.0