livequery-models/models/deploy/core/live.yml
Jensen Yap a3b004d0cc
Some checks failed
docs_update / docs_update (push) Has been cancelled
dbt_run_dev_refresh / dev_refresh (push) Has been cancelled
integration test / ${{ matrix.environment }} (hosted, XSMALL) (push) Has been cancelled
integration test / ${{ matrix.environment }} (prod, DBT_CLOUD) (push) Has been cancelled
[STREAM-1155] Enhance UDF definitions and add new UDF for S3 presigned URL retrieval (#125)
2025-07-30 01:26:54 +09:00

429 lines
23 KiB
YAML

version: 2
models:
- name: live
columns:
- name: udf_api_batched
tests:
- test_udf:
name: test__live_udf_api_batched_post_data_object
args: |
'GET',
'https://httpbin.org/get',
{'Content-Type': 'application/json'},
{'param1': 'value1', 'param2': 'value2'},
''
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.args is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.args:param1 = 'value1' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.args:param2 = 'value2' ELSE true END
- test_udf:
name: test__live_udf_api_batched_post_jsonrpc_ethereum_batch
args: |
'POST',
'https://ethereum-rpc.publicnode.com',
{'Content-Type': 'application/json'},
[
{'jsonrpc': '2.0', 'id': 1, 'method': 'eth_blockNumber', 'params': []},
{'jsonrpc': '2.0', 'id': 2, 'method': 'eth_chainId', 'params': []}
],
''
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data[0]:jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[0]:id = 1 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[0]:result is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:id = 2 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:result = '0x1' ELSE true END
- test_udf:
name: test__live_udf_api_batched_post_jsonrpc_solana
args: |
'POST',
'https://api.mainnet-beta.solana.com',
{'Content-Type': 'application/json'},
{
'jsonrpc': '2.0',
'id': 1,
'method': 'getVersion'
},
''
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.id = 1 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.result is not null ELSE true END
- name: udf_api
tests:
- test_udf:
name: test__live_udf_api_post_data_object
args: |
'https://httpbin.org/post', {'foo': 'bar'}
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.json is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.json = OBJECT_CONSTRUCT('foo', 'bar') ELSE true END
- test_udf:
name: test__live_udf_api_post_data_array
args: |
'https://httpbin.org/post', ['foo', 'bar']
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.json is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.json = ARRAY_CONSTRUCT('foo', 'bar') ELSE true END
- test_udf:
name: test__live_udf_api_post_data_string
args: |
'https://httpbin.org/post', 'foo'::VARIANT
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.json is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.json = 'foo' ELSE true END
- test_udf:
name: test__live_udf_api_get_method
args: |
'https://httpbin.org/get'
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.url = 'https://httpbin.org/get' ELSE true END
- test_udf:
name: test__live_udf_api_get_with_params
args: |
'GET', 'https://httpbin.org/get', {'Content-Type': 'application/json'}, {'param1': 'value1', 'param2': 'value2'}
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.args is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.args:param1 = 'value1' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.args:param2 = 'value2' ELSE true END
- test_udf:
name: test__live_udf_api_post_batch_jsonrpc
args: |
'https://httpbin.org/post', {
'jsonrpc': '2.0',
'id': 1,
'method': 'batch',
'params': [
{'id': 1, 'method': 'method1', 'params': {'param1': 'value1'}},
{'id': 2, 'method': 'method2', 'params': {'param2': 'value2'}}
]
}
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.json:jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.json:id = 1 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.json:method = 'batch' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.json:params is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.json:params[0]:id = 1 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.json:params[1]:id = 2 ELSE true END
- test_udf:
name: test__live_udf_api_post_jsonrpc_solana
args: |
'POST',
'https://api.mainnet-beta.solana.com',
{'Content-Type': 'application/json'},
{
'jsonrpc': '2.0',
'id': 1,
'method': 'getVersion'
},
''
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.id = 1 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.result is not null ELSE true END
- test_udf:
name: test__live_udf_api_post_jsonrpc_solana_batch
args: |
'POST',
'https://api.mainnet-beta.solana.com',
{'Content-Type': 'application/json'},
[
{'jsonrpc': '2.0', 'id': 1, 'method': 'getVersion'},
{'jsonrpc': '2.0', 'id': 2, 'method': 'getVersion'}
],
''
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data[0]:jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[0]:id = 1 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[0]:result is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:id = 2 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:result is not null ELSE true END
- test_udf:
name: test__live_udf_api_post_jsonrpc_ethereum_batch
args: |
'POST',
'https://ethereum-rpc.publicnode.com',
{'Content-Type': 'application/json'},
[
{'jsonrpc': '2.0', 'id': 1, 'method': 'eth_blockNumber', 'params': []},
{'jsonrpc': '2.0', 'id': 2, 'method': 'eth_chainId', 'params': []}
],
''
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data[0]:jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[0]:id = 1 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[0]:result is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:id = 2 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:result = '0x1' ELSE true END
- name: udf_api_v2
tests:
# Convenience overloads (always sync)
- test_udf:
name: test__live_udf_api_v2_post_data_object_sync
args: |
'https://httpbin.org/post', {'foo': 'bar'}
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.json is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.json = OBJECT_CONSTRUCT('foo', 'bar') ELSE true END
- test_udf:
name: test__live_udf_api_v2_post_data_array_sync
args: |
'https://httpbin.org/post', ['foo', 'bar']
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.json is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.json = ARRAY_CONSTRUCT('foo', 'bar') ELSE true END
- test_udf:
name: test__live_udf_api_v2_post_data_string_sync
args: |
'https://httpbin.org/post', 'foo'::VARIANT
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.json is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.json = 'foo' ELSE true END
- test_udf:
name: test__live_udf_api_v2_get_method_sync
args: |
'https://httpbin.org/get'
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.url = 'https://httpbin.org/get' ELSE true END
- test_udf:
name: test__live_udf_api_v2_post_batch_jsonrpc_sync
args: |
'https://httpbin.org/post', {
'jsonrpc': '2.0',
'id': 1,
'method': 'batch',
'params': [
{'id': 1, 'method': 'method1', 'params': {'param1': 'value1'}},
{'id': 2, 'method': 'method2', 'params': {'param2': 'value2'}}
]
}
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.json:jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.json:id = 1 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.json:method = 'batch' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.json:params is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.json:params[0]:id = 1 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.json:params[1]:id = 2 ELSE true END
# Full signature tests - SYNC mode
- test_udf:
name: test__live_udf_api_v2_get_with_params_sync
args: |
'GET', 'https://httpbin.org/get', {'Content-Type': 'application/json'}, {'param1': 'value1', 'param2': 'value2'}, ''
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.args is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.args:param1 = 'value1' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.args:param2 = 'value2' ELSE true END
- test_udf:
name: test__live_udf_api_v2_post_jsonrpc_solana_sync
args: |
'POST',
'https://api.mainnet-beta.solana.com',
{'Content-Type': 'application/json'},
{
'jsonrpc': '2.0',
'id': 1,
'method': 'getVersion'
},
''
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.id = 1 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.result is not null ELSE true END
- test_udf:
name: test__live_udf_api_v2_post_jsonrpc_solana_batch_sync
args: |
'POST',
'https://api.mainnet-beta.solana.com',
{'Content-Type': 'application/json'},
[
{'jsonrpc': '2.0', 'id': 1, 'method': 'getVersion'},
{'jsonrpc': '2.0', 'id': 2, 'method': 'getVersion'}
],
''
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data[0]:jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[0]:id = 1 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[0]:result is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:id = 2 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:result is not null ELSE true END
- test_udf:
name: test__live_udf_api_v2_post_jsonrpc_ethereum_batch_sync
args: |
'POST',
'https://ethereum-rpc.publicnode.com',
{'Content-Type': 'application/json'},
[
{'jsonrpc': '2.0', 'id': 1, 'method': 'eth_blockNumber', 'params': []},
{'jsonrpc': '2.0', 'id': 2, 'method': 'eth_chainId', 'params': []}
],
''
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data[0]:jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[0]:id = 1 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[0]:result is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:id = 2 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:result = '0x1' ELSE true END
# Full signature tests - ASYNC mode
- test_udf:
name: test__live_udf_api_v2_get_with_params_async
args: |
'GET', 'https://httpbin.org/get', {'Content-Type': 'application/json', 'fsc-quantum-execution-mode': 'async'}, {'param1': 'value1', 'param2': 'value2'}, ''
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.args is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.args:param1 = 'value1' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.args:param2 = 'value2' ELSE true END
- test_udf:
name: test__live_udf_api_v2_post_jsonrpc_solana_async
args: |
'POST',
'https://api.mainnet-beta.solana.com',
{'Content-Type': 'application/json', 'fsc-quantum-execution-mode': 'async'},
{
'jsonrpc': '2.0',
'id': 1,
'method': 'getVersion'
},
''
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.id = 1 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.result is not null ELSE true END
- test_udf:
name: test__live_udf_api_v2_post_jsonrpc_solana_batch_async
args: |
'POST',
'https://api.mainnet-beta.solana.com',
{'Content-Type': 'application/json', 'fsc-quantum-execution-mode': 'async'},
[
{'jsonrpc': '2.0', 'id': 1, 'method': 'getVersion'},
{'jsonrpc': '2.0', 'id': 2, 'method': 'getVersion'}
],
''
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data[0]:jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[0]:id = 1 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[0]:result is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:id = 2 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:result is not null ELSE true END
- test_udf:
name: test__live_udf_api_v2_post_jsonrpc_ethereum_batch_async
args: |
'POST',
'https://ethereum-rpc.publicnode.com',
{'Content-Type': 'application/json', 'fsc-quantum-execution-mode': 'async'},
[
{'jsonrpc': '2.0', 'id': 1, 'method': 'eth_blockNumber', 'params': []},
{'jsonrpc': '2.0', 'id': 2, 'method': 'eth_chainId', 'params': []}
],
''
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data[0]:jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[0]:id = 1 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[0]:result is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:id = 2 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data[1]:result = '0x1' ELSE true END
# Explicit is_async boolean parameter tests
- test_udf:
name: test__live_udf_api_v2_get_with_headers_is_async_true
args: |
'https://httpbin.org/get', {'Content-Type': 'application/json'}, '', true
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.url = 'https://httpbin.org/get' ELSE true END
- test_udf:
name: test__live_udf_api_v2_get_with_headers_is_async_false
args: |
'https://httpbin.org/get', {'Content-Type': 'application/json'}, '', false
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.url = 'https://httpbin.org/get' ELSE true END
- test_udf:
name: test__live_udf_api_v2_full_signature_is_async_true
args: |
'GET', 'https://httpbin.org/get', {'Content-Type': 'application/json'}, {'param1': 'value1'}, '', true
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.args is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.args:param1 = 'value1' ELSE true END
- test_udf:
name: test__live_udf_api_v2_full_signature_is_async_false
args: |
'GET', 'https://httpbin.org/get', {'Content-Type': 'application/json'}, {'param1': 'value1'}, '', false
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.args is not null ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.args:param1 = 'value1' ELSE true END
- test_udf:
name: test__live_udf_api_v2_post_jsonrpc_is_async_true
args: |
'POST',
'https://api.mainnet-beta.solana.com',
{'Content-Type': 'application/json'},
{
'jsonrpc': '2.0',
'id': 1,
'method': 'getVersion'
},
'',
true
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.id = 1 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.result is not null ELSE true END
- test_udf:
name: test__live_udf_api_v2_post_jsonrpc_is_async_false
args: |
'POST',
'https://api.mainnet-beta.solana.com',
{'Content-Type': 'application/json'},
{
'jsonrpc': '2.0',
'id': 1,
'method': 'getVersion'
},
'',
false
assertions:
- result:status_code IN (200, 502, 503)
- CASE WHEN result:status_code = 200 THEN result:data.jsonrpc = '2.0' ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.id = 1 ELSE true END
- CASE WHEN result:status_code = 200 THEN result:data.result is not null ELSE true END