Skip to content

Commit

Permalink
tests, zone manager: Adding unit test for existing SOA serial use case
Browse files Browse the repository at this point in the history
Signed-off-by: Diana Teplits <dteplits@redhat.com>
  • Loading branch information
dteplits committed Dec 25, 2022
1 parent 26a3f6c commit f04e901
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 19 deletions.
34 changes: 25 additions & 9 deletions pkg/zonemgr/zone_file_cache_test.go
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
package zonemgr

import (
"fmt"
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"

"fmt"
"sort"
"strings"

Expand All @@ -25,19 +24,26 @@ var _ = Describe("cached zone file content maintenance", func() {
const (
headerDefault = "$ORIGIN vm. \n$TTL 3600 \n@ IN SOA ns.vm. email.vm. (0 3600 3600 1209600 3600)\n"
headerCustomFmt = "$ORIGIN vm.%s. \n$TTL 3600 \n@ IN SOA ns.vm.%s. email.vm.%s. (0 3600 3600 1209600 3600)\nIN NS ns.vm.%s.\nns IN A %s\n"
headerSoaSerial = "$ORIGIN vm. \n$TTL 3600 \n@ IN SOA ns.vm. email.vm. (12345 3600 3600 1209600 3600)\n"
)

var (
headerCustom = fmt.Sprintf(headerCustomFmt, domain, domain, domain, domain, nameServerIP)
)

DescribeTable("generate zone file header", func(nameServerIP, domain, expectedHeader string) {
zoneFileCache = NewZoneFileCache(nameServerIP, domain)
zoneFileCache = NewZoneFileCache(nameServerIP, domain, nil)
Expect(zoneFileCache.header).To(Equal(expectedHeader))
},
Entry("header should contain default values", "", "", headerDefault),
Entry("header should contain custom values", nameServerIP, domain, headerCustom),
Entry("header should contain default values", "", "vm", headerDefault),
Entry("header should contain custom values", nameServerIP, "vm."+domain, headerCustom),
)

It("should init header with existing SOA serial", func() {
soaSerial := 12345
zoneFileCache = NewZoneFileCache("", "vm", &soaSerial)
Expect(zoneFileCache.header).To(Equal(headerSoaSerial))
})
})

Describe("cached zone file records update", func() {
Expand Down Expand Up @@ -86,7 +92,7 @@ var _ = Describe("cached zone file content maintenance", func() {

When("interfaces records list is empty", func() {
BeforeEach(func() {
zoneFileCache = NewZoneFileCache(nameServerIP, domain)
zoneFileCache = NewZoneFileCache(nameServerIP, domain, nil)
})

DescribeTable("Updating interfaces records", validateUpdateFunc,
Expand All @@ -109,9 +115,19 @@ var _ = Describe("cached zone file content maintenance", func() {
)
})

When("SOA serial already exist", func() {
It("should init SOA serial with the existing value", func() {
soaSerial := 5
zoneFileCache = NewZoneFileCache("", "", &soaSerial)
zoneFileCache.updateVMIRecords(k8stypes.NamespacedName{Namespace: namespace1, Name: vmi1Name},
[]v1.VirtualMachineInstanceNetworkInterface{{IPs: []string{nic1IP}, Name: nic1Name}})
Expect(zoneFileCache.soaSerial).To(Equal(6))
})
})

When("interfaces records list contains single vmi", func() {
BeforeEach(func() {
zoneFileCache = NewZoneFileCache(nameServerIP, domain)
zoneFileCache = NewZoneFileCache(nameServerIP, domain, nil)
isUpdated := zoneFileCache.updateVMIRecords(k8stypes.NamespacedName{Namespace: namespace1, Name: vmi1Name},
[]v1.VirtualMachineInstanceNetworkInterface{{IPs: []string{nic1IP}, Name: nic1Name}, {IPs: []string{nic2IP}, Name: nic2Name}})
Expect(isUpdated).To(BeTrue())
Expand Down Expand Up @@ -160,7 +176,7 @@ var _ = Describe("cached zone file content maintenance", func() {

When("interfaces records list contains multiple vmis", func() {
BeforeEach(func() {
zoneFileCache = NewZoneFileCache(nameServerIP, domain)
zoneFileCache = NewZoneFileCache(nameServerIP, domain, nil)
isUpdated := zoneFileCache.updateVMIRecords(k8stypes.NamespacedName{Namespace: namespace1, Name: vmi1Name},
[]v1.VirtualMachineInstanceNetworkInterface{{IPs: []string{nic1IP}, Name: nic1Name}, {IPs: []string{nic2IP}, Name: nic2Name}})
Expect(isUpdated).To(BeTrue())
Expand Down Expand Up @@ -219,7 +235,7 @@ var _ = Describe("cached zone file content maintenance", func() {

When("interfaces records list contains vmi with multiple IPs", func() {
BeforeEach(func() {
zoneFileCache = NewZoneFileCache(nameServerIP, domain)
zoneFileCache = NewZoneFileCache(nameServerIP, domain, nil)
})

DescribeTable("Updating interfaces records list", validateUpdateFunc,
Expand Down
18 changes: 15 additions & 3 deletions pkg/zonemgr/zone_file_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ var _ = Describe("disk zone file maintenance", func() {
zoneFileName = "zones/db.vm"
zoneFileContent = "zone file content"
zoneFileUpdatedContent = "zone file updated content"
headerSoaSerial = "$ORIGIN vm. \n$TTL 3600 \n@ IN SOA ns.vm. email.vm. (12345 3600 3600 1209600 3600)\n"
)
var zoneFile *ZoneFile

Expand All @@ -39,18 +40,29 @@ var _ = Describe("disk zone file maintenance", func() {
It("should create a zone file on disk", func() {
testFileFunc(zoneFileContent)
})

It("should return nil when try to read SOA serial", func() {
soaSerial, err := zoneFile.ReadSoaSerial()
Expect(err).ToNot(HaveOccurred())
Expect(soaSerial).To(BeNil())
})
})

When("zone file already exist", func() {
BeforeEach(func() {
Expect(os.WriteFile(zoneFileName, []byte(zoneFileContent), zoneFilePerm)).To(Succeed())
})
AfterEach(func() {
Expect(os.RemoveAll(zoneFileName)).To(Succeed())
})

It("should override a zone file on disk", func() {
Expect(os.WriteFile(zoneFileName, []byte(zoneFileContent), zoneFilePerm)).To(Succeed())
testFileFunc(zoneFileUpdatedContent)
})

It("should read SOA serial", func() {
Expect(os.WriteFile(zoneFileName, []byte(headerSoaSerial), 0777)).To(Succeed())
soaSerial, err := zoneFile.ReadSoaSerial()
Expect(err).ToNot(HaveOccurred())
Expect(*soaSerial).To(Equal(12345))
})
})
})
10 changes: 3 additions & 7 deletions pkg/zonemgr/zone_manager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ var _ = Describe("Zone Manager functionality", func() {
BeforeEach(func() {
os.Setenv("DOMAIN", customDomain)
os.Setenv("NAME_SERVER_IP", customNSIP)
zoneMgr = NewZoneManager()
var err error
zoneMgr, err = NewZoneManager()
Expect(err).ToNot(HaveOccurred())
})

Context("Initialization", func() {
Expand All @@ -41,11 +43,5 @@ var _ = Describe("Zone Manager functionality", func() {
It("should create zone file with correct name", func() {
Expect(zoneMgr.zoneFile.zoneFileFullName).To(Equal("/zones/db.vm." + customDomain))
})

When("zone file already exist", func() {
It("should update cached SOA serial value", func() {
//TODO
})
})
})
})

0 comments on commit f04e901

Please sign in to comment.