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

Enable of parallelism inside framework #1144

Open
viktorov-aa opened this issue Jun 18, 2021 · 4 comments
Open

Enable of parallelism inside framework #1144

viktorov-aa opened this issue Jun 18, 2021 · 4 comments
Assignees

Comments

@viktorov-aa
Copy link

viktorov-aa commented Jun 18, 2021

Hello!
I have a suite of tests that take a long time to run. Test packages are independent of each other. I want to run tests in parallel using utPLSQL. I seem to be able to do this simply by using the DBMS_PARALLEL_EXECUTE package. I want to try to modify the framework and add this to your repository. This will be my first experience of participating in open source. I think this feature would be quite useful for other teams as well. I suppose it's not that simple, otherwise you would have added this feature long ago. Can you tell me how you see this possibility in your architecture. Maybe I would try.

Unfortunately, I was unable to get into your Slack. None of your links are working.

PS
Sorry for my english. I am just learning.

@pesse
Copy link
Member

pesse commented Jun 21, 2021

Hey @viktorov-aa

at the moment, we are not planning to add parallelism support to the framework, because it will add a lot of complexity (especially regarding the testing of the framework).
There is an easy workaround to have parallel tests executed by calling utPLSQL-cli multiple times with different tags, so we don't see an absolute need. On top of that, we are already stuggling with maintaining the existent code base, since we all do this in our free time (and times are quite challenging atm :) )

According to the slack:
Here's an invite link, valid for 30 days
https://join.slack.com/t/utplsql/shared_invite/zt-rzf6h7w2-mpDdFOrSDv6vSHl98X1RYw

Cheers,
Sam

@pesse pesse added the idea label Jun 21, 2021
@pesse
Copy link
Member

pesse commented Jun 21, 2021

See also #881

@viktorov-aa
Copy link
Author

viktorov-aa commented Jun 23, 2021

Thanks for your reply. We are using teamcity.
We run tests through sqlplus:

BEGIN
  ut.run(ut_teamcity_reporter());
END;
/

I want to run multiple tests in parallel using utPLSQL-cli

>utplsql run <ConnectionURL> --tags=stream1 -f=ut_teamcity_reporter
>utplsql run <ConnectionURL> --tags=stream2 -f=ut_teamcity_reporter
>utplsql run <ConnectionURL> --tags=stream3 -f=ut_teamcity_reporter

I have a question. Will ut_teamcity_reporter work normally, or is it necessary to do something else?
I cannot try it myself, because I do not have the required access.

UPD:
I figured it out. My question is not relevant

@lwasylow lwasylow self-assigned this Sep 24, 2022
@lwasylow
Copy link
Member

lwasylow commented Sep 24, 2022

I had a look at junit5 about parallel and way its implemented there is the annotation declaration for suite or test methods. In their implementation it allows for permutations of parallel suites or test methods.
I think we should start with an annotation on the suite to parallelize all tests under it. Author is responsible for making them paralell safe.
So the suites will call serially but tests within suites that is annotated would run parallel.
The results would have to be stored in the table as the chunks will be run by different sessions.
The sample annotation couls looks like --%parallel(4)

In case of nested suite the parallel wil be inherited to child suites. The child suites will be run serial however the tests within these suites will run parallel as defined by parent suite.

We will have to make sure that coverage data will be linked to same runid or at least we are able to merge them from child session to coordinator session, same goes for reporting.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants