From f04e901489e0b9c472d0121df12da591b8ad3f09 Mon Sep 17 00:00:00 2001 From: Diana Teplits Date: Wed, 7 Dec 2022 10:52:07 +0200 Subject: [PATCH] tests, zone manager: Adding unit test for existing SOA serial use case Signed-off-by: Diana Teplits --- pkg/zonemgr/zone_file_cache_test.go | 34 +++++++++++++++++++++-------- pkg/zonemgr/zone_file_test.go | 18 ++++++++++++--- pkg/zonemgr/zone_manager_test.go | 10 +++------ 3 files changed, 43 insertions(+), 19 deletions(-) diff --git a/pkg/zonemgr/zone_file_cache_test.go b/pkg/zonemgr/zone_file_cache_test.go index 6fc9f0a5..2a6dbb01 100644 --- a/pkg/zonemgr/zone_file_cache_test.go +++ b/pkg/zonemgr/zone_file_cache_test.go @@ -1,10 +1,9 @@ package zonemgr import ( + "fmt" . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - - "fmt" "sort" "strings" @@ -25,6 +24,7 @@ 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 ( @@ -32,12 +32,18 @@ var _ = Describe("cached zone file content maintenance", func() { ) 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() { @@ -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, @@ -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()) @@ -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()) @@ -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, diff --git a/pkg/zonemgr/zone_file_test.go b/pkg/zonemgr/zone_file_test.go index 259ef6a4..8f6491f4 100644 --- a/pkg/zonemgr/zone_file_test.go +++ b/pkg/zonemgr/zone_file_test.go @@ -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 @@ -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)) + }) }) }) diff --git a/pkg/zonemgr/zone_manager_test.go b/pkg/zonemgr/zone_manager_test.go index 22f84dfd..4342262d 100644 --- a/pkg/zonemgr/zone_manager_test.go +++ b/pkg/zonemgr/zone_manager_test.go @@ -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() { @@ -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 - }) - }) }) })