Skip to content

Commit 7fe7557

Browse files
committed
Add tests and fix owner references bug
1 parent 2d51fd8 commit 7fe7557

3 files changed

Lines changed: 60 additions & 40 deletions

File tree

‎controllers/minecraftserver_controller_test.go‎

Lines changed: 50 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -147,41 +147,58 @@ func TestMinecraftServer(t *testing.T) {
147147
// TODO Find a better way to know when the reconciler is done
148148
time.Sleep(time.Second * 10)
149149

150+
assertOwnerReference := func(object metav1.Object) {
151+
require.Len(t, object.GetOwnerReferences(), 1)
152+
or := object.GetOwnerReferences()[0]
153+
assert.Equal(t, serverObj.Name, or.Name)
154+
assert.Equal(t, "MinecraftServer", or.Kind)
155+
assert.Equal(t, "minecraft.jameslaverack.com/v1alpha1", or.APIVersion)
156+
assert.True(t, *or.Controller)
157+
}
158+
150159
// We expect the server to create a few things
151-
t.Run("config map", func(t *testing.T) {
152-
var configMap corev1.ConfigMap
153-
err := k8sClient.Get(ctx, client.ObjectKeyFromObject(&serverObj), &configMap)
154-
require.NoError(t, err)
155-
require.NotNil(t, configMap)
156-
assert.NotEmpty(t, configMap.Data["ops.json"])
157-
})
160+
var configMap corev1.ConfigMap
161+
err = k8sClient.Get(ctx, client.ObjectKeyFromObject(&serverObj), &configMap)
162+
require.NoError(t, err)
163+
assertOwnerReference(&configMap)
164+
assert.NotEmpty(t, configMap.Data["ops.json"])
158165

159-
t.Run("pod", func(t *testing.T) {
160-
var pod corev1.Pod
161-
err := k8sClient.Get(ctx, client.ObjectKeyFromObject(&serverObj), &pod)
162-
require.NoError(t, err)
163-
require.NotNil(t, pod)
164-
spec := pod.Spec
165-
require.NotNil(t, spec)
166-
167-
// Find the container
168-
require.Equal(t, 1, len(spec.Containers))
169-
container := spec.Containers[0]
170-
171-
assert.Equal(t, "itzg/minecraft-server:2022.1.1", container.Image)
172-
assert.Equal(t, "minecraft", container.Name)
173-
174-
assertEnv := func(name, value string) {
175-
assert.Contains(t, container.Env, corev1.EnvVar{
176-
Name: name,
177-
Value: value,
178-
})
179-
}
166+
var pod corev1.Pod
167+
err = k8sClient.Get(ctx, client.ObjectKeyFromObject(&serverObj), &pod)
168+
require.NoError(t, err)
169+
assertOwnerReference(&pod)
170+
spec := pod.Spec
171+
require.NotNil(t, spec)
172+
173+
// Find the container
174+
require.Len(t, spec.Containers, 1)
175+
container := spec.Containers[0]
176+
177+
assert.Equal(t, "itzg/minecraft-server:2022.1.1", container.Image)
178+
assert.Equal(t, "minecraft", container.Name)
179+
180+
assertEnv := func(name, value string) {
181+
assert.Contains(t, container.Env, corev1.EnvVar{
182+
Name: name,
183+
Value: value,
184+
})
185+
}
186+
187+
assertEnv("VERSION", serverObj.Spec.MinecraftVersion)
188+
assertEnv("TYPE", string(serverObj.Spec.Type))
189+
assertEnv("MODE", "survival")
190+
assertEnv("ENABLE_ROLLING_LOGS", "true")
191+
192+
var service corev1.Service
193+
err = k8sClient.Get(ctx, client.ObjectKeyFromObject(&serverObj), &service)
194+
require.NoError(t, err)
195+
assertOwnerReference(&service)
180196

181-
assertEnv("VERSION", serverObj.Spec.MinecraftVersion)
182-
assertEnv("TYPE", string(serverObj.Spec.Type))
183-
assertEnv("MODE", "survival")
184-
assertEnv("ENABLE_ROLLING_LOGS", "true")
197+
assert.Equal(t, corev1.ServiceTypeLoadBalancer, service.Spec.Type)
198+
require.Len(t, service.Spec.Ports, 1)
199+
servicePort := service.Spec.Ports[0]
200+
assert.Equal(t, "minecraft", servicePort.Name)
201+
assert.Equal(t, int32(25565), servicePort.Port)
202+
assert.Equal(t, corev1.ProtocolTCP, servicePort.Protocol)
185203

186-
})
187204
}

‎pkg/reconcile/pod.go‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -187,9 +187,10 @@ func podForServer(server *v1alpha1.MinecraftServer, configMap *corev1.ConfigMap)
187187

188188
pod := corev1.Pod{
189189
ObjectMeta: metav1.ObjectMeta{
190-
Name: server.Name,
191-
Namespace: server.Namespace,
192-
Labels: podLabels(server),
190+
Name: server.Name,
191+
Namespace: server.Namespace,
192+
Labels: podLabels(server),
193+
OwnerReferences: []metav1.OwnerReference{ownerReference(server)},
193194
},
194195
Spec: corev1.PodSpec{
195196
Containers: []corev1.Container{},

‎pkg/reconcile/service.go‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,17 +58,19 @@ func ReconcileService(ctx context.Context, logger logr.Logger, reader client.Rea
5858
func serviceForServer(server *minecraftv1alpha1.MinecraftServer) corev1.Service {
5959
service := corev1.Service{
6060
ObjectMeta: metav1.ObjectMeta{
61-
Name: server.Name,
62-
Namespace: server.Namespace,
61+
Name: server.Name,
62+
Namespace: server.Namespace,
63+
OwnerReferences: []metav1.OwnerReference{ownerReference(server)},
6364
},
6465
Spec: corev1.ServiceSpec{
6566
// TODO Make configurable
6667
Type: corev1.ServiceTypeLoadBalancer,
6768
Selector: podLabels(server),
6869
Ports: []corev1.ServicePort{
6970
{
70-
Name: "minecraft",
71-
Port: 25565,
71+
Name: "minecraft",
72+
Port: 25565,
73+
Protocol: corev1.ProtocolTCP,
7274
},
7375
},
7476
},

0 commit comments

Comments
 (0)