Merge "Break up dimenion validation into key and value parts"
This commit is contained in:
commit
32de2db4d4
|
@ -126,7 +126,7 @@ class TestMetricValidation(unittest.TestCase):
|
|||
"value": 5}
|
||||
self.assertRaisesRegexp(
|
||||
metric_validator.InvalidDimensionKey,
|
||||
"invalid length for dimension key",
|
||||
"invalid length \(0\) for dimension key",
|
||||
metric_validator.validate, metric)
|
||||
|
||||
def test_invalid_dimension_empty_value(self):
|
||||
|
@ -136,7 +136,7 @@ class TestMetricValidation(unittest.TestCase):
|
|||
"value": 5}
|
||||
self.assertRaisesRegexp(
|
||||
metric_validator.InvalidDimensionValue,
|
||||
"invalid length for dimension value",
|
||||
"invalid length \(0\) for dimension value",
|
||||
metric_validator.validate, metric)
|
||||
|
||||
def test_invalid_dimension_non_str_key(self):
|
||||
|
@ -166,7 +166,7 @@ class TestMetricValidation(unittest.TestCase):
|
|||
"value": 5}
|
||||
self.assertRaisesRegexp(
|
||||
metric_validator.InvalidDimensionKey,
|
||||
"invalid length for dimension key",
|
||||
"invalid length \(256\) for dimension key",
|
||||
metric_validator.validate, metric)
|
||||
|
||||
def test_invalid_dimension_value_length(self):
|
||||
|
@ -176,7 +176,7 @@ class TestMetricValidation(unittest.TestCase):
|
|||
"value": 5}
|
||||
self.assertRaisesRegexp(
|
||||
metric_validator.InvalidDimensionValue,
|
||||
"invalid length for dimension value",
|
||||
"invalid length \(256\) for dimension value",
|
||||
metric_validator.validate, metric)
|
||||
|
||||
def test_invalid_dimension_key_restricted_characters(self):
|
||||
|
|
|
@ -102,33 +102,39 @@ def validate_value_meta(value_meta):
|
|||
raise InvalidValueMeta("Unable to serialize valueMeta into JSON")
|
||||
|
||||
|
||||
def validate_dimension_key(k):
|
||||
if not isinstance(k, (str, unicode)):
|
||||
msg = "invalid dimension key type: " \
|
||||
"{0} is not a string type".format(k)
|
||||
raise InvalidDimensionKey(msg)
|
||||
if len(k) > 255 or len(k) < 1:
|
||||
msg = "invalid length ({0}) for dimension key {1}". \
|
||||
format(len(k), k)
|
||||
raise InvalidDimensionKey(msg)
|
||||
if RESTRICTED_DIMENSION_CHARS.search(k) or re.match('^_', k):
|
||||
msg = "invalid characters in dimension key {0}". \
|
||||
format(k)
|
||||
raise InvalidDimensionKey(msg)
|
||||
|
||||
|
||||
def validate_dimension_value(k, v):
|
||||
if not isinstance(v, (str, unicode)):
|
||||
msg = "invalid dimension value type: {0} must be a " \
|
||||
"string (from key {1})".format(v, k)
|
||||
raise InvalidDimensionValue(msg)
|
||||
if len(v) > 255 or len(v) < 1:
|
||||
msg = "invalid length ({0}) for dimension value {1} from key {2}". \
|
||||
format(len(v), v, k)
|
||||
raise InvalidDimensionValue(msg)
|
||||
if RESTRICTED_DIMENSION_CHARS.search(v):
|
||||
msg = "invalid characters in dimension value {0} from key {1}".format(v, k)
|
||||
raise InvalidDimensionValue(msg)
|
||||
|
||||
|
||||
def validate_dimensions(dimensions):
|
||||
for k, v in dimensions.iteritems():
|
||||
if not isinstance(k, (str, unicode)):
|
||||
msg = "invalid dimension key type: " \
|
||||
"{0} in {1} is not a string type".format(k, dimensions)
|
||||
raise InvalidDimensionKey(msg)
|
||||
if len(k) > 255 or len(k) < 1:
|
||||
msg = "invalid length for dimension key {0}: {1}".\
|
||||
format(k, dimensions)
|
||||
raise InvalidDimensionKey(msg)
|
||||
if RESTRICTED_DIMENSION_CHARS.search(k) or re.match('^_', k):
|
||||
msg = "invalid characters in dimension key {0}: {1}".\
|
||||
format(k, dimensions)
|
||||
raise InvalidDimensionKey(msg)
|
||||
|
||||
if not isinstance(v, (str, unicode)):
|
||||
msg = "invalid dimension value type: {0} for key {1} must be a " \
|
||||
"string: {2}".format(v, k, dimensions)
|
||||
raise InvalidDimensionValue(msg)
|
||||
if len(v) > 255 or len(v) < 1:
|
||||
msg = "invalid length for dimension value {0} in key {1}: {2}".\
|
||||
format(v, k, dimensions)
|
||||
raise InvalidDimensionValue(msg)
|
||||
if RESTRICTED_DIMENSION_CHARS.search(v):
|
||||
msg = "invalid characters in dimension value {0} for key {1}: " \
|
||||
"{2}".format(v, k, dimensions)
|
||||
raise InvalidDimensionValue(msg)
|
||||
validate_dimension_key(k)
|
||||
validate_dimension_value(k, v)
|
||||
|
||||
|
||||
def validate_name(name):
|
||||
|
|
Loading…
Reference in New Issue