Пример #1
0
def test_write_append(monkeypatch):
    patch(monkeypatch)
    fragment = FragmentedJsonList(data_dir, fragment_size=fragment_size)

    fragment.append({"data": "thunder"})

    assert fragment[-1]["data"] == "thunder"
    assert len(fragment.dirty_fragments) == 1
Пример #2
0
def test_write_extend(monkeypatch):
    patch(monkeypatch)
    fragment = FragmentedJsonList(data_dir, fragment_size=fragment_size)
    extension = [1, 2, 3]

    fragment.extend(extension)

    assert fragment[-len(extension):] == extension
    assert len(fragment.dirty_fragments) >= 1
Пример #3
0
def test_write_extend_large(monkeypatch, mocker):
    patch(monkeypatch)
    new_fragment_spy = mocker.spy(FragmentedJsonList, "create_new_fragment")

    fragment = FragmentedJsonList(data_dir, fragment_size=fragment_size)

    fragments_to_create = 20
    extension = list(range(fragment_size * fragments_to_create))

    fragment.extend(extension)

    assert fragment[-len(extension):] == extension
    assert new_fragment_spy.call_count == fragments_to_create
Пример #4
0
def test_write_update(monkeypatch):
    patch(monkeypatch)
    fragment = FragmentedJsonList(data_dir, fragment_size=fragment_size)
    update_len = fragment_size

    for i in range(update_len):
        fragment.update(i, {
            "something": i
        })

    for i in range(update_len):
        assert "something" in fragment[i] and fragment[i]["something"] == i

    assert len(fragment.dirty_fragments) == 1 and 0 in fragment.dirty_fragments
Пример #5
0
def test_read_basic(monkeypatch):
    patch(monkeypatch)
    fragment = FragmentedJsonList(data_dir, fragment_size=fragment_size)

    assert len(fragment) == fragment_size * (num_fragments - 1) + last_fragment_size

    counter = 0
    for i in fragment:
        assert "data" in i
        assert i["data"] == counter

        counter += 1

    assert fragment[0]["data"] == 0
    assert fragment[len(fragment) - 1]["data"] == len(fragment) - 1
Пример #6
0
def test_write_commit(monkeypatch, mocker):
    patch(monkeypatch)
    write_json_spy = mocker.spy(FragmentedJsonList, "_write_json")

    fragment = FragmentedJsonList(data_dir, fragment_size=fragment_size)

    fragments_to_create = 20
    extension = list(range(fragment_size * fragments_to_create + 1))

    fragment.extend(extension)

    assert len(fragment.dirty_fragments) in [20, 21]

    fragment.commit_fragments()

    assert len(fragment.dirty_fragments) == 0
    assert write_json_spy.call_count in [20, 21]
Пример #7
0
def test_read_slice_reverse(monkeypatch):
    patch(monkeypatch)
    fragment = FragmentedJsonList(data_dir, fragment_size=fragment_size)
    assert_slice(fragment, None, None, -1)
    assert_slice(fragment, -5, -20, -2)
Пример #8
0
def test_read_slice_stepped(monkeypatch):
    patch(monkeypatch)
    fragment = FragmentedJsonList(data_dir, fragment_size=fragment_size)
    assert_slice(fragment, 1, 21, 2)
Пример #9
0
def test_read_slice_with_nones(monkeypatch):
    patch(monkeypatch)
    fragment = FragmentedJsonList(data_dir, fragment_size=fragment_size)
    assert_slice(fragment, None, 15, None)
    assert_slice(fragment, 5, None, None)
Пример #10
0
def test_read_negative(monkeypatch):
    patch(monkeypatch)
    fragment = FragmentedJsonList(data_dir, fragment_size=fragment_size)

    assert fragment[-1]["data"] == len(fragment) - 1
    assert fragment[-1 * len(fragment)]["data"] == 0
Пример #11
0
from exporter.fragment import FragmentedJsonList

import os
import shutil
import sys
import tempfile

src_dir = sys.argv[1]

with tempfile.TemporaryDirectory() as tempdir:
    src = FragmentedJsonList(src_dir)
    dst = FragmentedJsonList(tempdir)

    dst.extend(src[::-1])

    src.close()

    shutil.rmtree(src_dir)

    src = FragmentedJsonList(src_dir)
    src.extend(dst[::])
    src.close()
    dst.close()

print("OK")