Browse code

Merge pull request #12356 from smarterclayton/unify_suites

Merged by openshift-bot

OpenShift Bot authored on 2016/12/29 07:48:29
Showing 3 changed files
... ...
@@ -19,21 +19,14 @@ ps=$(join '|' "${parallel_exclude[@]}")
19 19
 sf=$(join '|' "${serial_only[@]}")
20 20
 ss=$(join '|' "${serial_exclude[@]}")
21 21
 
22
-
23
-os::log::info "Running the following tests:"
24
-TEST_REPORT_DIR= TEST_OUTPUT_QUIET=true extended.test "--ginkgo.focus=${pf}" "--ginkgo.skip=${ps}" --ginkgo.dryRun --ginkgo.noColor | grep ok | grep -v skip | cut -c 20- | sort
25
-TEST_REPORT_DIR= TEST_OUTPUT_QUIET=true extended.test "--ginkgo.focus=${sf}" "--ginkgo.skip=${ss}" --ginkgo.dryRun --ginkgo.noColor | grep ok | grep -v skip | cut -c 20- | sort
26
-echo
27
-
28 22
 exitstatus=0
29 23
 
30 24
 # run parallel tests
31
-nodes="${PARALLEL_NODES:-5}"
32
-os::log::info "Running parallel tests N=${nodes}"
33
-TEST_REPORT_FILE_NAME=conformance_parallel ginkgo -noColor -v "-focus=${pf}" "-skip=${ps}" -p -nodes "${nodes}" "$( os::util::find::built_binary extended.test )" -- -ginkgo.noColor -ginkgo.v -test.timeout 6h || exitstatus=$?
25
+os::log::info "Running parallel tests N=${PARALLEL_NODES:-<default>}"
26
+TEST_PARALLEL="${PARALLEL_NODES:-5}" FOCUS="${pf}" SKIP="${ps}" TEST_REPORT_FILE_NAME=conformance_parallel os::test::extended::run -- -ginkgo.noColor -ginkgo.v -test.timeout 6h ${TEST_EXTENDED_ARGS-} || exitstatus=$?
34 27
 
35 28
 # run tests in serial
36 29
 os::log::info "Running serial tests"
37
-TEST_REPORT_FILE_NAME=conformance_serial ginkgo -noColor -v "-focus=${sf}" "-skip=${ss}" "$( os::util::find::built_binary extended.test )" -- -ginkgo.noColor -ginkgo.v -test.timeout 2h || exitstatus=$?
30
+FOCUS="${sf}" SKIP="${ss}" TEST_REPORT_FILE_NAME=conformance_serial os::test::extended::run -- -ginkgo.noColor -ginkgo.v -test.timeout 2h ${TEST_EXTENDED_ARGS-} || exitstatus=$?
38 31
 
39 32
 exit $exitstatus
... ...
@@ -23,22 +23,15 @@ ps=$(join '|' "${parallel_exclude[@]}")
23 23
 sf=$(join '|' "${serial_only[@]}")
24 24
 ss=$(join '|' "${serial_exclude[@]}")
25 25
 
26
-
27
-# print the tests we are skipping
28
-os::log::info "The following tests are excluded:"
29
-SKIP_ONLY=1 PRINT_TESTS=1 os::test::extended::test_list "--ginkgo.skip=${ss}" 
30
-os::log::info ""
31
-
32 26
 exitstatus=0
33 27
 
34 28
 # run parallel tests
35
-nodes="${PARALLEL_NODES:-5}"
36
-os::log::info "Running parallel tests N=${nodes}"
37
-FOCUS="${pf}" SKIP="${ps}" TEST_REPORT_FILE_NAME=core_parallel os::test::extended::run -p -nodes "${nodes}" -- ginkgo.v -test.timeout 6h || exitstatus=$?
29
+os::log::info "Running parallel tests N=${PARALLEL_NODES:-<default>}"
30
+TEST_PARALLEL="${PARALLEL_NODES:-5}" FOCUS="${pf}" SKIP="${ps}" TEST_REPORT_FILE_NAME=core_parallel os::test::extended::run -- -ginkgo.noColor -ginkgo.v -test.timeout 6h ${TEST_EXTENDED_ARGS-} || exitstatus=$?
38 31
 
39 32
 # run tests in serial
40 33
 os::log::info ""
41 34
 os::log::info "Running serial tests"
