Skip to content

Commit cc048a6

Browse files
Merge branch 'main' into 00336-D-node-log-cmd
2 parents 315a721 + fe727e1 commit cc048a6

File tree

7 files changed

+64
-31
lines changed

7 files changed

+64
-31
lines changed

.github/workflows/flow-deploy-release-artifact.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ jobs:
126126
attempt_delay: 5000
127127

128128
- name: Setup JFrog CLI
129-
uses: jfrog/setup-jfrog-cli@1405ca8c4227d79f4c8303964f757a4e4e2369c2 # v4.1.1
129+
uses: jfrog/setup-jfrog-cli@7c95feb32008765e1b4e626b078dfd897c4340ad # v4.1.2
130130
env:
131131
JF_URL: ${{ vars.JF_URL }}
132132
JF_ACCESS_TOKEN: ${{ secrets.JF_ACCESS_TOKEN }}

README.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ You can now use your cluster with:
9090
9191
kubectl cluster-info --context kind-solo
9292
93-
Not sure what to do next? 😅 Check out https://kind.sigs.k8s.io/docs/user/quick-start/
93+
Have a question, bug, or feature request? Let us know! https://kind.sigs.k8s.io/#community 🙂
9494
```
9595

9696
You may now view pods in your cluster using `k9s -A` as below:
@@ -178,9 +178,9 @@ Kubernetes Namespace : solo
178178
✔ Clean up temp files
179179
✔ Generate gossip keys
180180
✔ Backup old files
181-
✔ TLS key for node: node0
182-
✔ TLS key for node: node1
183181
✔ TLS key for node: node2
182+
✔ TLS key for node: node1
183+
✔ TLS key for node: node0
184184
✔ Generate gRPC TLS keys
185185
✔ Finalize
186186
```
@@ -242,9 +242,9 @@ Kubernetes Namespace : solo
242242
✔ Check HAProxy for: node0
243243
✔ Check HAProxy for: node1
244244
✔ Check HAProxy for: node2
245+
✔ Check Envoy Proxy for: node2
245246
✔ Check Envoy Proxy for: node1
246247
✔ Check Envoy Proxy for: node0
247-
✔ Check Envoy Proxy for: node2
248248
✔ Check proxy pods are ready
249249
✔ Check MinIO
250250
✔ Check auxiliary pods are ready
@@ -269,17 +269,17 @@ Kubernetes Namespace : solo
269269
**********************************************************************************
270270
✔ Initialize
271271
✔ Check network pod: node0
272-
✔ Check network pod: node1
273272
✔ Check network pod: node2
273+
✔ Check network pod: node1
274274
✔ Identify network pods
275275
✔ Copy configuration files
276276
✔ Copy Gossip keys to staging
277277
✔ Copy gRPC TLS keys to staging
278278
✔ Prepare config.txt for the network
279279
✔ Prepare staging directory
280-
✔ Update node: node2
281-
✔ Update node: node1
282280
✔ Update node: node0
281+
✔ Update node: node1
282+
✔ Update node: node2
283283
✔ Fetch platform software into network nodes
284284
✔ Copy Gossip keys
285285
✔ Copy Gossip keys
@@ -291,11 +291,11 @@ Kubernetes Namespace : solo
291291
✔ Copy configuration files
292292
✔ Copy configuration files
293293
✔ Set file permissions
294-
✔ Node: node1
295-
✔ Set file permissions
296294
✔ Node: node0
297295
✔ Set file permissions
298296
✔ Node: node2
297+
✔ Set file permissions
298+
✔ Node: node1
299299
✔ Setup network nodes
300300
✔ Finalize
301301
```
@@ -317,13 +317,13 @@ Kubernetes Cluster : kind-solo
317317
Kubernetes Namespace : solo
318318
**********************************************************************************
319319
✔ Initialize
320-
✔ Check network pod: node1
321320
✔ Check network pod: node2
322321
✔ Check network pod: node0
322+
✔ Check network pod: node1
323323
✔ Identify network pods
324-
✔ Start node: node2
325-
✔ Start node: node0
326324
✔ Start node: node1
325+
✔ Start node: node0
326+
✔ Start node: node2
327327
✔ Starting nodes
328328
✔ Check node: node0
329329
✔ Check node: node1
@@ -358,8 +358,8 @@ Kubernetes Namespace : solo
358358
✔ Check Postgres DB
359359
✔ Check Monitor
360360
✔ Check GRPC
361-
✔ Check Importer
362361
✔ Check REST API
362+
✔ Check Importer
363363
✔ Check pods are ready
364364
```
365365

