-
Notifications
You must be signed in to change notification settings - Fork 11.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
## Description With changes to transactional test runner, we can now run flavors of indexer and graphql through it ## Test plan How did you test the new or updated feature? --- ## Release notes Check each box that your changes affect. If none of the boxes relate to your changes, release notes aren't required. For each box you select, include information after the relevant heading that describes the impact of your changes that a user might notice and any actions they must take to implement updates. - [ ] Protocol: - [ ] Nodes (Validators and Full nodes): - [ ] Indexer: - [ ] JSON-RPC: - [ ] GraphQL: - [ ] CLI: - [ ] Rust SDK: - [ ] REST API:
- Loading branch information
Showing
79 changed files
with
14,191 additions
and
0 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
[package] | ||
name = "sui-mvr-graphql-e2e-tests" | ||
version = "0.1.0" | ||
authors = ["Mysten Labs <[email protected]>"] | ||
description = "End to end tests for Sui GraphQL" | ||
license = "Apache-2.0" | ||
publish = false | ||
edition = "2021" | ||
|
||
[lints] | ||
workspace = true | ||
|
||
[dev-dependencies] | ||
anyhow.workspace = true | ||
async-trait.workspace = true | ||
telemetry-subscribers.workspace = true | ||
datatest-stable.workspace = true | ||
serde_json.workspace = true | ||
sui-mvr-graphql-rpc.workspace = true | ||
sui-transactional-test-runner.workspace = true | ||
tokio.workspace = true | ||
|
||
[[test]] | ||
name = "tests" | ||
harness = false | ||
|
||
[dependencies] | ||
|
||
[target.'cfg(msim)'.dependencies] | ||
msim.workspace = true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
End-to-end tests for GraphQL service, built on top of the transactional test | ||
runner. | ||
|
||
# Local Set-up | ||
|
||
These tests require a running instance of the `postgres` service, with a | ||
database set-up. The instructions below assume that `postgres` has been | ||
installed using `brew`: | ||
|
||
1. See the instructions in the Sui Indexer [README](../sui-indexer/README.md) | ||
for pre-requisites and starting the Postgres service. | ||
|
||
2. When postgres is initially installed, it creates a role for your current | ||
user. We need to use that role to create the role that will access the | ||
database: | ||
|
||
```sh | ||
$ ME=$(whoami) | ||
$ psql "postgres://$ME:$ME@localhost:5432/postgres" \ | ||
-c "CREATE ROLE postgres WITH SUPERUSER LOGIN PASSWORD 'postgrespw';" | ||
``` | ||
|
||
3. Then, create the database that the tests expect, using the `postgres` user | ||
and increase the max connections since many tests might run in parallel. | ||
|
||
```sh | ||
$ psql "postgres://postgres:postgrespw@localhost:5432/postgres" \ | ||
-c "CREATE DATABASE sui_indexer_v2;" -c "ALTER SYSTEM SET max_connections = 500;" | ||
``` | ||
|
||
4. Finally, restart the `postgres` server so the max connections change takes | ||
effect. | ||
|
||
Mac | ||
```sh | ||
brew services restart postgresql@15 | ||
|
||
``` | ||
|
||
Linux | ||
```sh | ||
/etc/init.d/postgresql restart | ||
``` | ||
|
||
# Running Locally | ||
|
||
```sh | ||
$ cargo nextest run | ||
``` | ||
|
||
# Snapshot Stability | ||
|
||
Tests are pinned to an existing protocol version that has already been used on a | ||
production network. The protocol version controls the protocol config and also | ||
the version of the framework that gets used by tests. By using a version that | ||
has already been used in a production setting, we are guaranteeing that it will | ||
not be changed by later modifications to the protocol or framework (this would | ||
be a bug). | ||
|
||
When adding a new test, **remember to set the `--protocol-version`** for that | ||
test to ensure stability. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
// Copyright (c) Mysten Labs, Inc. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
|
||
#![forbid(unsafe_code)] | ||
|
||
// Empty src/lib.rs to get rusty-tags working. |
129 changes: 129 additions & 0 deletions
129
crates/sui-mvr-graphql-e2e-tests/tests/stable/available_range/available_range.exp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,129 @@ | ||
processed 17 tasks | ||
|
||
task 1, lines 8-30: | ||
//# run-graphql | ||
Response: { | ||
"data": { | ||
"availableRange": { | ||
"first": { | ||
"digest": "ZQawQqeikA4pRqKnkcuHuMnGZuKJTSt3V3EVmMjG56k", | ||
"sequenceNumber": 0 | ||
}, | ||
"last": { | ||
"digest": "ZQawQqeikA4pRqKnkcuHuMnGZuKJTSt3V3EVmMjG56k", | ||
"sequenceNumber": 0 | ||
} | ||
}, | ||
"first": { | ||
"digest": "ZQawQqeikA4pRqKnkcuHuMnGZuKJTSt3V3EVmMjG56k", | ||
"sequenceNumber": 0 | ||
}, | ||
"last": { | ||
"digest": "ZQawQqeikA4pRqKnkcuHuMnGZuKJTSt3V3EVmMjG56k", | ||
"sequenceNumber": 0 | ||
} | ||
} | ||
} | ||
|
||
task 3, line 34: | ||
//# create-checkpoint | ||
Checkpoint created: 1 | ||
|
||
task 4, lines 36-46: | ||
//# run-graphql | ||
Response: { | ||
"data": { | ||
"availableRange": { | ||
"first": { | ||
"sequenceNumber": 0 | ||
}, | ||
"last": { | ||
"sequenceNumber": 1 | ||
} | ||
} | ||
} | ||
} | ||
|
||
task 6, line 50: | ||
//# create-checkpoint | ||
Checkpoint created: 2 | ||
|
||
task 7, lines 52-62: | ||
//# run-graphql | ||
Response: { | ||
"data": { | ||
"availableRange": { | ||
"first": { | ||
"sequenceNumber": 0 | ||
}, | ||
"last": { | ||
"sequenceNumber": 2 | ||
} | ||
} | ||
} | ||
} | ||
|
||
task 9, line 66: | ||
//# create-checkpoint | ||
Checkpoint created: 3 | ||
|
||
task 10, lines 68-78: | ||
//# run-graphql | ||
Response: { | ||
"data": { | ||
"availableRange": { | ||
"first": { | ||
"sequenceNumber": 1 | ||
}, | ||
"last": { | ||
"sequenceNumber": 3 | ||
} | ||
} | ||
} | ||
} | ||
|
||
task 12, line 82: | ||
//# create-checkpoint | ||
Checkpoint created: 4 | ||
|
||
task 13, lines 84-94: | ||
//# run-graphql | ||
Response: { | ||
"data": { | ||
"availableRange": { | ||
"first": { | ||
"sequenceNumber": 2 | ||
}, | ||
"last": { | ||
"sequenceNumber": 4 | ||
} | ||
} | ||
} | ||
} | ||
|
||
task 15, line 98: | ||
//# create-checkpoint | ||
Checkpoint created: 5 | ||
|
||
task 16, lines 100-120: | ||
//# run-graphql | ||
Response: { | ||
"data": { | ||
"availableRange": { | ||
"first": { | ||
"sequenceNumber": 3 | ||
}, | ||
"last": { | ||
"sequenceNumber": 5 | ||
} | ||
}, | ||
"first": { | ||
"digest": "ZQawQqeikA4pRqKnkcuHuMnGZuKJTSt3V3EVmMjG56k", | ||
"sequenceNumber": 0 | ||
}, | ||
"last": { | ||
"digest": "9C7jQMv4YDXtBQFVawbAJTtQf7JefT3XPNUNoWSot5T2", | ||
"sequenceNumber": 5 | ||
} | ||
} | ||
} |
120 changes: 120 additions & 0 deletions
120
crates/sui-mvr-graphql-e2e-tests/tests/stable/available_range/available_range.move
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
// Copyright (c) Mysten Labs, Inc. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
|
||
// Test that available range is correctly updated per objects_snapshot catching up | ||
|
||
//# init --protocol-version 51 --simulator --objects-snapshot-min-checkpoint-lag 2 | ||
|
||
//# run-graphql | ||
{ | ||
availableRange { | ||
first { | ||
digest | ||
sequenceNumber | ||
} | ||
last { | ||
digest | ||
sequenceNumber | ||
} | ||
} | ||
|
||
first: checkpoint(id: { sequenceNumber: 0 } ) { | ||
digest | ||
sequenceNumber | ||
} | ||
|
||
last: checkpoint { | ||
digest | ||
sequenceNumber | ||
} | ||
} | ||
|
||
//# advance-clock --duration-ns 1 | ||
|
||
//# create-checkpoint | ||
|
||
//# run-graphql | ||
{ | ||
availableRange { | ||
first { | ||
sequenceNumber | ||
} | ||
last { | ||
sequenceNumber | ||
} | ||
} | ||
} | ||
|
||
//# advance-clock --duration-ns 1 | ||
|
||
//# create-checkpoint | ||
|
||
//# run-graphql | ||
{ | ||
availableRange { | ||
first { | ||
sequenceNumber | ||
} | ||
last { | ||
sequenceNumber | ||
} | ||
} | ||
} | ||
|
||
//# advance-clock --duration-ns 1 | ||
|
||
//# create-checkpoint | ||
|
||
//# run-graphql | ||
{ | ||
availableRange { | ||
first { | ||
sequenceNumber | ||
} | ||
last { | ||
sequenceNumber | ||
} | ||
} | ||
} | ||
|
||
//# advance-clock --duration-ns 1 | ||
|
||
//# create-checkpoint | ||
|
||
//# run-graphql | ||
{ | ||
availableRange { | ||
first { | ||
sequenceNumber | ||
} | ||
last { | ||
sequenceNumber | ||
} | ||
} | ||
} | ||
|
||
//# advance-clock --duration-ns 1 | ||
|
||
//# create-checkpoint | ||
|
||
//# run-graphql | ||
{ | ||
availableRange { | ||
first { | ||
sequenceNumber | ||
} | ||
last { | ||
sequenceNumber | ||
} | ||
} | ||
|
||
first: checkpoint(id: { sequenceNumber: 0 } ) { | ||
digest | ||
sequenceNumber | ||
} | ||
|
||
last: checkpoint { | ||
digest | ||
sequenceNumber | ||
} | ||
} |
Oops, something went wrong.