132 lines
4.0 KiB
Go
132 lines
4.0 KiB
Go
package daemonset
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
|
|
"github.com/stackanetes/kubernetes-entrypoint/entrypoint"
|
|
"github.com/stackanetes/kubernetes-entrypoint/mocks"
|
|
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
const (
|
|
podEnvVariableValue = "podlist"
|
|
daemonsetNamespace = "test"
|
|
)
|
|
|
|
var testEntrypoint entrypoint.EntrypointInterface
|
|
|
|
var _ = Describe("Daemonset", func() {
|
|
|
|
BeforeEach(func() {
|
|
err := os.Setenv(PodNameEnvVar, podEnvVariableValue)
|
|
Expect(err).NotTo(HaveOccurred())
|
|
|
|
testEntrypoint = mocks.NewEntrypoint()
|
|
})
|
|
|
|
It(fmt.Sprintf("checks failure of new daemonset creation without %s set", PodNameEnvVar), func() {
|
|
os.Unsetenv(PodNameEnvVar)
|
|
daemonset, err := NewDaemonset(mocks.SucceedingDaemonsetName, daemonsetNamespace)
|
|
|
|
Expect(daemonset).To(BeNil())
|
|
Expect(err.Error()).To(Equal(fmt.Sprintf(PodNameNotSetErrorFormat, mocks.SucceedingDaemonsetName, daemonsetNamespace)))
|
|
})
|
|
|
|
It(fmt.Sprintf("creates new daemonset with %s set and checks its name", PodNameEnvVar), func() {
|
|
daemonset, err := NewDaemonset(mocks.SucceedingDaemonsetName, daemonsetNamespace)
|
|
Expect(daemonset).NotTo(BeNil())
|
|
Expect(err).NotTo(HaveOccurred())
|
|
|
|
Expect(daemonset.name).To(Equal(mocks.SucceedingDaemonsetName))
|
|
})
|
|
|
|
It("checks resolution of a succeeding daemonset", func() {
|
|
daemonset, _ := NewDaemonset(mocks.SucceedingDaemonsetName, daemonsetNamespace)
|
|
|
|
isResolved, err := daemonset.IsResolved(testEntrypoint)
|
|
|
|
Expect(isResolved).To(BeTrue())
|
|
Expect(err).NotTo(HaveOccurred())
|
|
})
|
|
|
|
It("checks resolution failure of a daemonset with incorrect name", func() {
|
|
daemonset, _ := NewDaemonset(mocks.FailingDaemonsetName, daemonsetNamespace)
|
|
|
|
isResolved, err := daemonset.IsResolved(testEntrypoint)
|
|
|
|
Expect(isResolved).To(BeFalse())
|
|
Expect(err).To(HaveOccurred())
|
|
})
|
|
|
|
It("checks resolution failure of a daemonset with incorrect match labels", func() {
|
|
daemonset, _ := NewDaemonset(mocks.IncorrectMatchLabelsDaemonsetName, daemonsetNamespace)
|
|
|
|
isResolved, err := daemonset.IsResolved(testEntrypoint)
|
|
|
|
Expect(isResolved).To(BeFalse())
|
|
Expect(err).To(HaveOccurred())
|
|
})
|
|
|
|
It(fmt.Sprintf("checks resolution failure of a daemonset with incorrect %s value", PodNameEnvVar), func() {
|
|
// Set POD_NAME to value not present in the mocks
|
|
os.Setenv(PodNameEnvVar, mocks.PodNotPresent)
|
|
daemonset, _ := NewDaemonset(mocks.IncorrectMatchLabelsDaemonsetName, daemonsetNamespace)
|
|
|
|
isResolved, err := daemonset.IsResolved(testEntrypoint)
|
|
|
|
Expect(isResolved).To(BeFalse())
|
|
Expect(err).To(HaveOccurred())
|
|
})
|
|
|
|
It("checks resolution failure of a daemonset with none of the pods with Ready status", func() {
|
|
daemonset, _ := NewDaemonset(mocks.NotReadyMatchLabelsDaemonsetName, daemonsetNamespace)
|
|
|
|
isResolved, err := daemonset.IsResolved(testEntrypoint)
|
|
|
|
Expect(isResolved).To(BeFalse())
|
|
Expect(err).To(HaveOccurred())
|
|
})
|
|
|
|
It("checks resolution of a correct daemonset namespace", func() {
|
|
daemonset, err := NewDaemonset(mocks.CorrectNamespaceDaemonsetName, daemonsetNamespace)
|
|
|
|
Expect(daemonset).NotTo(BeNil())
|
|
Expect(err).NotTo(HaveOccurred())
|
|
|
|
isResolved, err := daemonset.IsResolved(testEntrypoint)
|
|
|
|
Expect(isResolved).To(BeTrue())
|
|
Expect(err).NotTo(HaveOccurred())
|
|
|
|
})
|
|
|
|
It("checks resolution of an incorrect daemonset namespace", func() {
|
|
daemonset, err := NewDaemonset(mocks.IncorrectNamespaceDaemonsetName, daemonsetNamespace)
|
|
|
|
Expect(daemonset).NotTo(BeNil())
|
|
Expect(err).NotTo(HaveOccurred())
|
|
|
|
isResolved, err := daemonset.IsResolved(testEntrypoint)
|
|
|
|
Expect(isResolved).To(BeFalse())
|
|
Expect(err).To(HaveOccurred())
|
|
})
|
|
|
|
It("resolve daemonset and entrypoint pod in different namespaces", func() {
|
|
daemonset, err := NewDaemonset(mocks.CorrectNamespaceDaemonsetName, mocks.CorrectDaemonsetNamespace)
|
|
Expect(err).NotTo(HaveOccurred())
|
|
|
|
err = os.Setenv(PodNameEnvVar, "shouldwork")
|
|
Expect(err).NotTo(HaveOccurred())
|
|
|
|
isResolved, err := daemonset.IsResolved(testEntrypoint)
|
|
|
|
Expect(err).NotTo(HaveOccurred())
|
|
Expect(isResolved).To(BeTrue())
|
|
err = os.Unsetenv(PodNameEnvVar)
|
|
})
|
|
})
|