def _validate_instantiation_props(self, prop, prop_name, default_value): """ Method to determine if instantiation properties like batch_size, flush_interval and timeout_interval are valid. Args: prop: Property value that needs to be validated. prop_name: Property name. default_value: Default value for property. Returns: False if property value is None or less than or equal to 0 or not a finite number. False if property name is batch_size and value is a floating point number. True otherwise. """ is_valid = True if prop is None or not validator.is_finite_number(prop) or prop <= 0: is_valid = False if prop_name == 'batch_size' and not isinstance(prop, numbers.Integral): is_valid = False if is_valid is False: self.logger.info('Using default value {} for {}.'.format(default_value, prop_name)) return is_valid
def test_is_finite_number(self): """ Test that it returns true if value is a number and not NAN, INF, -INF or greater than 2^53. Otherwise False. """ # test non number values self.assertFalse(validator.is_finite_number('HelloWorld')) self.assertFalse(validator.is_finite_number(True)) self.assertFalse(validator.is_finite_number(False)) self.assertFalse(validator.is_finite_number(None)) self.assertFalse(validator.is_finite_number({})) self.assertFalse(validator.is_finite_number([])) self.assertFalse(validator.is_finite_number(())) # test invalid numbers self.assertFalse(validator.is_finite_number(float('inf'))) self.assertFalse(validator.is_finite_number(float('-inf'))) self.assertFalse(validator.is_finite_number(float('nan'))) self.assertFalse(validator.is_finite_number(int(2**53) + 1)) self.assertFalse(validator.is_finite_number(-int(2**53) - 1)) self.assertFalse(validator.is_finite_number(float(2**53) + 2.0)) self.assertFalse(validator.is_finite_number(-float(2**53) - 2.0)) if PY2: self.assertFalse(validator.is_finite_number(long(2**53) + 1)) self.assertFalse(validator.is_finite_number(-long(2**53) - 1)) # test valid numbers self.assertTrue(validator.is_finite_number(0)) self.assertTrue(validator.is_finite_number(5)) self.assertTrue(validator.is_finite_number(5.5)) # float(2**53) + 1.0 evaluates to float(2**53) self.assertTrue(validator.is_finite_number(float(2**53) + 1.0)) self.assertTrue(validator.is_finite_number(-float(2**53) - 1.0)) self.assertTrue(validator.is_finite_number(int(2**53))) if PY2: self.assertTrue(validator.is_finite_number(long(2**53)))