42
-FOCUS="${sf}" SKIP="${ss}" TEST_REPORT_FILE_NAME=core_serial os::test::extended::run -- -ginkgo.v -test.timeout 2h || exitstatus=$?
35
+FOCUS="${sf}" SKIP="${ss}" TEST_REPORT_FILE_NAME=core_serial os::test::extended::run -- -ginkgo.noColor -ginkgo.v -test.timeout 2h ${TEST_EXTENDED_ARGS-} || exitstatus=$?
43 36
 
44 37
 exit $exitstatus
... ...
@@ -33,145 +33,164 @@ function os::test::extended::setup () {
33 33
 	export KUBE_REPO_ROOT="${OS_ROOT}/vendor/k8s.io/kubernetes"
34 34
 
35 35
 	# allow setup to be skipped
36
-	if [[ -z "${TEST_ONLY+x}" ]]; then
37
-		os::util::environment::setup_time_vars
38
-		os::util::environment::use_sudo
39
-		os::util::environment::setup_all_server_vars "test-extended/core"
40
-
41
-		os::util::ensure::iptables_privileges_exist
42
-
43
-		function cleanup() {
44
-			out=$?
45
-			cleanup_openshift
46
-
47
-			# TODO(skuznets): un-hack this nonsense once traps are in a better
48
-			# state
49
-			if [[ -n "${JUNIT_REPORT_OUTPUT:-}" ]]; then
50
-				# get the jUnit output file into a workable state in case we
51
-				# crashed in the middle of testing something
52
-				os::test::junit::reconcile_output
53
-
54
-				# check that we didn't mangle jUnit output
55
-				os::test::junit::check_test_counters
56
-
57
-				# use the junitreport tool to generate us a report
58
-				os::util::ensure::built_binary_exists 'junitreport'
59
-
60
-				cat "${JUNIT_REPORT_OUTPUT}" \
61
-					| junitreport --type oscmd \
62
-					--suites nested \
63
-					--roots github.com/openshift/origin \
64
-					--output "${ARTIFACT_DIR}/report.xml"
65
-				cat "${ARTIFACT_DIR}/report.xml" | junitreport summarize
66
-			fi
36
+	if [[ -n "${TEST_ONLY+x}" ]]; then
37
+		# be sure to set VOLUME_DIR if you are running with TEST_ONLY
38
+		os::log::info "Not starting server, VOLUME_DIR=${VOLUME_DIR:-}"
39
+		return 0
40
+	fi
67 41
 
68
-			os::log::info "Exiting"
69
-			return $out
70
-		}
42
+	os::util::environment::setup_time_vars
43
+	os::util::environment::use_sudo
44
+	os::util::environment::setup_all_server_vars "test-extended/core"
71 45
 
72
-		trap "exit" INT TERM
73
-		trap "cleanup" EXIT
74
-		os::log::info "Starting server"
46
+	os::util::ensure::iptables_privileges_exist
75 47
 
76
-		os::util::environment::setup_images_vars
48
+	function cleanup() {
49
+		out=$?
50
+		cleanup_openshift
77 51
 
78
-		local sudo=${USE_SUDO:+sudo}
52
+		# TODO(skuznets): un-hack this nonsense once traps are in a better
53
+		# state
54
+		if [[ -n "${JUNIT_REPORT_OUTPUT:-}" ]]; then
55
+			# get the jUnit output file into a workable state in case we
56
+			# crashed in the middle of testing something
57
+			os::test::junit::reconcile_output
79 58
 
80
-		# If the current system has the XFS volume dir mount point we configure
81
-		# in the test images, assume to use it which will allow the local storage
82
-		# quota tests to pass.
83
-		LOCAL_STORAGE_QUOTA=""
84
-		if [[ -d "/mnt/openshift-xfs-vol-dir" ]] && ${sudo} lvs | grep -q "xfs"; then
85
-			LOCAL_STORAGE_QUOTA="1"
86
-			export VOLUME_DIR="/mnt/openshift-xfs-vol-dir"
87
-		else
88
-			os::log::warn "/mnt/openshift-xfs-vol-dir does not exist, local storage quota tests may fail."
89
-		fi
59
+			# check that we didn't mangle jUnit output
60
+			os::test::junit::check_test_counters
61
+
62
+			# use the junitreport tool to generate us a report
63
+			os::util::ensure::built_binary_exists 'junitreport'
90 64
 
91
-		# Allow setting $JUNIT_REPORT to toggle output behavior
92
-		if [[ -n "${JUNIT_REPORT:-}" ]]; then
93
-			export JUNIT_REPORT_OUTPUT="${LOG_DIR}/raw_test_output.log"
94
-			# the Ginkgo tests also generate jUnit but expect different envars
95
-			export TEST_REPORT_DIR="${ARTIFACT_DIR}"
65
+			cat "${JUNIT_REPORT_OUTPUT}" \
66
+				| junitreport --type oscmd \
67
+				--suites nested \
68
+				--roots github.com/openshift/origin \
69
+				--output "${ARTIFACT_DIR}/report.xml"
70
+			cat "${ARTIFACT_DIR}/report.xml" | junitreport summarize
96 71
 		fi
97 72
 
98
-		os::log::system::start
73
+		os::log::info "Exiting"
74
+		return $out
75
+	}
99 76
 
100
-		if [[ -n "${SHOW_ALL:-}" ]]; then
101
-			SKIP_NODE=1
102
-		fi
77
+	trap "exit" INT TERM
78
+	trap "cleanup" EXIT
79
+	os::log::info "Starting server"
103 80
 
104
-		# when selinux is enforcing, the volume dir selinux label needs to be
105
-		# svirt_sandbox_file_t
106
-		#
107
-		# TODO: fix the selinux policy to either allow openshift_var_lib_dir_t
108
-		# or to default the volume dir to svirt_sandbox_file_t.
109
-		if selinuxenabled; then
110
-			${sudo} chcon -t svirt_sandbox_file_t ${VOLUME_DIR}
111
-		fi
112
-		CONFIG_VERSION=""
113
-		if [[ -n "${API_SERVER_VERSION:-}" ]]; then
114
-			CONFIG_VERSION="${API_SERVER_VERSION}"
115
-		elif [[ -n "${CONTROLLER_VERSION:-}" ]]; then
116
-			CONFIG_VERSION="${CONTROLLER_VERSION}"
117
-		fi
118
-		os::start::configure_server "${CONFIG_VERSION}"
119
-		#turn on audit logging for extended tests ... mimic what is done in os::start::configure_server, but don't
120
-		# put change there - only want this for extended tests
121
-		os::log::info "Turn on audit logging"
122
-		cp "${SERVER_CONFIG_DIR}/master/master-config.yaml" "${SERVER_CONFIG_DIR}/master/master-config.orig2.yaml"
123
-		openshift ex config patch "${SERVER_CONFIG_DIR}/master/master-config.orig2.yaml" --patch="{\"auditConfig\": {\"enabled\": true}}"  > "${SERVER_CONFIG_DIR}/master/master-config.yaml"
124
-
125
-		# If the XFS volume dir mount point exists enable local storage quota in node-config.yaml so these tests can pass:
126
-		if [[ -n "${LOCAL_STORAGE_QUOTA}" ]]; then
127
-			# The ec2 images usually have ~5Gi of space defined for the xfs vol for the registry; want to give /registry a good chunk of that
128
-			# to store the images created when the extended tests run
129
-			cp "${NODE_CONFIG_DIR}/node-config.yaml" "${NODE_CONFIG_DIR}/node-config.orig2.yaml"
130
-			openshift ex config patch "${NODE_CONFIG_DIR}/node-config.orig2.yaml" --patch='{"volumeConfig":{"localQuota":{"perFSGroup":"4480Mi"}}}' > "${NODE_CONFIG_DIR}/node-config.yaml"
131
-		fi
132
-		os::log::info "Using VOLUME_DIR=${VOLUME_DIR}"
81
+	os::util::environment::setup_images_vars
133 82
 
134
-		# This is a bit hacky, but set the pod gc threshold appropriately for the garbage_collector test.
135
-		cp "${SERVER_CONFIG_DIR}/master/master-config.yaml" "${SERVER_CONFIG_DIR}/master/master-config.orig3.yaml"
136
-		openshift ex config patch "${SERVER_CONFIG_DIR}/master/master-config.orig3.yaml" --patch='{"kubernetesMasterConfig":{"controllerArguments":{"terminated-pod-gc-threshold":["100"]}}}' > "${SERVER_CONFIG_DIR}/master/master-config.yaml"
83
+	local sudo=${USE_SUDO:+sudo}
137 84
 
138
-		os::start::server "${API_SERVER_VERSION:-}" "${CONTROLLER_VERSION:-}" "${SKIP_NODE:-}"
85
+	# If the current system has the XFS volume dir mount point we configure
86
+	# in the test images, assume to use it which will allow the local storage
87
+	# quota tests to pass.
88
+	LOCAL_STORAGE_QUOTA=""
89
+	if [[ -d "/mnt/openshift-xfs-vol-dir" ]] && ${sudo} lvs | grep -q "xfs"; then
90
+		LOCAL_STORAGE_QUOTA="1"
91
+		export VOLUME_DIR="/mnt/openshift-xfs-vol-dir"
92
+	else
93
+		os::log::warn "/mnt/openshift-xfs-vol-dir does not exist, local storage quota tests may fail."
94
+	fi
139 95
 
140
-		export KUBECONFIG="${ADMIN_KUBECONFIG}"
96
+	# Allow setting $JUNIT_REPORT to toggle output behavior
97
+	if [[ -n "${JUNIT_REPORT:-}" ]]; then
98
+		export JUNIT_REPORT_OUTPUT="${LOG_DIR}/raw_test_output.log"
99
+		# the Ginkgo tests also generate jUnit but expect different envars
100
+		export TEST_REPORT_DIR="${ARTIFACT_DIR}"
101
+	fi
141 102
 
142
-		os::start::registry
143
-		if [[ -z "${SKIP_NODE:-}" ]]; then
144
-			oc rollout status dc/docker-registry
145
-		fi
146
-		DROP_SYN_DURING_RESTART=true CREATE_ROUTER_CERT=true os::start::router
103
+	os::log::system::start
147 104
 
148
-		os::log::info "Creating image streams"
149
-		oc create -n openshift -f "${OS_ROOT}/examples/image-streams/image-streams-centos7.json" --config="${ADMIN_KUBECONFIG}"
150
-	else
151
-		# be sure to set VOLUME_DIR if you are running with TEST_ONLY
152
-		os::log::info "Not starting server, VOLUME_DIR=${VOLUME_DIR:-}"
105
+	if [[ -n "${SHOW_ALL:-}" ]]; then
106
+		SKIP_NODE=1
153 107
 	fi
108
+
109
+	# when selinux is enforcing, the volume dir selinux label needs to be
110
+	# svirt_sandbox_file_t
111
+	#
112
+	# TODO: fix the selinux policy to either allow openshift_var_lib_dir_t
113
+	# or to default the volume dir to svirt_sandbox_file_t.
114
+	if selinuxenabled; then
115
+		${sudo} chcon -t svirt_sandbox_file_t ${VOLUME_DIR}
116
+	fi
117
+	CONFIG_VERSION=""
118
+	if [[ -n "${API_SERVER_VERSION:-}" ]]; then
119
+		CONFIG_VERSION="${API_SERVER_VERSION}"
120
+	elif [[ -n "${CONTROLLER_VERSION:-}" ]]; then
121
+		CONFIG_VERSION="${CONTROLLER_VERSION}"
122
+	fi
123
+	os::start::configure_server "${CONFIG_VERSION}"
124
+	#turn on audit logging for extended tests ... mimic what is done in os::start::configure_server, but don't
125
+	# put change there - only want this for extended tests
126
+	os::log::info "Turn on audit logging"
127
+	cp "${SERVER_CONFIG_DIR}/master/master-config.yaml" "${SERVER_CONFIG_DIR}/master/master-config.orig2.yaml"
128
+	openshift ex config patch "${SERVER_CONFIG_DIR}/master/master-config.orig2.yaml" --patch="{\"auditConfig\": {\"enabled\": true}}"  > "${SERVER_CONFIG_DIR}/master/master-config.yaml"
129
+
130
+	# If the XFS volume dir mount point exists enable local storage quota in node-config.yaml so these tests can pass:
131
+	if [[ -n "${LOCAL_STORAGE_QUOTA}" ]]; then
132
+		# The ec2 images usually have ~5Gi of space defined for the xfs vol for the registry; want to give /registry a good chunk of that
133
+		# to store the images created when the extended tests run
134
+		cp "${NODE_CONFIG_DIR}/node-config.yaml" "${NODE_CONFIG_DIR}/node-config.orig2.yaml"
135
+		openshift ex config patch "${NODE_CONFIG_DIR}/node-config.orig2.yaml" --patch='{"volumeConfig":{"localQuota":{"perFSGroup":"4480Mi"}}}' > "${NODE_CONFIG_DIR}/node-config.yaml"
136
+	fi
137
+	os::log::info "Using VOLUME_DIR=${VOLUME_DIR}"
138
+
139
+	# This is a bit hacky, but set the pod gc threshold appropriately for the garbage_collector test.
140
+	cp "${SERVER_CONFIG_DIR}/master/master-config.yaml" "${SERVER_CONFIG_DIR}/master/master-config.orig3.yaml"
141
+	openshift ex config patch "${SERVER_CONFIG_DIR}/master/master-config.orig3.yaml" --patch='{"kubernetesMasterConfig":{"controllerArguments":{"terminated-pod-gc-threshold":["100"]}}}' > "${SERVER_CONFIG_DIR}/master/master-config.yaml"
142
+
143
+	os::start::server "${API_SERVER_VERSION:-}" "${CONTROLLER_VERSION:-}" "${SKIP_NODE:-}"
144
+
145
+	export KUBECONFIG="${ADMIN_KUBECONFIG}"
146
+
147
+	os::start::registry
148
+	if [[ -z "${SKIP_NODE:-}" ]]; then
149
+		oc rollout status dc/docker-registry
150
+	fi
151
+	DROP_SYN_DURING_RESTART=true CREATE_ROUTER_CERT=true os::start::router
152
+
153
+	os::log::info "Creating image streams"
154
+	oc create -n openshift -f "${OS_ROOT}/examples/image-streams/image-streams-centos7.json" --config="${ADMIN_KUBECONFIG}"
154 155
 }
