diff --git a/hack/make-rules/test-cmd-util.sh b/hack/make-rules/test-cmd-util.sh index 29a02d41203..4a094995e11 100755 --- a/hack/make-rules/test-cmd-util.sh +++ b/hack/make-rules/test-cmd-util.sh @@ -4214,35 +4214,57 @@ run_certificates_tests() { } run_cluster_management_tests() { - set -o nounset - set -o errexit + set -o nounset + set -o errexit - kube::log::status "Testing cluster-management commands" + kube::log::status "Testing cluster-management commands" - kube::test::get_object_assert nodes "{{range.items}}{{$id_field}}:{{end}}" '127.0.0.1:' + kube::test::get_object_assert nodes "{{range.items}}{{$id_field}}:{{end}}" '127.0.0.1:' - ### kubectl drain command fails when both --selector and a node argument are given - # Pre-condition: node exists and contains label test=label - kubectl label node "127.0.0.1" "test=label" - kube::test::get_object_assert "nodes 127.0.0.1" '{{.metadata.labels.test}}' 'label' - response=$(! kubectl drain "127.0.0.1" --selector test=label 2>&1) - kube::test::if_has_string "${response}" 'cannot specify both a node name' + ### kubectl cordon update with --dry-run does not mark node unschedulable + # Pre-condition: node is schedulable + kube::test::get_object_assert "nodes 127.0.0.1" "{{.spec.unschedulable}}" '' + kubectl cordon "127.0.0.1" --dry-run + kube::test::get_object_assert "nodes 127.0.0.1" "{{.spec.unschedulable}}" '' - ### kubectl cordon command fails when no arguments are passed - # Pre-condition: node exists - response=$(! kubectl cordon 2>&1) - kube::test::if_has_string "${response}" 'error\: USAGE\: cordon NODE' + ### kubectl drain update with --dry-run does not mark node unschedulable + # Pre-condition: node is schedulable + kube::test::get_object_assert "nodes 127.0.0.1" "{{.spec.unschedulable}}" '' + kubectl drain "127.0.0.1" --dry-run + # Post-condition: node still exists, node is still schedulable + kube::test::get_object_assert nodes "{{range.items}}{{$id_field}}:{{end}}" '127.0.0.1:' + kube::test::get_object_assert "nodes 127.0.0.1" "{{.spec.unschedulable}}" '' - ### kubectl cordon selects all nodes with an empty --selector= - # Pre-condition: node "127.0.0.1" is uncordoned - kubectl uncordon "127.0.0.1" - response=$(kubectl cordon --selector=) - kube::test::if_has_string "${response}" 'node "127.0.0.1" cordoned' - # Post-condition: node "127.0.0.1" is cordoned - kube::test::get_object_assert "nodes 127.0.0.1" "{{.spec.unschedulable}}" 'true' + ### kubectl uncordon update with --dry-run is a no-op + # Pre-condition: node is already schedulable + kube::test::get_object_assert "nodes 127.0.0.1" "{{.spec.unschedulable}}" '' + response=$(kubectl uncordon "127.0.0.1" --dry-run) + kube::test::if_has_string "${response}" 'already uncordoned' + # Post-condition: node is still schedulable + kube::test::get_object_assert "nodes 127.0.0.1" "{{.spec.unschedulable}}" '' - set +o nounset - set +o errexit + ### kubectl drain command fails when both --selector and a node argument are given + # Pre-condition: node exists and contains label test=label + kubectl label node "127.0.0.1" "test=label" + kube::test::get_object_assert "nodes 127.0.0.1" '{{.metadata.labels.test}}' 'label' + response=$(! kubectl drain "127.0.0.1" --selector test=label 2>&1) + kube::test::if_has_string "${response}" 'cannot specify both a node name' + + ### kubectl cordon command fails when no arguments are passed + # Pre-condition: node exists + response=$(! kubectl cordon 2>&1) + kube::test::if_has_string "${response}" 'error\: USAGE\: cordon NODE' + + ### kubectl cordon selects all nodes with an empty --selector= + # Pre-condition: node "127.0.0.1" is uncordoned + kubectl uncordon "127.0.0.1" + response=$(kubectl cordon --selector=) + kube::test::if_has_string "${response}" 'node "127.0.0.1" cordoned' + # Post-condition: node "127.0.0.1" is cordoned + kube::test::get_object_assert "nodes 127.0.0.1" "{{.spec.unschedulable}}" 'true' + + set +o nounset + set +o errexit } run_plugins_tests() { @@ -4835,12 +4857,12 @@ runTests() { record_command run_certificates_tests fi - ###################### - # Cluster Management # - ###################### - if kube::test::if_supports_resource "${nodes}" ; then - record_command run_cluster_management_tests - fi + ###################### + # Cluster Management # + ###################### + if kube::test::if_supports_resource "${nodes}" ; then + record_command run_cluster_management_tests + fi ########### # Plugins #