Exemplo n.º 1
0
def monitoring_service(
        server_private_key,
        blockchain,
        dummy_transport,
        state_db_mock,
        web3,
        monitoring_service_contract,
        send_funds
):
    # send some eth & tokens to MS
    send_funds(private_key_to_address(server_private_key))
    register_service(
        web3,
        monitoring_service_contract.address,
        server_private_key
    )

    ms = MonitoringService(
        server_private_key,
        transport=dummy_transport,
        blockchain=blockchain,
        state_db=state_db_mock,
        monitor_contract_address=monitoring_service_contract.address
    )
    yield ms
    ms.stop()
Exemplo n.º 2
0
def monitoring_service(
    server_private_key,
    blockchain,
    state_db_sqlite,
    web3,
    monitoring_service_contract,
    token_network_registry_contract,
    send_funds,
    contracts_manager: ContractManager,
):
    # send some eth & tokens to MS
    send_funds(private_key_to_address(server_private_key))
    register_service(
        web3=web3,
        contract_manager=contracts_manager,
        msc_contract_address=monitoring_service_contract.address,
        private_key=server_private_key,
    )

    ms = MonitoringService(
        web3=web3,
        contract_manager=contracts_manager,
        private_key=server_private_key,
        state_db=state_db_sqlite,
        registry_address=token_network_registry_contract.address,
        monitor_contract_address=monitoring_service_contract.address,
        required_confirmations=1,  # for faster tests
        poll_interval=0,  # for faster tests
    )
    ms.start()
    yield ms
    ms.stop()
Exemplo n.º 3
0
def test_server_registration(
    faucet_address,
    server_private_key,
    blockchain,
    state_db_sqlite,
    web3,
    standard_token_contract,
    token_network_registry_contract,
    monitoring_service_contract,
    send_funds,
    contracts_manager,
):
    """Test two scenarios - instantiating a non-registered server (this should fail),
    and registering it and instantiating again"""
    # instantiation will fail - MS is not registered
    with pytest.raises(ServiceNotRegistered):
        MonitoringService(
            web3=web3,
            contract_manager=contracts_manager,
            private_key=server_private_key,
            state_db=state_db_sqlite,
            registry_address=token_network_registry_contract.address,
            monitor_contract_address=monitoring_service_contract.address,
        )

    # give some tokens to the MS
    server_address = private_key_to_address(server_private_key)
    send_funds(server_address)
    # register MS
    register_service(
        web3,
        contracts_manager,
        monitoring_service_contract.address,
        server_private_key,
    )

    # check if registration succeeded
    assert is_service_registered(
        web3,
        contracts_manager,
        monitoring_service_contract.address,
        server_address,
    )
    # now instantiation will proceed
    ms = MonitoringService(
        web3=web3,
        contract_manager=contracts_manager,
        private_key=server_private_key,
        state_db=state_db_sqlite,
        registry_address=token_network_registry_contract.address,
        monitor_contract_address=monitoring_service_contract.address,
    )
    assert ms is not None
Exemplo n.º 4
0
def monitor_registration(web3: Web3, ms_contract_address,
                         monitoring_service_address, private_key):
    if is_service_registered(web3, ms_contract_address,
                             monitoring_service_address) is True:
        log.error('MS service %s is already registered in the contract %s' %
                  (ms_contract_address, monitoring_service_address))
        return False
    return register_service(web3, ms_contract_address, private_key)
def test_server_registration(
        faucet_address,
        server_private_key,
        blockchain,
        dummy_transport,
        state_db_mock,
        web3,
        standard_token_contract,
        monitoring_service_contract,
        send_funds
):
    """Test two scenarios - instantiating a non-registered server (this should fail),
    and registering it and instantiating again"""
    # instantiation will fail - MS is not registered
    with pytest.raises(ServiceNotRegistered):
        MonitoringService(
            server_private_key,
            transport=dummy_transport,
            blockchain=blockchain,
            state_db=state_db_mock,
            monitor_contract_address=monitoring_service_contract.address
        )

    # give some tokens to the MS
    server_address = private_key_to_address(server_private_key)
    send_funds(server_address)
    # register MS
    register_service(web3, monitoring_service_contract.address, server_private_key)

    # check if registration succeeded
    assert is_service_registered(web3, monitoring_service_contract.address, server_address) is True
    # now instantiation will proceed
    ms = MonitoringService(
        server_private_key,
        transport=dummy_transport,
        blockchain=blockchain,
        state_db=state_db_mock,
        monitor_contract_address=monitoring_service_contract.address
    )
    assert ms is not None
def test_server_wrong_db(
        server_private_key,
        blockchain,
        dummy_transport,
        web3,
        monitoring_service_contract,
        get_random_address,
        send_funds
):
    server_address = private_key_to_address(server_private_key)
    send_funds(server_address)
    register_service(web3, monitoring_service_contract.address, server_private_key)

    def create_server(setup_database):
        db = StateDBMock()
        setup_database(db)
        return MonitoringService(
            server_private_key,
            transport=dummy_transport,
            blockchain=blockchain,
            state_db=db,
            monitor_contract_address=monitoring_service_contract.address
        )
    with pytest.raises(StateDBInvalid):
        create_server(
            lambda db: db.setup_db(0, monitoring_service_contract.address, server_address)
        )
    with pytest.raises(StateDBInvalid):
        create_server(
            lambda db: db.setup_db(0, get_random_address(), server_address)
        )
    with pytest.raises(StateDBInvalid):
        create_server(
            lambda db: db.setup_db(0, monitoring_service_contract.address, get_random_address())
        )
    create_server(
        lambda db: db.setup_db(1, monitoring_service_contract.address, server_address)
    )