def test_compact(conn): """Test compacting of redundant data.""" def make_rows(timestamp): return [ (10023 + i, timestamp, ('0.9919', '17')) for i in range(100) ] with closing(conn.cursor()) as cursor: attribute_names = ['CCR', 'Drops'] datasource = DataSource.from_name(cursor, "integration-test") entitytype = EntityType.from_name(cursor, "UtranCell") timestamp = pytz.utc.localize(datetime.utcnow()) datapackage_a = DataPackage( attribute_names=attribute_names, rows=make_rows(timestamp) ) datapackage_b = DataPackage( attribute_names=attribute_names, rows=make_rows(timestamp + timedelta(10)) ) attributes = datapackage_a.deduce_attributes() attributestore = AttributeStore(datasource, entitytype, attributes) attributestore.create(cursor) attributestore.store_batch(cursor, datapackage_a) conn.commit() attributestore.store_batch(cursor, datapackage_b) conn.commit() count_query = ( "SELECT count(*) " "FROM {0}").format(attributestore.history_table.render()) cursor.execute(count_query) count, = cursor.fetchone() # Row count should be the same as the stored batch sizes summed eq_(count, len(datapackage_b.rows) + len(datapackage_a.rows)) attributestore.compact(cursor) conn.commit() cursor.execute(count_query) count, = cursor.fetchone() # Row count should be the same as the first stored batch size eq_(count, len(datapackage_a.rows))