Skip to content
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

run e2e tests in parallel on OpenShift CI #1473

Closed
kadel opened this issue Mar 18, 2019 · 13 comments
Closed

run e2e tests in parallel on OpenShift CI #1473

kadel opened this issue Mar 18, 2019 · 13 comments
Assignees
Labels
area/testing Issues or PRs related to testing, Quality Assurance or Quality Engineering priority/Medium Nice to have issue. Getting it done before priority changes would be great.

Comments

@kadel
Copy link
Member

kadel commented Mar 18, 2019

Right now e2e tests are run in series on OpenShift CI.
As we add more and more tests it gets slower.

It is a good time to pause and figure out how we can run our tests in parallel before adding more.

It would be great if we could run all tests against the same cluster, to cut down time to spin up new clusters.

@kadel kadel added area/testing Issues or PRs related to testing, Quality Assurance or Quality Engineering priority/High Important issue; should be worked on before any other issues (except priority/Critical issue(s)). state/In Analysis labels Mar 18, 2019
@girishramnani
Copy link
Contributor

all the tests that not depend on service catalog should be run on openshift CI

@kadel
Copy link
Member Author

kadel commented Mar 21, 2019

GinkGo can run tests in parallel - https://onsi.github.io/ginkgo/#parallel-specs

This would be ideal for us. as we can execute all our tests in one pod.
We just need to make sure that our tests are written in a way where one spec doesn't depend on the other.

ping @amitkrout

@amitkrout
Copy link
Contributor

amitkrout commented Mar 22, 2019

This is awesome!!!

Thanks for the reference. Will have a look

@amitkrout
Copy link
Contributor

This would be ideal for us. as we can execute all our tests in one pod.
We just need to make sure that our tests are written in a way where one spec doesn't depend on the other.

As of now i don't think test scenarios will be overlapped to other test file scenario because each test are running in their own namespace. For example: java test running in odo-java name space. So the only task will be a implementation of GonkGo Parallel Specs in our make file.

Will check and test locally. If test looks fine then will send the pr

@kadel kadel removed priority/Medium Nice to have issue. Getting it done before priority changes would be great. labels Mar 26, 2019
@kadel
Copy link
Member Author

kadel commented Mar 27, 2019

@amitkrout problem is that structure of our tests is wrong.
As I understand it GinkGo can run specs in parallel. But that means that each Spec (It() has to be independent, But that is not true in our e2e. This needs to be fixed first

@amitkrout
Copy link
Contributor

amitkrout commented Mar 27, 2019

@amitkrout problem is that structure of our tests is wrong.
As I understand it GinkGo can run specs in parallel. But that means that each Spec (It() has to be independent, But that is not true in our e2e. This needs to be fixed first

Forgot to update the issue with my findings which I got few days back. Sorry for the delay

IMHO in our case it will be very difficult to to isolate and maintain each spec i mean the It(…, func() {} clause. Even there will be a high chance of race condition arises in operation like creating/deleting and possible in intermediate operation. Also isolation increases the duplication of some steps in each spec.

There is an open issue on how to run parallel spec/testsuite in smart way for environment like us - onsi/ginkgo#280.

But yes I can give a try on single test file with currently ginkgo supported parallel spec run. If this fit for our requirement then will apply to all test file depending on the use of scenario.

@kadel
Copy link
Member Author

kadel commented Mar 27, 2019

IMHO in our case it will be very difficult to to isolate and maintain each spec i mean the It(…, func() {} clause. Even there will be a high chance of race condition arises in operation like creating/deleting and possible in intermediate operation. Also isolation increases the duplication of some steps in each spec.

there are nice patterns in ginkgo docs explaining how to avoid duplication https://onsi.github.io/ginkgo/#shared-example-patterns

@amitkrout
Copy link
Contributor

IMHO in our case it will be very difficult to to isolate and maintain each spec i mean the It(…, func() {} clause. Even there will be a high chance of race condition arises in operation like creating/deleting and possible in intermediate operation. Also isolation increases the duplication of some steps in each spec.

there are nice patterns in ginkgo docs explaining how to avoid duplication https://onsi.github.io/ginkgo/#shared-example-patterns

Applying on json_test.go file. will send the pr once done

@amitkrout
Copy link
Contributor

IMHO in our case it will be very difficult to to isolate and maintain each spec i mean the It(…, func() {} clause. Even there will be a high chance of race condition arises in operation like creating/deleting and possible in intermediate operation. Also isolation increases the duplication of some steps in each spec.

there are nice patterns in ginkgo docs explaining how to avoid duplication https://onsi.github.io/ginkgo/#shared-example-patterns

Applying on json_test.go file. will send the pr once done

Waiting parallel test template via #1535 to be merged first.

@kadel
Copy link
Member Author

kadel commented Apr 2, 2019

IMHO in our case it will be very difficult to to isolate and maintain each spec i mean the It(…, func() {} clause. Even there will be a high chance of race condition arises in operation like creating/deleting and possible in intermediate operation. Also isolation increases the duplication of some steps in each spec.

there are nice patterns in ginkgo docs explaining how to avoid duplication https://onsi.github.io/ginkgo/#shared-example-patterns

Applying on json_test.go file. will send the pr once done

Waiting parallel test template via #1535 to be merged first.

merged

@girishramnani girishramnani added priority/Medium Nice to have issue. Getting it done before priority changes would be great. and removed priority/High Important issue; should be worked on before any other issues (except priority/Critical issue(s)). labels Apr 10, 2019
@amitkrout
Copy link
Contributor

amitkrout commented May 22, 2019

Integration test file

  • generic test

  • component test

  • config test

  • java test

  • json format test

  • link test

  • login test

  • service test

  • source test

  • storage test

  • watch

e2e test file

  • core beta flow test

test template

  • clean test

All integration test

  • test-integration

@kadel
Copy link
Member Author

kadel commented Sep 4, 2019

/close

@openshift-ci-robot
Copy link
Collaborator

@kadel: Closing this issue.

In response to this:

/close

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/testing Issues or PRs related to testing, Quality Assurance or Quality Engineering priority/Medium Nice to have issue. Getting it done before priority changes would be great.
Projects
None yet
Development

No branches or pull requests

6 participants