Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add node add-prepare and node add-execute commands #533

Merged
Show file tree
Hide file tree
Changes from 41 commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
e682fbd
feat: add add-prepare and add-execute commands
Ivo-Yankov Sep 3, 2024
9d9c22f
feat: add add-execute-transactions
Ivo-Yankov Sep 5, 2024
963dc2a
Merge branch 'main' into 00522-reusable-components-of-subcommands-to-…
Ivo-Yankov Sep 5, 2024
bde7ca3
chore: run linter
Ivo-Yankov Sep 5, 2024
999ce6f
feat: update flags
Ivo-Yankov Sep 9, 2024
1058752
feat: optional adminKey flag
Ivo-Yankov Sep 10, 2024
e054fb0
Merge branch 'main' into 00522-reusable-components-of-subcommands-to-…
Ivo-Yankov Sep 10, 2024
569187e
test: add e2e test
Ivo-Yankov Sep 10, 2024
fa18389
test: revert e2e change
Ivo-Yankov Sep 11, 2024
48cd4c2
Merge branch 'main' into 00522-reusable-components-of-subcommands-to-…
Ivo-Yankov Sep 11, 2024
a0b74f5
test: revert e2e change
Ivo-Yankov Sep 11, 2024
75d5768
debug e2e
Ivo-Yankov Sep 11, 2024
e5dd12b
debug e2e
Ivo-Yankov Sep 11, 2024
b566e74
debug e2e
Ivo-Yankov Sep 11, 2024
35c8414
debug e2e
Ivo-Yankov Sep 11, 2024
07d9489
chore: code cleanup
Ivo-Yankov Sep 11, 2024
d0d794b
chore: fix config.allNodeIds
Ivo-Yankov Sep 12, 2024
c360cfb
fix: failing test
Ivo-Yankov Sep 12, 2024
20cf784
chore: re-add e2e test
Ivo-Yankov Sep 12, 2024
ec31c21
fix: loading of config data
Ivo-Yankov Sep 12, 2024
744e8f3
debug failing ci
Ivo-Yankov Sep 12, 2024
b8c817b
debug failing ci
Ivo-Yankov Sep 12, 2024
ffc419d
debug failing ci
Ivo-Yankov Sep 12, 2024
83e6842
debug failing ci
Ivo-Yankov Sep 12, 2024
1c6b47d
debug failing ci
Ivo-Yankov Sep 12, 2024
57710aa
debug failing ci
Ivo-Yankov Sep 12, 2024
adaa516
debug failing ci
Ivo-Yankov Sep 12, 2024
787c146
debug failing ci
Ivo-Yankov Sep 12, 2024
a94e002
debug failing ci
Ivo-Yankov Sep 12, 2024
780923a
fix: e2e assertion
Ivo-Yankov Sep 12, 2024
b05e974
Merge branch 'main' into 00522-reusable-components-of-subcommands-to-…
Ivo-Yankov Sep 12, 2024
f3a424a
chore: resolve conflicts
Ivo-Yankov Sep 12, 2024
f7d5787
chore: code cleanup
Ivo-Yankov Sep 12, 2024
e598e05
Merge branch 'main' into 00522-reusable-components-of-subcommands-to-…
Ivo-Yankov Sep 12, 2024
7367c4c
fix: re-add z to copyFrom
Ivo-Yankov Sep 12, 2024
67502cd
Merge branch 'main' into 00522-reusable-components-of-subcommands-to-…
Ivo-Yankov Sep 12, 2024
bf48d4c
test: add separate e2e CI
Ivo-Yankov Sep 13, 2024
4b52d99
chore: rename e2e files to avoid collision
Ivo-Yankov Sep 13, 2024
e149d2c
chore: fix ci
Ivo-Yankov Sep 13, 2024
07e6b6e
chore: standard e2e command
Ivo-Yankov Sep 13, 2024
0bbdfb1
fix: pass local path to execute command
Ivo-Yankov Sep 13, 2024
52f1be8
chore: update config.yaml with standard ignore settings
Ivo-Yankov Sep 13, 2024
80c09b9
remove unnecessary test
Ivo-Yankov Sep 13, 2024
a06f8c6
remove unnecessary test
Ivo-Yankov Sep 13, 2024
0fc9a77
nit: alphabetical sorting
Ivo-Yankov Sep 13, 2024
c478f49
nit: revert sorting
Ivo-Yankov Sep 13, 2024
20dbf9e
lint and sort items
jeromy-cannon Sep 13, 2024
c88060c
no need to do hedera build on test not using hedera
jeromy-cannon Sep 13, 2024
33424dd
reverted sort, adminKey was an extra and not a flag
jeromy-cannon Sep 13, 2024
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
16 changes: 16 additions & 0 deletions .github/workflows/flow-build-application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,19 @@ jobs:
coverage-subdirectory: ${{ needs.env-vars.outputs.e2e-node-add-test-subdir }}
coverage-report-name: ${{ needs.env-vars.outputs.e2e-node-add-coverage-report }}

e2e-node-add-separate-commands-tests:
name: E2E Tests
if: ${{ github.event_name == 'push' || github.event.inputs.enable-e2e-tests == 'true' }}
uses: ./.github/workflows/zxc-e2e-test.yaml
needs:
- env-vars
- code-style
with:
custom-job-label: Node Add - Separate commands
npm-test-script: test-${{ needs.env-vars.outputs.e2e-node-add-separate-commands-test-subdir }}
coverage-subdirectory: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-test-subdir }}
coverage-report-name: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-coverage-report }}

e2e-node-update-tests:
name: E2E Tests
if: ${{ github.event_name == 'push' || github.event.inputs.enable-e2e-tests == 'true' }}
Expand Down Expand Up @@ -193,6 +206,7 @@ jobs:
- e2e-node-pem-kill-tests
- e2e-node-local-build-tests
- e2e-node-add-tests
- e2e-node-add-separate-commands-tests
- e2e-node-update-tests
- e2e-node-delete-tests
- e2e-relay-tests
Expand All @@ -209,6 +223,7 @@ jobs:
e2e-node-pem-kill-test-subdir: ${{ needs.env-vars.outputs.e2e-node-pem-kill-test-subdir }}
e2e-node-local-build-test-subdir: ${{ needs.env-vars.outputs.e2e-node-local-build-test-subdir }}
e2e-node-add-test-subdir: ${{ needs.env-vars.outputs.e2e-node-add-test-subdir }}
e2e-node-add-separate-commands-test-subdir: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-test-subdir }}
e2e-node-update-test-subdir: ${{ needs.env-vars.outputs.e2e-node-update-test-subdir }}
e2e-node-delete-test-subdir: ${{ needs.env-vars.outputs.e2e-node-delete-test-subdir }}
e2e-relay-test-subdir: ${{ needs.env-vars.outputs.e2e-relay-test-subdir }}
Expand All @@ -218,6 +233,7 @@ jobs:
e2e-node-pem-kill-coverage-report: ${{ needs.env-vars.outputs.e2e-node-pem-kill-coverage-report }}
e2e-node-local-build-coverage-report: ${{ needs.env-vars.outputs.e2e-node-local-build-coverage-report }}
e2e-node-add-coverage-report: ${{ needs.env-vars.outputs.e2e-node-add-coverage-report }}
e2e-node-add-separate-commands-coverage-report: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-coverage-report }}
e2e-node-update-coverage-report: ${{ needs.env-vars.outputs.e2e-node-update-coverage-report }}
e2e-node-delete-coverage-report: ${{ needs.env-vars.outputs.e2e-node-delete-coverage-report }}
e2e-relay-coverage-report: ${{ needs.env-vars.outputs.e2e-relay-coverage-report }}
Expand Down
19 changes: 19 additions & 0 deletions .github/workflows/flow-pull-request-checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,19 @@ jobs:
coverage-subdirectory: ${{ needs.env-vars.outputs.e2e-node-add-test-subdir }}
coverage-report-name: ${{ needs.env-vars.outputs.e2e-node-add-coverage-report }}

