Exemplo n.º 1
0
def test_file_storage_jobstore_codepack_snapshot(testdir):
    code = Code(hello)
    codepack = CodePack('codepack_test', code=code, subscribe=code)
    argpack = codepack.make_argpack()
    argpack['hello']['name'] = 'CodePack'
    job_id = 'job_test'
    storage = FileStorage(item_type=StorableJob,
                          key='id',
                          path='testdir/scheduler/')
    jobstore = JobStore(storage=storage)
    scheduler = Scheduler(jobstore=jobstore, blocking=False)
    scheduler.add_codepack(job_id=job_id,
                           codepack=codepack,
                           argpack=argpack,
                           trigger='interval',
                           seconds=30)
    scheduler.start()
    assert scheduler.is_running()
    assert not storage.exist(key=codepack.id)
    assert storage.exist(key=job_id)
    job = storage.load(key=job_id, to_dict=True)
    for k in [
            '_id', 'trigger', 'codepack', 'snapshot', 'last_run_time',
            'next_run_time'
    ]:
        assert k in job
    assert job['_id'] == job_id
    assert job['trigger'] == 'interval[0:00:30]'
    assert job['codepack'] == codepack.id
    assert job['snapshot'] == codepack.serial_number
    scheduler.remove_job(job_id)
    assert len(storage.list_all()) == 0
    scheduler.stop()
Exemplo n.º 2
0
def test_file_storage(testdir_file_storage, dummy_deliveries):
    storage = FileStorage(item_type=Delivery,
                          key='id',
                          path=testdir_file_storage)
    assert storage.key == 'id'
    storage.save(item=dummy_deliveries)
    assert sorted(os.listdir(testdir_file_storage)) == sorted(
        ['%s.json' % d.id for d in dummy_deliveries])
    with pytest.raises(ValueError):
        storage.save(item=dummy_deliveries[0])
    assert dummy_deliveries[0].item == 'x'
    dummy_deliveries[0].send(item='z')
    storage.save(item=dummy_deliveries[0], update=True)
    storage.remove(key=[dummy_deliveries[1].id, dummy_deliveries[2].id])
    assert storage.exist(key=[d.id for d in dummy_deliveries]) == [
        True, False, False
    ]
    assert storage.exist(key=[d.id for d in dummy_deliveries],
                         summary='and') is False
    assert storage.exist(key=[d.id
                              for d in dummy_deliveries], summary='or') is True
    storage.save(item=[dummy_deliveries[1], dummy_deliveries[2]])
    assert storage.exist(key=[d.id for d in dummy_deliveries]) == [
        True, True, True
    ]
    assert storage.exist(key=[d.id for d in dummy_deliveries],
                         summary='and') is True
    assert storage.exist(key=[d.id
                              for d in dummy_deliveries], summary='or') is True
    search_result = storage.search(key='item', value=json.dumps('?'))
    assert type(search_result) == list and len(search_result) == 0
    ref = sorted([dummy_deliveries[1].id, dummy_deliveries[2].id])
    search_result = storage.search(key='item', value=json.dumps('z'))
    assert len(
        search_result) == 1 and search_result[0].id == dummy_deliveries[0].id
    search_result = storage.search(key='item', value=json.dumps('y'))
    assert len(search_result) == 2
    assert sorted([s.id for s in search_result]) == ref
    search_result = storage.search(key='item',
                                   value=json.dumps('y'),
                                   to_dict=True)
    assert len(search_result) == 2
    assert sorted([s['id'] for s in search_result]) == ref
    assert type(search_result[0]) == dict and type(search_result[1]) == dict
    assert set(search_result[0].keys()) == {
        'item', 'id', '_id', 'timestamp', 'serial_number'
    }
    assert set(search_result[1].keys()) == {
        'item', 'id', '_id', 'timestamp', 'serial_number'
    }
    search_result = storage.search(key='item',
                                   value=json.dumps('y'),
                                   projection=['item'])
    assert len(search_result) == 2
    assert type(search_result[0]) == dict and type(search_result[1]) == dict
    assert set(search_result[0].keys()) == {'item', 'id'}
    assert set(search_result[1].keys()) == {'item', 'id'}
    load_result = storage.load(key='???')
    assert load_result is None
    load_result = storage.load(key=['!??', '?!?', '??!'])
    assert type(load_result) == list and len(load_result) == 0
    load_result = storage.load(key=[d.id for d in dummy_deliveries])
    assert type(load_result) == list and len(load_result) == len(
        dummy_deliveries)
    for i in range(len(load_result)):
        assert load_result[i].id == dummy_deliveries[i].id
        assert load_result[i].item == dummy_deliveries[i].item
        assert load_result[i].serial_number == dummy_deliveries[
            i].serial_number
    load_result = storage.load(key=dummy_deliveries[1].id)
    assert isinstance(load_result, Delivery)
    load_result = storage.load(
        key=[dummy_deliveries[1].id, dummy_deliveries[2].id, '???'],
        to_dict=True)
    assert type(load_result) == list and len(load_result) == 2
    assert type(load_result[0]) == dict and type(load_result[1]) == dict
    assert set(load_result[0].keys()) == {
        'item', 'id', '_id', 'timestamp', 'serial_number'
    }
    assert set(load_result[1].keys()) == {
        'item', 'id', '_id', 'timestamp', 'serial_number'
    }
    load_result = storage.load(
        key=[dummy_deliveries[1].id, dummy_deliveries[2].id],
        projection=['timestamp', '_id'])
    assert type(load_result) == list
    assert type(load_result[0]) == dict and type(load_result[1]) == dict
    assert set(load_result[0].keys()) == {'id', '_id', 'timestamp'}
    assert set(load_result[1].keys()) == {'id', '_id', 'timestamp'}
    storage.new_path = True
    storage.close()
    assert not os.path.exists(testdir_file_storage)