New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
OCPBUGS-14193: pao e2e: Split e2e PAO update lane to more lanes #631
OCPBUGS-14193: pao e2e: Split e2e PAO update lane to more lanes #631
Conversation
Skipping CI for Draft Pull Request. |
/test all |
3749e0c
to
78ab097
Compare
/test all |
78ab097
to
8c57eab
Compare
/test all |
8c57eab
to
93828d4
Compare
cc: @yanirq @mrniranjan |
bf12f01
to
31a6eec
Compare
/test e2e-gcp-pao |
31a6eec
to
3d099bb
Compare
/test e2e-upgrade |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I totally get and like the direction here, few comments inside.
I'm not super excited about generalizing the runner script, while I see the code duplication argument I'm still biased towards having really boring and fully independent runners. Another option could have been extracting only the common prelude into a include bash helper, but it's ok.
@@ -12,6 +12,7 @@ usage() { | |||
print " -h Help for ${CURRENT_SCRIPT}" | |||
print " -t list of space separated paths to Testsuites to execute" | |||
print " -p string with extra Params for ginkgo" | |||
print " -r string with report Params for ginkgo (these params will go after the list of suites)" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
proper positioning of ginkgo flags seems to be the responsability of this wrapper. So the wrapper can tolerate wrong order of flags, and the clarification between parens is unnecessary (a little layering violation)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Two things here.
While I have found problems when --junit-report
is before require-suite
I think @mrniranjan found some time ago, just the opposite, that everything after require-suite
was ignored by Ginkgo. I have been looking around but could not found anything backing any of the two ideas.
Regarding, the wrapper being responsible of the param order, I am totally agree, in fact I do not like this approach but, as ginkgo params are passed as a string, for the wrapper to handle the proper order should have need to parse the params string and I thought that could lead to many problems, so this approach was simpler.
@@ -79,7 +83,8 @@ main() { | |||
MESSAGE="${HEADER_MESSAGE}: ${GINKGO_SUITS}" | |||
print ${MESSAGE} | |||
|
|||
GINKGO_FLAGS="${NO_COLOR} ${EXTRA_PARAMS} --require-suite ${GINKGO_SUITS}" | |||
GINKGO_FLAGS="${NO_COLOR} ${EXTRA_PARAMS} --require-suite ${GINKGO_SUITS} ${REPORT_PARAMS}" | |||
print "Command to run: GOFLAGS=-mod=vendor ginkgo ${GINKGO_FLAGS}" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe add a dry-run
flag, so the script just prints the full command and does not actually execute it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The main target here was to allow a later inspect of the params used to run ginkgo in case of test failure.
--dry-run
will make ginkgo to walk the test hierarchy and print some additional output, even with the succinct
flag.
That is more info that I was looking for, but if it could be useful for later debugging we can go for it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ffromani makes sense? or do you still think it would be better to go for --dry-run
option?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, I expressed myself poorly. I meant a --dry-run
option managed by the hack/run-test.sh
wrapper, which then will emit (but not run) the ginkgo commands
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added new options to run-tests.sh
one to execute an actual dry-run
to be able to see the list of test that would be run and another one to just see the command line without executing it.
...ceprofile/functests/8_performance_workloadhints/test_suite_performance_workloadhints_test.go
Show resolved
Hide resolved
do we know how much time we save now, roughly? E.g. down from 4h to XXX hours |
test/e2e/performanceprofile/functests/8_performance_workloadhints/workloadhints.go
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking good, left small comment.
We need to make sure to have a follow-up PR on openshift/release for running the workloadHints lane
Makefile
Outdated
@@ -199,7 +199,7 @@ pao-functests: cluster-label-worker-cnf pao-functests-only | |||
pao-functests-only: | |||
@echo "Cluster Version" | |||
hack/show-cluster-version.sh | |||
hack/run-functests.sh | |||
hack/run-test.sh -t "test/e2e/performanceprofile/functests" -p "--v -r --fail-fast --skip-package='5_latency_testing,2_performance_update' --flake-attempts=2 --junit-report=report.xml" -m "Running Functional Tests" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If we're already going with the generic approach I would use the common parameters by default, so we don't need to specify them for every test.
For example:
--v
-r
--fail-fast
-m "Running Functional Tests"
, etc.
in case we want to change the default we can always specify explicitly with the desired values.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not super excited about default parameters in general, because I think they obscure the way a function/script works and could lead to hard to find errors ...
I usually prefer explicit over implicit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm still inclined towards making it more readable and less repetitive because this was the whole idea - reduce duplication.
But we can stick with explicitly specifying the parameters, no biggie.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I went for this approach because of the code duplication issue but, tbh I do not have a strong opinion against it in this specific situation, so if we think that the "common prelude" approach would be better it is easy to change direction right now. |
3d099bb
to
156fed2
Compare
Assuming all the other steps in |
There already is one openshift/release#38754 just waiting for this to be merged. Thanks :) |
just rebasing over last master changes |
/hold |
|
becc967
to
b887b73
Compare
Removed last commit ( was just to check new workloadhints lane ) |
/unhold |
|
/test e2e-gcp-pao-updating-profile |
/test e2e-hypershift |
/hold |
81457cd
to
8ac008a
Compare
/hold cancel |
We have too many duplicated bash scripts to run different ginkgo testsuites, so lets try to make a generic script to reduce code duplication.
As these tests seems to take a lot of the execution time lets extract them so we could execute them in a different lane.
8ac008a
to
59eaa7d
Compare
/lgtm |
/approve we want this split. |
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: ffromani, jlojosnegros The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
/test e2e-upgrade |
@jlojosnegros: all tests passed! Full PR test history. Your PR dashboard. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. I understand the commands that are listed here. |
@jlojosnegros: Jira Issue OCPBUGS-14193: All pull requests linked via external trackers have merged: Jira Issue OCPBUGS-14193 has been moved to the MODIFIED state. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
ci/prow/e2e-gcp-pao-updating-profile
functional test lane contains slow tests that require reboots to worker nodes and as a result long waits for mcp/tuned/other statuses to be updated.The lane is reaching its maximum timeout of 4 hours
This calls for a need to split this lane to 1 or more test lanes that could run in parallel and in less amount of time so u/s PRs will not be blocked/long waiting