[ 
https://issues.apache.org/jira/browse/CASSANDRA-17939?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17615970#comment-17615970
 ] 

Andres de la Peña commented on CASSANDRA-17939:
-----------------------------------------------

[This 
commit|https://github.com/adelapena/cassandra/commit/edb452ce2ef718877ba24e42f2287b4fd0490ea2]
 shows a draft of how doing the diff locally with the {{generate.sh}} script 
would look like. The script would do the diff and simply add the detected tests 
to the usual env vars. For example:
{code:java}
$ .circleci/generate.sh 
  -m \
  -e 
REPEATED_UTESTS=org.apache.cassandra.cql3.DurationTest#testAddTo,org.apache.cassandra.cql3.validation.entities.DateTypeTest
 \
  -e 
REPEATED_JVM_DTESTS=org.apache.cassandra.distributed.test.AlterTest#getAndSetCompressionParametersTest
 \
  -e 
REPEATED_UTESTS_LONG=org.apache.cassandra.io.sstable.CQLSSTableWriterLongTest#testWideRow
 \
  -e 
REPEATED_DTESTS=cfid_test.py,pending_range_test.py::TestPendingRangeMovements::test_pending_range
Generating new config.yml file with middle resources from config-2_1.yml
patching file .circleci/config-2_1.yml

Detecting new or modified tests with git diff --diff-filter=AMR trunk...HEAD:
  org.apache.cassandra.cql3.functions.NewTimeFctsTest
  org.apache.cassandra.cql3.functions.RenamedCastFctsTest
  org.apache.cassandra.cql3.functions.TimeFctsTest
  org.apache.cassandra.db.commitlog.BatchCommitLogStressTest
  org.apache.cassandra.db.commitlog.GroupCommitLogStressTest
  org.apache.cassandra.db.commitlog.NewBatchCommitLogStressTest
  org.apache.cassandra.db.commitlog.PeriodicCommitLogStressTest
  org.apache.cassandra.db.commitlog.RenamedCommitLogStressTest
  org.apache.cassandra.stress.generate.RenamedDistributionSequenceTest
  org.apache.cassandra.stress.settings.NewOptionReplicationTest
  org.apache.cassandra.stress.settings.OptionReplicationTest
  org.apache.cassandra.fqltool.FQLReplayTest
  org.apache.cassandra.fqltool.NewFQLReplayTest
  org.apache.cassandra.fqltool.RenamedFQLCompareTest
  org.apache.cassandra.simulator.test.NewShortPaxosSimulationTest
  org.apache.cassandra.simulator.test.RenamedMonitorMethodTransformerTest
  org.apache.cassandra.simulator.test.TrivialSimulationTest
  org.apache.cassandra.distributed.test.NewBooleanTest
  org.apache.cassandra.distributed.test.QueriesTableTest
  org.apache.cassandra.distributed.test.RenamedGroupByTest
  org.apache.cassandra.distributed.upgrade.MixedModeMessageForwardTest
  org.apache.cassandra.distributed.upgrade.NewMixedModeAvailabilityV3XOneAllTest
  org.apache.cassandra.distributed.upgrade.RenamedMixedModeWritetimeOrTTLTest

Setting environment variables:
  REPEATED_UTESTS: 
org.apache.cassandra.cql3.functions.TimeFctsTest,org.apache.cassandra.cql3.functions.RenamedCastFctsTest,org.apache.cassandra.cql3.functions.NewTimeFctsTest,org.apache.cassandra.cql3.DurationTest#testAddTo,org.apache.cassandra.cql3.validation.entities.DateTypeTest
  REPEATED_JVM_DTESTS: 
org.apache.cassandra.distributed.test.RenamedGroupByTest,org.apache.cassandra.distributed.test.QueriesTableTest,org.apache.cassandra.distributed.test.NewBooleanTest,org.apache.cassandra.distributed.test.AlterTest#getAndSetCompressionParametersTest
  REPEATED_UTESTS_LONG: 
org.apache.cassandra.db.commitlog.RenamedCommitLogStressTest,org.apache.cassandra.db.commitlog.PeriodicCommitLogStressTest,org.apache.cassandra.db.commitlog.NewBatchCommitLogStressTest,org.apache.cassandra.db.commitlog.GroupCommitLogStressTest,org.apache.cassandra.db.commitlog.BatchCommitLogStressTest,org.apache.cassandra.io.sstable.CQLSSTableWriterLongTest#testWideRow
  REPEATED_DTESTS: 
cfid_test.py,pending_range_test.py::TestPendingRangeMovements::test_pending_range
  REPEATED_UTESTS_STRESS: 
org.apache.cassandra.stress.settings.OptionReplicationTest,org.apache.cassandra.stress.settings.NewOptionReplicationTest,org.apache.cassandra.stress.generate.RenamedDistributionSequenceTest
  REPEATED_UTESTS_FQLTOOL: 
org.apache.cassandra.fqltool.RenamedFQLCompareTest,org.apache.cassandra.fqltool.NewFQLReplayTest,org.apache.cassandra.fqltool.FQLReplayTest
  REPEATED_SIMULATOR_DTESTS: 
org.apache.cassandra.simulator.test.TrivialSimulationTest,org.apache.cassandra.simulator.test.RenamedMonitorMethodTransformerTest,org.apache.cassandra.simulator.test.NewShortPaxosSimulationTest
  REPEATED_JVM_UPGRADE_DTESTS: 
org.apache.cassandra.distributed.upgrade.RenamedMixedModeWritetimeOrTTLTest,org.apache.cassandra.distributed.upgrade.NewMixedModeAvailabilityV3XOneAllTest,org.apache.cassandra.distributed.upgrade.MixedModeMessageForwardTest
{code}
Note how the detected tests are listed and added to the final CircleCI env 
vars, together with the tests manually provided by the user.

As mentioned before, the downside of this approach is that the detection of 
tests depends on developers using the {{generate.sh}} script.

> CircleCI: Automatically detect and repeat new or modified JUnit tests
> ---------------------------------------------------------------------
>
>                 Key: CASSANDRA-17939
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-17939
>             Project: Cassandra
>          Issue Type: Task
>          Components: CI
>            Reporter: Andres de la Peña
>            Priority: Normal
>             Fix For: 3.0.x, 3.11.x, 4.0.x, 4.x
>
>
> The purpose of this ticket is adding a new CircleCI job that automatically 
> detects new or modified test classes and runs them repeatedly. That way we 
> wouldn't need to manually specify those tests with {{.circleci/generate.sh}}.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to