UNPKG

@hashgraph/solo

Version:

An opinionated CLI tool to deploy and manage private Hedera Networks.

62 lines 4.34 kB
// SPDX-License-Identifier: Apache-2.0 import { describe, it } from 'mocha'; import { expect } from 'chai'; import { Flags as flags } from '../../../src/commands/flags.js'; import { getTemporaryDirectory, HEDERA_PLATFORM_VERSION_TAG } from '../../test-utility.js'; import { Duration } from '../../../src/core/time/duration.js'; import { HEDERA_HAPI_PATH, ROOT_CONTAINER } from '../../../src/core/constants.js'; import fs from 'node:fs'; import { BaseCommandTest } from './tests/base-command-test.js'; import { main } from '../../../src/index.js'; import { Zippy } from '../../../src/core/zippy.js'; import { ContainerReference } from '../../../src/integration/kube/resources/container/container-reference.js'; import { ConsensusCommandDefinition } from '../../../src/commands/command-definitions/consensus-command-definition.js'; import { TEST_UPGRADE_TO_VERSION } from '../../../version-test.js'; export function testSeparateNodeUpgrade(argv, bootstrapResp, namespace) { argv.setArg(flags.nodeAliasesUnparsed, 'node1,node2'); argv.setArg(flags.releaseTag, HEDERA_PLATFORM_VERSION_TAG); const zipFile = 'upgrade.zip'; const { opts: { k8Factory, logger }, } = bootstrapResp; describe('Node upgrade', async () => { it('should succeed with separate upgrade command', async () => { // Create file version.txt at tmp directory const temporaryDirectory = getTemporaryDirectory(); fs.writeFileSync(`${temporaryDirectory}/version.txt`, TEST_UPGRADE_TO_VERSION); // Create upgrade.zip file from tmp directory using zippy.ts const zipper = new Zippy(logger); await zipper.zip(temporaryDirectory, zipFile); const temporaryDirectory2 = 'contextDir'; const argvPrepare = argv.clone(); argvPrepare.setArg(flags.upgradeZipFile, zipFile); argvPrepare.setArg(flags.outputDir, temporaryDirectory2); const argvExecute = argv.clone(); argvExecute.setArg(flags.inputDir, temporaryDirectory2); const { newArgv } = BaseCommandTest; const prepareArguments = newArgv(); prepareArguments.push(ConsensusCommandDefinition.COMMAND_NAME, ConsensusCommandDefinition.DEV_NODE_UPGRADE_SUBCOMMAND_NAME, ConsensusCommandDefinition.DEV_NODE_PREPARE, '--deployment', argv.getArg(flags.deployment), '--output-dir', temporaryDirectory2, '--upgrade-zip-file', zipFile); await main(prepareArguments); const submitArguments = newArgv(); submitArguments.push(ConsensusCommandDefinition.COMMAND_NAME, ConsensusCommandDefinition.DEV_NODE_UPGRADE_SUBCOMMAND_NAME, ConsensusCommandDefinition.DEV_NODE_SUBMIT_TRANSACTION, '--upgrade-zip-file', zipFile, '--input-dir', temporaryDirectory2, '--deployment', argv.getArg(flags.deployment)); await main(submitArguments); const executeArguments = newArgv(); executeArguments.push(ConsensusCommandDefinition.COMMAND_NAME, ConsensusCommandDefinition.DEV_NODE_UPGRADE_SUBCOMMAND_NAME, ConsensusCommandDefinition.DEV_NODE_EXECUTE, '--upgrade-zip-file', zipFile, '--input-dir', temporaryDirectory2, '--deployment', argv.getArg(flags.deployment)); await main(executeArguments); }).timeout(Duration.ofMinutes(5).toMillis()); it('network nodes version file was upgraded', async () => { // Copy the version.txt file from the pod data/upgrade/current directory const temporaryDirectory = getTemporaryDirectory(); const pods = await k8Factory.default().pods().list(namespace, ['solo.hedera.com/type=network-node']); const podReference = pods[0].podReference; const containerReference = ContainerReference.of(podReference, ROOT_CONTAINER); await k8Factory .default() .containers() .readByRef(containerReference) .copyFrom(`${HEDERA_HAPI_PATH}/data/upgrade/current/version.txt`, temporaryDirectory); // Compare the version.txt const version = fs.readFileSync(`${temporaryDirectory}/version.txt`, 'utf8'); expect(version).to.equal(TEST_UPGRADE_TO_VERSION); }).timeout(Duration.ofMinutes(5).toMillis()); }); } //# sourceMappingURL=separate-node-upgrade.test.js.map