def convert_integer(self, int_value, metadata): if len(str(int_value)) == 0: # The value collected from the database is empty return 0 try: try: converted = int(int_value) except ValueError: converted = int(float(int_value)) except ValueError: if metadata.unit == KnobUnitType.BYTES: converted = ConversionUtil.get_raw_size( int_value, system=self.bytes_system) elif metadata.unit == KnobUnitType.MILLISECONDS: converted = ConversionUtil.get_raw_size( int_value, system=self.time_system) else: # If vartype is OTHER, try to decode it with bytes and time systems converted = ConversionUtil.get_raw_size( int_value, system=self.bytes_system) if converted is None: converted = ConversionUtil.get_raw_size( int_value, system=self.time_system) if converted is None: raise Exception('Invalid integer format for {}: {}'.format( metadata.name, int_value)) return converted
def test_get_raw_size(self): # Bytes for hr_value, exp_value in zip(self.from_hr_bytes, self.as_bytes): byte_conversion = ConversionUtil.get_raw_size( hr_value, system=ConversionUtil.DEFAULT_BYTES_SYSTEM) self.assertEqual(byte_conversion, exp_value) # Time for hr_value, exp_value in zip(self.from_hr_times, self.as_ms): time_conversion = ConversionUtil.get_raw_size( hr_value, system=ConversionUtil.DEFAULT_TIME_SYSTEM) self.assertEqual(time_conversion, exp_value)
def test_get_raw_size_simple(self): # Bytes for hr_value, exp_value in zip(self.from_hr_bytes_simple, self.as_bytes_simple): value = ConversionUtil.get_raw_size( hr_value, system=ConversionUtil.DEFAULT_BYTES_SYSTEM) self.assertEqual(value, exp_value) # Time for hr_value, exp_value in zip(self.from_hr_times_simple, self.as_ms_simple): value = ConversionUtil.get_raw_size( hr_value, system=ConversionUtil.DEFAULT_TIME_SYSTEM) self.assertEqual(value, exp_value)
def test_get_raw_size(self): # Bytes - In Bytes byte_test_convert = ['1PB', '2TB', '3GB', '4MB', '5kB', '6B'] byte_ans = [1024**5, 2 * 1024**4, 3 * 1024**3, 4 * 1024**2, 5 * 1024**1, 6] for i, byte_test in enumerate(byte_test_convert): byte_conversion = ConversionUtil.get_raw_size( byte_test, system=PostgresParser.POSTGRES_BYTES_SYSTEM) self.assertEqual(byte_conversion, byte_ans[i]) # Time - In Milliseconds day_test_convert = ['1000ms', '1s', '10min', '20h', '1d'] day_ans = [1000, 1000, 600000, 72000000, 86400000] for i, day_test in enumerate(day_test_convert): day_conversion = ConversionUtil.get_raw_size( day_test, system=PostgresParser.POSTGRES_TIME_SYSTEM) self.assertEqual(day_conversion, day_ans[i])
def convert_integer(self, int_value, metadata): converted = None try: converted = super().convert_integer(int_value, metadata) except ValueError: if metadata.unit == KnobUnitType.BYTES: converted = ConversionUtil.get_raw_size( int_value, system=ConversionUtil.DEFAULT_BYTES_SYSTEM) elif metadata.unit == KnobUnitType.MILLISECONDS: converted = ConversionUtil.get_raw_size( int_value, system=ConversionUtil.DEFAULT_TIME_SYSTEM) else: raise Exception('Unknown unit type: {}'.format(metadata.unit)) if converted is None: raise Exception('Invalid integer format for {}: {}'.format( metadata.name, int_value)) return converted
def convert_integer(self, int_value, metadata): converted = None try: converted = super(MyRocksParser, self).convert_integer( int_value, metadata) except ValueError: if metadata.unit == KnobUnitType.BYTES: converted = ConversionUtil.get_raw_size( int_value, system=self.MYROCKS_BYTES_SYSTEM) elif metadata.unit == KnobUnitType.MILLISECONDS: converted = ConversionUtil.get_raw_size( int_value, system=self.MYROCKS_TIME_SYSTEM) else: raise Exception('Unknown unit type: {}'.format(metadata.unit)) if converted is None: raise Exception('Invalid integer format for {}: {}'.format( metadata.name, int_value)) return converted
def convert_integer(self, int_value, metadata): try: try: converted = int(int_value) except ValueError: converted = int(float(int_value)) except ValueError: if metadata.unit == KnobUnitType.BYTES: converted = ConversionUtil.get_raw_size( int_value, system=self.bytes_system) elif metadata.unit == KnobUnitType.MILLISECONDS: converted = ConversionUtil.get_raw_size( int_value, system=self.time_system) else: raise Exception('Unknown unit type: {}'.format(metadata.unit)) if converted is None: raise Exception('Invalid integer format for {}: {}'.format( metadata.name, int_value)) return converted