blob: 2e318ef4799470594318fc71dce7da1740449395 [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Testing &mdash; Apache Cassandra Documentation v4.0-rc2</title>
<script type="text/javascript" src="../_static/js/modernizr.min.js"></script>
<script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<script type="text/javascript" src="../_static/language_data.js"></script>
<script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
<script type="text/javascript" src="../_static/js/theme.js"></script>
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/extra.css" type="text/css" />
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Contributing Code Changes" href="patches.html" />
<link rel="prev" title="Building and IDE Integration" href="ide.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home"> Apache Cassandra
</a>
<div class="version">
4.0-rc2
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Contributing to Cassandra</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html">Getting Started</a></li>
<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Testing</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#unit-testing">Unit Testing</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#long-running-tests">Long running tests</a></li>
<li class="toctree-l4"><a class="reference internal" href="#flaky-tests">Flaky tests</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#dtests">DTests</a></li>
<li class="toctree-l3"><a class="reference internal" href="#performance-testing">Performance Testing</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#cassandra-stress-tool">Cassandra Stress Tool</a></li>
<li class="toctree-l4"><a class="reference internal" href="#cstar-perf">cstar_perf</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#circleci">CircleCI</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
<li class="toctree-l2"><a class="reference internal" href="license_compliance.html">License Compliance</a></li>
<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
<li class="toctree-l2"><a class="reference internal" href="documentation.html">Working on Documentation</a></li>
<li class="toctree-l2"><a class="reference internal" href="ci.html">Jenkins CI Environment</a></li>
<li class="toctree-l2"><a class="reference internal" href="dependencies.html">Dependency Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="release_process.html">Release Process</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">Apache Cassandra</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html">Docs</a> &raquo;</li>
<li><a href="index.html">Contributing to Cassandra</a> &raquo;</li>
<li>Testing</li>
<li class="wy-breadcrumbs-aside">
<a href="../_sources/development/testing.rst.txt" rel="nofollow"> View page source</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<div class="section" id="testing">
<span id="id1"></span><h1>Testing<a class="headerlink" href="#testing" title="Permalink to this headline"></a></h1>
<p>Creating tests is one of the most important and also most difficult parts of developing Cassandra. There are different ways to test your code depending on what you’re working on.</p>
<div class="section" id="unit-testing">
<h2>Unit Testing<a class="headerlink" href="#unit-testing" title="Permalink to this headline"></a></h2>
<p>The most simple way to test code in Cassandra is probably by writing a unit test. Cassandra uses JUnit as a testing framework and test cases can be found in the <code class="docutils literal notranslate"><span class="pre">test/unit</span></code> directory. Ideally you’d be able to create a unit test for your implementation that would exclusively cover the class you created (the unit under test). Unfortunately this is not always possible and Cassandra doesn’t have a very mock friendly code base. Often you’ll find yourself in a situation where you have to make use of an embedded Cassandra instance that you’ll be able to interact with in your test. If you want to make use of CQL in your test, you can simply extend CQLTester and use some of the convenient helper methods such as in the following example.</p>
<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="nd">@Test</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">testBatchAndList</span><span class="p">()</span> <span class="kd">throws</span> <span class="n">Throwable</span>
<span class="p">{</span>
<span class="n">createTable</span><span class="p">(</span><span class="s">&quot;CREATE TABLE %s (k int PRIMARY KEY, l list&lt;int&gt;)&quot;</span><span class="p">);</span>
<span class="n">execute</span><span class="p">(</span><span class="s">&quot;BEGIN BATCH &quot;</span> <span class="o">+</span>
<span class="s">&quot;UPDATE %1$s SET l = l +[ 1 ] WHERE k = 0; &quot;</span> <span class="o">+</span>
<span class="s">&quot;UPDATE %1$s SET l = l + [ 2 ] WHERE k = 0; &quot;</span> <span class="o">+</span>
<span class="s">&quot;UPDATE %1$s SET l = l + [ 3 ] WHERE k = 0; &quot;</span> <span class="o">+</span>
<span class="s">&quot;APPLY BATCH&quot;</span><span class="p">);</span>
<span class="n">assertRows</span><span class="p">(</span><span class="n">execute</span><span class="p">(</span><span class="s">&quot;SELECT l FROM %s WHERE k = 0&quot;</span><span class="p">),</span>
<span class="n">row</span><span class="p">(</span><span class="n">list</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)));</span>
<span class="p">}</span>
</pre></div>
</div>
<p>Unit tests can be run from the command line using the <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">test</span></code> command, <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">test</span> <span class="pre">-Dtest.name=&lt;simple_classname&gt;</span></code> to execute a test suite or <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">testsome</span> <span class="pre">-Dtest.name=&lt;FQCN&gt;</span> <span class="pre">-Dtest.methods=&lt;testmethod1&gt;[,testmethod2]</span></code> for individual tests. For example, to run all test methods in the <code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.cql3.SimpleQueryTest</span></code> class, you would run:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>ant test -Dtest.name=SimpleQueryTest
</pre></div>
</div>
<p>To run only the <code class="docutils literal notranslate"><span class="pre">testTableWithOneClustering()</span></code> test method from that class, you would run:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>ant testsome -Dtest.name=org.apache.cassandra.cql3.SimpleQueryTest -Dtest.methods=testTableWithOneClustering
</pre></div>
</div>
<p>If you see an error like this:</p>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>Throws: cassandra-trunk/build.xml:1134: taskdef A class needed by class org.krummas.junit.JStackJUnitTask cannot be found:
org/apache/tools/ant/taskdefs/optional/junit/JUnitTask using the classloader
AntClassLoader[/.../cassandra-trunk/lib/jstackjunit-0.0.1.jar]
</pre></div>
</div>
<p>You will need to install the ant-optional package since it contains the <code class="docutils literal notranslate"><span class="pre">JUnitTask</span></code> class.</p>
<div class="section" id="long-running-tests">
<h3>Long running tests<a class="headerlink" href="#long-running-tests" title="Permalink to this headline"></a></h3>
<p>Test that consume a significant amount of time during execution can be found in the <code class="docutils literal notranslate"><span class="pre">test/long</span></code> directory and executed as a regular JUnit test or standalone program. Except for the execution time, there’s nothing really special about them. However, ant will execute tests under <code class="docutils literal notranslate"><span class="pre">test/long</span></code> only when using the <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">long-test</span></code> target.</p>
</div>
<div class="section" id="flaky-tests">
<h3>Flaky tests<a class="headerlink" href="#flaky-tests" title="Permalink to this headline"></a></h3>
<p>If a test failure is difficult to reproduce you can always use a shell loop, circle repeat strategy and similar solutions. At the JUnit level <code class="docutils literal notranslate"><span class="pre">RepeatableRunner</span></code> will let you run a JUnit class N times for convenience. On tests that are fast this is a much faster way to iterate than doing it at the shell level. Beware of tests that modify singleton state or similar as they won’t work.</p>
</div>
</div>
<div class="section" id="dtests">
<h2>DTests<a class="headerlink" href="#dtests" title="Permalink to this headline"></a></h2>
<p>One way of doing integration or system testing at larger scale is by using <a class="reference external" href="https://github.com/apache/cassandra-dtest">dtest</a>, which stands for “Cassandra Distributed Tests”. The idea is to automatically setup Cassandra clusters using various configurations and simulate certain use cases you want to test. This is done using Python scripts and <code class="docutils literal notranslate"><span class="pre">ccmlib</span></code> from the <a class="reference external" href="https://github.com/pcmanus/ccm">ccm</a> project. Dtests will setup clusters using this library just as you do running ad-hoc <code class="docutils literal notranslate"><span class="pre">ccm</span></code> commands on your local machine. Afterwards dtests will use the <a class="reference external" href="http://datastax.github.io/python-driver/installation.html">Python driver</a> to interact with the nodes, manipulate the file system, analyze logs or mess with individual nodes.</p>
<p>Using dtests helps us to prevent regression bugs by continually executing tests on the <a class="reference external" href="https://builds.apache.org/">CI server</a> against new patches. Committers will be able to set up build branches there and your reviewer may use the CI environment to run tests for your patch.</p>
<p>The best way to learn how to write dtests is probably by reading the introduction “<a class="reference external" href="http://www.datastax.com/dev/blog/how-to-write-a-dtest">How to Write a Dtest</a>” and by looking at existing, recently updated tests in the project. New tests must follow certain <a class="reference external" href="https://github.com/apache/cassandra-dtest/blob/trunk/CONTRIBUTING.md">style conventions</a> that are being checked before accepting contributions. In contrast to Cassandra, dtest issues and pull-requests are managed on github, therefor you should make sure to link any created dtests in your Cassandra ticket and also refer to the ticket number in your dtest PR.</p>
<p>Creating a good dtest can be tough, but it should not prevent you from submitting patches! Please ask in the corresponding JIRA ticket how to write a good dtest for the patch. In most cases a reviewer or committer will able to support you, and in some cases they may offer to write a dtest for you.</p>
</div>
<div class="section" id="performance-testing">
<h2>Performance Testing<a class="headerlink" href="#performance-testing" title="Permalink to this headline"></a></h2>
<p>Performance tests for Cassandra are a special breed of tests that are not part of the usual patch contribution process. In fact you can contribute tons of patches to Cassandra without ever running performance tests. They are important however when working on performance improvements, as such improvements must be measurable.</p>
<div class="section" id="cassandra-stress-tool">
<h3>Cassandra Stress Tool<a class="headerlink" href="#cassandra-stress-tool" title="Permalink to this headline"></a></h3>
<p>See <a class="reference internal" href="../tools/cassandra_stress.html#cassandra-stress"><span class="std std-ref">Cassandra Stress</span></a></p>
</div>
<div class="section" id="cstar-perf">
<h3>cstar_perf<a class="headerlink" href="#cstar-perf" title="Permalink to this headline"></a></h3>
<p>Another tool available on github is <a class="reference external" href="https://github.com/datastax/cstar_perf">cstar_perf</a> that can be used for intensive performance testing in large clusters or locally. Please refer to the project page on how to set it up and how to use it.</p>
</div>
</div>
<div class="section" id="circleci">
<h2>CircleCI<a class="headerlink" href="#circleci" title="Permalink to this headline"></a></h2>
<p>Cassandra ships with a default <a class="reference external" href="https://circleci.com">CircleCI</a> configuration, to enable running tests on your branches, you need to go the CircleCI website, click “Login” and log in with your github account. Then you need to give CircleCI permission to watch your repositories. Once you have done that, you can optionally configure CircleCI to run tests in parallel - click “Projects”, then your github account and then click the settings for the project. If you leave the parallelism at 1 for Cassandra, only <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">eclipse-warnings</span></code> and <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">test</span></code> will be run. If you up the parallelism to 4, it also runs <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">long-test</span></code>, <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">test-compression</span></code> and <code class="docutils literal notranslate"><span class="pre">ant</span> <span class="pre">stress-test</span></code>.</p>
<p>The configuration for CircleCI is in the <code class="docutils literal notranslate"><span class="pre">.circleci/config.yml</span></code> file. This configuration file is meant to use low resources, you can find equivalent configuration files using more resources in the same <code class="docutils literal notranslate"><span class="pre">.circleci</span></code> directory. Please read the <code class="docutils literal notranslate"><span class="pre">readme.md</span></code> file in that directory for further information. Note that the higher resources are not available in the free tier of CircleCI.</p>
<p>The optional <code class="docutils literal notranslate"><span class="pre">repeated_utest</span></code>/<code class="docutils literal notranslate"><span class="pre">repeated_dtest</span></code> CircleCI jobs run a specific JUnit/Python test repeatedly. In an analogous way, upgrade tests can be run repeatedly with the jobs <code class="docutils literal notranslate"><span class="pre">repeated_upgrade_dtest</span></code>/<code class="docutils literal notranslate"><span class="pre">repeated_jvm_upgrade_dtest</span></code>. This is useful to verify that a certain test is stable. It’s usually a good idea to run these jobs when adding or modifying a test. To specify what test should be run and the number of repetitions you should edit the related evironment variables in the CircleCI configuration file:</p>
<table class="docutils align-default">
<colgroup>
<col style="width: 42%" />
<col style="width: 58%" />
</colgroup>
<thead>
<tr class="row-odd"><th class="head"><p>Variable</p></th>
<th class="head"><p>Description</p></th>
</tr>
</thead>
<tbody>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">REPEATED_UTEST_TARGET</span></code></p></td>
<td><p>The Ant test target to run, for example:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">testsome</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">test-jvm-dtest-some</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">test-cdc</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">test-compression</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">test-system-keyspace-directory</span></code></p></li>
</ul>
</td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">REPEATED_UTEST_CLASS</span></code></p></td>
<td><p>The name of the Java test class to be run multiple times, for
example:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.cql3.ViewTest</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.distributed.test.PagingTest</span></code></p></li>
</ul>
</td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">REPEATED_UTEST_METHODS</span></code></p></td>
<td><p>The optional specific methods within <code class="docutils literal notranslate"><span class="pre">REPEATED_UTEST_CLASS</span></code>
to be run, for example:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">testCompoundPartitionKey</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">testCompoundPartitionKey,testStaticTable</span></code></p></li>
</ul>
</td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">REPEATED_UTEST_COUNT</span></code></p></td>
<td><p>The number of times that the repeated Java test should be run</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">REPEATED_UTEST_STOP_ON_FAILURE</span></code></p></td>
<td><p>Whether the utest iteration should stop on the first failure</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">REPEATED_DTEST_NAME</span></code></p></td>
<td><p>The Python dtest to be run multiple times, for example:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">cqlsh_tests/test_cqlsh.py</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">cqlsh_tests/test_cqlsh.py::TestCqlshSmoke</span></code></p></li>
</ul>
</td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">REPEATED_DTEST_VNODES</span></code></p></td>
<td><p>Whether the repeated Python dtest should use vnodes</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">REPEATED_DTEST_COUNT</span></code></p></td>
<td><p>The number of times that the repeated Python dtest should be
run</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">REPEATED_DTEST_STOP_ON_FAILURE</span></code></p></td>
<td><p>Whether the dtest iteration should stop on the first failure</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">REPEATED_UPGRADE_DTEST_NAME</span></code></p></td>
<td><p>A Python upgrade dtest to be run multiple times, for example:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">upgrade_tests/cql_tests.py</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">upgrade_tests/repair_test.py</span></code></p></li>
</ul>
</td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">REPEATED_UPGRADE_DTEST_COUNT</span></code></p></td>
<td><p>The number of times that the repeated Python upgrade dtest
should be run</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">REPEATED_UPGRADE_DTEST_STOP_ON_</span>
<span class="pre">FAILURE</span></code></p></td>
<td><p>Whether the Python upgrade dtest iteration should stop on the
first failure</p></td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">REPEATED_JVM_UPGRADE_DTEST_CLASS</span></code></p></td>
<td><p>The name of JVM upgrade dtest class to be run multiple times,
for example:</p>
<ul>
<li><div class="line-block">
<div class="line"><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.distributed.upgrade.</span></code></div>
<div class="line"><code class="docutils literal notranslate"><span class="pre">MixedModeAvailabilityV30Test</span></code></div>
</div>
</li>
<li><div class="line-block">
<div class="line"><code class="docutils literal notranslate"><span class="pre">org.apache.cassandra.distributed.upgrade.</span></code></div>
<div class="line"><code class="docutils literal notranslate"><span class="pre">MixedModeConsistencyV3XTest</span></code></div>
</div>
</li>
</ul>
</td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">REPEATED_JVM_UPGRADE_DTEST_METHODS</span></code></p></td>
<td><p>The optional specific methods within
<code class="docutils literal notranslate"><span class="pre">REPEATED_JVM_UPGRADE_DTEST_CLASS</span></code> to be run, for example:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">testAvailabilityV30ToV4</span></code></p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">testAvailabilityV30ToV3X,testAvailabilityV30ToV4</span></code></p></li>
</ul>
</td>
</tr>
<tr class="row-even"><td><p><code class="docutils literal notranslate"><span class="pre">REPEATED_JVM_UPGRADE_DTEST_COUNT</span></code></p></td>
<td><p>The number of times that the repeated JVM upgrade dtest
should be run</p></td>
</tr>
<tr class="row-odd"><td><p><code class="docutils literal notranslate"><span class="pre">REPEATED_JVM_UPGRADE_DTEST_STOP_ON_FAILURE</span></code></p></td>
<td><p>Whether the JVM upgrade dtest iteration should stop on the
first failure</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="patches.html" class="btn btn-neutral float-right" title="Contributing Code Changes" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
<a href="ide.html" class="btn btn-neutral float-left" title="Building and IDE Integration" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<p>
&copy; Copyright 2020, The Apache Cassandra team
</p>
</div>
Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<script type="text/javascript">
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>