def test_write_union_obj(): schema = '''[{"name": "Rec1", "type": "record", "fields": [ {"name": "attr1", "type": "int"} ] }, {"name": "Rec2", "type": "record", "fields": [ {"name": "attr2", "type": "string"} ]} ]''' dirname = tempfile.mkdtemp() filename = os.path.join(dirname, 'test.avro') avtypes = pyavroc.create_types(schema) assert avtypes.Rec1._fieldtypes == {'attr1': int} assert avtypes.Rec2._fieldtypes == {'attr2': str} recs = [avtypes.Rec1(attr1=123), avtypes.Rec2(attr2='hello')] with open(filename, 'w') as fp: writer = pyavroc.AvroFileWriter(fp, schema) for rec in recs: writer.write(rec) writer.close() orig_rec1 = avtypes.Rec1 orig_rec2 = avtypes.Rec2 # read using existing types with open(filename) as fp: reader = pyavroc.AvroFileReader(fp, types=avtypes) read_recs = list(reader) assert reader.types.Rec1 is orig_rec1 assert reader.types.Rec2 is orig_rec2 assert read_recs == recs # read and create new types with open(filename) as fp: reader = pyavroc.AvroFileReader(fp, types=True) read_recs = list(reader) assert reader.types.Rec1 is not orig_rec1 assert reader.types.Rec2 is not orig_rec2 assert read_recs != recs assert _testhelper.objs_to_dicts(read_recs) == _testhelper.objs_to_dicts(recs) shutil.rmtree(dirname)
def test_load_swap_same(): dirname, python_filename, pyavroc_filename = _create_files() python_dicts = _python_read(pyavroc_filename) pyavroc_objs = _pyavroc_read(python_filename, True) pyavroc_dicts = _pyavroc_read(pyavroc_filename, False) assert _testhelper.objs_to_dicts(pyavroc_objs) == python_dicts assert pyavroc_dicts == python_dicts _delete_files(dirname)