mirror of
https://github.com/YuzuZensai/Minikura.git
synced 2026-09-13 18:59:25 +00:00
104 lines
2.7 KiB
Go
104 lines
2.7 KiB
Go
package controller
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
appsv1 "k8s.io/api/apps/v1"
|
||
|
|
corev1 "k8s.io/api/core/v1"
|
||
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||
|
|
"k8s.io/apimachinery/pkg/runtime"
|
||
|
|
"k8s.io/apimachinery/pkg/types"
|
||
|
|
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
|
||
|
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
||
|
|
"sigs.k8s.io/controller-runtime/pkg/client/fake"
|
||
|
|
"sigs.k8s.io/controller-runtime/pkg/client/interceptor"
|
||
|
|
"sigs.k8s.io/controller-runtime/pkg/reconcile"
|
||
|
|
|
||
|
|
v1alpha1 "github.com/YuzuZensai/Minikura/operator/api/v1alpha1"
|
||
|
|
)
|
||
|
|
|
||
|
|
func testScheme(t *testing.T) *runtime.Scheme {
|
||
|
|
t.Helper()
|
||
|
|
s := runtime.NewScheme()
|
||
|
|
if err := clientgoscheme.AddToScheme(s); err != nil {
|
||
|
|
t.Fatalf("add client-go scheme: %v", err)
|
||
|
|
}
|
||
|
|
if err := v1alpha1.AddToScheme(s); err != nil {
|
||
|
|
t.Fatalf("add v1alpha1 scheme: %v", err)
|
||
|
|
}
|
||
|
|
return s
|
||
|
|
}
|
||
|
|
|
||
|
|
func newFakeClient(t *testing.T, objs ...client.Object) client.Client {
|
||
|
|
t.Helper()
|
||
|
|
return newInterceptedClient(t, interceptor.Funcs{}, objs...)
|
||
|
|
}
|
||
|
|
|
||
|
|
func newInterceptedClient(t *testing.T, funcs interceptor.Funcs, objs ...client.Object) client.Client {
|
||
|
|
t.Helper()
|
||
|
|
return fake.NewClientBuilder().
|
||
|
|
WithScheme(testScheme(t)).
|
||
|
|
WithStatusSubresource(
|
||
|
|
&v1alpha1.MinecraftServer{},
|
||
|
|
&v1alpha1.ReverseProxyServer{},
|
||
|
|
&appsv1.Deployment{},
|
||
|
|
&appsv1.StatefulSet{},
|
||
|
|
&corev1.Service{},
|
||
|
|
).
|
||
|
|
WithObjects(objs...).
|
||
|
|
WithInterceptorFuncs(funcs).
|
||
|
|
Build()
|
||
|
|
}
|
||
|
|
|
||
|
|
func requestFor(obj client.Object) reconcile.Request {
|
||
|
|
return reconcile.Request{NamespacedName: types.NamespacedName{
|
||
|
|
Name: obj.GetName(),
|
||
|
|
Namespace: obj.GetNamespace(),
|
||
|
|
}}
|
||
|
|
}
|
||
|
|
|
||
|
|
func testMinecraft(name string, kind v1alpha1.ServerKind) *v1alpha1.MinecraftServer {
|
||
|
|
return &v1alpha1.MinecraftServer{
|
||
|
|
TypeMeta: metav1.TypeMeta{
|
||
|
|
APIVersion: v1alpha1.GroupVersion.String(),
|
||
|
|
Kind: "MinecraftServer",
|
||
|
|
},
|
||
|
|
ObjectMeta: metav1.ObjectMeta{
|
||
|
|
Name: name,
|
||
|
|
Namespace: "minikura",
|
||
|
|
UID: types.UID("uid-" + name),
|
||
|
|
Generation: 1,
|
||
|
|
},
|
||
|
|
Spec: v1alpha1.MinecraftServerSpec{
|
||
|
|
Type: kind,
|
||
|
|
ListenPort: 25565,
|
||
|
|
ServiceType: v1alpha1.ExposureClusterIP,
|
||
|
|
JarType: "PAPER",
|
||
|
|
MinecraftVersion: "1.20.4",
|
||
|
|
StorageSize: "10Gi",
|
||
|
|
},
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
func testProxy(name string, kind v1alpha1.ProxyKind) *v1alpha1.ReverseProxyServer {
|
||
|
|
return &v1alpha1.ReverseProxyServer{
|
||
|
|
TypeMeta: metav1.TypeMeta{
|
||
|
|
APIVersion: v1alpha1.GroupVersion.String(),
|
||
|
|
Kind: "ReverseProxyServer",
|
||
|
|
},
|
||
|
|
ObjectMeta: metav1.ObjectMeta{
|
||
|
|
Name: name,
|
||
|
|
Namespace: "minikura",
|
||
|
|
UID: types.UID("uid-" + name),
|
||
|
|
Generation: 1,
|
||
|
|
},
|
||
|
|
Spec: v1alpha1.ReverseProxyServerSpec{
|
||
|
|
Type: kind,
|
||
|
|
ExternalAddress: "play.example.com",
|
||
|
|
ExternalPort: 25565,
|
||
|
|
ListenPort: 25577,
|
||
|
|
ServiceType: v1alpha1.ExposureLoadBalancer,
|
||
|
|
},
|
||
|
|
}
|
||
|
|
}
|