def test_partial_sync_revert(): a = MemoryStorage(instance_name='a') b = MemoryStorage(instance_name='b') status = {} item1 = format_item('1') item2 = format_item('2') a.upload(item1) b.upload(item2) b.read_only = True sync(a, b, status, partial_sync='revert') assert len(status) == 2 assert items(a) == {item1.raw, item2.raw} assert items(b) == {item2.raw} sync(a, b, status, partial_sync='revert') assert len(status) == 1 assert items(a) == {item2.raw} assert items(b) == {item2.raw} # Check that updates get reverted item2_up = format_item('2') a.items[next(iter(a.items))] = ('foo', item2_up) assert items(a) == {item2_up.raw} sync(a, b, status, partial_sync='revert') assert len(status) == 1 assert items(a) == {item2_up.raw} sync(a, b, status, partial_sync='revert') assert items(a) == {item2.raw} # Check that deletions get reverted a.items.clear() sync(a, b, status, partial_sync='revert', force_delete=True) sync(a, b, status, partial_sync='revert', force_delete=True) assert items(a) == {item2.raw}
def test_partial_sync_revert(): a = MemoryStorage(instance_name="a") b = MemoryStorage(instance_name="b") status = {} a.upload(Item("UID:1")) b.upload(Item("UID:2")) b.read_only = True sync(a, b, status, partial_sync="revert") assert len(status) == 2 assert items(a) == {"UID:1", "UID:2"} assert items(b) == {"UID:2"} sync(a, b, status, partial_sync="revert") assert len(status) == 1 assert items(a) == {"UID:2"} assert items(b) == {"UID:2"} # Check that updates get reverted a.items[next(iter(a.items))] = ("foo", Item("UID:2\nupdated")) assert items(a) == {"UID:2\nupdated"} sync(a, b, status, partial_sync="revert") assert len(status) == 1 assert items(a) == {"UID:2\nupdated"} sync(a, b, status, partial_sync="revert") assert items(a) == {"UID:2"} # Check that deletions get reverted a.items.clear() sync(a, b, status, partial_sync="revert", force_delete=True) sync(a, b, status, partial_sync="revert", force_delete=True) assert items(a) == {"UID:2"}
def test_partial_sync_revert(): a = MemoryStorage(instance_name='a') b = MemoryStorage(instance_name='b') status = {} a.upload(Item('UID:1')) b.upload(Item('UID:2')) b.read_only = True sync(a, b, status, partial_sync='revert') assert len(status) == 2 assert items(a) == {'UID:1', 'UID:2'} assert items(b) == {'UID:2'} sync(a, b, status, partial_sync='revert') assert len(status) == 1 assert items(a) == {'UID:2'} assert items(b) == {'UID:2'} # Check that updates get reverted a.items[next(iter(a.items))] = ('foo', Item('UID:2\nupdated')) assert items(a) == {'UID:2\nupdated'} sync(a, b, status, partial_sync='revert') assert len(status) == 1 assert items(a) == {'UID:2\nupdated'} sync(a, b, status, partial_sync='revert') assert items(a) == {'UID:2'} # Check that deletions get reverted a.items.clear() sync(a, b, status, partial_sync='revert', force_delete=True) sync(a, b, status, partial_sync='revert', force_delete=True) assert items(a) == {'UID:2'}
def test_partial_sync_revert(): a = MemoryStorage(instance_name='a') b = MemoryStorage(instance_name='b') status = {} a.upload(Item(u'UID:1')) b.upload(Item(u'UID:2')) b.read_only = True sync(a, b, status, partial_sync='revert') assert len(status) == 2 assert items(a) == {'UID:1', 'UID:2'} assert items(b) == {'UID:2'} sync(a, b, status, partial_sync='revert') assert len(status) == 1 assert items(a) == {'UID:2'} assert items(b) == {'UID:2'} # Check that updates get reverted a.items[next(iter(a.items))] = ('foo', Item('UID:2\nupdated')) assert items(a) == {'UID:2\nupdated'} sync(a, b, status, partial_sync='revert') assert len(status) == 1 assert items(a) == {'UID:2\nupdated'} sync(a, b, status, partial_sync='revert') assert items(a) == {'UID:2'} # Check that deletions get reverted a.items.clear() sync(a, b, status, partial_sync='revert', force_delete=True) sync(a, b, status, partial_sync='revert', force_delete=True) assert items(a) == {'UID:2'}
def test_partial_sync_error(): a = MemoryStorage() b = MemoryStorage() status = {} a.upload(Item('UID:0')) b.read_only = True with pytest.raises(PartialSync): sync(a, b, status, partial_sync='error')
def test_partial_sync_error(): a = MemoryStorage() b = MemoryStorage() status = {} a.upload(Item('UID:0')) b.read_only = True with pytest.raises(PartialSync): sync(a, b, status, partial_sync='error')
def test_partial_sync_error(): a = MemoryStorage() b = MemoryStorage() status = {} item = format_item('0') a.upload(item) b.read_only = True with pytest.raises(PartialSync): sync(a, b, status, partial_sync='error')
def newstorage(self, read_only, flaky_etags): s = MemoryStorage() s.read_only = read_only if flaky_etags: def get(href): _, item = s.items[href] etag = _random_string() s.items[href] = etag, item return item, etag s.get = get return s
def test_partial_sync_ignore2(): a = MemoryStorage() b = MemoryStorage() status = {} href, etag = a.upload(Item('UID:0')) a.read_only = True sync(a, b, status, partial_sync='ignore', force_delete=True) assert items(b) == items(a) == {'UID:0'} b.items.clear() sync(a, b, status, partial_sync='ignore', force_delete=True) sync(a, b, status, partial_sync='ignore', force_delete=True) assert items(a) == {'UID:0'} assert not b.items a.read_only = False a.update(href, Item('UID:0\nupdated'), etag) a.read_only = True sync(a, b, status, partial_sync='ignore', force_delete=True) assert items(b) == items(a) == {'UID:0\nupdated'}
def test_partial_sync_ignore2(): a = MemoryStorage() b = MemoryStorage() status = {} href, etag = a.upload(Item('UID:0')) a.read_only = True sync(a, b, status, partial_sync='ignore', force_delete=True) assert items(b) == items(a) == {'UID:0'} b.items.clear() sync(a, b, status, partial_sync='ignore', force_delete=True) sync(a, b, status, partial_sync='ignore', force_delete=True) assert items(a) == {'UID:0'} assert not b.items a.read_only = False a.update(href, Item('UID:0\nupdated'), etag) a.read_only = True sync(a, b, status, partial_sync='ignore', force_delete=True) assert items(b) == items(a) == {'UID:0\nupdated'}
def test_readonly(): a = MemoryStorage(instance_name="a") b = MemoryStorage(instance_name="b") status = {} href_a, _ = a.upload(Item(u"UID:1")) href_b, _ = b.upload(Item(u"UID:2")) b.read_only = True with pytest.raises(exceptions.ReadOnlyError): b.upload(Item(u"UID:3")) sync(a, b, status) assert len(status) == 2 and a.has(href_a) and not b.has(href_a) sync(a, b, status) assert len(status) == 1 and not a.has(href_a) and not b.has(href_a)
def test_readonly(): a = MemoryStorage(instance_name='a') b = MemoryStorage(instance_name='b') status = {} href_a, _ = a.upload(Item(u'UID:1')) href_b, _ = b.upload(Item(u'UID:2')) b.read_only = True with pytest.raises(exceptions.ReadOnlyError): b.upload(Item(u'UID:3')) sync(a, b, status, partial_sync='revert') assert len(status) == 2 and a.has(href_a) and not b.has(href_a) sync(a, b, status, partial_sync='revert') assert len(status) == 1 and not a.has(href_a) and not b.has(href_a)
def test_readonly(): a = MemoryStorage(instance_name='a') b = MemoryStorage(instance_name='b') status = {} href_a, _ = a.upload(Item(u'UID:1')) href_b, _ = b.upload(Item(u'UID:2')) b.read_only = True with pytest.raises(exceptions.ReadOnlyError): b.upload(Item(u'UID:3')) sync(a, b, status) assert len(status) == 2 and a.has(href_a) and not b.has(href_a) sync(a, b, status) assert len(status) == 1 and not a.has(href_a) and not b.has(href_a)
def test_read_only_and_prefetch(): a = MemoryStorage() b = MemoryStorage() b.read_only = True status = {} item1 = Item('UID:1\nhaha') item2 = Item('UID:2\nhoho') a.upload(item1) a.upload(item2) sync(a, b, status, force_delete=True) sync(a, b, status, force_delete=True) assert not items(a) and not items(b)
def test_read_only_and_prefetch(): a = MemoryStorage() b = MemoryStorage() b.read_only = True status = {} item1 = Item(u'UID:1\nhaha') item2 = Item(u'UID:2\nhoho') a.upload(item1) a.upload(item2) sync(a, b, status, force_delete=True) sync(a, b, status, force_delete=True) assert not items(a) and not items(b)
def test_partial_sync_ignore2(): a = MemoryStorage() b = MemoryStorage() status = {} item = format_item('0') href, etag = a.upload(item) a.read_only = True sync(a, b, status, partial_sync='ignore', force_delete=True) assert items(b) == items(a) == {item.raw} b.items.clear() sync(a, b, status, partial_sync='ignore', force_delete=True) sync(a, b, status, partial_sync='ignore', force_delete=True) assert items(a) == {item.raw} assert not b.items a.read_only = False new_item = format_item('0') a.update(href, new_item, etag) a.read_only = True sync(a, b, status, partial_sync='ignore', force_delete=True) assert items(b) == items(a) == {new_item.raw}
def test_read_only_and_prefetch(): a = MemoryStorage() b = MemoryStorage() b.read_only = True status = {} item1 = Item(u"UID:1\nhaha") item2 = Item(u"UID:2\nhoho") a.upload(item1) a.upload(item2) sync(a, b, status, force_delete=True) sync(a, b, status, force_delete=True) assert list(a.list()) == list(b.list()) == []
def test_read_only_and_prefetch(): a = MemoryStorage() b = MemoryStorage() b.read_only = True status = {} item1 = Item(u'UID:1\nhaha') item2 = Item(u'UID:2\nhoho') a.upload(item1) a.upload(item2) sync(a, b, status, force_delete=True) sync(a, b, status, force_delete=True) assert list(a.list()) == list(b.list()) == []
def test_read_only_and_prefetch(): a = MemoryStorage() b = MemoryStorage() b.read_only = True status = {} item1 = format_item('1') item2 = format_item('2') a.upload(item1) a.upload(item2) sync(a, b, status, force_delete=True) sync(a, b, status, force_delete=True) assert not items(a) and not items(b)
def newstorage(self, read_only, flaky_etags, null_etag_on_upload): s = MemoryStorage() s.read_only = read_only if flaky_etags: def get(href): old_etag, item = s.items[href] etag = _random_string() s.items[href] = etag, item return item, etag s.get = get if null_etag_on_upload: _old_upload = s.upload _old_update = s.update s.upload = lambda item: (_old_upload(item)[0], 'NULL') s.update = lambda h, i, e: _old_update(h, i, e) and 'NULL' return s
def test_partial_sync_ignore(): a = MemoryStorage() b = MemoryStorage() status = {} item0 = format_item('0') a.upload(item0) b.upload(item0) b.read_only = True item1 = format_item('1') a.upload(item1) sync(a, b, status, partial_sync='ignore') sync(a, b, status, partial_sync='ignore') assert items(a) == {item0.raw, item1.raw} assert items(b) == {item0.raw}
def test_partial_sync_ignore(): a = MemoryStorage() b = MemoryStorage() status = {} item0 = Item('UID:0\nhehe') a.upload(item0) b.upload(item0) b.read_only = True item1 = Item('UID:1\nhaha') a.upload(item1) sync(a, b, status, partial_sync='ignore') sync(a, b, status, partial_sync='ignore') assert items(a) == {item0.raw, item1.raw} assert items(b) == {item0.raw}
def test_partial_sync_ignore(): a = MemoryStorage() b = MemoryStorage() status = {} item0 = Item('UID:0\nhehe') a.upload(item0) b.upload(item0) b.read_only = True item1 = Item('UID:1\nhaha') a.upload(item1) sync(a, b, status, partial_sync='ignore') sync(a, b, status, partial_sync='ignore') assert items(a) == {item0.raw, item1.raw} assert items(b) == {item0.raw}
def newstorage(self, read_only, flaky_etags, null_etag_on_upload): s = MemoryStorage() s.read_only = read_only if flaky_etags: def get(href): _, item = s.items[href] etag = _random_string() s.items[href] = etag, item return item, etag s.get = get if null_etag_on_upload: _old_upload = s.upload _old_update = s.update s.upload = lambda item: (_old_upload(item)[0], 'NULL') s.update = lambda h, i, e: _old_update(h, i, e) and 'NULL' return s