You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Mount additional volume for Parquet output directory in tests
Consider optional ClickHouse service for full pipeline testing
Acceptance Criteria
Parquet Export
Test basic export flow with status polling
Test data integrity by comparing Parquet output to SQLite source
Test all configuration options (skipL1Transactions, skipL1Tags, maxFileRows)
Test error handling for invalid parameters
Test status transitions
GraphQL
Test single transaction query by ID
Test transaction filters (owners, recipients, tags, bundledIn, block height)
Test single block query by ID
Test block filters (height range)
Test pagination (first, after, hasNextPage)
Test both sort orders (HEIGHT_ASC, HEIGHT_DESC)
Test field resolvers (owner, quantity, fee, data, bundledIn, signature)
Test nested bundle relationships
Infrastructure
Document test bundle attributes
Add utility functions to test/end-to-end/utils.ts
Ensure tests run reliably in CI
Technical Notes
Parquet Verification with DuckDB
The codebase already uses duckdb-async for the export pipeline. Use the same library to verify exported files:
import{Database}from'duckdb-async';constdb=awaitDatabase.create(':memory:');constrows=awaitdb.all(`SELECT COUNT(*) as count FROM '${parquetDir}/blocks/*.parquet'`);
End-to-End Tests for Parquet Export Pipeline and GraphQL Endpoint
Problem
The Parquet export pipeline and GraphQL endpoint lack comprehensive end-to-end test coverage. Current testing includes:
scripts/tests/parquet/test-clickhouse-integration) that requires ClickHouseindexing.test.ts- only block height queries and basic transaction listingThis gap creates risk for regressions and makes it difficult to validate changes to these critical components.
Scope
Parquet Export Pipeline
API Endpoints:
POST /ar-io/admin/export-parquet- Trigger exportGET /ar-io/admin/export-parquet/status- Check export statusTest Scenarios:
Basic Export Flow
queue-tx/queue-bundleData Integrity
Configuration Options
skipL1Transactions: true/falseskipL1Tags: true/falsemaxFileRowsfile splittingError Handling
Status Tracking
not_started→running→completedGraphQL Endpoint
Test Scenarios:
Transaction Queries
bundledInmin/max)Block Queries
Pagination
firstandafterhasNextPageaccuracyHEIGHT_ASCandHEIGHT_DESCsort ordersField Resolvers
owner.addressandowner.keyquantityandfee(AR/winston conversion)data.sizeanddata.typebundledIn.idfor data itemssignature(async fetching from parent)Data Item Relationships
bundledInfilterTest Data Strategy
Recommended Approach: Hybrid
START_HEIGHT/STOP_HEIGHT+ known bundlesKnown Test Bundles (Already Used in Codebase)
kJA49GtBVUWex2yiRKX1KSDbCE6I2xGicR-62_pnJ_cFcWiW5v28eBf5s9XAKTRiqD7dq9xX_lS5N6Xb2Y89NYC7lP_aOvx4jXyFWBtJCrzTavK1gf5xfwvf5ML6I4msk-H3KW7RKTXMg5Miq2jHx36OHSVsXBSYuE2kxgsFj6OQSynthetic Data Items
For filter edge cases, use
/ar-io/admin/queue-data-itemto create data items with controlled attributes (owners, tags, etc.).Pre-work Required
Document the attributes of existing test bundles:
Implementation
New Test Files
New Utility Functions (in utils.ts)
Docker Compose Additions
Acceptance Criteria
Parquet Export
GraphQL
Infrastructure
test/end-to-end/utils.tsTechnical Notes
Parquet Verification with DuckDB
The codebase already uses
duckdb-asyncfor the export pipeline. Use the same library to verify exported files:GraphQL Query Examples
Test Data Dependencies
Tests depend on fetching real transactions from arweave.net/trusted gateways. Consider: