Browse Source

Update db_type

Zane Kansil 10 years ago
parent
commit
480dda47df
1 changed files with 22 additions and 16 deletions
  1. 22 16
      toolset/benchmark/test_types/db_type.py

+ 22 - 16
toolset/benchmark/test_types/db_type.py

@@ -105,7 +105,7 @@ class DBTestType(FrameworkTestType):
         problems = []
         problems = []
 
 
         # Dict is expected, handle bytes in non-cases
         # Dict is expected, handle bytes in non-cases
-        if type(db_object) != dict:
+        if type(db_object) is not dict:
             got = str(db_object)[:20]
             got = str(db_object)[:20]
             if len(str(db_object)) > 20:
             if len(str(db_object)) > 20:
                 got = str(db_object)[:17] + '...'
                 got = str(db_object)[:17] + '...'
@@ -113,40 +113,46 @@ class DBTestType(FrameworkTestType):
 
 
         # Make keys case insensitive
         # Make keys case insensitive
         db_object = {k.lower(): v for k, v in db_object.iteritems()}
         db_object = {k.lower(): v for k, v in db_object.iteritems()}
+        required_keys = set(['id', 'randomnumber'])
 
 
-        if any(v not in db_object for v in ('id', 'randomnumber')):
+        if any(v not in db_object for v in required_keys):
             problems.append(
             problems.append(
                 (max_infraction, 'Response object was missing required key: %s' % v, url))
                 (max_infraction, 'Response object was missing required key: %s' % v, url))
 
 
+        if len(db_object) > len(required_keys):
+            extras = db_object.keys() - required_keys
+            problems.append(
+                ('warn',
+                 'An extra key(s) is being included with the db object: ' + ', '.join(extras),
+                 url))
+
         # All required keys must be present
         # All required keys must be present
         if len(problems) > 0:
         if len(problems) > 0:
             return problems
             return problems
 
 
         # Assert key types and values
         # Assert key types and values
         try:
         try:
-            response_id = float(db_object["id"])
-            if response_id > 10000 or response_id < 1:
-                problems.append(
-                    ('warn', "Response key 'id' should be between 1 and 10,000", url))
-            if type(db_object["id"]) != int:
+            o_id = int(db_object['id'])
+            
+            if o_id > 10000 or o_id < 1:
                 problems.append(
                 problems.append(
                     ('warn',
                     ('warn',
-                     ("Response key 'id' was not an integer and may result in additional response bytes.\n",
-                      "Additional response bytes may negatively affect benchmark performance."),
+                     'Response key id should be between 1 and 10,000: ' + str(o_id),
                      url))
                      url))
-        except ValueError as ve:
+        except TypeError as e:
             problems.append(
             problems.append(
-                (max_infraction, "Response key 'id' does not map to a number - %s" % ve, url))
+                (max_infraction, "Response key 'id' does not map to an integer - %s" % e, url))
 
 
         try:
         try:
-            response_rn = float(db_object["randomnumber"])
-            if response_rn > 10000:
+            o_rn = int(db_object['randomnumber'])
+            
+            if o_rn > 10000:
                 problems.append(
                 problems.append(
                     ('warn',
                     ('warn',
-                     "Response key 'randomNumber' is over 10,000. This may negatively affect performance by sending extra bytes.",
+                     'Response key `randomNumber` is over 10,000. This may negatively affect performance by sending extra bytes',
                      url))
                      url))
-        except ValueError as ve:
+        except TypeError as e:
             problems.append(
             problems.append(
-                (max_infraction, "Response key 'randomNumber' does not map to a number - %s" % ve, url))
+                (max_infraction, "Response key 'randomnumber' does not map to an integer - %s" % e, url))
 
 
         return problems
         return problems