[
https://issues.apache.org/jira/browse/CASSANDRA-16687?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17349242#comment-17349242
]
Andres de la Peña commented on CASSANDRA-16687:
-----------------------------------------------
As it's mentioned in the description, supporting Python upgrade dtests is easy,
we only need to add the {{--execute-upgrade-tests}} as it's done
[here|https://github.com/apache/cassandra/pull/1016/commits/d5966428453e225510bfc0caa28eb1723dd56ee5].
If I'm right this flag is harmless when the repeated test to be run isn't an
upgrade test.
As for JVM upgrade dtests, it's a bit more complicated because we need the
dtest jars. I can think of multiple ways of doing this:
# Do nothing. If we start the job {{start_jvm_upgrade_tests}} it will call the
job {{j8_dtest_jars_build}}, which will create the jars and add them to the
workspace, making them available for the dtest multiplexer. The downside is
that it forces us to run the entire set of JVM upgrade tests and wait for the
finalization of the {{j8_dtest_jars_build}} job before approving the
{{start_repeated_utest}} job. Of course this isn't very practical.
# Build the dtest jars on each repeated test runner. This would be quite
inefficient because it will build the jars 25 times in the case of MIDRES, and
100 times with HIGHRES.
# Allow to run {{j8_dtest_jars_build}} separately, and make
{{jvm_upgrade_tests}} depend on it, as it's done
[here|https://github.com/apache/cassandra/pull/1016/commits/2d1f34a2afc6ceb060e192fd04fa2c5824dfbcad].
That way we don't need to run the the entire set of JVM upgrade tests to run
the multiplexer, but we still need to wait for the finalization of the
{{j8_dtest_jars_build}} job before approving the {{start_repeated_utest}} job
in case we are repeating a JVM upgrade test, which is a bit inconvenient.
# Make the {{repeated_utest}} job depend on {{j8_dtest_jars_build}}, so we can
approve both {{start_repeated_utest}} and {{start_j8_dtest_jars_build}} as soon
as the workflow is created. The downside is that it will build the dtest jars
even if the test to run repeatedly isn't an upgrade one, which is inefficient
and slightly confusing (why do we need to build the dtest jar to run a repeated
utest?).
# Make a separate, specific job for running JVM upgrade tests named
{{repeated-jvm-upgrade-dtest}}, and make it depend on {{j8_dtest_jars_build}},
as it's done
[here|https://github.com/apache/cassandra/pull/1016/commits/b9eebd7ec32f38f477dedbd7dea264550986951c].
Also we would add separate env vars for that job, as it's done
[here|https://github.com/apache/cassandra/pull/1016/commits/2fd8415a953f226abc4c8909547774dd3f1dde01].
That is efficient in the sense that the dtest jars are only built once in all
the workflow, and I think that makes the dependencies easy to understand. The
resulting workflow can be seen on [this
run|https://app.circleci.com/pipelines/github/adelapena/cassandra/484/workflows/1604b21f-42fd-487a-a6ef-3561bf82cc55].
I think the approach described in 5. is the right one, even though it requires
an extra click to run the JVM upgrade tests. Any alternative ideas are more
than welcome. It would be super nice to have a way to automatically run the
{{j8_dtest_jars_build}} job only if {{start_jvm_upgrade_tests}} *or*
{{start-repeated-jvm-upgrade-dtest}} are called, but I can't see a way to do so
with CircleCI.
> Support upgrade tests in CircleCI multiplexer
> ---------------------------------------------
>
> Key: CASSANDRA-16687
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16687
> Project: Cassandra
> Issue Type: Task
> Components: CI
> Reporter: Andres de la Peña
> Assignee: Andres de la Peña
> Priority: Normal
> Time Spent: 10m
> Remaining Estimate: 0h
>
> The CircleCI jobs for running a test repeatedly added by CASSANDRA-16625
> don't support upgrade tests. In the case of Python upgrade dtests we only
> need the {{--execute-upgrade-tests}} when calling {{pytest}}. For Java
> upgrade tests we need to build the dtest jars before running the repeated
> tests.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]