Merge pull request #15042 from JanetKuo/test-loop-add-rclist-svclist

Auto commit by PR queue bot
This commit is contained in:
k8s-merge-robot 2015-10-10 10:57:24 -07:00
commit d94307b71e
5 changed files with 308 additions and 23 deletions

View File

@ -748,7 +748,9 @@ __EOF__
FILES="hack/testdata/multi-resource-yaml
hack/testdata/multi-resource-list
hack/testdata/multi-resource-json"
hack/testdata/multi-resource-json
hack/testdata/multi-resource-rclist
hack/testdata/multi-resource-svclist"
YAML=".yaml"
JSON=".json"
for file in $FILES; do
@ -761,40 +763,97 @@ __EOF__
replace_file="${file%.json}-modify.json"
fi
### Create, get, describe, replace, label, annotate, and then delete service nginxsvc and replication controller my-nginx from 3 types of files:
has_svc=true
has_rc=true
two_rcs=false
two_svcs=false
if [[ "${file}" == *rclist* ]]; then
has_svc=false
two_rcs=true
fi
if [[ "${file}" == *svclist* ]]; then
has_rc=false
two_svcs=true
fi
### Create, get, describe, replace, label, annotate, and then delete service nginxsvc and replication controller my-nginx from 5 types of files:
### 1) YAML, separated by ---; 2) JSON, with a List type; 3) JSON, with JSON object concatenation
### 4) JSON, with a ReplicationControllerList type; 5) JSON, with a ServiceList type
echo "Testing with file ${file} and replace with file ${replace_file}"
# Pre-condition: no service (other than default kubernetes services) or replication controller is running
kube::test::get_object_assert services "{{range.items}}{{$id_field}}:{{end}}" 'kubernetes:'
kube::test::get_object_assert rc "{{range.items}}{{$id_field}}:{{end}}" ''
# Command
# TODO: remove --validate=false when PR "Add validate support for list kind #14726" is merged
kubectl create -f $file --validate=false "${kube_flags[@]}"
# Post-condition: mock service is running
kube::test::get_object_assert services "{{range.items}}{{$id_field}}:{{end}}" 'kubernetes:mock:'
# Post-condition: mock rc is running
kube::test::get_object_assert rc "{{range.items}}{{$id_field}}:{{end}}" 'mock:'
kubectl create -f "${file}" --validate=false "${kube_flags[@]}"
# Post-condition: mock service (and mock2) is running
if [ "$has_svc" = true ]; then
if [ "$two_svcs" = true ]; then
kube::test::get_object_assert services "{{range.items}}{{$id_field}}:{{end}}" 'kubernetes:mock:mock2:'
else
kube::test::get_object_assert services "{{range.items}}{{$id_field}}:{{end}}" 'kubernetes:mock:'
fi
fi
# Post-condition: mock rc (and mock2) is running
if [ "$has_rc" = true ]; then
if [ "$two_rcs" = true ]; then
kube::test::get_object_assert rc "{{range.items}}{{$id_field}}:{{end}}" 'mock:mock2:'
else
kube::test::get_object_assert rc "{{range.items}}{{$id_field}}:{{end}}" 'mock:'
fi
fi
# Command
# kubectl create -f $file "${kube_flags[@]}" # test fails here now
kubectl get -f $file "${kube_flags[@]}"
kubectl describe -f $file "${kube_flags[@]}"
# kubectl create -f "${file}" "${kube_flags[@]}" # test fails here now
kubectl get -f "${file}" "${kube_flags[@]}"
kubectl describe -f "${file}" "${kube_flags[@]}"
# Command
# TODO: remove --validate=false when PR "Add validate support for list kind #14726" is merged
kubectl replace -f $replace_file --force --validate=false "${kube_flags[@]}"
# Post-condition: mock service and mock rc are replaced
kube::test::get_object_assert 'services mock' "{{${labels_field}.status}}" 'replaced'
kube::test::get_object_assert 'rc mock' "{{${labels_field}.status}}" 'replaced'
# Post-condition: mock service (and mock2) and mock rc (and mock2) are replaced
if [ "$has_svc" = true ]; then
kube::test::get_object_assert 'services mock' "{{${labels_field}.status}}" 'replaced'
if [ "$two_svcs" = true ]; then
kube::test::get_object_assert 'services mock2' "{{${labels_field}.status}}" 'replaced'
fi
fi
if [ "$has_rc" = true ]; then
kube::test::get_object_assert 'rc mock' "{{${labels_field}.status}}" 'replaced'
if [ "$two_rcs" = true ]; then
kube::test::get_object_assert 'rc mock2' "{{${labels_field}.status}}" 'replaced'
fi
fi
# Command
kubectl label -f $file labeled=true "${kube_flags[@]}"
# Post-condition: mock service and mock rc are labeled
kube::test::get_object_assert 'services mock' "{{${labels_field}.labeled}}" 'true'
kube::test::get_object_assert 'rc mock' "{{${labels_field}.labeled}}" 'true'
kubectl label -f "${file}" labeled=true "${kube_flags[@]}"
# Post-condition: mock service and mock rc (and mock2) are labeled
if [ "$has_svc" = true ]; then
kube::test::get_object_assert 'services mock' "{{${labels_field}.labeled}}" 'true'
if [ "$two_svcs" = true ]; then
kube::test::get_object_assert 'services mock2' "{{${labels_field}.labeled}}" 'true'
fi
fi
if [ "$has_rc" = true ]; then
kube::test::get_object_assert 'rc mock' "{{${labels_field}.labeled}}" 'true'
if [ "$two_rcs" = true ]; then
kube::test::get_object_assert 'rc mock2' "{{${labels_field}.labeled}}" 'true'
fi
fi
# Command
kubectl annotate -f $file annotated=true "${kube_flags[@]}"
# Post-condition: mock service and mock rc are annotated
kube::test::get_object_assert 'services mock' "{{${annotations_field}.annotated}}" 'true'
kube::test::get_object_assert 'rc mock' "{{${annotations_field}.annotated}}" 'true'
# Cleanup services and rc
kubectl delete -f $file "${kube_flags[@]}"
kubectl annotate -f "${file}" annotated=true "${kube_flags[@]}"
# Post-condition: mock service (and mock2) and mock rc (and mock2) are annotated
if [ "$has_svc" = true ]; then
kube::test::get_object_assert 'services mock' "{{${annotations_field}.annotated}}" 'true'
if [ "$two_svcs" = true ]; then
kube::test::get_object_assert 'services mock2' "{{${annotations_field}.annotated}}" 'true'
fi
fi
if [ "$has_rc" = true ]; then
kube::test::get_object_assert 'rc mock' "{{${annotations_field}.annotated}}" 'true'
if [ "$two_rcs" = true ]; then
kube::test::get_object_assert 'rc mock2' "{{${annotations_field}.annotated}}" 'true'
fi
fi
# Cleanup resources created
kubectl delete -f "${file}" "${kube_flags[@]}"
done
######################

