mirror of https://github.com/coredns/ci.git
85 lines
2.2 KiB
Go
85 lines
2.2 KiB
Go
package k8sdeployment
|
|
|
|
import (
|
|
"os/exec"
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/coredns/ci/test/kubernetes"
|
|
)
|
|
|
|
func TestConfigMapTranslation(t *testing.T) {
|
|
stubdata := `{"abc.com" : ["1.2.3.4:5300","4.4.4.4"], "my.cluster.local" : ["2.3.4.5:5300"]}`
|
|
upstreamdata := `["8.8.8.8", "8.8.4.4"]`
|
|
|
|
corefileExpected := `.:53 {
|
|
errors
|
|
health {
|
|
lameduck 5s
|
|
}
|
|
ready
|
|
kubernetes cluster.local 10.96.0.0/8 172.17.0.0/16 {
|
|
fallthrough in-addr.arpa ip6.arpa
|
|
}
|
|
prometheus :9153
|
|
forward . 8.8.8.8 8.8.4.4 {
|
|
max_concurrent 1000
|
|
}
|
|
cache 30
|
|
loop
|
|
reload
|
|
loadbalance
|
|
}
|
|
abc.com:53 {
|
|
errors
|
|
cache 30
|
|
loop
|
|
forward . 1.2.3.4:5300 {
|
|
max_concurrent 1000
|
|
}
|
|
}
|
|
|
|
my.cluster.local:53 {
|
|
errors
|
|
cache 30
|
|
loop
|
|
forward . 2.3.4.5:5300 {
|
|
max_concurrent 1000
|
|
}
|
|
}
|
|
`
|
|
|
|
err := kubernetes.LoadKubednsConfigmap(stubdata, upstreamdata)
|
|
if err != nil {
|
|
t.Fatalf("Could not load corefile: %s", err)
|
|
}
|
|
|
|
// Apply Corefile translation via coredns/deployment deployment script
|
|
cmd := exec.Command("sh", "-c", " ~/go/src/${CIRCLE_PROJECT_USERNAME}/deployment/kubernetes/deploy.sh -s -i 10.96.0.10 -r 10.96.0.0/8 -r 172.17.0.0/16 | kubectl delete --ignore-not-found=true -f -")
|
|
cmdout, err := cmd.CombinedOutput()
|
|
if err != nil {
|
|
t.Fatalf("failed to delete deployment objects: %s\nerr: %s", string(cmdout), err)
|
|
}
|
|
|
|
cmd = exec.Command("sh", "-c", " ~/go/src/${CIRCLE_PROJECT_USERNAME}/deployment/kubernetes/deploy.sh -i 10.96.0.10 -r 10.96.0.0/8 -r 172.17.0.0/16 | kubectl apply --overwrite=true -f -")
|
|
cmdout, err = cmd.CombinedOutput()
|
|
if err != nil {
|
|
t.Fatalf("deployment script failed: %s\nerr: %s", string(cmdout), err)
|
|
}
|
|
|
|
corefileTranslated, err := kubernetes.Kubectl("-n kube-system get configmap coredns -ojsonpath={.data.Corefile}")
|
|
if err != nil {
|
|
t.Fatalf("error fetching translated corefile: %s", err)
|
|
}
|
|
|
|
if strings.Compare(corefileTranslated, corefileExpected) != 0 {
|
|
t.Fatalf("failed test: Translation does not match.\nGOT:\n" + corefileTranslated + "\n\nEXPECTED:\n" + corefileExpected)
|
|
}
|
|
|
|
// Clean-up by removing kube-dns ConfigMap
|
|
_, err = kubernetes.Kubectl("-n kube-system delete cm kube-dns")
|
|
if err != nil {
|
|
t.Fatalf("error deleting kube-dns ConfigMap: %s", err)
|
|
}
|
|
}
|