@@ -513,8 +513,8 @@ Kubernetes Namespace : solo
513513
✔ Generate gossip keys
514514
✔ Backup old files
515515
✔ TLS key for node: node0
516-
✔ TLS key for node: node2
517516
✔ TLS key for node: node1
517+
✔ TLS key for node: node2
518518
✔ Generate gRPC TLS keys
519519
✔ Finalize
520520
```

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@hashgraph/solo",
3-
"version": "0.25.0",
3+
"version": "0.26.0",
44
"description": "An opinionated CLI tool to deploy and manage private Hedera Networks.",
55
"main": "src/index.mjs",
66
"type": "module",

src/commands/node.mjs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1494,7 +1494,10 @@ export class NodeCommand extends BaseCommand {
14941494
)
14951495

14961496
const futureDate = new Date()
1497-
futureDate.setDate(futureDate.getDate() + (1 / 24 / 60)) // 1 minute in the future
1497+
this.logger.debug(`Current time: ${futureDate}`)
1498+
1499+
futureDate.setTime(futureDate.getTime() + 20000) // 20 seconds in the future
1500+
this.logger.debug(`Freeze time: ${futureDate}`)
14981501

14991502
const freezeUpgradeTx = await new FreezeTransaction()
15001503
.setFreezeType(FreezeType.FreezeUpgrade)
@@ -1504,7 +1507,10 @@ export class NodeCommand extends BaseCommand {
15041507
.freezeWith(client)
15051508
.execute(client)
15061509

1507-
this.logger.debug(`Upgrade frozen with transaction id: ${freezeUpgradeTx.transactionId.toString()}`)
1510+
const freezeUpgradeReceipt = await freezeUpgradeTx.getReceipt(client)
1511+
1512+
this.logger.debug(`Upgrade frozen with transaction id: ${freezeUpgradeTx.transactionId.toString()}`,
1513+
freezeUpgradeReceipt.status.toString())
15081514
} catch (e) {
15091515
this.logger.error(`Error in freeze upgrade: ${e.message}`, e)
15101516
throw new FullstackTestingError(`Error in freeze upgrade: ${e.message}`, e)

test/e2e/commands/mirror_node.test.mjs

Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ import * as version from '../../../version.mjs'
3939
import { getNodeLogs, sleep } from '../../../src/core/helpers.mjs'
4040
import { MirrorNodeCommand } from '../../../src/commands/mirror_node.mjs'
4141
import * as core from '../../../src/core/index.mjs'
42-
import { TopicCreateTransaction, TopicMessageSubmitTransaction } from '@hashgraph/sdk'
42+
import { Status, TopicCreateTransaction, TopicMessageSubmitTransaction } from '@hashgraph/sdk'
4343
import * as http from 'http'
4444

4545
describe('MirrorNodeCommand', () => {
@@ -66,6 +66,10 @@ describe('MirrorNodeCommand', () => {
6666
const downloader = new core.PackageDownloader(mirrorNodeCmd.logger)
6767
const accountManager = bootstrapResp.opts.accountManager
6868

69+
const testMessage = 'Mirror node test message'
70+
let portForwarder = null
71+
let newTopicId = null
72+
6973
beforeAll(() => {
7074
bootstrapResp.opts.logger.showUser(`------------------------- START: ${testName} ----------------------------`)
7175
})
@@ -94,45 +98,66 @@ describe('MirrorNodeCommand', () => {
9498
}
9599
}, 600000)
96100

97-
it('mirror node api and hedera explorer should success', async () => {
101+
it('mirror node API should be running', async () => {
98102
await accountManager.loadNodeClient(namespace)
99-
expect.assertions(3)
103+
expect.assertions(1)
100104
try {
101105
// find hedera explorer pod
102106
const pods = await k8.getPodsByLabel(['app.kubernetes.io/name=hedera-explorer'])
103107
const explorerPod = pods[0]
104108

105-
// enable port forwarding
106-
let portForwarder = null
107109
portForwarder = await k8.portForward(explorerPod.metadata.name, 8080, 8080)
108110
await sleep(2000)
109111

110112
// check if mirror node api server is running
111113
const apiURL = 'http://127.0.0.1:8080/api/v1/transactions'
112114
await expect(downloader.urlExists(apiURL)).resolves.toBeTruthy()
113115
await sleep(2000)
116+
} catch (e) {
117+
mirrorNodeCmd.logger.showUserError(e)
118+
expect(e).toBeNull()
119+
}
120+
}, 60000)
114121

115-
// check if the explorer GUI is running
122+
it('Explorer GUI should be running', async () => {
123+
expect.assertions(1)
124+
try {
116125
const guiURL = 'http://127.0.0.1:8080/localnet/dashboard'
117126
await expect(downloader.urlExists(guiURL)).resolves.toBeTruthy()
118127
await sleep(2000)
119128

120129
mirrorNodeCmd.logger.debug('mirror node API and explorer GUI are running')
130+
} catch (e) {
131+
mirrorNodeCmd.logger.showUserError(e)
132+
expect(e).toBeNull()
133+
}
134+
}, 60000)
121135

136+
it('Create topic and submit message should success', async () => {
137+
expect.assertions(1)
138+
try {
122139
// Create a new public topic and submit a message
123140
const txResponse = await new TopicCreateTransaction().execute(accountManager._nodeClient)
124141
const receipt = await txResponse.getReceipt(accountManager._nodeClient)
125-
const newTopicId = receipt.topicId
142+
newTopicId = receipt.topicId
126143
mirrorNodeCmd.logger.debug(`Newly created topic ID is: ${newTopicId}`)
127144

128-
const testMessage = 'Mirror node test message'
129-
await new TopicMessageSubmitTransaction({
145+
const submitResponse = await new TopicMessageSubmitTransaction({
130146
topicId: newTopicId,
131147
message: testMessage
132148
}).execute(accountManager._nodeClient)
133149

134-
await sleep(4000)
150+
const submitReceipt = await submitResponse.getReceipt(accountManager._nodeClient)
151+
expect(submitReceipt.status).toBe(Status.Success)
152+
} catch (e) {
153+
mirrorNodeCmd.logger.showUserError(e)
154+
expect(e).toBeNull()
155+
}
156+
}, 60000)
135157

158+
it('Check submit message result should success', async () => {
159+
expect.assertions(1)
160+
try {
136161
const queryURL = `http://localhost:8080/api/v1/topics/${newTopicId}/messages`
137162
let received = false
138163
let receivedMessage = ''

