Library String
Library SSHLibrary
Library Process
+Library JSONLibrary
Test Setup Run Keywords
... Check that k8s cluster is reachable
+... Define Images
... Onboard Images
... Create Manifest File
Test Teardown Run Keywords
*** Variables ***
${LOG} ${LOG_PATH}${/}${SUITE_NAME.replace(' ','_')}.log
-&{SONOBUOY} path=gcr.io/heptio-images
-... name=sonobuoy:v0.15.1
-&{E2E} path=akraino
-... name=validation:kube-conformance-v1.15
-&{SYSTEMD_LOGS} path=akraino
-... name=validation:sonobuoy-plugin-systemd-logs-latest
+&{SONOBUOY} path=sonobuoy
+... name=sonobuoy:v0.18.2
+&{E2E} path=k8s.gcr.io
+... name=Actual value set dynamically
&{SONOBUOY_IMGS} sonobuoy=&{SONOBUOY}
... e2e=&{E2E}
-... systemd_logs=&{SYSTEMD_LOGS}
# Following tests assume DNS domain is "cluster.local"
${DNS_DOMAIN_TESTS} SEPARATOR=
... DNS should provide /etc/hosts entries for the cluster|
... DNS should provide DNS for services|
... DNS should provide DNS for ExternalName services|
-... DNS should provide DNS for the cluster
+... DNS should provide DNS for the cluster|
+... DNS should provide DNS for pods for Subdomain|
+... DNS should provide DNS for pods for Hostname
+
+# Images listed by Sonobuoy but not available for downloading
+@{SKIP_IMGS} gcr.io/kubernetes-e2e-test-images/windows-nanoserver:v1
+... gcr.io/authenticated-image-pulling/windows-nanoserver:v1
+... gcr.io/authenticated-image-pulling/alpine:3.7
+... k8s.gcr.io/invalid-image:invalid-tag
+... invalid.com/invalid/alpine:3.1
*** Test Cases ***
Run Sonobuoy Conformance Test
Run kubectl apply -f ${CURDIR}${/}sonobuoy.yaml
Sleep 20s
${rc} ${output}= Run And Return Rc And Output
- ... kubectl describe pod/sonobuoy -n heptio-sonobuoy
+ ... kubectl describe pod/sonobuoy -n sonobuoy
Append To File ${LOG} ${output}${\n}
# Wait until the test finishes execution
+ Wait Until Keyword Succeeds 3x 20 sec Check that sonobuoy is running
Run while sonobuoy status | grep "Sonobuoy is still running"; do sleep 180; done
Append To File ${LOG} "Sonobuoy has completed"${\n}
Append To File ${LOG} ${output}${\n}
Should Contain ${output} Server Version: version.Info
+Check that sonobuoy is running
+ ${output}= Run kubectl get pod sonobuoy --namespace sonobuoy
+ Should Contain ${output} Running
+
Cleanup Sonobuoy
${rc} ${output}= Run And Return Rc And Output
... kubectl delete -f ${CURDIR}${/}sonobuoy.yaml
Should Be Equal As Integers ${result.rc} 0
@{images}= Split String ${result.stdout}
FOR ${img} IN @{images}
+ Continue For Loop If $img in $SKIP_IMGS
${path} ${name} Split String From Right ${img} / 1
Upload To Internal Registry ${path} ${name}
END
+Define Images
+ ${result}= Run Process kubectl version -o json
+ Should Be Equal As Integers ${result.rc} 0
+ ${versions}= Convert String To JSON ${result.stdout}
+ ${gitVersion}= Get Value From Json ${versions} $.serverVersion.gitVersion
+ Set To Dictionary ${SONOBUOY_IMGS['e2e']} name=conformance:${gitVersion[0]}
+
Onboard Images
${INT_REG}= Get Variable Value ${INTERNAL_REGISTRY} ${EMPTY}
Set Test Variable ${INT_REG}
... ${CURDIR}${/}custom_repos.yaml
${result}= Run Process sonobuoy gen @{flags}
Should Be Equal As Integers ${result.rc} 0
- ${manifest}= Replace String ${result.stdout}
- ... image: gcr.io/heptio-images/sonobuoy-plugin-systemd-logs:latest
- ... image: ${SONOBUOY_IMGS.systemd_logs.path}/${SONOBUOY_IMGS.systemd_logs.name}
- Create File ${CURDIR}${/}sonobuoy.yaml ${manifest}
+ Create File ${CURDIR}${/}sonobuoy.yaml ${result.stdout}