Lokasi ngalangkungan proxy:   [ UP ]  
[Ngawartoskeun bug]   [Panyetelan cookie]                
Skip to content

Commit cf66cd7

Browse files
committed
tests: Add tests for Node controller
1 parent d8dda05 commit cf66cd7

2 files changed

Lines changed: 123 additions & 1 deletion

File tree

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
package controller_test
2+
3+
import (
4+
"context"
5+
"time"
6+
7+
. "github.com/onsi/ginkgo"
8+
. "github.com/onsi/gomega"
9+
corev1 "k8s.io/api/core/v1"
10+
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
11+
"k8s.io/apimachinery/pkg/types"
12+
)
13+
14+
var _ = Describe("Node Controller", func() {
15+
const (
16+
Timeout = time.Second * 10
17+
Duration = time.Second * 10
18+
Interval = time.Millisecond * 250
19+
)
20+
21+
var (
22+
NodeName string = "mc-node"
23+
ctx context.Context = context.Background()
24+
)
25+
26+
Context("When creating Node", func() {
27+
It("Should create a new DNS record for Nodes", func() {
28+
By("By createing a new Node")
29+
30+
node := &corev1.Node{
31+
TypeMeta: v1.TypeMeta{
32+
Kind: "Node",
33+
APIVersion: corev1.SchemeGroupVersion.String(),
34+
},
35+
ObjectMeta: v1.ObjectMeta{
36+
Name: NodeName,
37+
Namespace: corev1.NamespaceDefault,
38+
Labels: map[string]string{
39+
"agones-mc/domain": "saulmaldonado.me",
40+
},
41+
},
42+
}
43+
44+
Expect(testClient.Create(ctx, node)).Should(Succeed())
45+
46+
By("Checking for agones-mc/externalDNS annotation")
47+
createdNode := &corev1.Node{}
48+
nodeKey := types.NamespacedName{Namespace: corev1.NamespaceDefault, Name: NodeName}
49+
50+
Eventually(func() bool {
51+
if err := testClient.Get(ctx, nodeKey, createdNode); err != nil {
52+
return false
53+
}
54+
return createdNode.Annotations["agones-mc/externalDNS"] == "mc-node.saulmaldonado.me."
55+
}, Timeout, Interval).Should(BeTrue())
56+
})
57+
58+
It("Should remove DNS records for deleted Nodes", func() {
59+
By("Removing Node")
60+
61+
node := &corev1.Node{
62+
TypeMeta: v1.TypeMeta{
63+
Kind: "Node",
64+
APIVersion: corev1.SchemeGroupVersion.String(),
65+
},
66+
ObjectMeta: v1.ObjectMeta{
67+
Name: NodeName,
68+
Namespace: corev1.NamespaceDefault,
69+
Labels: map[string]string{
70+
"agones-mc/domain": "saulmaldonado.me",
71+
},
72+
},
73+
}
74+
75+
Expect(testClient.Delete(ctx, node)).Should(Succeed())
76+
77+
By("Checking if node is deleted")
78+
nodeKey := types.NamespacedName{Namespace: corev1.NamespaceDefault, Name: NodeName}
79+
createdNode := corev1.Node{}
80+
81+
Eventually(func() error {
82+
return testClient.Get(ctx, nodeKey, &createdNode)
83+
}, Timeout, Interval).ShouldNot(Succeed())
84+
85+
By("Checking mock DNS store for DNS record")
86+
Eventually(func() bool {
87+
for _, record := range FakeDns.DnsRecords {
88+
if record == "mc-node.saulmaldonado.me." {
89+
return true
90+
}
91+
}
92+
return false
93+
}, Timeout, Interval).Should(BeFalse())
94+
})
95+
})
96+
})

controller/internal/controller/suite_test.go

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,20 @@ var _ = BeforeSuite(func() {
7979

8080
Expect(err).NotTo(HaveOccurred())
8181

82+
err = ctrl.NewControllerManagedBy(manager).For(&corev1.Node{}).
83+
Complete(
84+
&controller.NodeReconciler{
85+
DnsReconciler: controller.DnsReconciler{
86+
Client: manager.GetClient(),
87+
Scheme: manager.GetScheme(),
88+
Log: ctrl.Log.WithName("controllers").WithName("Nodes"),
89+
Dns: FakeDns,
90+
},
91+
},
92+
)
93+
94+
Expect(err).NotTo(HaveOccurred())
95+
8296
go func() {
8397
manager.Start(ctrl.SetupSignalHandler())
8498
Expect(err).NotTo(HaveOccurred())
@@ -122,10 +136,22 @@ func (d *TestDnsClient) RemoveGameServerExternalDns(hostname string, gs *agonesv
122136
}
123137

124138
func (d *TestDnsClient) SetNodeExternalDns(hostname string, node *corev1.Node) error {
139+
aRecord := dns.JoinARecordName(hostname, node.Name)
140+
141+
d.DnsRecords = append(d.DnsRecords, aRecord)
142+
125143
return nil
126144
}
127145

128-
func (*TestDnsClient) RemoveNodeExternalDns(hostname string, node *corev1.Node) error {
146+
func (d *TestDnsClient) RemoveNodeExternalDns(hostname string, node *corev1.Node) error {
147+
aRecord := dns.JoinARecordName(hostname, node.Name)
148+
149+
for i, record := range d.DnsRecords {
150+
if aRecord == record {
151+
d.DnsRecords = append(d.DnsRecords[:i], d.DnsRecords[i+1:]...)
152+
}
153+
}
154+
129155
return nil
130156
}
131157

0 commit comments

Comments
 (0)