You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
package framework
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
. "github.com/onsi/ginkgo"
|
|
|
|
|
. "github.com/onsi/gomega"
|
|
|
|
|
"k8s.io/client-go/dynamic"
|
|
|
|
|
"k8s.io/client-go/kubernetes"
|
|
|
|
|
"k8s.io/client-go/rest"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// 1. 定义一个测试的入口函数Describe,这里接收测试的描述以及contextFunc
|
|
|
|
|
// 1.1 这里边会调用context创建方法来创建context
|
|
|
|
|
// 1.2 这个context里面会有执行一些我们期望的行为
|
|
|
|
|
// 2. 这个contextFunc的签名符合func(ctx *TestContext, f *Framework)
|
|
|
|
|
// 3. 这个contextFunc的函数体就是测试函数的内容本身
|
|
|
|
|
// 4. 由于这个contextFunc的参数中有ctx入参,那么在执行测试函数体的时候,就可以使用ctx中的内容或方法。
|
|
|
|
|
|
|
|
|
|
type TestContext struct {
|
|
|
|
|
Name string
|
|
|
|
|
Namespace string
|
|
|
|
|
Config *rest.Config
|
|
|
|
|
MasterIP string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type ContextFunc func(ctx *TestContext, f *Framework)
|
|
|
|
|
|
|
|
|
|
// 如果不用动态的client,那么我们访问这些资源的时候,就需要:
|
|
|
|
|
// 1. 自己创建rest api 的请求
|
|
|
|
|
// 2. 获取对应资源的 client sdk
|
|
|
|
|
|
|
|
|
|
// CreateDynamicClient 创建动态的 client,用来访问自定定义或者后安装的资源
|
|
|
|
|
func (tc *TestContext) CreateDynamicClient() dynamic.Interface {
|
|
|
|
|
By("Create a Dynamic Client")
|
|
|
|
|
c, err := dynamic.NewForConfig(tc.Config)
|
|
|
|
|
if err != nil {
|
|
|
|
|
Expect(err).Should(BeNil())
|
|
|
|
|
}
|
|
|
|
|
return c
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 创建一个 clientset,用来访问内置资源
|
|
|
|
|
func (tc *TestContext) CreateClientSet() *kubernetes.Clientset {
|
|
|
|
|
By("Create a ClientSet client")
|
|
|
|
|
c, err := kubernetes.NewForConfig(tc.Config)
|
|
|
|
|
if err != nil {
|
|
|
|
|
Expect(err).Should(BeNil())
|
|
|
|
|
}
|
|
|
|
|
return c
|
|
|
|
|
}
|