|
15 | 15 |
|
16 | 16 |
|
17 | 17 | from zarr.storage import init_array, array_meta_key, attrs_key, DictStore, \
|
18 |
| - DirectoryStore, ZipStore, init_group, group_meta_key, getsize |
| 18 | + DirectoryStore, ZipStore, init_group, group_meta_key, getsize, migrate_1to2 |
19 | 19 | from zarr.meta import decode_array_metadata, encode_array_metadata, \
|
20 | 20 | ZARR_FORMAT, decode_group_metadata, encode_group_metadata
|
21 | 21 | from zarr.compat import text_type
|
@@ -642,3 +642,42 @@ def test_getsize():
|
642 | 642 | store['baz/quux'] = b'ccccc'
|
643 | 643 | eq(7, getsize(store))
|
644 | 644 | eq(5, getsize(store, 'baz'))
|
| 645 | + |
| 646 | + |
| 647 | +def test_migrate_1to2(): |
| 648 | + from zarr import meta_v1 |
| 649 | + |
| 650 | + # N.B., version 1 did not support hierarchies, so we only have to be |
| 651 | + # concerned about migrating a single array at the root of the store |
| 652 | + |
| 653 | + # setup |
| 654 | + store = dict() |
| 655 | + meta = dict( |
| 656 | + shape=(100,), |
| 657 | + chunks=(10,), |
| 658 | + dtype=np.dtype('f4'), |
| 659 | + compression='zlib', |
| 660 | + compression_opts=1, |
| 661 | + fill_value=None, |
| 662 | + order='C' |
| 663 | + ) |
| 664 | + meta_json = meta_v1.encode_metadata(meta) |
| 665 | + store['meta'] = meta_json |
| 666 | + store['attrs'] = json.dumps(dict()).encode('ascii') |
| 667 | + |
| 668 | + # run migration |
| 669 | + migrate_1to2(store) |
| 670 | + |
| 671 | + # check results |
| 672 | + assert 'meta' not in store |
| 673 | + assert '.zarray' in store |
| 674 | + assert 'attrs' not in store |
| 675 | + assert '.zattrs' in store |
| 676 | + meta_migrated = decode_array_metadata(store['.zarray']) |
| 677 | + eq(2, meta_migrated['zarr_format']) |
| 678 | + # preserved fields |
| 679 | + for f in 'shape', 'chunks', 'dtype', 'compression', 'compression_opts', \ |
| 680 | + 'fill_value', 'order': |
| 681 | + eq(meta[f], meta_migrated[f]) |
| 682 | + # TODO migrate should have added empty filters field |
| 683 | + # assert_is_none(meta_migrated['filters']) |
0 commit comments