e2e-node-add-separate-commands-tests:
name: E2E Tests
if: ${{ !cancelled() && always() }}
uses: ./.github/workflows/zxc-e2e-test.yaml
needs:
- env-vars
- code-style
with:
custom-job-label: Node Add - Separate commands
npm-test-script: test-${{ needs.env-vars.outputs.e2e-node-add-separate-commands-test-subdir }}
coverage-subdirectory: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-test-subdir }}
coverage-report-name: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-coverage-report }}

e2e-node-update-tests:
name: E2E Tests
if: ${{ !cancelled() && always() }}
Expand Down Expand Up @@ -181,6 +194,7 @@ jobs:
- e2e-node-pem-kill-tests
- e2e-node-local-build-tests
- e2e-node-add-tests
- e2e-node-add-separate-commands-tests
- e2e-node-update-tests
- e2e-node-delete-tests
- e2e-relay-tests
Expand All @@ -195,6 +209,7 @@ jobs:
e2e-node-pem-kill-test-subdir: ${{ needs.env-vars.outputs.e2e-node-pem-kill-test-subdir }}
e2e-node-local-build-test-subdir: ${{ needs.env-vars.outputs.e2e-node-local-build-test-subdir }}
e2e-node-add-test-subdir: ${{ needs.env-vars.outputs.e2e-node-add-test-subdir }}
e2e-node-add-separate-commands-test-subdir: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-test-subdir }}
e2e-node-update-test-subdir: ${{ needs.env-vars.outputs.e2e-node-update-test-subdir }}
e2e-node-delete-test-subdir: ${{ needs.env-vars.outputs.e2e-node-delete-test-subdir }}
e2e-relay-test-subdir: ${{ needs.env-vars.outputs.e2e-relay-test-subdir }}
Expand All @@ -204,6 +219,7 @@ jobs:
e2e-node-pem-kill-coverage-report: ${{ needs.env-vars.outputs.e2e-node-pem-kill-coverage-report }}
e2e-node-local-build-coverage-report: ${{ needs.env-vars.outputs.e2e-node-local-build-coverage-report }}
e2e-node-add-coverage-report: ${{ needs.env-vars.outputs.e2e-node-add-coverage-report }}
e2e-node-add-separate-commands-coverage-report: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-coverage-report }}
e2e-node-update-coverage-report: ${{ needs.env-vars.outputs.e2e-node-update-coverage-report }}
e2e-node-delete-coverage-report: ${{ needs.env-vars.outputs.e2e-node-delete-coverage-report }}
e2e-relay-coverage-report: ${{ needs.env-vars.outputs.e2e-relay-coverage-report }}
Expand All @@ -222,6 +238,7 @@ jobs:
- e2e-node-pem-kill-tests
- e2e-node-local-build-tests
- e2e-node-add-tests
- e2e-node-add-separate-commands-tests
- e2e-node-update-tests
- e2e-node-delete-tests
- e2e-relay-tests
Expand All @@ -236,6 +253,7 @@ jobs:
e2e-node-pem-kill-test-subdir: ${{ needs.env-vars.outputs.e2e-node-pem-kill-test-subdir }}
e2e-node-local-build-test-subdir: ${{ needs.env-vars.outputs.e2e-node-local-build-test-subdir }}
e2e-node-add-test-subdir: ${{ needs.env-vars.outputs.e2e-node-add-test-subdir }}
e2e-node-add-separate-commands-test-subdir: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-test-subdir }}
e2e-node-update-test-subdir: ${{ needs.env-vars.outputs.e2e-node-update-test-subdir }}
e2e-node-delete-test-subdir: ${{ needs.env-vars.outputs.e2e-node-delete-test-subdir }}
e2e-relay-test-subdir: ${{ needs.env-vars.outputs.e2e-relay-test-subdir }}
Expand All @@ -245,6 +263,7 @@ jobs:
e2e-node-pem-kill-coverage-report: ${{ needs.env-vars.outputs.e2e-node-pem-kill-coverage-report }}
e2e-node-local-build-coverage-report: ${{ needs.env-vars.outputs.e2e-node-local-build-coverage-report }}
e2e-node-add-coverage-report: ${{ needs.env-vars.outputs.e2e-node-add-coverage-report }}
e2e-node-add-separate-commands-coverage-report: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-coverage-report }}
e2e-node-update-coverage-report: ${{ needs.env-vars.outputs.e2e-node-update-coverage-report }}
e2e-node-delete-coverage-report: ${{ needs.env-vars.outputs.e2e-node-delete-coverage-report }}
e2e-relay-coverage-report: ${{ needs.env-vars.outputs.e2e-relay-coverage-report }}
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/templates/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ tests:
jestPostfix: --testRegex=\".*\\/e2e\\/commands\\/node_local.*\\.test\\.mjs\"
- name: Node Add
jestPostfix: --testRegex=\".*\\/e2e\\/commands\\/node_add.*\\.test\\.mjs\"
- name: Node Add - Separate commands
jestPostfix: --testRegex=\".*\\/e2e\\/commands\\/separate_node_add.*\\.test\\.mjs\"
- name: Node Update
jestPostfix: --testRegex=\".*\\/e2e\\/commands\\/node_update.*\\.test\\.mjs\"
- name: Node Delete
Expand Down
17 changes: 17 additions & 0 deletions .github/workflows/zxc-code-analysis.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,11 @@ on:
type: string
required: false
default: "e2e-node-add"
e2e-node-add-separate-commands-test-subdir:
description: "E2E Node Add - Separate commands Test Subdirectory:"
type: string
required: false
default: "e2e-node-add-separate-commands"
e2e-node-update-test-subdir:
description: "E2E Node Update Test Subdirectory:"
type: string
Expand Down Expand Up @@ -130,6 +135,11 @@ on:
type: string
required: false
default: "E2E Node Add Tests Coverage Report"
e2e-node-add-separate-commands-coverage-report:
description: "E2E Node Add - Separate commands Coverage Report:"
type: string
required: false
default: "E2E Node Add - Separate commands Tests Coverage Report"
e2e-node-update-coverage-report:
description: "E2E Node Update Coverage Report:"
type: string
Expand Down Expand Up @@ -237,6 +247,13 @@ jobs:
name: ${{ inputs.e2e-node-add-coverage-report }}
path: 'coverage/${{ inputs.e2e-node-add-test-subdir }}'

- name: Download E2E Node Add - Separate commands Coverage Report
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
if: ${{ (inputs.enable-codecov-analysis || inputs.enable-codacy-coverage) && inputs.enable-e2e-coverage-report && !cancelled() && !failure() }}
with:
name: ${{ inputs.e2e-node-add-separate-commands-coverage-report }}
path: 'coverage/${{ inputs.e2e-node-add-separate-commands-test-subdir }}'

- name: Download E2E Node Update Coverage Report
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
if: ${{ (inputs.enable-codecov-analysis || inputs.enable-codacy-coverage) && inputs.enable-e2e-coverage-report && !cancelled() && !failure() }}
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/zxc-e2e-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -147,20 +147,20 @@ jobs:
run: docker image pull kindest/node:v1.27.3@sha256:3966ac761ae0136263ffdb6cfd4db23ef8a83cba8a463690e98317add2c9ba72

- name: Setup Java
if: ${{ runner.os == 'linux' && (inputs.npm-test-script == 'test-e2e-node-local-build' || inputs.npm-test-script == 'test-e2e-node-add') && !cancelled() && !failure() }}
if: ${{ runner.os == 'linux' && (inputs.npm-test-script == 'test-e2e-node-local-build' || inputs.npm-test-script == 'test-e2e-node-add' || inputs.npm-test-script == 'test-e2e-node-add-separate-commands') && !cancelled() && !failure() }}
uses: actions/setup-java@2dfa2011c5b2a0f1489bf9e433881c92c1631f88 # v4.3.0
with:
distribution: temurin
java-version: 21.0.1

- name: Setup Gradle
if: ${{ runner.os == 'linux' && (inputs.npm-test-script == 'test-e2e-node-local-build' || inputs.npm-test-script == 'test-e2e-node-add') && !cancelled() && !failure() }}
if: ${{ runner.os == 'linux' && (inputs.npm-test-script == 'test-e2e-node-local-build' || inputs.npm-test-script == 'test-e2e-node-add' || inputs.npm-test-script == 'test-e2e-node-add-separate-commands') && !cancelled() && !failure() }}
uses: gradle/gradle-build-action@ac2d340dc04d9e1113182899e983b5400c17cda1 # v3.5.0
with:
cache-read-only: false

- name: Build Hedera code locally
if: ${{ runner.os == 'linux' && (inputs.npm-test-script == 'test-e2e-node-local-build' || inputs.npm-test-script == 'test-e2e-node-add') && !cancelled() && !failure() }}
if: ${{ runner.os == 'linux' && (inputs.npm-test-script == 'test-e2e-node-local-build' || inputs.npm-test-script == 'test-e2e-node-add' || inputs.npm-test-script == 'test-e2e-node-add-separate-commands') && !cancelled() && !failure() }}
run: |
cd ..
git clone https://github.com/hashgraph/hedera-services.git --depth 1 --branch v0.54.0-alpha.4
Expand Down
8 changes: 8 additions & 0 deletions .github/workflows/zxc-env-vars.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ on:
e2e-node-add-test-subdir:
description: "E2E Node Add Test Subdirectory"
value: ${{ jobs.env-vars.outputs.e2e_node_add_test_subdir }}
e2e-node-add-separate-commands-test-subdir:
description: "E2E Node Add - Separate commands Test Subdirectory"
value: ${{ jobs.env-vars.outputs.e2e_node_add_separate_commands_test_subdir }}
e2e-node-update-test-subdir:
description: "E2E Node Update Test Subdirectory"
value: ${{ jobs.env-vars.outputs.e2e_node_update_test_subdir }}
Expand Down Expand Up @@ -71,6 +74,9 @@ on:
e2e-node-add-coverage-report:
description: "E2E Node Add Tests Coverage Report"
value: ${{ jobs.env-vars.outputs.e2e_node_add_coverage_report }}
e2e-node-add-separate-commands-coverage-report:
description: "E2E Node Add - Separate commands Tests Coverage Report"
value: ${{ jobs.env-vars.outputs.e2e_node_add_separate_commands_coverage_report }}
e2e-node-update-coverage-report:
description: "E2E Node Update Tests Coverage Report"
value: ${{ jobs.env-vars.outputs.e2e_node_update_coverage_report }}
Expand All @@ -96,6 +102,7 @@ jobs:
e2e_node_pem_kill_test_subdir: e2e-node-pem-kill
e2e_node_local_build_test_subdir: e2e-node-local-build
e2e_node_add_test_subdir: e2e-node-add
e2e_node_add_separate_commands_test_subdir: e2e-node-add-separate-commands
e2e_node_update_test_subdir: e2e-node-update
e2e_node_delete_test_subdir: e2e-node-delete
e2e_relay_test_subdir: e2e-relay
Expand All @@ -105,6 +112,7 @@ jobs:
e2e_node_pem_kill_coverage_report: "E2E Node PEM Kill Tests Coverage Report"
e2e_node_local_build_coverage_report: "E2E Node Local Build Tests Coverage Report"
e2e_node_add_coverage_report: "E2E Node Add Tests Coverage Report"
e2e_node_add_separate_commands_coverage_report: "E2E Node Add - Separate commands Tests Coverage Report"
e2e_node_update_coverage_report: "E2E Node Update Tests Coverage Report"
e2e_node_delete_coverage_report: "E2E Node Delete Tests Coverage Report"
e2e_relay_coverage_report: "E2E Relay Tests Coverage Report"
Expand Down
21 changes: 18 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ Then run the following command to set the kubectl context to the new cluster:
```bash
kind create cluster -n "${SOLO_CLUSTER_NAME}"
```

Example output

```
Expand Down Expand Up @@ -182,6 +183,7 @@ Kubernetes Namespace : solo
✔ Generate gRPC TLS keys
✔ Finalize
```

Key files are generated in `~/.solo/keys` directory.

```
Expand All @@ -190,6 +192,7 @@ $ ls ~/.solo/cache/keys
hedera-node1.crt hedera-node2.crt hedera-node3.crt private-node1.pfx private-node3.pfx
hedera-node1.key hedera-node2.key hedera-node3.key private-node2.pfx public.pfx
```

* Setup cluster with shared components
* In a separate terminal, you may run `k9s` to view the pod status.

Expand All @@ -212,7 +215,6 @@ Kubernetes Namespace : solo
✔ Install 'fullstack-cluster-setup' chart
```


* Deploy helm chart with Hedera network components
* It may take a while (5~15 minutes depending on your internet speed) to download various docker images and get the pods started.
* If it fails, ensure you have enough resources allocated for Docker engine and retry the command.
Expand Down Expand Up @@ -323,6 +325,7 @@ Kubernetes Namespace : solo
Error starting node: node 'node1' is not ACTIVE [ attempt = 100/100 ]
***********************************************************************************
```

* Deploy mirror node

```
Expand Down Expand Up @@ -500,7 +503,9 @@ Kubernetes Namespace : solo
✔ Generate gRPC TLS keys
✔ Finalize
```

PEM key files are generated in `~/.solo/keys` directory.

```
$ ls ~/.solo/cache/keys
a-private-node1.pem a-private-node3.pem a-public-node2.pem hedera-node1.crt
Expand All @@ -509,6 +514,7 @@ s-public-node2.pem unused-gossip-pem/
a-private-node2.pem a-public-node1.pem a-public-node3.pem hedera-node1.key
hedera-node2.key hedera-node3.key s-private-node2.pem s-public-node1.pem s-public-node3.pem unused-tls/
```

* Setup cluster with shared components

```
Expand Down Expand Up @@ -544,37 +550,43 @@ $ solo node start

# output is similar to example-1
```

## For Developers Working on Hedera Service Repo

First, pleaes clone hedera service repo `https://github.com/hashgraph/hedera-services/` and build the code
with `./gradlew assemble`. If need to running nodes with different versions or releases, please duplicate the repo or build directories in
multiple directories, checkout to the respective version and build the code.
multiple directories, checkout to the respective version and build the code.

To set customized `settings.txt` file, edit the file
`~/.solo/cache/templates/settings.txt` after `solo init` command.

Then you can start customized built hedera network with the following command:

```
solo node setup --local-build-path <default path to hedera repo>,node1=<custom build hedera repo>,node2=<custom build repo>
```

## For Developers Working on Platform core

To deploy node with local build PTT jar files, run the following command:

```
solo node setup --local-build-path <default path to hedera repo>,node1=<custom build hedera repo>,node2=<custom build repo>
--app PlatformTestingTool.jar --app-config <path-to-test-json1,path-to-test-json2>
```

## Logs

You can find log for running solo command under the directory `~/.solo/logs/`
The file `solo.log` contains the logs for the solo command.
The file `solo.log` contains the logs for the solo command.
The file `hashgraph-sdk.log` contains the logs from solo client when sending transactions to network nodes.

## Using Intellj remote debug with solo

NOTE: the hedera-services path referenced '../hedera-services/hedera-node/data' may need to be updated based on what directory you are currently in. This also assumes that you have done an assemble/build and the directory contents are up-to-date.

Example 1: attach jvm debugger to a hedera node

```bash
./test/e2e/setup-e2e.sh
solo node keys --gossip-keys --tls-keys
Expand All @@ -584,6 +596,7 @@ solo node start -i node1,node2,node3 --debug-nodeid node2
```

Once you see the following message, you can launch jvm debugger from Intellij

```
Check node: node1,
Check node: node3, Please attach JVM debugger now.
Expand All @@ -602,6 +615,7 @@ solo node add --gossip-keys --tls-keys --node-id node4 --debug-nodeid node4 --lo
```

Example 3: attach jvm debugger with node update operation

```bash
./test/e2e/setup-e2e.sh
solo node keys --gossip-keys --tls-keys
Expand All @@ -612,6 +626,7 @@ solo node update --node-id node2 --debug-nodeid node2 --local-build-path ../hed
```

Example 4: attach jvm debugger with node delete operation

```bash
./test/e2e/setup-e2e.sh
solo node keys --gossip-keys --tls-keys
Expand Down
Loading
Loading