test/unit/core/helpers.test.mjs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
import { describe, expect, it } from '@jest/globals'
1818
import * as helpers from '../../../src/core/helpers.mjs'
19+
import { HEDERA_PLATFORM_VERSION } from '../../../version.mjs'
1920

2021
describe('Helpers', () => {
2122
it.each([
@@ -65,7 +66,8 @@ describe('Helpers', () => {
6566
{ input: 'v0.45.1', output: 'hashgraph/full-stack-testing/ubi8-init-java17' },
6667
{ input: 'v0.46.0', output: 'hashgraph/full-stack-testing/ubi8-init-java21' },
6768
{ input: 'v0.47.1', output: 'hashgraph/full-stack-testing/ubi8-init-java21' },
68-
{ input: 'v0.47.1-alpha.0', output: 'hashgraph/full-stack-testing/ubi8-init-java21' }
69+
{ input: 'v0.47.1-alpha.0', output: 'hashgraph/full-stack-testing/ubi8-init-java21' },
70+
{ input: HEDERA_PLATFORM_VERSION, output: 'hashgraph/full-stack-testing/ubi8-init-java21' }
6971
])('should be able to determine root-image based on Hedera platform version', (t) => {
7072
expect(helpers.getRootImageRepository(t.input)).toStrictEqual(t.output)
7173
})

0 commit comments

Comments
 (0)