Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
cf7025a
refactor: Replace http client to graphql client
howjmay Nov 28, 2025
a2feae5
Merge pull request #783 from howjmay/ql-all-1
howjmay Jan 14, 2026
12bc9a2
feat: Add GraphQL client for IOTA API
howjmay Jan 17, 2026
cb25700
refactor: Migrate codebase from JSON-RPC to GraphQL client
howjmay Jan 17, 2026
b7af0cb
Merge pull request #787 from howjmay/ql-all-2
howjmay Jan 20, 2026
6a1b7f4
fix: tests for graphql
howjmay Jan 30, 2026
9810835
chore: Refactor json-rpc types, add graphql fragments, remove unused …
lmoe Feb 5, 2026
3bcdb92
fix: Update SingleCoinFundsFromFaucetAmount value
howjmay Feb 5, 2026
c225b9f
Merge pull request #788 from howjmay/ql-all-3
howjmay Feb 8, 2026
a66c0ac
refactor: Remove serialization.TagJson
howjmay Feb 2, 2026
30840cc
refactor: Clean up request fund
howjmay Feb 7, 2026
e773185
Merge branch 'ql-dev' into fix_graphql_legacy_types
lmoe Feb 10, 2026
8d2d795
Merge pull request #791 from howjmay/ql-all-4
howjmay Feb 10, 2026
386467c
Merge branch 'ql-dev' into fix_graphql_legacy_types
lmoe Feb 11, 2026
daa10cb
test: enable parallel execution for EVM tests to improve test perform…
cwarnerdev Feb 17, 2026
d02cf2b
test: re-include evmtest package in short tests
cwarnerdev Feb 17, 2026
dcbe3d6
test: enable parallel execution in gas price subtests to improve test…
cwarnerdev Feb 17, 2026
6b8a532
Refactor GraphQL, remove JSON-RPC types and mappings, add l1 simulato…
lmoe Feb 18, 2026
382e4db
test: extend timeout for short tests to 60m
cwarnerdev Feb 23, 2026
9e32d30
test: disable parallel execution in TestGasPriceIgnoredInEstimateGas …
cwarnerdev Feb 23, 2026
1e1bcbb
test: adjust message volume and timing in peering_net_behaviour_test …
cwarnerdev Feb 23, 2026
92dbabf
Fix retry-poll of updated objects, fix BCS decoding of requests
lmoe Feb 23, 2026
b4925bf
test: re-enable testcore package in short tests
cwarnerdev Feb 23, 2026
16ba764
test: extend timeout for short tests to 60m
cwarnerdev Feb 23, 2026
053a13b
Merge pull request #793 from iotaledger/fix/ql-dev-tests
cwarnerdev Feb 24, 2026
d38a70a
Merge pull request #795 from iotaledger/fix/ql-dev-enable-testcore
cwarnerdev Feb 24, 2026
30bd8cb
Ensure that tests always receive 5 coins
lmoe Feb 27, 2026
4347b17
chore: Fix simulator edge cases, improve dependency caching in workflows
lmoe Feb 27, 2026
b088635
Unflake webapi component test
lmoe Feb 27, 2026
ecc11b9
Fix linter, use self-hosted runner
lmoe Feb 27, 2026
6e5c5fa
Improve caching, test execution
lmoe Feb 27, 2026
3a131d9
test: adjust message volume and timing in peering_net_behaviour_test …
cwarnerdev Feb 23, 2026
49e2574
test: extend timeout for `test-short` target in Makefile to 60m
cwarnerdev Mar 4, 2026
7c16411
test: leave only cluster tests excluded from test-short
cwarnerdev Mar 4, 2026
cd8e1cd
Merge branch 'ql-dev' into fix_graphql_legacy_types
cwarnerdev Mar 4, 2026
9c64ee4
refactor: modified GetL2FundsFromFaucet in packages/solo/chain.go to …
cwarnerdev Mar 5, 2026
83ba311
refactor: improve GetL2FundsFromFaucetWithDepositor logic to ensure s…
cwarnerdev Mar 5, 2026
16788ee
test: increase channel buffer size and adjust timing validation in pe…
cwarnerdev Mar 5, 2026
470db41
ci: include fix_graphql_legacy_types branch in build-test workflow tr…
cwarnerdev Mar 5, 2026
1324bcb
Merge pull request #796 from iotaledger/fix_graphql_legacy_types
lmoe Mar 6, 2026
92f01e9
Merge branch 'ql-dev' into fix_graphql_legacy_types-test
cwarnerdev Mar 6, 2026
f9934a2
Revert "ci: include fix_graphql_legacy_types branch in build-test wor…
cwarnerdev Mar 6, 2026
180efc7
Merge remote-tracking branch 'origin/fix_graphql_legacy_types-test' i…
cwarnerdev Mar 6, 2026
94b9026
Merge pull request #799 from iotaledger/fix_graphql_legacy_types-test
cwarnerdev Mar 9, 2026
d5c4d92
refactor: Make required fields non-pointer
howjmay Feb 18, 2026
df3b9e1
Graphql subscriptions
Mar 12, 2026
ab29ed5
Fix
Mar 12, 2026
94e2451
Fix
Mar 12, 2026
17f9c53
Fix subscription
Mar 12, 2026
0c90e30
Cleanup
Mar 12, 2026
a02c1d6
refactor: Remove unused graphql methods
howjmay Feb 19, 2026
46ed966
Merge pull request #800 from howjmay/ql-cleanup-legacy
howjmay Mar 16, 2026
ea6675b
fix: experimental use of TryGetPastObject after posting transactions
lmoe Mar 17, 2026
a76a8de
test: remove unnecessary sleep calls from mempool_test and replace wi…
cwarnerdev Mar 17, 2026
8b50b1c
refactor: Improve graphql client
howjmay Mar 16, 2026
cb9f75c
replace sleep with `require.Eventually` in node_test for better timin…
cwarnerdev Mar 17, 2026
9a3fc3f
test: use `runtime.Gosched` to avoid excessive CPU usage in state_man…
cwarnerdev Mar 17, 2026
a7d273e
Merge pull request #807 from iotaledger/wip/remove-test-sleeps
cwarnerdev Mar 18, 2026
c05d30a
test: replace sleep with `runtime.Gosched` in pipe_test for better sc…
cwarnerdev Mar 19, 2026
b1ab8be
test: replace sleep with `require.Eventually` in lpp_net_impl_test fo…
cwarnerdev Mar 19, 2026
54ec6b7
test: use `require.Eventually` in node_test to improve timing validat…
cwarnerdev Mar 19, 2026
c3d870f
test: replace sleep with `require.Eventually` in peering_net_behaviou…
cwarnerdev Mar 19, 2026
bac1716
Local setup
Mar 19, 2026
5ed6eb3
fix: finalize Anchor poll retry, making it configurable.
lmoe Mar 19, 2026
512fb61
test: replace sleep with `require.Eventually` in access_manager_test …
cwarnerdev Mar 20, 2026
c65db97
Merge pull request #808 from iotaledger/wip/remove-test-sleeps
cwarnerdev Mar 20, 2026
ceb738a
chore: remove outdated PTB builder tests
lmoe Mar 20, 2026
b24c67b
chore: update error formatting (Go 1.26's vet analyzer gotten more ac…
lmoe Mar 20, 2026
1499a3f
fix: force image pull on tests
lmoe Mar 20, 2026
6ac8ba1
chore: reinstate Skip for cluster tests on short-test
lmoe Mar 20, 2026
9805a77
test: replace sleep with `require.Eventually` in peering_net_behaviou…
cwarnerdev Mar 20, 2026
c5cbaf4
Fixed simulator concurrency issue; Added Makefile target test-short-s…
Mar 23, 2026
2c12501
Merge pull request #809 from iotaledger/wip/remove-test-sleeps
cwarnerdev Mar 23, 2026
0583a6f
test: remove sync.Map from TestGasPriceIgnoredInEstimateGas and simpl…
cwarnerdev Mar 23, 2026
9b81309
test: remove `t.Parallel` from EVM test cases and eliminate redundant…
cwarnerdev Mar 23, 2026
08b9244
Merge pull request #810 from iotaledger/fix/parallel-gas-test
cwarnerdev Mar 25, 2026
7c9448d
Added test to verify transaction idempotency logic for any type of no…
Mar 25, 2026
b005515
Fix offledger cluster test
Mar 26, 2026
40602d4
Merge branch 'ql-dev' into task/graphql-subs-transport-2
Mar 27, 2026
4f66519
Fix after merge
Mar 27, 2026
a4d9396
Fix
Mar 27, 2026
7c14515
Fix lint
Mar 27, 2026
b4874d3
Merge pull request #803 from iotaledger/task/graphql-subs-transport-2
bas-io Mar 27, 2026
69aafed
Merge pull request #805 from howjmay/ql-cleanup-legacy
lmoe Mar 27, 2026
747b8ce
Merged develop into ql-dev
Apr 1, 2026
714fe4f
Fixed lint
Apr 1, 2026
6fc5e4a
Fixed test config env variables; Allowed to run simulator mode even w…
chriscandless Apr 1, 2026
de3a216
skip tests that require local node
dessaya Mar 31, 2026
fe0a90c
pin iota docker image versions
dessaya Apr 2, 2026
40ff3a8
Merge pull request #817 from dessaya/fix-tests
dessaya Apr 2, 2026
53915f8
Temporary skipping TestNodeBasic to test if CI will pass for other tests
Apr 6, 2026
8980fca
Minor improvement to error handling in test config loading
Apr 6, 2026
62912a3
Fixed TestNodeBasic
chriscandless Apr 9, 2026
5fbe148
Fixed TestExecuteTransactionBlockDeduplication
chriscandless Apr 10, 2026
e40d051
Disabled lint "comment should be in form Name ..."
chriscandless Apr 10, 2026
482fbf8
fix: re-subscribe to anchor updates after committee rotation
Apr 14, 2026
70867d6
Merge pull request #820 from iotaledger/fix/rotation
bas-io Apr 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 26 additions & 21 deletions .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Test

on:
pull_request:
branches: [develop]
branches: [develop, ql-dev]
paths-ignore:
- "**/README.md"

Expand All @@ -11,19 +11,18 @@ jobs:
name: Build only
runs-on: ubuntu-latest
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4

- name: Set up Go 1.x
uses: actions/setup-go@v5
with:
go-version: "1.24"
cache-dependency-path: |
go.work.sum
**/go.sum
id: go

- name: Check out code into the Go module directory
uses: actions/checkout@v4

- name: Get dependencies
run: |
go get -v -t -d ./...

- name: Build
run: make build

Expand All @@ -33,38 +32,44 @@ jobs:

test-short:
name: Test (short)
runs-on: ubuntu-latest
runs-on: [self-hosted, Linux, X64, wasp]
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4

- name: Set up Go 1.x
uses: actions/setup-go@v5
with:
go-version: "1.24"
cache-dependency-path: |
go.work.sum
**/go.sum
id: go

- name: Check out code into the Go module directory
uses: actions/checkout@v4

- name: Get dependencies
run: |
go get -v -t -d ./...

# Here used to be a make build step, but we separated it into another job

- name: Test
run: make test-short
run: |
TEST_SHORT_PKGS="$(go list ./... \
| grep -v '/tools/cluster' \
)" make test-short

golangci:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/setup-go@v5
- name: Check out code into the Go module directory
uses: actions/checkout@v4

- name: Set up Go 1.x
uses: actions/setup-go@v5
with:
go-version: "1.24"
cache-dependency-path: |
go.work.sum
**/go.sum
id: go

- name: Check out code into the Go module directory
uses: actions/checkout@v4

- name: Run global scope golangci-lint
uses: golangci/golangci-lint-action@v8
with:
Expand Down
4 changes: 0 additions & 4 deletions .github/workflows/cluster-tests-nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,6 @@ jobs:
fetch-depth: 0
fetch-tags: true

- name: Get dependencies
run: |
go get -v -t -d ./...

- name: Run cluster tests
run: |
make test-cluster
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/iotago-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@ on:
jobs:

TestAndBuild:
runs-on: ubuntu-latest
runs-on: [self-hosted, Linux, X64, wasp]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Set up Go 1.x
uses: actions/setup-go@v5
with:
go-version: '1.24'
cache-dependency-path: clients/iota-go/go.sum

- name: Test
run: |
Expand Down
31 changes: 31 additions & 0 deletions .github/workflows/simulator-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: Simulator Test

on:
pull_request:
branches: [develop, ql-dev]
paths-ignore:
- "**/README.md"

jobs:
test-short:
name: Test (short, simulator)
runs-on: ubuntu-latest
steps:
- name: Check out code into the Go module directory
uses: actions/checkout@v4

- name: Set up Go 1.x
uses: actions/setup-go@v5
with:
go-version: "1.24"
cache-dependency-path: |
go.work.sum
**/go.sum
id: go

- name: Configure simulator
run: echo '{"l1starter":{"IS_SIMULATOR":true}}' > .testconfig

- name: Test
run: |
make test-short-simulator
1 change: 1 addition & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ linters:
staticcheck:
checks:
- all
- '-ST1020' # comment on exported method FooBar should be of the form "FooBar ..."
initialisms:
- ACL
- API
Expand Down
17 changes: 15 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ DOCKER_BUILD_ARGS = # E.g. make docker-build "DOCKER_BUILD_ARGS=--tag wasp:devel
#
TEST_PKG=./...
TEST_ARG=
TEST_SHORT_PKGS ?= $(shell go list ./... | tr '\n' ' ')

BUILD_PKGS ?= ./
BUILD_CMD=go build -o . -ldflags $(BUILD_LD_FLAGS)
Expand Down Expand Up @@ -38,14 +39,26 @@ build-lint: build lint
gendoc:
./scripts/gendoc.sh

genqlient:
cd clients/iotagraphql && GOTOOLCHAIN=go1.24.6 go run github.com/Khan/genqlient@v0.8.1

test-full: install
go test -tags runheavy -race -ldflags $(BUILD_LD_FLAGS) ./... --timeout 60m --count 1 -failfast

test: install
go test -race -ldflags $(BUILD_LD_FLAGS) $(TEST_PKG) --timeout 90m --count 1 -failfast $(TEST_ARG)

test-short:
go test -race -ldflags $(BUILD_LD_FLAGS) --short --count 1 -timeout 60m -failfast $(shell go list ./...)
go test -race -ldflags $(BUILD_LD_FLAGS) --short --count 1 -timeout 60m -failfast $(strip $(TEST_SHORT_PKGS))

test-short-simulator:
TEST_L1STARTER_IS_SIMULATOR=true go test --short --count 1 -parallel 1 -timeout 60m -failfast $(shell go list ./... \
| grep -v '/tools/cluster' \
| grep -v '/clients/apiclient' \
| grep -v '/clients/apiextensions' \
| grep -v '/clients/chainclient' \
| grep -v '/clients/multiclient' \
| grep -v '/clients/iotagraphql/iotaclienttest')

test-cluster: install
go test -race -ldflags $(BUILD_LD_FLAGS) --count 1 -timeout 25m -failfast $(shell go list ./tools/cluster/tests/...)
Expand Down Expand Up @@ -99,4 +112,4 @@ deps-versions:
awk -F ":" '{ print $$1 }' | \
{ read from ; read to; awk -v s="$$from" -v e="$$to" 'NR>1*s&&NR<1*e' packages/testutil/privtangle/privtangle.go; }

.PHONY: all compile-solidity build-cli build-full build build-lint test-full test test-short install-cli install-full install lint gofumpt-list docker-build deps-versions
.PHONY: all compile-solidity build-cli build-full build build-lint test-full test test-short install-cli install-full install lint gofumpt-list docker-build deps-versions genqlient
6 changes: 3 additions & 3 deletions clients/apiextensions/func.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"time"

"github.com/iotaledger/wasp/v2/clients/apiclient"
"github.com/iotaledger/wasp/v2/clients/iota-go/iotajsonrpc"
"github.com/iotaledger/wasp/v2/clients/iotagraphql"
"github.com/iotaledger/wasp/v2/clients/iscmove"
"github.com/iotaledger/wasp/v2/packages/cryptolib"
"github.com/iotaledger/wasp/v2/packages/isc"
Expand Down Expand Up @@ -49,8 +49,8 @@ func APIResultToCallArgs(res []string) (isc.CallResults, error) {
return APIArgsToCallArgs(res)
}

func APIWaitUntilAllRequestsProcessed(ctx context.Context, client *apiclient.APIClient, tx *iotajsonrpc.IotaTransactionBlockResponse, waitForL1Confirmation bool, timeout time.Duration) ([]*apiclient.ReceiptResponse, error) {
req, err := tx.GetCreatedObjectByName(iscmove.RequestModuleName, iscmove.RequestObjectName)
func APIWaitUntilAllRequestsProcessed(ctx context.Context, client *apiclient.APIClient, tx *iotagraphql.ExecuteTransactionBlockResponse, waitForL1Confirmation bool, timeout time.Duration) ([]*apiclient.ReceiptResponse, error) {
req, err := tx.ExecuteTransactionBlock.Effects.GetCreatedObjectByName(iscmove.RequestModuleName, iscmove.RequestObjectName)
if err != nil {
return nil, err
}
Expand Down
25 changes: 13 additions & 12 deletions clients/chainclient/chainclient.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,14 @@ import (
"math"
"sync"

"github.com/samber/lo"

"github.com/iotaledger/bcs-go"
"github.com/iotaledger/wasp/v2/clients"
"github.com/iotaledger/wasp/v2/clients/apiclient"
"github.com/iotaledger/wasp/v2/clients/apiextensions"
"github.com/iotaledger/wasp/v2/clients/iota-go/iotaclient"
"github.com/iotaledger/wasp/v2/clients/iota-go/iotago"
"github.com/iotaledger/wasp/v2/clients/iota-go/iotajsonrpc"
"github.com/iotaledger/wasp/v2/clients/iotagraphql"
"github.com/iotaledger/wasp/v2/clients/iscmove"
"github.com/iotaledger/wasp/v2/clients/iscmove/iscmoveclient"
"github.com/iotaledger/wasp/v2/packages/coin"
Expand Down Expand Up @@ -84,7 +85,7 @@ func (par *PostRequestParams) GetGasBudget() uint64 {

func (par *PostRequestParams) GetGasPrice() uint64 {
if par.GasPrice == 0 {
return iotaclient.DefaultGasPrice
return iotagraphql.DefaultGasPrice
}
return par.GasPrice
}
Expand All @@ -108,7 +109,7 @@ func (c *Client) PostRequest(
ctx context.Context,
msg isc.Message,
param PostRequestParams,
) (*iotajsonrpc.IotaTransactionBlockResponse, error) {
) (*iotagraphql.ExecuteTransactionBlockResponse, error) {
if param.GasBudget == 0 {
return nil, fmt.Errorf("GasBudget is empty")
}
Expand All @@ -121,9 +122,9 @@ func (c *Client) PostMultipleRequests(
msg isc.Message,
requestsCount int,
params ...PostRequestParams,
) ([]*iotajsonrpc.IotaTransactionBlockResponse, error) {
) ([]*iotagraphql.ExecuteTransactionBlockResponse, error) {
var err error
txRes := make([]*iotajsonrpc.IotaTransactionBlockResponse, requestsCount)
txRes := make([]*iotagraphql.ExecuteTransactionBlockResponse, requestsCount)
for i := range requestsCount {
txRes[i], err = c.postSingleRequest(ctx, msg, params[i])
if err != nil {
Expand All @@ -137,11 +138,11 @@ func (c *Client) postSingleRequest(
ctx context.Context,
iscmsg isc.Message,
params PostRequestParams,
) (*iotajsonrpc.IotaTransactionBlockResponse, error) {
) (*iotagraphql.ExecuteTransactionBlockResponse, error) {
transferAssets := iscmove.NewAssets(0)
if params.Transfer != nil {
for coinType, coinbal := range params.Transfer.Coins.Iterate() {
transferAssets.SetCoin(iotajsonrpc.MustCoinTypeFromString(coinType.String()), iotajsonrpc.CoinValue(coinbal.Uint64()))
transferAssets.SetCoin(iotagraphql.MustCoinTypeFromString(coinType.String()), iotagraphql.CoinValue(coinbal.Uint64()))
}
}
msg := &iscmove.Message{
Expand All @@ -168,7 +169,7 @@ func (c *Client) postSingleRequest(
&iscmoveclient.CreateAndSendRequestWithAssetsRequest{
Signer: c.KeyPair,
PackageID: *iscPackageID,
AnchorAddress: c.ChainID.AsAddress().AsIotaAddress(),
AnchorAddress: lo.ToPtr(c.ChainID.AsAddress().AsIotaAddress()),
Assets: transferAssets,
Message: msg,
AllowanceBCS: allowanceBCS,
Expand Down Expand Up @@ -233,19 +234,19 @@ func (c *Client) PostOffLedgerRequest(
return signed, err
}

func (c *Client) DepositFunds(n coin.Value) (*iotajsonrpc.IotaTransactionBlockResponse, error) {
func (c *Client) DepositFunds(n coin.Value) (*iotagraphql.ExecuteTransactionBlockResponse, error) {
return c.PostRequest(context.Background(), accounts.FuncDeposit.Message(), PostRequestParams{
Transfer: isc.NewAssets(n),
Allowance: isc.NewAssets(n),
GasBudget: iotaclient.DefaultGasBudget,
GasBudget: iotagraphql.DefaultGasBudget,
})
}

func NewPostRequestParams() *PostRequestParams {
return &PostRequestParams{
Transfer: isc.NewEmptyAssets(),
Allowance: isc.NewEmptyAssets(),
GasBudget: iotaclient.DefaultGasBudget,
GasBudget: iotagraphql.DefaultGasBudget,
}
}

Expand Down
Loading
Loading