From 8ff6606ab7d699e1c026667481b701b2b1a3315d Mon Sep 17 00:00:00 2001 From: Thandayuthapani Date: Mon, 15 Jul 2019 16:37:44 +0530 Subject: [PATCH] E2E for vcctl help option --- test/e2e/cli_util.go | 12 +++ test/e2e/vcctl.go | 191 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 203 insertions(+) create mode 100644 test/e2e/vcctl.go diff --git a/test/e2e/cli_util.go b/test/e2e/cli_util.go index 7e1dd0a95c..cc69af6eb5 100644 --- a/test/e2e/cli_util.go +++ b/test/e2e/cli_util.go @@ -77,3 +77,15 @@ func RunCliCommand(command []string) string { fmt.Sprintf("Command %s failed to execute: %s", strings.Join(command, ""), err)) return string(output) } + +// RunCliCommandWithoutKubeConfig runs the volcano command +func RunCliCommandWithoutKubeConfig(command []string) string { + if masterURL() != "" { + command = append(command, "--master", masterURL()) + } + + output, err := exec.Command(VolcanoCliBinary(), command...).Output() + Expect(err).NotTo(HaveOccurred(), + fmt.Sprintf("Command %s failed to execute: %s", strings.Join(command, ""), err)) + return string(output) +} diff --git a/test/e2e/vcctl.go b/test/e2e/vcctl.go new file mode 100644 index 0000000000..2759025b0a --- /dev/null +++ b/test/e2e/vcctl.go @@ -0,0 +1,191 @@ +/* +Copyright 2019 The Volcano Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package e2e + +import ( + . "github.com/onsi/ginkgo" + . "github.com/onsi/gomega" + "os" + "strings" +) + +var _ = Describe("Test Help option of vcctl cli", func() { + + It("Command: vcctl --help", func() { + var output = ` +Usage: + vcctl [command] + +Available Commands: + help Help about any command + job vcctl command line operation job + queue Queue Operations + version Print the version information + +Flags: + -h, --help help for vcctl + --log-flush-frequency duration Maximum number of seconds between log flushes (default 5s) + +Use "vcctl [command] --help" for more information about a command. + +` + command := []string{"--help"} + cmdOutput := RunCliCommandWithoutKubeConfig(command) + exist := strings.Contains(output, cmdOutput) + Expect(exist).Should(Equal(true)) + }) + + It("Command: vcctl job --help", func() { + var output = ` +vcctl command line operation job + +Usage: + vcctl job [command] + +Available Commands: + delete delete a job + list list job information + resume resume a job + run run job by parameters from the command line + suspend abort a job + view show job information + +Flags: + -h, --help help for job + +Global Flags: + --log-flush-frequency duration Maximum number of seconds between log flushes (default 5s) + +Use "vcctl job [command] --help" for more information about a command. + +` + command := []string{"job", "--help"} + cmdOutput := RunCliCommandWithoutKubeConfig(command) + exist := strings.Contains(output, cmdOutput) + Expect(exist).Should(Equal(true)) + }) + + It("Command: vcctl job list --help", func() { + home := os.Getenv("HOME") + var output = ` +list job information + +Usage: + vcctl job list [flags] + +Flags: + --all-namespaces list jobs in all namespaces + -h, --help help for list + -k, --kubeconfig string (optional) absolute path to the kubeconfig file (default "` + home + `/.kube/config") + -s, --master string the address of apiserver + -n, --namespace string the namespace of job (default "default") + -S, --scheduler string list job with specified scheduler name + --selector string fuzzy matching jobName + +Global Flags: + --log-flush-frequency duration Maximum number of seconds between log flushes (default 5s) + +` + command := []string{"job", "list", "--help"} + cmdOutput := RunCliCommandWithoutKubeConfig(command) + exist := strings.Contains(output, cmdOutput) + Expect(exist).Should(Equal(true)) + }) + + It("Command: vkctl job suspend -n {$JobName} --help", func() { + home := os.Getenv("HOME") + var output = ` +abort a job + +Usage: + vcctl job suspend [flags] + +Flags: + -h, --help help for suspend + -k, --kubeconfig string (optional) absolute path to the kubeconfig file (default "` + home + `/.kube/config") + -s, --master string the address of apiserver + -N, --name string the name of job + -n, --namespace string the namespace of job (default "default") + +Global Flags: + --log-flush-frequency duration Maximum number of seconds between log flushes (default 5s) + +` + command := []string{"job", "suspend", "-n", "job1", "--help"} + cmdOutput := RunCliCommandWithoutKubeConfig(command) + exist := strings.Contains(output, cmdOutput) + Expect(exist).Should(Equal(true)) + }) + + It("vkctl job resume -n {$JobName} --help", func() { + home := os.Getenv("HOME") + var output = ` +resume a job + +Usage: + vcctl job resume [flags] + +Flags: + -h, --help help for resume + -k, --kubeconfig string (optional) absolute path to the kubeconfig file (default "` + home + `/.kube/config") + -s, --master string the address of apiserver + -N, --name string the name of job + -n, --namespace string the namespace of job (default "default") + +Global Flags: + --log-flush-frequency duration Maximum number of seconds between log flushes (default 5s) + +` + command := []string{"job", "resume", "-n", "job1", "--help"} + cmdOutput := RunCliCommandWithoutKubeConfig(command) + exist := strings.Contains(output, cmdOutput) + Expect(exist).Should(Equal(true)) + }) + + It("vkctl job run --help", func() { + home := os.Getenv("HOME") + var output = ` +run job by parameters from the command line + +Usage: + vcctl job run [flags] + +Flags: + -f, --filename string the yaml file of job + -h, --help help for run + -i, --image string the container image of job (default "busybox") + -k, --kubeconfig string (optional) absolute path to the kubeconfig file (default "` + home + `/.kube/config") + -L, --limits string the resource limit of the task (default "cpu=1000m,memory=100Mi") + -s, --master string the address of apiserver + -m, --min int the minimal available tasks of job (default 1) + -N, --name string the name of job (default "test") + -n, --namespace string the namespace of job (default "default") + -r, --replicas int the total tasks of job (default 1) + -R, --requests string the resource request of the task (default "cpu=1000m,memory=100Mi") + -S, --scheduler string the scheduler for this job (default "volcano") + +Global Flags: + --log-flush-frequency duration Maximum number of seconds between log flushes (default 5s) + +` + command := []string{"job", "run", "--help"} + cmdOutput := RunCliCommandWithoutKubeConfig(command) + exist := strings.Contains(output, cmdOutput) + Expect(exist).Should(Equal(true)) + }) + +})