Skip to content

Commit

Permalink
Merge pull request #343 from thandayuthapani/e2e
Browse files Browse the repository at this point in the history
E2E for vcctl help option
  • Loading branch information
volcano-sh-bot committed Jul 16, 2019
2 parents 48c6021 + 8ff6606 commit 560a537
Show file tree
Hide file tree
Showing 2 changed files with 203 additions and 0 deletions.
12 changes: 12 additions & 0 deletions test/e2e/cli_util.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
191 changes: 191 additions & 0 deletions test/e2e/vcctl.go
Original file line number Diff line number Diff line change
@@ -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))
})

})

0 comments on commit 560a537

Please sign in to comment.