155 156
 
156 157
 # Run extended tests or print out a list of tests that need to be run
157 158
 # Input:
158 159
 # - FOCUS - the extended test focus
159 160
 # - SKIP - the tests to skip
161
+# - TEST_EXTENDED_SKIP - a global filter that allows additional tests to be omitted, will
162
+#     be joined with SKIP
160 163
 # - SHOW_ALL - if set, then only print out tests to be run
164
+# - TEST_PARALLEL - if set, run the tests in parallel with the specified number of nodes
161 165
 # - Arguments - arguments to pass to ginkgo
162 166
 function os::test::extended::run () {
163
-        local listArgs=()
164
-        local runArgs=()
165
-        if [[ -n "${FOCUS:-}" ]]; then
166
-          listArgs+=("--ginkgo.focus=${FOCUS}")
167
-          runArgs+=("-focus=${FOCUS}")
168
-        fi
169
-        if [[ -n "${SKIP:-}" ]]; then
170
-          listArgs+=("--ginkgo.skip=${SKIP}")
171
-          runArgs+=("-skip=${SKIP}")
172
-        fi
167
+	local listArgs=()
168
+	local runArgs=()
173 169
 
174
-	if [[ -n "${SHOW_ALL:-}" ]]; then
170
+	if [[ -n "${FOCUS-}" ]]; then
171
+		listArgs+=("--ginkgo.focus=${FOCUS}")
172
+		runArgs+=("-focus=${FOCUS}")
173
+	fi
174
+
175
+	local skip="${SKIP-}"
176
+	# Allow additional skips to be provided on the command line
177
+	if [[ -n "${TEST_EXTENDED_SKIP-}" ]]; then
178
+		if [[ -n "${skip}" ]]; then
179
+			skip="${skip}|${TEST_EXTENDED_SKIP}"
180
+		else
181
+			skip="${TEST_EXTENDED_SKIP}"
182
+		fi
183
+	fi
184
+	if [[ -n "${skip}" ]]; then
185
+		listArgs+=("--ginkgo.skip=${skip}")
186
+		runArgs+=("-skip=${skip}")
187
+	fi
188
+
189
+	if [[ -n "${TEST_PARALLEL-}" ]]; then
190
+		runArgs+=("-p" "-nodes=${TEST_PARALLEL}")
191
+	fi
192
+
193
+	if [[ -n "${SHOW_ALL-}" ]]; then
175 194
 		PRINT_TESTS=1
176 195
 		os::test::extended::test_list "${listArgs[@]}"
177 196
 		return