def test_calculate_stats_with_empty_cached_row(self): row = {'k': 1, 'v': 1000} cached_row = {} calculated = StatCalculator.calculate_row_delta(row=row, cached_row=cached_row, data_key_col='k', timestamp=1) self.assertEquals(calculated.delta_fields['v'].measured, 1000) self.assertEquals(calculated.delta_fields['v'].delta, None) self.assertEquals(calculated.delta_fields['v'].previous, None)
def test_should_not_calculate_text_fields(self): row = {'k': 1, 'v': 200, 'v2': 'abc'} cached_row = {'k': 1, 'v': 50, 'v2': 'def'} calculated_row = StatCalculator.calculate_row_delta(row=row, cached_row=cached_row, data_key_col='k', timestamp=1) self.assertEquals(calculated_row.delta_fields['v'].measured, 200) self.assertEquals(calculated_row.delta_fields['v'].delta, 150) self.assertEquals(calculated_row.delta_fields['v'].previous, 50) self.assertEquals(calculated_row.delta_fields['v2'].measured, 'abc') self.assertEquals(calculated_row.delta_fields['v2'].delta, None) self.assertEquals(calculated_row.delta_fields['v2'].previous, None)
def test_calculate_stats_for_several_fields(self): row = {'k': 1, 'v': 1000, 'v2': 40.6} cached_row = {'k': 1, 'v': 300, 'v2': 10.3} calculated = StatCalculator.calculate_row_delta(row=row, cached_row=cached_row, data_key_col='k', timestamp=1) self.assertEquals(calculated.delta_fields['v'].measured, 1000) self.assertEquals(calculated.delta_fields['v'].delta, 700) self.assertEquals(calculated.delta_fields['v'].previous, 300) self.assertEquals(calculated.delta_fields['v2'].measured, 40.6) self.assertEquals(calculated.delta_fields['v2'].delta, 30.3) self.assertEquals(calculated.delta_fields['v2'].previous, 10.3)
def test_calculate_stats_value_which_was_reset(self): # new row is much less than old row values row = {'k': 1, 'v': 200, 'v2': 1.6} cached_row = {'k': 1, 'v': 300, 'v2': 10.3} calculated = StatCalculator.calculate_row_delta(row=row, cached_row=cached_row, data_key_col='k', timestamp=1) self.assertEquals(calculated.delta_fields['v'].measured, 200) self.assertEquals(calculated.delta_fields['v'].delta, None) self.assertEquals(calculated.delta_fields['v'].previous, None) self.assertEquals(calculated.delta_fields['v2'].measured, 1.6) self.assertEquals(calculated.delta_fields['v2'].delta, None) self.assertEquals(calculated.delta_fields['v2'].previous, None)
def test_should_get_value_from_index_also(self): row = {'k': 1, 'v': 200, 'v2': 'abc'} cached_row = {'k': 1, 'v': 50, 'v2': 'def'} calculated_row = StatCalculator.calculate_row_delta(row=row, cached_row=cached_row, data_key_col='k', timestamp=1) # DeltaRow is indexable self.assertEquals( calculated_row.delta_fields['v'].measured, calculated_row['v'].measured) self.assertEquals( calculated_row.delta_fields['v'].delta, calculated_row['v'].delta) self.assertEquals( calculated_row.delta_fields['v'].previous, calculated_row['v'].previous)
def test_calculate_stats(self): row = {'k': 1, 'v': 1000} cached_row = {'k': 1, 'v': 700} calculated = StatCalculator.calculate_row_delta(row=row, cached_row=cached_row, data_key_col='k', timestamp=1) self.assertEquals(calculated.key_column_name, 'k') self.assertEquals(calculated.timestamp, 1) self.assertEquals(len(calculated.delta_fields), 2) self.assertEquals(calculated.delta_fields['k'].measured, 1, "delta of key should be the value of the key") self.assertEquals(calculated.delta_fields['k'].delta, None, "delta of key should be None") self.assertEquals(calculated.delta_fields['k'].previous, None) # self.assertEquals(calculated.delta_fields['timestamp'].measured, 1) self.assertEquals(calculated.delta_fields['v'].measured, 1000) self.assertEquals(calculated.delta_fields['v'].delta, 300) self.assertEquals(calculated.delta_fields['v'].previous, 700)