Example #1
0
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

import pytest
from dateutil.parser import parse
from web3 import HTTPProvider, Web3

from celoetl.service.eth_service import EthService
from celoetl.service.graph_operations import OutOfBoundsError
from tests.helpers import skip_if_slow_tests_disabled


@pytest.mark.parametrize("date,expected_start_block,expected_end_block", [
    skip_if_slow_tests_disabled(['2015-07-30', 0, 6911]),
    skip_if_slow_tests_disabled(['2015-07-31', 6912, 13774]),
    skip_if_slow_tests_disabled(['2017-01-01', 2912407, 2918517]),
    skip_if_slow_tests_disabled(['2017-01-02', 2918518, 2924575]),
    skip_if_slow_tests_disabled(['2018-06-10', 5761663, 5767303])
])
def test_get_block_range_for_date(date, expected_start_block,
                                  expected_end_block):
    eth_service = get_new_eth_service()
    parsed_date = parse(date)
    blocks = eth_service.get_block_range_for_date(parsed_date)
    assert blocks == (expected_start_block, expected_end_block)


@pytest.mark.parametrize("date", [
    skip_if_slow_tests_disabled(['2015-07-29']),
from tests.zilliqaetl.helpers import get_zilliqa_api
from blockchainetl_common.thread_local_proxy import ThreadLocalProxy

import tests.resources
from tests.helpers import compare_lines_ignore_order, read_file, skip_if_slow_tests_disabled

RESOURCE_GROUP = 'test_export_tx_blocks_job'


def read_resource(resource_group, file_name):
    return tests.resources.read_resource([RESOURCE_GROUP, resource_group], file_name)


@pytest.mark.parametrize("start_block, end_block, resource_group ,provider_type", [
    (1001, 1003, 'tx_blocks_without_transactions', 'mock'),
    skip_if_slow_tests_disabled([1001, 1003, 'tx_blocks_without_transactions', 'online']),
    (692365, 692365, 'tx_blocks_with_transactions', 'mock'),
    skip_if_slow_tests_disabled([692365, 692365, 'tx_blocks_with_transactions', 'online']),
    (1111, 1111, 'tx_blocks_with_exceptions', 'mock'),
    skip_if_slow_tests_disabled([175334, 175334, 'tx_blocks_missing_transactions', 'online']),
])
def test_export_tx_blocks_job(tmpdir, start_block, end_block, resource_group, provider_type):
    job = ExportTxBlocksJob(
        start_block=start_block,
        end_block=end_block,
        zilliqa_api=ThreadLocalProxy(
            lambda: get_zilliqa_api(
                provider_type,
                read_resource_lambda=lambda file: read_resource(resource_group, file))),
        max_workers=5,
        item_exporter=ZilliqaItemExporter(str(tmpdir)),
from tests.iotexetl.helpers import get_iotex_rpc
from blockchainetl_common.thread_local_proxy import ThreadLocalProxy

import tests.resources
from tests.helpers import compare_lines_ignore_order, read_file, skip_if_slow_tests_disabled

RESOURCE_GROUP = 'test_export_transaction_logs_job'


def read_resource(resource_group, file_name):
    return tests.resources.read_resource([RESOURCE_GROUP, resource_group], file_name)


@pytest.mark.parametrize("start_block, end_block, resource_group ,provider_type", [
    (5202793, 5202793, 'transaction_logs', 'mock'),
    skip_if_slow_tests_disabled([5202793, 5202793, 'transaction_logs', 'online']),
])
def test_export_transaction_logs_job(tmpdir, start_block, end_block, resource_group, provider_type):
    job = ExportTransactionLogsJob(
        start_block=start_block,
        end_block=end_block,
        iotex_rpc=ThreadLocalProxy(
            lambda: get_iotex_rpc(
                provider_type,
                read_resource_lambda=lambda file: read_resource(resource_group, file))),
        max_workers=5,
        item_exporter=IotexItemExporter(str(tmpdir)),
    )
    job.run()

    compare_lines_ignore_order(
Example #4
0
from tests.celoetl.job.helpers import get_web3_provider
from tests.helpers import compare_lines_ignore_order, read_file, skip_if_slow_tests_disabled

RESOURCE_GROUP = 'test_export_contracts_job'


def read_resource(resource_group, file_name):
    return tests.resources.read_resource([RESOURCE_GROUP, resource_group], file_name)


CONTRACT_ADDRESSES_UNDER_TEST = ['0x06012c8cf97bead5deae237070f9587f8e7a266d']


@pytest.mark.parametrize("batch_size,contract_addresses,output_format,resource_group,web3_provider_type", [
    (1, CONTRACT_ADDRESSES_UNDER_TEST, 'json', 'erc721_contract', 'mock'),
    skip_if_slow_tests_disabled((1, CONTRACT_ADDRESSES_UNDER_TEST, 'json', 'erc721_contract', 'infura'))
])
def test_export_contracts_job(tmpdir, batch_size, contract_addresses, output_format, resource_group,
                              web3_provider_type):
    contracts_output_file = str(tmpdir.join('actual_contracts.' + output_format))

    job = ExportContractsJob(
        contract_addresses_iterable=contract_addresses,
        batch_size=batch_size,
        batch_web3_provider=ThreadLocalProxy(
            lambda: get_web3_provider(web3_provider_type, lambda file: read_resource(resource_group, file), batch=True)
        ),
        max_workers=5,
        item_exporter=contracts_item_exporter(contracts_output_file)
    )
    job.run()
Example #5
0
from tests.helpers import compare_lines_ignore_order, read_file, skip_if_slow_tests_disabled

RESOURCE_GROUP = 'test_export_blocks_job'


def read_resource(resource_group, file_name):
    return tests.resources.read_resource([RESOURCE_GROUP, resource_group],
                                         file_name)


@pytest.mark.parametrize(
    "start_block, end_block, batch_size, resource_group ,provider_type,chain",
    [
        (50001, 50002, 1, 'bitcoin/stream_50001_50002', 'mock', 'bitcoin'),
        skip_if_slow_tests_disabled([
            50001, 50002, 1, 'bitcoin/stream_50001_50002', 'online', 'bitcoin'
        ]),
    ])
def test_stream(tmpdir, start_block, end_block, batch_size, resource_group,
                provider_type, chain):
    try:
        os.remove('last_synced_block.txt')
    except OSError:
        pass

    blocks_output_file = str(tmpdir.join('actual_block.json'))
    transactions_output_file = str(tmpdir.join("actual_transactions.json"))

    streamer_adapter = BtcStreamerAdapter(
        bitcoin_rpc=ThreadLocalProxy(
            lambda: get_bitcoin_rpc(provider_type,
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

import pytest
from dateutil.parser import parse

from blockchainetl_common.graph.graph_operations import OutOfBoundsError
from tests.zilliqaetl.helpers import get_zilliqa_api
from tests.helpers import skip_if_slow_tests_disabled
from zilliqaetl.service.block_range_service import BlockRangeService
from zilliqaetl.service.ds_block_timestamp_graph import DsBlockTimestampGraph


@pytest.mark.parametrize("date,expected_start_block,expected_end_block", [
    skip_if_slow_tests_disabled(['2019-06-18', 0, 1422]),
    skip_if_slow_tests_disabled(['2020-08-01', 7004, 7021]),
])
def test_get_ds_block_range_for_date(date, expected_start_block,
                                     expected_end_block):
    block_range_service = get_ds_block_range_service()
    parsed_date = parse(date)
    blocks = block_range_service.get_block_range_for_date(parsed_date)
    assert (expected_start_block, expected_end_block) == blocks


@pytest.mark.parametrize("date", [skip_if_slow_tests_disabled(['2019-06-01'])])
def test_get_ds_block_range_for_date_fail(date):
    block_range_service = get_ds_block_range_service()
    parsed_date = parse(date)
    with pytest.raises(OutOfBoundsError):
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

import pytest
from dateutil.parser import parse

from tezosetl.service.tezos_block_range_service import TezosBlockRangeService
from blockchainetl_common.graph.graph_operations import OutOfBoundsError
from tests.tezosetl.helpers import get_tezos_rpc
from tests.helpers import skip_if_slow_tests_disabled


@pytest.mark.parametrize("date,expected_start_block,expected_end_block", [
    skip_if_slow_tests_disabled(['2018-06-30', 0, 377]),
    skip_if_slow_tests_disabled(['2020-01-01', 760512, 761937]),
])
def test_get_block_range_for_date(date, expected_start_block, expected_end_block):
    tezos_block_range_service = get_new_tezos_block_range_service()
    parsed_date = parse(date)
    blocks = tezos_block_range_service.get_block_range_for_date(parsed_date)
    assert (expected_start_block, expected_end_block) == blocks


@pytest.mark.parametrize("date", [
    skip_if_slow_tests_disabled(['2030-01-01'])
])
def test_get_block_range_for_date_fail(date):
    tezos_service = get_new_tezos_block_range_service()
    parsed_date = parse(date)
import tests.resources
from tests.helpers import compare_lines_ignore_order, read_file, skip_if_slow_tests_disabled

RESOURCE_GROUP = 'test_export_blocks_job'


def read_resource(resource_group, file_name):
    return tests.resources.read_resource([RESOURCE_GROUP, resource_group],
                                         file_name)


@pytest.mark.parametrize(
    "start_block, end_block, batch_size, resource_group, provider_type, chain",
    [
        (0, 0, 1, 'bitcoin/block_0', 'mock', 'bitcoin'),
        skip_if_slow_tests_disabled(
            [0, 0, 1, 'bitcoin/block_0', 'online', 'bitcoin']),
        (1, 1, 1, 'bitcoin/block_1', 'mock', 'bitcoin'),
        skip_if_slow_tests_disabled(
            [1, 1, 1, 'bitcoin/block_1', 'online', 'bitcoin']),
        (50000, 50000, 1, 'bitcoin/block_without_transactions', 'mock',
         'bitcoin'),
        skip_if_slow_tests_disabled([
            50000, 50000, 1, 'bitcoin/block_without_transactions', 'online',
            'bitcoin'
        ]),
        (50001, 50002, 2, 'bitcoin/block_with_transactions', 'mock',
         'bitcoin'),
        skip_if_slow_tests_disabled([
            50001, 50002, 2, 'bitcoin/block_with_transactions', 'online',
            'bitcoin'
        ]),
Example #9
0
RESOURCE_GROUP = 'test_stream'


def read_resource(resource_group, file_name):
    return tests.resources.read_resource([RESOURCE_GROUP, resource_group],
                                         file_name)


@pytest.mark.parametrize(
    "start_block, end_block, batch_size, resource_group, entity_types, provider_type",
    [
        (1755634, 1755635, 1, 'blocks_1755634_1755635',
         EntityType.ALL_FOR_INFURA, 'mock'),
        skip_if_slow_tests_disabled([
            1755634, 1755635, 1, 'blocks_1755634_1755635',
            EntityType.ALL_FOR_INFURA, 'infura'
        ]),
        (508110, 508110, 1, 'blocks_508110_508110',
         ['trace', 'contract', 'token'], 'mock'),
        (2112234, 2112234, 1, 'blocks_2112234_2112234',
         ['trace', 'contract', 'token'], 'mock'),
    ])
def test_stream(tmpdir, start_block, end_block, batch_size, resource_group,
                entity_types, provider_type):
    try:
        os.remove('last_synced_block.txt')
    except OSError:
        pass

    blocks_output_file = str(tmpdir.join('actual_blocks.json'))
    transactions_output_file = str(tmpdir.join('actual_transactions.json'))
Example #10
0
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

import pytest
from dateutil.parser import parse

from eosetl.service.eos_block_range_service import EosBlockRangeService
from blockchainetl_common.graph.graph_operations import OutOfBoundsError
from tests.eosetl.job.helpers import get_eos_rpc
from tests.helpers import skip_if_slow_tests_disabled


@pytest.mark.parametrize("date,expected_start_block,expected_end_block", [
    skip_if_slow_tests_disabled(['2018-06-08', 1, 1]),
    skip_if_slow_tests_disabled(['2018-06-09', 2, 13338]),
    skip_if_slow_tests_disabled(['2018-11-01', 24569043, 24741696]),
    skip_if_slow_tests_disabled(['2018-11-02', 24741697, 24914090]),
    skip_if_slow_tests_disabled(['2019-06-01', 61118944, 61291688]),
])
def test_get_block_range_for_date(date, expected_start_block,
                                  expected_end_block):
    eos_block_range_service = get_new_eos_block_range_service()
    parsed_date = parse(date)
    blocks = eos_block_range_service.get_block_range_for_date(parsed_date)
    assert (expected_start_block, expected_end_block) == blocks


@pytest.mark.parametrize("date", [skip_if_slow_tests_disabled(['2030-01-01'])])
def test_get_block_range_for_date_fail(date):
Example #11
0
import tests.resources
from tests.helpers import compare_lines_ignore_order, read_file, skip_if_slow_tests_disabled

RESOURCE_GROUP = 'test_export_ds_blocks_job'


def read_resource(resource_group, file_name):
    return tests.resources.read_resource([RESOURCE_GROUP, resource_group],
                                         file_name)


@pytest.mark.parametrize(
    "start_block, end_block, resource_group ,provider_type", [
        (123, 125, 'ds_blocks', 'mock'),
        skip_if_slow_tests_disabled([123, 125, 'ds_blocks', 'online']),
    ])
def test_export_ds_blocks_job(tmpdir, start_block, end_block, resource_group,
                              provider_type):
    job = ExportDsBlocksJob(
        start_block=start_block,
        end_block=end_block,
        zilliqa_api=ThreadLocalProxy(
            lambda: get_zilliqa_api(provider_type,
                                    read_resource_lambda=lambda file:
                                    read_resource(resource_group, file))),
        max_workers=5,
        item_exporter=ZilliqaItemExporter(str(tmpdir)),
    )
    job.run()
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

import pytest
from dateutil.parser import parse

from iotexetl.service.iotex_block_range_service import IotexBlockRangeService
from blockchainetl_common.graph.graph_operations import OutOfBoundsError
from tests.iotexetl.helpers import get_iotex_rpc
from tests.helpers import skip_if_slow_tests_disabled


@pytest.mark.parametrize("date,expected_start_block,expected_end_block", [
    skip_if_slow_tests_disabled(['2019-04-22', 1, 7828]),
    skip_if_slow_tests_disabled(['2020-07-15', 5908040, 5925317]),
])
def test_get_block_range_for_date(date, expected_start_block,
                                  expected_end_block):
    iotex_block_range_service = get_iotex_block_range_service()
    parsed_date = parse(date)
    blocks = iotex_block_range_service.get_block_range_for_date(parsed_date)
    assert (expected_start_block, expected_end_block) == blocks


@pytest.mark.parametrize("date", [skip_if_slow_tests_disabled(['2019-01-01'])])
def test_get_block_range_for_date_fail(date):
    iotex_block_range_service = get_iotex_block_range_service()
    parsed_date = parse(date)
    with pytest.raises(OutOfBoundsError):
Example #13
0
import tests.resources
from tests.helpers import compare_lines_ignore_order, read_file, skip_if_slow_tests_disabled

RESOURCE_GROUP = 'test_export_blocks_job'


def read_resource(resource_group, file_name):
    return tests.resources.read_resource([RESOURCE_GROUP, resource_group],
                                         file_name)


@pytest.mark.parametrize(
    "start_block, end_block, batch_size, resource_group ,provider_type,chain",
    [
        (0, 0, 1, 'bitcoin/block_0', 'mock', 'bitcoin'),
        skip_if_slow_tests_disabled(
            [0, 0, 1, 'bitcoin/block_0', 'online', 'bitcoin']),
        (1, 1, 1, 'bitcoin/block_1', 'mock', 'bitcoin'),
        skip_if_slow_tests_disabled(
            [1, 1, 1, 'bitcoin/block_1', 'online', 'bitcoin']),
        (50000, 50000, 1, 'bitcoin/block_without_transactions', 'mock',
         'bitcoin'),
        skip_if_slow_tests_disabled([
            50000, 50000, 1, 'bitcoin/block_without_transactions', 'online',
            'bitcoin'
        ]),
        (50001, 50002, 2, 'bitcoin/block_with_transactions', 'mock',
         'bitcoin'),
        skip_if_slow_tests_disabled([
            50001, 50002, 2, 'bitcoin/block_with_transactions', 'online',
            'bitcoin'
        ]),
from tests.eosetl.job.helpers import get_eos_rpc
from blockchainetl.thread_local_proxy import ThreadLocalProxy

import tests.resources
from tests.helpers import compare_lines_ignore_order, read_file, skip_if_slow_tests_disabled

RESOURCE_GROUP = 'test_export_blocks_job'


def read_resource(resource_group, file_name):
    return tests.resources.read_resource([RESOURCE_GROUP, resource_group], file_name)


@pytest.mark.parametrize("start_block, end_block, batch_size, resource_group ,provider_type, chain", [
    (1, 1, 1, 'eos/block_1', 'mock', 'eos'),
    skip_if_slow_tests_disabled([1, 1, 1, 'eos/block_1', 'online', 'eos'], "eos"),
    skip_if_slow_tests_disabled([30000000, 30000000, 1, 'eos/block_30000000', 'online', 'eos'], "eos"),
    # (1, 1, 1, 'bitcoin/block_1', 'mock', 'bitcoin'),
    # skip_if_slow_tests_disabled([1, 1, 1, 'bitcoin/block_1', 'online', 'bitcoin']),
    # (50000, 50000, 1, 'bitcoin/block_without_transactions', 'mock', 'bitcoin'),
    # skip_if_slow_tests_disabled([50000, 50000, 1, 'bitcoin/block_without_transactions', 'online', 'bitcoin']),
    # (50001, 50002, 2, 'bitcoin/block_with_transactions', 'mock', 'bitcoin'),
    # skip_if_slow_tests_disabled([50001, 50002, 2, 'bitcoin/block_with_transactions', 'online', 'bitcoin']),
    # (2, 2, 1, 'dogecoin/block_without_transactions', 'mock', 'dogecoin'),
    # skip_if_slow_tests_disabled([107212, 107212, 1, 'dogecoin/block_with_float_precision_loss', 'online', 'dogecoin'],
    #                             chain='dogecoin'),
    # (0, 0, 1, 'zcash/block_0', 'mock', 'zcash'),
    # skip_if_slow_tests_disabled([0, 0, 1, 'zcash/block_0', 'online', 'zcash'],
    #                             chain='zcash'),
    # (508, 508, 1, 'zcash/block_with_shielded_addresses', 'mock', 'zcash'),
    # skip_if_slow_tests_disabled([508, 508, 1, 'zcash/block_with_shielded_addresses', 'online', 'zcash'],
Example #15
0
import tests.resources
from tests.helpers import compare_lines_ignore_order, read_file, skip_if_slow_tests_disabled

RESOURCE_GROUP = 'test_export_blocks_job'


def read_resource(resource_group, file_name):
    return tests.resources.read_resource([RESOURCE_GROUP, resource_group],
                                         file_name)


@pytest.mark.parametrize(
    "start_block, end_block, resource_group ,provider_type", [
        (3290498, 3290498, 'blocks_with_actions', 'mock'),
        skip_if_slow_tests_disabled(
            [3290498, 3290498, 'blocks_with_actions', 'online']),
        (5728441, 5728441, 'blocks_with_execution', 'mock'),
        skip_if_slow_tests_disabled(
            [5728441, 5728441, 'blocks_with_execution', 'online']),
        (5914081, 5914081, 'blocks_with_put_poll_result', 'mock'),
        skip_if_slow_tests_disabled(
            [5914081, 5914081, 'blocks_with_put_poll_result', 'online']),
        (5908046, 5908046, 'blocks_with_claim_from_rewarding_fund', 'mock'),
        skip_if_slow_tests_disabled([
            5908046, 5908046, 'blocks_with_claim_from_rewarding_fund', 'online'
        ]),
        (5911020, 5911020, 'blocks_with_stake_create', 'mock'),
        skip_if_slow_tests_disabled(
            [5911020, 5911020, 'blocks_with_stake_create', 'online']),
    ])
def test_export_blocks_job(tmpdir, start_block, end_block, resource_group,
Example #16
0
def read_resource(resource_group, file_name):
    return tests.resources.read_resource([RESOURCE_GROUP, resource_group], file_name)


DEFAULT_TX_HASHES = ['0x04cbcb236043d8fb7839e07bbc7f5eed692fb2ca55d897f1101eac3e3ad4fab8',
                     '0x463d53f0ad57677a3b430a007c1c31d15d62c37fab5eee598551697c297c235c',
                     '0x05287a561f218418892ab053adfb3d919860988b19458c570c5c30f51c146f02',
                     '0xcea6f89720cc1d2f46cc7a935463ae0b99dd5fad9c91bb7357de5421511cee49']


@pytest.mark.parametrize("batch_size,transaction_hashes,output_format,resource_group,web3_provider_type", [
    (1, DEFAULT_TX_HASHES, 'csv', 'receipts_with_logs', 'mock'),
    (2, DEFAULT_TX_HASHES, 'csv', 'receipts_with_logs', 'mock'),
    (2, DEFAULT_TX_HASHES, 'json', 'receipts_with_logs', 'mock'),
    skip_if_slow_tests_disabled((1, DEFAULT_TX_HASHES, 'csv', 'receipts_with_logs', 'infura')),
    skip_if_slow_tests_disabled((2, DEFAULT_TX_HASHES, 'json', 'receipts_with_logs', 'infura'))
])
def test_export_receipts_job(tmpdir, batch_size, transaction_hashes, output_format, resource_group, web3_provider_type):
    receipts_output_file = str(tmpdir.join('actual_receipts.' + output_format))
    logs_output_file = str(tmpdir.join('actual_logs.' + output_format))

    job = ExportReceiptsJob(
        transaction_hashes_iterable=transaction_hashes,
        batch_size=batch_size,
        batch_web3_provider=ThreadLocalProxy(
            lambda: get_web3_provider(web3_provider_type, lambda file: read_resource(resource_group, file), batch=True)
        ),
        max_workers=5,
        item_exporter=receipts_and_logs_item_exporter(receipts_output_file, logs_output_file),
        export_receipts=receipts_output_file is not None,
Example #17
0
RESOURCE_GROUP = 'test_export_tokens_job'


def read_resource(resource_group, file_name):
    return tests.resources.read_resource([RESOURCE_GROUP, resource_group],
                                         file_name)


@pytest.mark.parametrize(
    "token_addresses,resource_group,web3_provider_type",
    [(['0xf763be8b3263c268e9789abfb3934564a7b80054'
       ], 'token_with_invalid_data', 'mock'),
     (['0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0'
       ], 'token_with_alternative_return_type', 'mock'),
     skip_if_slow_tests_disabled(
         (['0x86fa049857e0209aa7d9e616f7eb3b3b78ecfdb0'
           ], 'token_with_alternative_return_type', 'infura'))])
def test_export_tokens_job(tmpdir, token_addresses, resource_group,
                           web3_provider_type):
    output_file = str(tmpdir.join('tokens.csv'))

    job = ExportTokensJob(
        token_addresses_iterable=token_addresses,
        web3=ThreadLocalProxy(lambda: Web3(
            get_web3_provider(web3_provider_type, lambda file: read_resource(
                resource_group, file)))),
        item_exporter=tokens_item_exporter(output_file),
        max_workers=5)
    job.run()

    compare_lines_ignore_order(
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

import pytest
from dateutil.parser import parse

from eosetl.service.btc_block_range_service import BtcBlockRangeService
from blockchainetl.service.graph_operations import OutOfBoundsError
from tests.eosetl.job.helpers import get_eos_rpc
from tests.helpers import skip_if_slow_tests_disabled


@pytest.mark.parametrize("chain,date,expected_start_block,expected_end_block", [
    skip_if_slow_tests_disabled(['bitcoin', '2009-01-03', 0, 0], chain='bitcoin'),
    skip_if_slow_tests_disabled(['bitcoin', '2009-01-09', 1, 14], chain='bitcoin'),
    skip_if_slow_tests_disabled(['bitcoin', '2009-03-01', 5924, 6028], chain='bitcoin'),
    skip_if_slow_tests_disabled(['bitcoin', '2009-05-06', 13448, 13582], chain='bitcoin'),
    skip_if_slow_tests_disabled(['bitcoin', '2009-05-07', 13583, 13704], chain='bitcoin'),
    skip_if_slow_tests_disabled(['bitcoin', '2009-05-08', 13705, 13811], chain='bitcoin'),
    skip_if_slow_tests_disabled(['bitcoin', '2009-06-05', 16534, 16563], chain='bitcoin'),
    skip_if_slow_tests_disabled(['bitcoin', '2013-10-09', 262452, 262645], chain='bitcoin'),
    skip_if_slow_tests_disabled(['bitcoin', '2014-04-18', 296393, 296552], chain='bitcoin'),
    skip_if_slow_tests_disabled(['bitcoin', '2014-04-19', 296553, 296711], chain='bitcoin'),
    skip_if_slow_tests_disabled(['bitcoin', '2017-01-02', 446189, 446347], chain='bitcoin'),
    skip_if_slow_tests_disabled(['dogecoin', '2014-01-20', 63869, 65347], chain='dogecoin'),
    skip_if_slow_tests_disabled(['dogecoin', '2014-01-21', 65322, 66853], chain='dogecoin'),
    skip_if_slow_tests_disabled(['litecoin', '2011-10-07', 0, 0], chain='litecoin'),
    skip_if_slow_tests_disabled(['dash', '2014-01-19', 0, 4138], chain='dash'),
    skip_if_slow_tests_disabled(['zcash', '2016-10-28', 0, 629], chain='zcash'),
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.

import pytest
from dateutil.parser import parse

from blockchainetl_common.graph.graph_operations import OutOfBoundsError
from tests.zilliqaetl.helpers import get_zilliqa_api
from tests.helpers import skip_if_slow_tests_disabled
from zilliqaetl.service.block_range_service import BlockRangeService
from zilliqaetl.service.tx_block_timestamp_graph import TxBlockTimestampGraph


@pytest.mark.parametrize("date,expected_start_block,expected_end_block", [
    skip_if_slow_tests_disabled(['2019-06-18', 0, 142160]),
    skip_if_slow_tests_disabled(['2020-08-01', 700286, 702099]),
])
def test_get_tx_block_range_for_date(date, expected_start_block, expected_end_block):
    block_range_service = get_tx_block_range_service()
    parsed_date = parse(date)
    blocks = block_range_service.get_block_range_for_date(parsed_date)
    assert (expected_start_block, expected_end_block) == blocks


@pytest.mark.parametrize("date", [
    skip_if_slow_tests_disabled(['2019-06-01'])
])
def test_get_tx_block_range_for_date_fail(date):
    block_range_service = get_tx_block_range_service()
    parsed_date = parse(date)
Example #20
0
RESOURCE_GROUP = 'test_export_blocks_job'


def read_resource(resource_group, file_name):
    return tests.resources.read_resource([RESOURCE_GROUP, resource_group],
                                         file_name)


@pytest.mark.parametrize(
    "start_block,end_block,batch_size,resource_group,web3_provider_type", [
        (0, 0, 1, 'block_without_transactions', 'mock'),
        (483920, 483920, 1, 'block_with_logs', 'mock'),
        (47218, 47219, 1, 'blocks_with_transactions', 'mock'),
        (47218, 47219, 2, 'blocks_with_transactions', 'mock'),
        skip_if_slow_tests_disabled(
            (0, 0, 1, 'block_without_transactions', 'infura')),
        skip_if_slow_tests_disabled(
            (483920, 483920, 1, 'block_with_logs', 'infura')),
        skip_if_slow_tests_disabled(
            (47218, 47219, 2, 'blocks_with_transactions', 'infura')),
    ])
def test_export_blocks_job(tmpdir, start_block, end_block, batch_size,
                           resource_group, web3_provider_type):
    blocks_output_file = str(tmpdir.join('actual_blocks.csv'))
    transactions_output_file = str(tmpdir.join('actual_transactions.csv'))

    job = ExportBlocksJob(
        start_block=start_block,
        end_block=end_block,
        batch_size=batch_size,
        batch_web3_provider=ThreadLocalProxy(lambda: get_web3_provider(
Example #21
0
from tests.eosetl.job.helpers import get_eos_rpc
from tests.helpers import compare_lines_ignore_order, read_file, skip_if_slow_tests_disabled

RESOURCE_GROUP = 'test_export_blocks_job'


def read_resource(resource_group, file_name):
    return tests.resources.read_resource([RESOURCE_GROUP, resource_group],
                                         file_name)


@pytest.mark.timeout(10)
@pytest.mark.parametrize(
    "start_block, end_block, batch_size, resource_group ,provider_type", [
        (5000001, 5000002, 1, 'eos/stream_50001_50002', 'mock'),
        skip_if_slow_tests_disabled(
            [5000001, 5000002, 1, 'eos/stream_50001_50002', 'online']),
    ])
def test_stream(tmpdir, start_block, end_block, batch_size, resource_group,
                provider_type):
    try:
        os.remove('last_synced_block.txt')
    except OSError:
        pass

    blocks_output_file = str(tmpdir.join('actual_block.json'))
    transactions_output_file = str(tmpdir.join("actual_transactions.json"))
    actions_output_file = str(tmpdir.join("actual_actions.json"))

    streamer_adapter = EosStreamerAdapter(
        eos_rpc=ThreadLocalProxy(
            lambda: get_eos_rpc(provider_type,
Example #22
0
from tests.helpers import compare_lines_ignore_order, read_file, skip_if_slow_tests_disabled

from ethereumetl.jobs.export_origin_job import ExportOriginJob
from ethereumetl.jobs.exporters.origin_exporter import origin_marketplace_listing_item_exporter, origin_shop_product_item_exporter
from ethereumetl.ipfs.origin import get_origin_ipfs_client
from ethereumetl.thread_local_proxy import ThreadLocalProxy

RESOURCE_GROUP = 'test_export_origin_job'

def read_resource(resource_group, file_name):
    return tests.resources.read_resource([RESOURCE_GROUP, resource_group], file_name)


@pytest.mark.parametrize("start_block,end_block,batch_size,output_format,resource_group,web3_provider_type,ipfs_client_type", [
    (10014847, 10014847, 1, 'json', 'blocks_with_logs', 'mock', 'mock'),
    skip_if_slow_tests_disabled((10014847, 10014847, 1, 'json', 'blocks_with_logs', 'infura', 'ipfs'))
])
def test_export_origin(tmpdir, start_block, end_block, batch_size, output_format, resource_group, web3_provider_type, ipfs_client_type):
    marketplace_output_file = str(tmpdir.join('actual_marketplace.' + output_format))
    shop_output_file = str(tmpdir.join('actual_shop.' + output_format))

    ipfs_client = MockIpfsClient(lambda file: read_resource(resource_group, file)) if ipfs_client_type == 'mock' else get_origin_ipfs_client()

    job = ExportOriginJob(
        start_block=start_block,
        end_block=end_block,
        batch_size=batch_size,
        web3=ThreadLocalProxy(
            lambda: Web3(get_web3_provider(web3_provider_type, lambda file: read_resource(resource_group, file)))
        ),
        ipfs_client=ipfs_client,
Example #23
0
import tests.resources
from tests.helpers import compare_lines_ignore_order, read_file, skip_if_slow_tests_disabled

RESOURCE_GROUP = 'test_export_job'


def read_resource(resource_group, file_name):
    return tests.resources.read_resource([RESOURCE_GROUP, resource_group],
                                         file_name)


@pytest.mark.parametrize(
    "start_block, end_block, resource_group ,provider_type", [
        (417645, 417645, 'tezos/block_417645', 'mock'),
        skip_if_slow_tests_disabled(
            [417645, 417645, 'tezos/block_417645', 'online']),
        (889027, 889027, 'tezos/block_889027', 'mock'),
        skip_if_slow_tests_disabled(
            [889027, 889027, 'tezos/block_889027', 'online']),
        (979686, 979686, 'tezos/block_979686', 'mock'),
        skip_if_slow_tests_disabled(
            [979686, 979686, 'tezos/block_979686', 'online']),
    ])
def test_export_job(tmpdir, start_block, end_block, resource_group,
                    provider_type):
    job = ExportJob(
        start_block=start_block,
        end_block=end_block,
        tezos_rpc=ThreadLocalProxy(
            lambda: get_tezos_rpc(provider_type,
                                  read_resource_lambda=lambda file: