Skip to content

Commit a184775

Browse files
feat: add node add-prepare and node add-execute commands (#533)
Signed-off-by: Ivo Yankov <[email protected]> Signed-off-by: Jeromy Cannon <[email protected]> Co-authored-by: Jeromy Cannon <[email protected]>
1 parent ae97fc0 commit a184775

12 files changed

+619
-108
lines changed

.github/workflows/flow-build-application.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,19 @@ jobs:
142142
coverage-subdirectory: ${{ needs.env-vars.outputs.e2e-node-add-test-subdir }}
143143
coverage-report-name: ${{ needs.env-vars.outputs.e2e-node-add-coverage-report }}
144144

145+
e2e-node-add-separate-commands-tests:
146+
name: E2E Tests
147+
if: ${{ github.event_name == 'push' || github.event.inputs.enable-e2e-tests == 'true' }}
148+
uses: ./.github/workflows/zxc-e2e-test.yaml
149+
needs:
150+
- env-vars
151+
- code-style
152+
with:
153+
custom-job-label: Node Add - Separate commands
154+
npm-test-script: test-${{ needs.env-vars.outputs.e2e-node-add-separate-commands-test-subdir }}
155+
coverage-subdirectory: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-test-subdir }}
156+
coverage-report-name: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-coverage-report }}
157+
145158
e2e-node-update-tests:
146159
name: E2E Tests
147160
if: ${{ github.event_name == 'push' || github.event.inputs.enable-e2e-tests == 'true' }}
@@ -193,6 +206,7 @@ jobs:
193206
- e2e-node-pem-kill-tests
194207
- e2e-node-local-build-tests
195208
- e2e-node-add-tests
209+
- e2e-node-add-separate-commands-tests
196210
- e2e-node-update-tests
197211
- e2e-node-delete-tests
198212
- e2e-relay-tests
@@ -209,6 +223,7 @@ jobs:
209223
e2e-node-pem-kill-test-subdir: ${{ needs.env-vars.outputs.e2e-node-pem-kill-test-subdir }}
210224
e2e-node-local-build-test-subdir: ${{ needs.env-vars.outputs.e2e-node-local-build-test-subdir }}
211225
e2e-node-add-test-subdir: ${{ needs.env-vars.outputs.e2e-node-add-test-subdir }}
226+
e2e-node-add-separate-commands-test-subdir: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-test-subdir }}
212227
e2e-node-update-test-subdir: ${{ needs.env-vars.outputs.e2e-node-update-test-subdir }}
213228
e2e-node-delete-test-subdir: ${{ needs.env-vars.outputs.e2e-node-delete-test-subdir }}
214229
e2e-relay-test-subdir: ${{ needs.env-vars.outputs.e2e-relay-test-subdir }}
@@ -218,6 +233,7 @@ jobs:
218233
e2e-node-pem-kill-coverage-report: ${{ needs.env-vars.outputs.e2e-node-pem-kill-coverage-report }}
219234
e2e-node-local-build-coverage-report: ${{ needs.env-vars.outputs.e2e-node-local-build-coverage-report }}
220235
e2e-node-add-coverage-report: ${{ needs.env-vars.outputs.e2e-node-add-coverage-report }}
236+
e2e-node-add-separate-commands-coverage-report: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-coverage-report }}
221237
e2e-node-update-coverage-report: ${{ needs.env-vars.outputs.e2e-node-update-coverage-report }}
222238
e2e-node-delete-coverage-report: ${{ needs.env-vars.outputs.e2e-node-delete-coverage-report }}
223239
e2e-relay-coverage-report: ${{ needs.env-vars.outputs.e2e-relay-coverage-report }}

.github/workflows/flow-pull-request-checks.yaml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,19 @@ jobs:
130130
coverage-subdirectory: ${{ needs.env-vars.outputs.e2e-node-add-test-subdir }}
131131
coverage-report-name: ${{ needs.env-vars.outputs.e2e-node-add-coverage-report }}
132132

133+
e2e-node-add-separate-commands-tests:
134+
name: E2E Tests
135+
if: ${{ !cancelled() && always() }}
136+
uses: ./.github/workflows/zxc-e2e-test.yaml
137+
needs:
138+
- env-vars
139+
- code-style
140+
with:
141+
custom-job-label: Node Add - Separate commands
142+
npm-test-script: test-${{ needs.env-vars.outputs.e2e-node-add-separate-commands-test-subdir }}
143+
coverage-subdirectory: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-test-subdir }}
144+
coverage-report-name: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-coverage-report }}
145+
133146
e2e-node-update-tests:
134147
name: E2E Tests
135148
if: ${{ !cancelled() && always() }}
@@ -181,6 +194,7 @@ jobs:
181194
- e2e-node-pem-kill-tests
182195
- e2e-node-local-build-tests
183196
- e2e-node-add-tests
197+
- e2e-node-add-separate-commands-tests
184198
- e2e-node-update-tests
185199
- e2e-node-delete-tests
186200
- e2e-relay-tests
@@ -195,6 +209,7 @@ jobs:
195209
e2e-node-pem-kill-test-subdir: ${{ needs.env-vars.outputs.e2e-node-pem-kill-test-subdir }}
196210
e2e-node-local-build-test-subdir: ${{ needs.env-vars.outputs.e2e-node-local-build-test-subdir }}
197211
e2e-node-add-test-subdir: ${{ needs.env-vars.outputs.e2e-node-add-test-subdir }}
212+
e2e-node-add-separate-commands-test-subdir: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-test-subdir }}
198213
e2e-node-update-test-subdir: ${{ needs.env-vars.outputs.e2e-node-update-test-subdir }}
199214
e2e-node-delete-test-subdir: ${{ needs.env-vars.outputs.e2e-node-delete-test-subdir }}
200215
e2e-relay-test-subdir: ${{ needs.env-vars.outputs.e2e-relay-test-subdir }}
@@ -204,6 +219,7 @@ jobs:
204219
e2e-node-pem-kill-coverage-report: ${{ needs.env-vars.outputs.e2e-node-pem-kill-coverage-report }}
205220
e2e-node-local-build-coverage-report: ${{ needs.env-vars.outputs.e2e-node-local-build-coverage-report }}
206221
e2e-node-add-coverage-report: ${{ needs.env-vars.outputs.e2e-node-add-coverage-report }}
222+
e2e-node-add-separate-commands-coverage-report: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-coverage-report }}
207223
e2e-node-update-coverage-report: ${{ needs.env-vars.outputs.e2e-node-update-coverage-report }}
208224
e2e-node-delete-coverage-report: ${{ needs.env-vars.outputs.e2e-node-delete-coverage-report }}
209225
e2e-relay-coverage-report: ${{ needs.env-vars.outputs.e2e-relay-coverage-report }}
@@ -222,6 +238,7 @@ jobs:
222238
- e2e-node-pem-kill-tests
223239
- e2e-node-local-build-tests
224240
- e2e-node-add-tests
241+
- e2e-node-add-separate-commands-tests
225242
- e2e-node-update-tests
226243
- e2e-node-delete-tests
227244
- e2e-relay-tests
@@ -236,6 +253,7 @@ jobs:
236253
e2e-node-pem-kill-test-subdir: ${{ needs.env-vars.outputs.e2e-node-pem-kill-test-subdir }}
237254
e2e-node-local-build-test-subdir: ${{ needs.env-vars.outputs.e2e-node-local-build-test-subdir }}
238255
e2e-node-add-test-subdir: ${{ needs.env-vars.outputs.e2e-node-add-test-subdir }}
256+
e2e-node-add-separate-commands-test-subdir: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-test-subdir }}
239257
e2e-node-update-test-subdir: ${{ needs.env-vars.outputs.e2e-node-update-test-subdir }}
240258
e2e-node-delete-test-subdir: ${{ needs.env-vars.outputs.e2e-node-delete-test-subdir }}
241259
e2e-relay-test-subdir: ${{ needs.env-vars.outputs.e2e-relay-test-subdir }}
@@ -245,6 +263,7 @@ jobs:
245263
e2e-node-pem-kill-coverage-report: ${{ needs.env-vars.outputs.e2e-node-pem-kill-coverage-report }}
246264
e2e-node-local-build-coverage-report: ${{ needs.env-vars.outputs.e2e-node-local-build-coverage-report }}
247265
e2e-node-add-coverage-report: ${{ needs.env-vars.outputs.e2e-node-add-coverage-report }}
266+
e2e-node-add-separate-commands-coverage-report: ${{ needs.env-vars.outputs.e2e-node-add-separate-commands-coverage-report }}
248267
e2e-node-update-coverage-report: ${{ needs.env-vars.outputs.e2e-node-update-coverage-report }}
249268
e2e-node-delete-coverage-report: ${{ needs.env-vars.outputs.e2e-node-delete-coverage-report }}
250269
e2e-relay-coverage-report: ${{ needs.env-vars.outputs.e2e-relay-coverage-report }}

.github/workflows/templates/config.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ tests:
44
# name: capitalized noun form
55
# testFilePrefix: node-update # for node-update.test.mjs
66
- name: Standard
7-
jestPostfix: --testPathIgnorePatterns=\".*/unit/.*\" --testPathIgnorePatterns=\".*/e2e/commands/mirror_node.*\" --testPathIgnorePatterns=\".*/e2e/commands/node.*\" --testPathIgnorePatterns=\".*/e2e/commands/relay.*\"
7+
jestPostfix: --testPathIgnorePatterns=\".*/unit/.*\" --testPathIgnorePatterns=\".*/e2e/commands/mirror_node.*\" --testPathIgnorePatterns=\".*/e2e/commands/node.*\" --testPathIgnorePatterns=\".*/e2e/commands/separate_node.*\" --testPathIgnorePatterns=\".*/e2e/commands/relay.*\"
88
- name: Mirror Node
99
jestPostfix: --testRegex=\".*\\/e2e\\/commands\\/mirror_node\\.test\\.mjs\"
1010
- name: Node PEM Stop
@@ -15,6 +15,8 @@ tests:
1515
jestPostfix: --testRegex=\".*\\/e2e\\/commands\\/node_local.*\\.test\\.mjs\"
1616
- name: Node Add
1717
jestPostfix: --testRegex=\".*\\/e2e\\/commands\\/node_add.*\\.test\\.mjs\"
18+
- name: Node Add - Separate commands
19+
jestPostfix: --testRegex=\".*\\/e2e\\/commands\\/separate_node_add.*\\.test\\.mjs\"
1820
- name: Node Update
1921
jestPostfix: --testRegex=\".*\\/e2e\\/commands\\/node_update.*\\.test\\.mjs\"
2022
- name: Node Delete

.github/workflows/zxc-code-analysis.yaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@ on:
8585
type: string
8686
required: false
8787
default: "e2e-node-add"
88+
e2e-node-add-separate-commands-test-subdir:
89+
description: "E2E Node Add - Separate commands Test Subdirectory:"
90+
type: string
91+
required: false
92+
default: "e2e-node-add-separate-commands"
8893
e2e-node-update-test-subdir:
8994
description: "E2E Node Update Test Subdirectory:"
9095
type: string
@@ -130,6 +135,11 @@ on:
130135
type: string
131136
required: false
132137
default: "E2E Node Add Tests Coverage Report"
138+
e2e-node-add-separate-commands-coverage-report:
139+
description: "E2E Node Add - Separate commands Coverage Report:"
140+
type: string
141+
required: false
142+
default: "E2E Node Add - Separate commands Tests Coverage Report"
133143
e2e-node-update-coverage-report:
134144
description: "E2E Node Update Coverage Report:"
135145
type: string
@@ -237,6 +247,13 @@ jobs:
237247
name: ${{ inputs.e2e-node-add-coverage-report }}
238248
path: 'coverage/${{ inputs.e2e-node-add-test-subdir }}'
239249

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

.github/workflows/zxc-env-vars.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ on:
4444
e2e-node-add-test-subdir:
4545
description: "E2E Node Add Test Subdirectory"
4646
value: ${{ jobs.env-vars.outputs.e2e_node_add_test_subdir }}
47+
e2e-node-add-separate-commands-test-subdir:
48+
description: "E2E Node Add - Separate commands Test Subdirectory"
49+
value: ${{ jobs.env-vars.outputs.e2e_node_add_separate_commands_test_subdir }}
4750
e2e-node-update-test-subdir:
4851
description: "E2E Node Update Test Subdirectory"
4952
value: ${{ jobs.env-vars.outputs.e2e_node_update_test_subdir }}
@@ -71,6 +74,9 @@ on:
7174
e2e-node-add-coverage-report:
7275
description: "E2E Node Add Tests Coverage Report"
7376
value: ${{ jobs.env-vars.outputs.e2e_node_add_coverage_report }}
77+
e2e-node-add-separate-commands-coverage-report:
78+
description: "E2E Node Add - Separate commands Tests Coverage Report"
79+
value: ${{ jobs.env-vars.outputs.e2e_node_add_separate_commands_coverage_report }}
7480
e2e-node-update-coverage-report:
7581
description: "E2E Node Update Tests Coverage Report"
7682
value: ${{ jobs.env-vars.outputs.e2e_node_update_coverage_report }}
@@ -96,6 +102,7 @@ jobs:
96102
e2e_node_pem_kill_test_subdir: e2e-node-pem-kill
97103
e2e_node_local_build_test_subdir: e2e-node-local-build
98104
e2e_node_add_test_subdir: e2e-node-add
105+
e2e_node_add_separate_commands_test_subdir: e2e-node-add-separate-commands
99106
e2e_node_update_test_subdir: e2e-node-update
100107
e2e_node_delete_test_subdir: e2e-node-delete
101108
e2e_relay_test_subdir: e2e-relay
@@ -105,6 +112,7 @@ jobs:
105112
e2e_node_pem_kill_coverage_report: "E2E Node PEM Kill Tests Coverage Report"
106113
e2e_node_local_build_coverage_report: "E2E Node Local Build Tests Coverage Report"
107114
e2e_node_add_coverage_report: "E2E Node Add Tests Coverage Report"
115+
e2e_node_add_separate_commands_coverage_report: "E2E Node Add - Separate commands Tests Coverage Report"
108116
e2e_node_update_coverage_report: "E2E Node Update Tests Coverage Report"
109117
e2e_node_delete_coverage_report: "E2E Node Delete Tests Coverage Report"
110118
e2e_relay_coverage_report: "E2E Relay Tests Coverage Report"

README.md

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ Then run the following command to set the kubectl context to the new cluster:
7474
```bash
7575
kind create cluster -n "${SOLO_CLUSTER_NAME}"
7676
```
77+
7778
Example output
7879

7980
```
@@ -180,6 +181,7 @@ Kubernetes Namespace : solo
180181
✔ Generate gRPC TLS keys
181182
✔ Finalize
182183
```
184+
183185
Key files are generated in `~/.solo/keys` directory.
184186

185187
```
@@ -188,6 +190,7 @@ $ ls ~/.solo/cache/keys
188190
hedera-node1.crt hedera-node2.crt hedera-node3.crt private-node1.pfx private-node3.pfx
189191
hedera-node1.key hedera-node2.key hedera-node3.key private-node2.pfx public.pfx
190192
```
193+
191194
* Setup cluster with shared components
192195
* In a separate terminal, you may run `k9s` to view the pod status.
193196

@@ -210,7 +213,6 @@ Kubernetes Namespace : solo
210213
✔ Install 'fullstack-cluster-setup' chart
211214
```
212215

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

326329
```
@@ -498,7 +501,9 @@ Kubernetes Namespace : solo
498501
✔ Generate gRPC TLS keys
499502
✔ Finalize
500503
```
504+
501505
PEM key files are generated in `~/.solo/keys` directory.
506+
502507
```
503508
$ ls ~/.solo/cache/keys
504509
a-private-node1.pem a-private-node3.pem a-public-node2.pem hedera-node1.crt
@@ -507,6 +512,7 @@ s-public-node2.pem unused-gossip-pem/
507512
a-private-node2.pem a-public-node1.pem a-public-node3.pem hedera-node1.key
508513
hedera-node2.key hedera-node3.key s-private-node2.pem s-public-node1.pem s-public-node3.pem unused-tls/
509514
```
515+
510516
* Setup cluster with shared components
511517

512518
```
@@ -542,37 +548,43 @@ $ solo node start
542548
543549
# output is similar to example-1
544550
```
551+
545552
## For Developers Working on Hedera Service Repo
546553

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

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

554561
Then you can start customized built hedera network with the following command:
562+
555563
```
556564
solo node setup --local-build-path <default path to hedera repo>,node1=<custom build hedera repo>,node2=<custom build repo>
557565
```
558566

559567
## For Developers Working on Platform core
560568

561569
To deploy node with local build PTT jar files, run the following command:
570+
562571
```
563572
solo node setup --local-build-path <default path to hedera repo>,node1=<custom build hedera repo>,node2=<custom build repo>
564573
--app PlatformTestingTool.jar --app-config <path-to-test-json1,path-to-test-json2>
565574
```
575+
566576
## Logs
577+
567578
You can find log for running solo command under the directory `~/.solo/logs/`
568-
The file `solo.log` contains the logs for the solo command.
579+
The file `solo.log` contains the logs for the solo command.
569580
The file `hashgraph-sdk.log` contains the logs from solo client when sending transactions to network nodes.
570581

571582
## Using Intellj remote debug with solo
572583

573584
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.
574585

575586
Example 1: attach jvm debugger to a hedera node
587+
576588
```bash
577589
./test/e2e/setup-e2e.sh
578590
solo node keys --gossip-keys --tls-keys
@@ -582,6 +594,7 @@ solo node start -i node1,node2,node3 --debug-nodeid node2
582594
```
583595

584596
Once you see the following message, you can launch jvm debugger from Intellij
597+
585598
```
586599
Check node: node1,
587600
Check node: node3, Please attach JVM debugger now.
@@ -600,6 +613,7 @@ solo node add --gossip-keys --tls-keys --node-id node4 --debug-nodeid node4 --lo
600613
```
601614

602615
Example 3: attach jvm debugger with node update operation
616+
603617
```bash
604618
./test/e2e/setup-e2e.sh
605619
solo node keys --gossip-keys --tls-keys
@@ -610,6 +624,7 @@ solo node update --node-id node2 --debug-nodeid node2 --local-build-path ../hed
610624
```
611625

612626
Example 4: attach jvm debugger with node delete operation
627+
613628
```bash
614629
./test/e2e/setup-e2e.sh
615630
solo node keys --gossip-keys --tls-keys

0 commit comments

Comments
 (0)