示例#1
0
def test_oracle_registration():
    client = EpochClient()
    weather_oracle = WeatherOracle(
        query_format="{'city': str}",
        response_format="{'temp_c': int}",
        default_query_fee=0,
        default_fee=10,
        default_ttl=50,
        default_query_ttl=2,
        default_response_ttl=2,
    )
    client.register_oracle(weather_oracle)
    client.listen_until(weather_oracle.is_ready, timeout=5)
    assert weather_oracle.oracle_id is not None
示例#2
0
def test_oracle_query_received():
    client = EpochClient()
    weather_oracle = WeatherOracle(
        query_format="{'city': str}",
        response_format="{'temp_c': int}",
        default_query_fee=0,
        default_fee=10,
        default_ttl=50,
        default_query_ttl=2,
        default_response_ttl=2,
    )
    client.register_oracle(weather_oracle)
    client.listen_until(weather_oracle.is_ready, timeout=5)
    weather_query = WeatherQuery(
        oracle_pubkey=weather_oracle.oracle_id,
        query_fee=0,
        fee=10,
        query_ttl=2,
        response_ttl=2,
    )
    client.mount(weather_query)
    weather_query.query("{'city': 'Berlin'}")
    client.listen_until(lambda: weather_query.response_received, timeout=5)
        return self._success(ret_data)


dev1_config = Config(external_host=3013, internal_host=3113, websocket_host=3114)
oraclef_jean = OraclefJean(
    # example spec (this spec is fictional and will be defined later)
    query_format='''{'url': 'str', 'jq': 'str'}''',
    # example spec (this spec is fictional and will be defined later)
    response_format='''{'status': 'error'|'ok', 'message': 'str', 'data': {}}''',
    default_ttl=50,
    default_query_fee=4,
    default_fee=6,
    default_query_ttl=10,
    default_response_ttl=10,
)
client = EpochClient(configs=dev1_config)
client.register_oracle(oraclef_jean)
client.listen_until(oraclef_jean.is_ready)

print(f'''You can now query this oracle using the following parameters:
    oracle_pubkey: {oraclef_jean.oracle_id}
    query_fee: {oraclef_jean.get_query_fee()}
    query_ttl: {oraclef_jean.get_query_ttl()}
    response_ttl: {oraclef_jean.get_response_ttl()}
    fee: {oraclef_jean.get_fee()}
    query_format: {oraclef_jean.query_format}
''')
print('Oracle ready')
client.listen()
print('Oracle Stopped')