|
|
package controllers
|
|
|
|
|
|
import (
|
|
|
"fmt"
|
|
|
appsv1 "k8s.io/api/apps/v1"
|
|
|
corev1 "k8s.io/api/core/v1"
|
|
|
networkv1 "k8s.io/api/networking/v1"
|
|
|
"k8s.io/apimachinery/pkg/util/yaml"
|
|
|
myAppsv1 "mashibing.com/pkg/mashibing-deployment/api/v1"
|
|
|
"os"
|
|
|
"reflect"
|
|
|
"testing"
|
|
|
)
|
|
|
|
|
|
func readFile(fileName string) []byte {
|
|
|
content, err := os.ReadFile(fmt.Sprintf("testdata/%s", fileName))
|
|
|
if err != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
return content
|
|
|
}
|
|
|
|
|
|
func newMsbDeployment(fileName string) *myAppsv1.MsbDeployment {
|
|
|
content := readFile(fileName)
|
|
|
md := new(myAppsv1.MsbDeployment)
|
|
|
if err := yaml.Unmarshal(content, md); err != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
return md
|
|
|
}
|
|
|
|
|
|
func newDeployment(fileName string) *appsv1.Deployment {
|
|
|
content := readFile(fileName)
|
|
|
md := new(appsv1.Deployment)
|
|
|
if err := yaml.Unmarshal(content, md); err != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
return md
|
|
|
}
|
|
|
|
|
|
func newService(fileName string) *corev1.Service {
|
|
|
content := readFile(fileName)
|
|
|
md := new(corev1.Service)
|
|
|
if err := yaml.Unmarshal(content, md); err != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
return md
|
|
|
}
|
|
|
|
|
|
func newIngress(fileName string) *networkv1.Ingress {
|
|
|
content := readFile(fileName)
|
|
|
md := new(networkv1.Ingress)
|
|
|
if err := yaml.Unmarshal(content, md); err != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
return md
|
|
|
}
|
|
|
|
|
|
func TestNewDeployment(t *testing.T) {
|
|
|
type args struct {
|
|
|
md *myAppsv1.MsbDeployment
|
|
|
}
|
|
|
tests := []struct {
|
|
|
name string // 测试用例的名称
|
|
|
args args // 测试函数的参数
|
|
|
want *appsv1.Deployment // 期望的结果
|
|
|
wantErr bool // 我们进行测试时候函数是否需要出错
|
|
|
}{
|
|
|
{
|
|
|
name: "测试使用ingress mode 时候,生成Deployment资源。",
|
|
|
args: args{
|
|
|
md: newMsbDeployment("msb-ingress-cr.yaml"),
|
|
|
},
|
|
|
want: newDeployment("msb-ingress-deployment-expect.yaml"),
|
|
|
wantErr: false,
|
|
|
},
|
|
|
{
|
|
|
name: "测试使用nodeport mode 时候,生成Deployment资源",
|
|
|
args: args{
|
|
|
md: newMsbDeployment("msb-nodeport-cr.yaml"),
|
|
|
},
|
|
|
want: newDeployment("msb-nodeport-deployment-expect.yaml"),
|
|
|
wantErr: false,
|
|
|
},
|
|
|
}
|
|
|
for _, tt := range tests {
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
got, err := NewDeployment(tt.args.md)
|
|
|
if (err != nil) != tt.wantErr {
|
|
|
t.Errorf("NewDeployment() error = %v, wantErr %v", err, tt.wantErr)
|
|
|
return
|
|
|
}
|
|
|
if !reflect.DeepEqual(got, tt.want) {
|
|
|
t.Errorf("NewDeployment() got = %v, want %v", got, tt.want)
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
|
|
|
func TestNewIngress(t *testing.T) {
|
|
|
type args struct {
|
|
|
md *myAppsv1.MsbDeployment
|
|
|
}
|
|
|
tests := []struct {
|
|
|
name string
|
|
|
args args
|
|
|
want *networkv1.Ingress
|
|
|
wantErr bool
|
|
|
}{
|
|
|
{
|
|
|
name: "测试使用ingress mode 时候,生成ingress资源",
|
|
|
args: args{
|
|
|
md: newMsbDeployment("msb-ingress-cr.yaml"),
|
|
|
},
|
|
|
want: newIngress("msb-ingress-ingress-expect.yaml"),
|
|
|
wantErr: false,
|
|
|
},
|
|
|
}
|
|
|
for _, tt := range tests {
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
got, err := NewIngress(tt.args.md)
|
|
|
if (err != nil) != tt.wantErr {
|
|
|
t.Errorf("NewIngress() error = %v, wantErr %v", err, tt.wantErr)
|
|
|
return
|
|
|
}
|
|
|
if !reflect.DeepEqual(got, tt.want) {
|
|
|
t.Errorf("NewIngress() got = %v, want %v", got, tt.want)
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
|
|
|
func TestNewService(t *testing.T) {
|
|
|
type args struct {
|
|
|
md *myAppsv1.MsbDeployment
|
|
|
}
|
|
|
tests := []struct {
|
|
|
name string
|
|
|
args args
|
|
|
want *corev1.Service
|
|
|
wantErr bool
|
|
|
}{
|
|
|
{
|
|
|
name: "测试使用ingress mode 时候,生成 service 资源",
|
|
|
args: args{
|
|
|
md: newMsbDeployment("msb-ingress-cr.yaml"),
|
|
|
},
|
|
|
want: newService("msb-ingress-service-expect.yaml"),
|
|
|
wantErr: false,
|
|
|
},
|
|
|
}
|
|
|
for _, tt := range tests {
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
got, err := NewService(tt.args.md)
|
|
|
if (err != nil) != tt.wantErr {
|
|
|
t.Errorf("NewService() error = %v, wantErr %v", err, tt.wantErr)
|
|
|
return
|
|
|
}
|
|
|
if !reflect.DeepEqual(got, tt.want) {
|
|
|
t.Errorf("NewService() got = %v, want %v", got, tt.want)
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
}
|
|
|
|
|
|
func TestNewServiceNP(t *testing.T) {
|
|
|
type args struct {
|
|
|
md *myAppsv1.MsbDeployment
|
|
|
}
|
|
|
tests := []struct {
|
|
|
name string
|
|
|
args args
|
|
|
want *corev1.Service
|
|
|
wantErr bool
|
|
|
}{
|
|
|
{
|
|
|
name: "测试使用 nodeport mode时候,生成 nodeport 类型的 service 资源",
|
|
|
args: args{
|
|
|
md: newMsbDeployment("msb-nodeport-cr.yaml"),
|
|
|
},
|
|
|
want: newService("msb-nodeport-service-expect.yaml"),
|
|
|
wantErr: false,
|
|
|
},
|
|
|
}
|
|
|
for _, tt := range tests {
|
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
|
got, err := NewServiceNP(tt.args.md)
|
|
|
if (err != nil) != tt.wantErr {
|
|
|
t.Errorf("NewServiceNP() error = %v, wantErr %v", err, tt.wantErr)
|
|
|
return
|
|
|
}
|
|
|
if !reflect.DeepEqual(got, tt.want) {
|
|
|
t.Errorf("NewServiceNP() got = %v, want %v", got, tt.want)
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
}
|