|
@@ -1,4 +1,5 @@
|
|
|
from benchmark.test_types.framework_test_type import FrameworkTestType
|
|
|
+from benchmark.test_types.verifications import verify_headers
|
|
|
|
|
|
import json
|
|
|
|
|
@@ -55,45 +56,13 @@ class DBTestType(FrameworkTestType):
|
|
|
|
|
|
# Verify response content
|
|
|
problems += self._verifyObject(response, url)
|
|
|
- problems += self._verifyHeaders(headers, url)
|
|
|
+ problems += verify_headers(headers, url, should_be='json')
|
|
|
|
|
|
if len(problems) == 0:
|
|
|
return [('pass', '', url)]
|
|
|
else:
|
|
|
return problems
|
|
|
|
|
|
- def _verifyHeaders(self, headers, url):
|
|
|
- '''Verifies the response headers'''
|
|
|
-
|
|
|
- problems = []
|
|
|
-
|
|
|
- if any(v.lower() not in headers for v in ('Server', 'Date', 'Content-Type')):
|
|
|
- problems.append(
|
|
|
- ('warn', 'Required response header missing: %s' % v, url))
|
|
|
- elif all(v.lower() not in headers for v in ('Content-Length', 'Transfer-Encoding')):
|
|
|
- problems.append(
|
|
|
- ('warn',
|
|
|
- 'Required response size header missing, please include either "Content-Length" or "Transfer-Encoding"',
|
|
|
- url))
|
|
|
- else:
|
|
|
- content_type = headers.get('Content-Type', None)
|
|
|
- expected_type = 'application/json'
|
|
|
- includes_charset = 'application/json; charset=utf-8'
|
|
|
- if content_type == includes_charset:
|
|
|
- problems.append(
|
|
|
- ('warn',
|
|
|
- ("Content encoding \"%s\" found where \"%s\" is acceptable.\n"
|
|
|
- "Additional response bytes may negatively affect benchmark performance."
|
|
|
- % (includes_charset, expected_type)),
|
|
|
- url))
|
|
|
- elif content_type != expected_type:
|
|
|
- problems.append(
|
|
|
- ('warn',
|
|
|
- 'Unexpected content encoding, found %s, expected %s' % (
|
|
|
- content_type, expected_type),
|
|
|
- url))
|
|
|
- return problems
|
|
|
-
|
|
|
# Prime refactor target. This method is also utilized by the multiple queries
|
|
|
# and updates tests, yet is not separated out nicely.
|
|
|
def _verifyObject(self, db_object, url, max_infraction='fail'):
|