-
Notifications
You must be signed in to change notification settings - Fork 85
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2359 from zowe/select-members-enhancement
Select members enhancement
- Loading branch information
Showing
29 changed files
with
1,174 additions
and
37 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
12 changes: 12 additions & 0 deletions
12
packages/cli/__tests__/zosfiles/__system__/download/amm/__scripts__/command_download_amm.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
#!/bin/bash | ||
dsn=$1 | ||
pattern=$2 | ||
rfj=$3 | ||
set -e | ||
|
||
echo "================Z/OS FILES DOWNLOAD ALL MEMBER DATA SET===============" | ||
zowe zos-files download amm "$1" "$2" $3 $4 | ||
if [ $? -gt 0 ] | ||
then | ||
exit $? | ||
fi |
9 changes: 9 additions & 0 deletions
9
...ts__/zosfiles/__system__/download/amm/__scripts__/command_download_amm_fully_qualified.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
#!/bin/bash | ||
dsn=$1 | ||
pattern=$2 | ||
HOST=$3 | ||
PORT=$4 | ||
USER=$5 | ||
PASS=$6 | ||
zowe zos-files download amm "$dsn" "$pattern" --host $HOST --port $PORT --user $USER --password $PASS --ru=false | ||
exit $? |
12 changes: 12 additions & 0 deletions
12
...es/cli/__tests__/zosfiles/__system__/download/amm/__scripts__/command_download_amm_mcr.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
#!/bin/bash | ||
dsn=$1 | ||
pattern=$2 | ||
mcr=$3 | ||
set -e | ||
|
||
echo "================Z/OS FILES DOWNLOAD ALL MEMBER DATA SET===============" | ||
zowe zos-files download amm "$dsn" "$pattern" --max-concurrent-requests "$mcr" | ||
if [ $? -gt 0 ] | ||
then | ||
exit $? | ||
fi |
12 changes: 12 additions & 0 deletions
12
...tests__/zosfiles/__system__/download/amm/__scripts__/command_download_amm_no_extension.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
#!/bin/bash | ||
dsn=$1 | ||
pattern=$2 | ||
rfj=$3 | ||
set -e | ||
|
||
# echo "================Z/OS FILES DOWNLOAD ALL MEMBER DATA SET===============" | ||
zowe zos-files download amm "$1" "$2" -e "" $3 | ||
if [ $? -gt 0 ] | ||
then | ||
exit $? | ||
fi |
201 changes: 201 additions & 0 deletions
201
...ages/cli/__tests__/zosfiles/__system__/download/amm/cli.files.download.amm.system.test.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,201 @@ | ||
/* | ||
* This program and the accompanying materials are made available under the terms of the | ||
* Eclipse Public License v2.0 which accompanies this distribution, and is available at | ||
* https://www.eclipse.org/legal/epl-v20.html | ||
* | ||
* SPDX-License-Identifier: EPL-2.0 | ||
* | ||
* Copyright Contributors to the Zowe Project. | ||
* | ||
*/ | ||
|
||
import { Session } from "@zowe/imperative"; | ||
import * as path from "path"; | ||
import { TestEnvironment } from "../../../../../../../__tests__/__src__/environment/TestEnvironment"; | ||
import { ITestEnvironment } from "../../../../../../../__tests__/__src__/environment/ITestEnvironment"; | ||
import { ITestPropertiesSchema } from "../../../../../../../__tests__/__src__/properties/ITestPropertiesSchema"; | ||
import { getUniqueDatasetName } from "../../../../../../../__tests__/__src__/TestUtils"; | ||
import { Create, CreateDataSetTypeEnum, Delete, Upload } from "@zowe/zos-files-for-zowe-sdk"; | ||
import { runCliScript } from "@zowe/cli-test-utils"; | ||
|
||
let REAL_SESSION: Session; | ||
// Test Environment populated in the beforeAll(); | ||
let TEST_ENVIRONMENT: ITestEnvironment<ITestPropertiesSchema>; | ||
let TEST_ENVIRONMENT_NO_PROF: ITestEnvironment<ITestPropertiesSchema>; | ||
let defaultSystem: ITestPropertiesSchema; | ||
let dsname: string; | ||
const pattern = "M*"; | ||
const members = ["M1", "M2", "M3"]; | ||
|
||
describe("Download Members Matching Pattern", () => { | ||
|
||
beforeAll(async () => { | ||
TEST_ENVIRONMENT = await TestEnvironment.setUp({ | ||
tempProfileTypes: ["zosmf"], | ||
testName: "download_all_data_set_member_pattern" | ||
}); | ||
|
||
defaultSystem = TEST_ENVIRONMENT.systemTestProperties; | ||
|
||
REAL_SESSION = TestEnvironment.createZosmfSession(TEST_ENVIRONMENT); | ||
dsname = getUniqueDatasetName(defaultSystem.zosmf.user); | ||
}); | ||
|
||
afterAll(async () => { | ||
await TestEnvironment.cleanUp(TEST_ENVIRONMENT); | ||
}); | ||
describe("without profiles", () => { | ||
let defaultSys: ITestPropertiesSchema; | ||
|
||
// Create the unique test environment | ||
beforeAll(async () => { | ||
TEST_ENVIRONMENT_NO_PROF = await TestEnvironment.setUp({ | ||
testName: "zos_files_download_all_members_matching_without_profile" | ||
}); | ||
|
||
defaultSys = TEST_ENVIRONMENT_NO_PROF.systemTestProperties; | ||
}); | ||
|
||
afterAll(async () => { | ||
await TestEnvironment.cleanUp(TEST_ENVIRONMENT_NO_PROF); | ||
}); | ||
|
||
beforeEach(async () => { | ||
await Create.dataSet(REAL_SESSION, CreateDataSetTypeEnum.DATA_SET_PARTITIONED, dsname); | ||
for(const mem of members) { | ||
await Upload.bufferToDataSet(REAL_SESSION, Buffer.from(mem), `${dsname}(${mem})`); | ||
} | ||
}); | ||
|
||
afterEach(async () => { | ||
await Delete.dataSet(REAL_SESSION, dsname); | ||
}); | ||
|
||
it("should download matching members of a pds", () => { | ||
const shellScript = path.join(__dirname, "__scripts__", "command_download_amm_fully_qualified.sh"); | ||
|
||
const ZOWE_OPT_BASE_PATH = "ZOWE_OPT_BASE_PATH"; | ||
|
||
// if API Mediation layer is being used (basePath has a value) then | ||
// set an ENVIRONMENT variable to be used by zowe. | ||
if (defaultSys.zosmf.basePath != null) { | ||
TEST_ENVIRONMENT_NO_PROF.env[ZOWE_OPT_BASE_PATH] = defaultSys.zosmf.basePath; | ||
} | ||
const response = runCliScript(shellScript, | ||
TEST_ENVIRONMENT_NO_PROF, | ||
[dsname, pattern, | ||
defaultSys.zosmf.host, | ||
defaultSys.zosmf.port, | ||
defaultSys.zosmf.user, | ||
defaultSys.zosmf.password]); | ||
expect(response.stderr.toString()).toBe(""); | ||
expect(response.status).toBe(0); | ||
expect(response.stdout.toString()).toContain(`${members.length} members(s) were found matching pattern`); | ||
expect(response.stdout.toString()).toContain("Member(s) downloaded successfully."); | ||
}); | ||
}); | ||
|
||
describe("Success scenarios", () => { | ||
|
||
beforeEach(async () => { | ||
await Create.dataSet(REAL_SESSION, CreateDataSetTypeEnum.DATA_SET_PARTITIONED, dsname); | ||
for(const mem of members) { | ||
await Upload.bufferToDataSet(REAL_SESSION, Buffer.from(mem), `${dsname}(${mem})`); | ||
} | ||
}); | ||
|
||
afterEach(async () => { | ||
await Delete.dataSet(REAL_SESSION, dsname); | ||
}); | ||
|
||
it("should download all data set member of pds", () => { | ||
const shellScript = path.join(__dirname, "__scripts__", "command_download_amm.sh"); | ||
const response = runCliScript(shellScript, TEST_ENVIRONMENT, [dsname, pattern]); | ||
expect(response.stderr.toString()).toBe(""); | ||
expect(response.status).toBe(0); | ||
expect(response.stdout.toString()).toContain(`${members.length} members(s) were found matching pattern`); | ||
expect(response.stdout.toString()).toContain("Member(s) downloaded successfully."); | ||
}); | ||
|
||
it("should download all data set member of pds in binary format", () => { | ||
const shellScript = path.join(__dirname, "__scripts__", "command_download_amm.sh"); | ||
const response = runCliScript(shellScript, TEST_ENVIRONMENT, [dsname,pattern, "--binary"]); | ||
expect(response.stderr.toString()).toBe(""); | ||
expect(response.status).toBe(0); | ||
expect(response.stdout.toString()).toContain("Member(s) downloaded successfully."); | ||
}); | ||
|
||
it("should download all data set member of pds in record format", () => { | ||
const shellScript = path.join(__dirname, "__scripts__", "command_download_amm.sh"); | ||
const response = runCliScript(shellScript, TEST_ENVIRONMENT, [dsname, pattern, "--record"]); | ||
expect(response.stderr.toString()).toBe(""); | ||
expect(response.status).toBe(0); | ||
expect(response.stdout.toString()).toContain("Member(s) downloaded successfully."); | ||
}); | ||
|
||
it("should download all data set member of pds with response timeout", () => { | ||
const shellScript = path.join(__dirname, "__scripts__", "command_download_amm.sh"); | ||
const response = runCliScript(shellScript, TEST_ENVIRONMENT, [dsname, pattern, "--responseTimeout 5"]); | ||
expect(response.stderr.toString()).toBe(""); | ||
expect(response.status).toBe(0); | ||
expect(response.stdout.toString()).toContain("Member(s) downloaded successfully."); | ||
}); | ||
|
||
it("should download all data set members with --max-concurrent-requests 2", () => { | ||
const shellScript = path.join(__dirname, "__scripts__", "command_download_amm_mcr.sh"); | ||
const response = runCliScript(shellScript, TEST_ENVIRONMENT, [dsname, pattern, 2]); | ||
expect(response.stderr.toString()).toBe(""); | ||
expect(response.status).toBe(0); | ||
expect(response.stdout.toString()).toContain("Member(s) downloaded successfully."); | ||
}); | ||
|
||
it("should download all data set members of a large data set with --max-concurrent-requests 2", async () => { | ||
const bigDsname = getUniqueDatasetName(defaultSystem.zosmf.user); | ||
const pattern = "a*"; | ||
await Create.dataSet(REAL_SESSION, CreateDataSetTypeEnum.DATA_SET_PARTITIONED, bigDsname); | ||
const members = ["a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8", "a9", "a10", "a11", "a12", "a13", "b1", "b2"]; | ||
const memberContent = Buffer.from("ABCDEFGHIJKLMNOPQRSTUVWXYZ\nABCDEFGHIJKLMNOPQRSTUVWXYZ\nABCDEFGHIJKLMNOPQRSTUVWXYZ"); | ||
for (const mem of members) { | ||
await Upload.bufferToDataSet(REAL_SESSION, memberContent, `${bigDsname}(${mem})`); | ||
} | ||
const shellScript = path.join(__dirname, "__scripts__", "command_download_amm_mcr.sh"); | ||
const response = runCliScript(shellScript, TEST_ENVIRONMENT, [bigDsname, pattern, 2]); | ||
expect(response.stderr.toString()).toBe(""); | ||
expect(response.status).toBe(0); | ||
expect(response.stdout.toString()).toContain("Member(s) downloaded successfully."); | ||
await Delete.dataSet(REAL_SESSION, bigDsname); | ||
}); | ||
|
||
it("should download all data set member with response-format-json flag", () => { | ||
const shellScript = path.join(__dirname, "__scripts__", "command_download_amm.sh"); | ||
const response = runCliScript(shellScript, TEST_ENVIRONMENT, [dsname, pattern, "--rfj"]); | ||
expect(response.stderr.toString()).toBe(""); | ||
expect(response.status).toBe(0); | ||
expect(response.stdout.toString()).toContain("Member(s) downloaded successfully."); | ||
}); | ||
|
||
it("should download all data set member to specified directory", () => { | ||
const shellScript = path.join(__dirname, "__scripts__", "command_download_amm.sh"); | ||
const testDir = "test/folder"; | ||
const response = runCliScript(shellScript, TEST_ENVIRONMENT, [dsname, pattern,`-d ${testDir}`, "--rfj"]); | ||
expect(response.stderr.toString()).toBe(""); | ||
expect(response.status).toBe(0); | ||
expect(response.stdout.toString()).toContain("Member(s) downloaded successfully."); | ||
expect(response.stdout.toString()).toContain(testDir); | ||
}); | ||
|
||
it("should download all data set member with extension = \"\"", () => { | ||
const shellScript = path.join(__dirname, "__scripts__", "command_download_amm_no_extension.sh"); | ||
const testDir = "test/folder"; | ||
const response = runCliScript(shellScript, TEST_ENVIRONMENT, [dsname, pattern,`-d ${testDir} --rfj`]); | ||
const result = JSON.parse(response.stdout.toString()); | ||
const expectedResult = {member: "M1"}; | ||
expect(response.stderr.toString()).toBe(""); | ||
expect(response.status).toBe(0); | ||
expect(result.stdout).toContain("Member(s) downloaded successfully."); | ||
expect(result.stdout).toContain(testDir); | ||
expect(result.data.apiResponse.items[0]).toEqual(expectedResult); | ||
}); | ||
}); | ||
|
||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.