From 0749691148b36b621e91814800b93fbf57343d98 Mon Sep 17 00:00:00 2001 From: "Marcin Piela (ArianeLabs)" Date: Tue, 2 Jul 2024 15:31:48 +0200 Subject: [PATCH] feat: added option to run Golang JSON RPC methods against local node & added Golang JSON RPC workflow Signed-off-by: Marcin Piela (ArianeLabs) --- .github/workflows/dev-tool-test.yml | 7 +++++++ .github/workflows/dev-tool-workflow.yml | 5 +++++ tools/golang-json-rpc-tests/.env.example | 4 ++++ tools/golang-json-rpc-tests/.env.sample | 3 --- tools/golang-json-rpc-tests/README.md | 6 ++++-- tools/golang-json-rpc-tests/main.go | 7 ++++++- 6 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 tools/golang-json-rpc-tests/.env.example delete mode 100644 tools/golang-json-rpc-tests/.env.sample diff --git a/.github/workflows/dev-tool-test.yml b/.github/workflows/dev-tool-test.yml index 39f505bb77..c5f00fa95b 100644 --- a/.github/workflows/dev-tool-test.yml +++ b/.github/workflows/dev-tool-test.yml @@ -34,3 +34,10 @@ jobs: with: command: cd ./tools/web3js-example/ && npm run test directory: ./tools/web3js-example + + golang: + name: Golang + uses: ./.github/workflows/dev-tool-workflow.yml + with: + command: cd ./tools/golang-json-rpc-tests/ && go run . && go run . --wss + directory: ./tools/golang-json-rpc-tests diff --git a/.github/workflows/dev-tool-workflow.yml b/.github/workflows/dev-tool-workflow.yml index 2f1a47d3e0..9ff673e014 100644 --- a/.github/workflows/dev-tool-workflow.yml +++ b/.github/workflows/dev-tool-workflow.yml @@ -32,6 +32,11 @@ jobs: - name: Checkout repo uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - name: Install go + uses: actions/setup-go@v5 + with: + go-version: '1.22.3' + - name: Install packages run: npm ci diff --git a/tools/golang-json-rpc-tests/.env.example b/tools/golang-json-rpc-tests/.env.example new file mode 100644 index 0000000000..c9f5e4a606 --- /dev/null +++ b/tools/golang-json-rpc-tests/.env.example @@ -0,0 +1,4 @@ +# The operator private keys start with "0x" and are in hexadecimal format +# Your account alias ECDSA hex-encoded private key (Ex: 0xb46751179bc8aa9e129d34463e46cd...) +OPERATOR_PRIVATE_KEY=0x105d050185ccb907fba04dd92d8de9e32c18305e097ab41dadda21489a211524 +RELAY_ENDPOINT='http://localhost:7546' diff --git a/tools/golang-json-rpc-tests/.env.sample b/tools/golang-json-rpc-tests/.env.sample deleted file mode 100644 index 5d58dd6fce..0000000000 --- a/tools/golang-json-rpc-tests/.env.sample +++ /dev/null @@ -1,3 +0,0 @@ -# The operator private keys start with "0x" and are in hexadecimal format -# Your account ECDSA hex-encoded private key (Ex: 0xb46751179bc8aa9e129d34463e46cd...) -OPERATOR_PRIVATE_KEY='OPERATOR_PRIVATE_KEY' diff --git a/tools/golang-json-rpc-tests/README.md b/tools/golang-json-rpc-tests/README.md index 1af35962c4..5751f08527 100644 --- a/tools/golang-json-rpc-tests/README.md +++ b/tools/golang-json-rpc-tests/README.md @@ -34,7 +34,7 @@ go get github.com/ethereum/go-ethereum/ethclient \ 5. Copy `.env.example` to `.env` -6. Run the test script from the root directory of the project. The default network is set to "testnet". +6. Run the test script from the root directory of the project. The default network is set through the `RELAY_ENDPOINT` environment variable. ```shell go run . @@ -46,12 +46,14 @@ go get github.com/ethereum/go-ethereum/ethclient \ go run . --wss ``` - To run tests on mainnet or previewnet run one of the following commands: + To run tests on mainnet, previewnet or testnet run one of the following commands: ```shell go run . --mainnet go run . --previewnet + go run . --testnet go run . --mainnet --wss go run . --previewnet --wss + go run . --testnet --wss ``` # Deployment of SampleContract During Tests diff --git a/tools/golang-json-rpc-tests/main.go b/tools/golang-json-rpc-tests/main.go index 5c8db0a842..a5b261f57a 100644 --- a/tools/golang-json-rpc-tests/main.go +++ b/tools/golang-json-rpc-tests/main.go @@ -53,6 +53,7 @@ func main() { } mainnet := flag.Bool("mainnet", false, "Use mainnet network") previewnet := flag.Bool("previewnet", false, "Use previewnet network") + testnet := flag.Bool("testnet", false, "Use testnet network") wss := flag.Bool("wss", false, "Enable WebSocket Secure protocol") privateKeyHex := os.Getenv("OPERATOR_PRIVATE_KEY") @@ -63,12 +64,16 @@ func main() { endpointUrl = mainnetEndpoint case *previewnet: endpointUrl = previewnetEndpoint - default: + case *testnet: endpointUrl = testnetEndpoint + default: + endpointUrl = os.Getenv("RELAY_ENDPOINT") } if *wss { + endpointUrl = strings.Replace(endpointUrl, "http://", "ws://", 1) endpointUrl = strings.Replace(endpointUrl, "https://", "wss://", 1) endpointUrl = strings.Replace(endpointUrl, "/api", "/ws", 1) + endpointUrl = strings.Replace(endpointUrl, ":7546", ":8546", 1) } client, err := ethclient.Dial(endpointUrl) if err != nil {