def test_unknown_feature_type(): class Blah(object): # does not inherit from known feature type pass class Serializer(object): constructor = Blah with registry: with pytest.raises(ValueError): registry.add('StringCounter', Serializer)
def test_thing_serializer(): with registry: registry.add('StringCounter', ThingSerializer) fc = FeatureCollection() fc['thing1'] = Thing(json.dumps(dict(hello='people'))) fc['thing1']['another'] = 'more' fc['thing1'].do_more_things() fc_str = fc.dumps() fc2 = FeatureCollection.loads(fc_str) assert fc2['thing1']['another'] == 'more' assert fc2['thing1']['hello'] == 'people' assert fc2['thing1']['doing'] == 'something'
def test_json_serializer(): with registry: registry.add('StringCounter', JsonSerializer) fc = FeatureCollection() fc['thing2'] = StringCounter(dict(hello='people')) fc['thing2']['another'] = 5 fc['thing3'] = StringCounter(dict(hello='people2')) fc_str = fc.dumps() fc2 = FeatureCollection.loads(fc_str) assert fc2['thing2']['another'] == 5 assert fc2['thing2']['hello'] == 'people' assert fc2['thing3']['hello'] == 'people2'
def perftest_throughput_feature_collection(): with registry: registry.add('StringCounter', ThingSerializer) fc = FeatureCollection() fc['thing1'] = Thing(json.dumps(dict(one_mb=' ' * 2**20))) fc_str = fc.dumps() start_time = time.time() num = 1000 for i in range(num): fc2 = FeatureCollection.loads(fc_str) fc2.dumps() elapsed = time.time() - start_time rate = float(num) / elapsed print('%d MB in %.1f sec --> %.1f MB per sec' % (num, elapsed, rate))
def test_unknown_feature_type_name(): with registry: with pytest.raises(ValueError): registry.add('Unknown', StringCounterSerializer)