View File

@ -0,0 +1,70 @@
{
"kind":"ReplicationControllerList",
"apiVersion":"v1",
"items":[
{
"metadata":{
"name":"mock",
"labels":{
"app":"mock",
"status":"replaced"
}
},
"spec":{
"replicas":1,
"selector":{
"app":"mock"
},
"template":{
"metadata":{
"labels":{
"app":"mock"
}
},
"spec":{
"containers":[{
"name": "mock-container",
"image": "kubernetes/pause",
"ports":[{
"containerPort":9949,
"protocol":"TCP"
}]
}]
}
}
}
},
{
"metadata":{
"name":"mock2",
"labels":{
"app":"mock2",
"status":"replaced"
}
},
"spec":{
"replicas":1,
"selector":{
"app":"mock2"
},
"template":{
"metadata":{
"labels":{
"app":"mock2"
}
},
"spec":{
"containers":[{
"name": "mock-container",
"image": "kubernetes/pause",
"ports":[{
"containerPort":9949,
"protocol":"TCP"
}]
}]
}
}
}
}
]
}

View File

@ -0,0 +1,70 @@
{
"kind":"ReplicationControllerList",
"apiVersion":"v1",
"items":[
{
"metadata":{
"name":"mock",
"labels":{
"app":"mock",
"status":"replaced"
}
},
"spec":{
"replicas":1,
"selector":{
"app":"mock"
},
"template":{
"metadata":{
"labels":{
"app":"mock"
}
},
"spec":{
"containers":[{
"name": "mock-container",
"image": "kubernetes/pause",
"ports":[{
"containerPort":9949,
"protocol":"TCP"
}]
}]
}
}
}
},
{
"metadata":{
"name":"mock2",
"labels":{
"app":"mock2",
"status":"replaced"
}
},
"spec":{
"replicas":1,
"selector":{
"app":"mock2"
},
"template":{
"metadata":{
"labels":{
"app":"mock2"
}
},
"spec":{
"containers":[{
"name": "mock-container",
"image": "kubernetes/pause",
"ports":[{
"containerPort":9949,
"protocol":"TCP"
}]
}]
}
}
}
}
]
}

View File

@ -0,0 +1,44 @@
{
"kind":"ServiceList",
"apiVersion":"v1",
"items":[
{
"metadata":{
"name":"mock",
"labels":{
"app":"mock",
"status":"replaced"
}
},
"spec":{
"ports": [{
"protocol": "TCP",
"port": 99,
"targetPort": 9949
}],
"selector":{
"app":"mock"
}
}
},
{
"metadata":{
"name":"mock2",
"labels":{
"app":"mock2",
"status":"replaced"
}
},
"spec":{
"ports": [{
"protocol": "TCP",
"port": 99,
"targetPort": 9949
}],
"selector":{
"app":"mock2"
}
}
}
]
}

View File

@ -0,0 +1,42 @@
{
"kind":"ServiceList",
"apiVersion":"v1",
"items":[
{
"metadata":{
"name":"mock",
"labels":{
"app":"mock"
}
},
"spec":{
"ports": [{
"protocol": "TCP",
"port": 99,
"targetPort": 9949
}],
"selector":{
"app":"mock"
}
}
},
{
"metadata":{
"name":"mock2",
"labels":{
"app":"mock2"
}
},
"spec":{
"ports": [{
"protocol": "TCP",
"port": 99,
"targetPort": 9949
}],
"selector":{
"app":"mock2"
}
}
}
]
}