blob: d33b82381bc23400ca460d7183bb1faeee78c553 [file] [log] [blame]
import{_ as o,C as c,O as p,P as i,ah as l,Q as s,U as n,ai as t,aW as e}from"./framework-e4340ccd.js";const u={},r=e('<h1 id="developer-document-for-integration-test" tabindex="-1"><a class="header-anchor" href="#developer-document-for-integration-test" aria-hidden="true">#</a> Developer Document for Integration Test</h1><p><strong>Integration test</strong> is one of the phases in software testing, when different software modules are put together and tested as a whole. Integration tests are for evaluating whether a system or component meets the target functional requirements.</p><h2 id="apache-iotdb-integration-test-criteria" tabindex="-1"><a class="header-anchor" href="#apache-iotdb-integration-test-criteria" aria-hidden="true">#</a> Apache IoTDB Integration Test Criteria</h2><h3 id="the-environment-of-the-integration-test-of-apache-iotdb" tabindex="-1"><a class="header-anchor" href="#the-environment-of-the-integration-test-of-apache-iotdb" aria-hidden="true">#</a> The Environment of the integration test of Apache IoTDB</h3><p>There are three kinds of environments for Apache IoTDB integration test, correspondingly <strong>local standalone, Cluster, and remote.</strong> The integration test should be conducted on at least one of them. Details of the three kinds are as follows.</p><ol><li>Local standalone. It is set up for integration testing of IoTDB, the standalone version. Any change of the configurations of IoTDB would require updating the configuration files before starting the database.</li><li>Cluster. It is set up for integration testing of IoTDB, the distribution version (pseudo-distribution). Any change of the configurations of IoTDB would require updating the configuration files before starting the database.</li><li>Remote. It is set up for the integration testing of a remote IoTDB instance, which could be either a standalone instance or a node in a remote cluster. Any change of the configuration is restricted and is not allowed currently.</li></ol><p>Integration test developers need to specify at least one of the environments when writing the tests. Please check the details below.</p><h3 id="black-box-testing" tabindex="-1"><a class="header-anchor" href="#black-box-testing" aria-hidden="true">#</a> Black-Box Testing</h3><p>Black-box testing is a software testing method that evaluates the functionality of a program without regard to its internal structure or how it works. Developers do not need to understand the internal logic of the application for testing. <strong>Apache IoTDB integration tests are conducted as black-box tests. Any test interacting with the system through JDBC or Session API is considered a black-box test case.</strong> Moreover, the validation of the output should also be implemented through the JDBC or Session API.</p><h3 id="steps-of-an-integration-test" tabindex="-1"><a class="header-anchor" href="#steps-of-an-integration-test" aria-hidden="true">#</a> Steps of an integration test</h3><p>Generally, there are three steps to finish the integration test, (1) constructing the test class and annotating the environment, (2) housekeeping to prepare for the test and clean up the environment after the test, and (3) implementing the logic of the integration test. To test IoTDB not under the default configuration, the configuration should be changed before the test, which will be introduced in section 4.</p><img style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;" src="https://gitbox.apache.org/repos/asf?p=iotdb-bin-resources.git;a=blob_plain;f=integration-test/pic/step_en.svg"><h4 id="_1-integration-test-class-it-class-and-annotations" tabindex="-1"><a class="header-anchor" href="#_1-integration-test-class-it-class-and-annotations" aria-hidden="true">#</a> 1. Integration Test Class (IT Class) and Annotations</h4>',13),d={href:"https://github.com/apache/iotdb/tree/master/integration-test",target:"_blank",rel:"noopener noreferrer"},k=s("span",{style:{color:"green"}},"IoTDBAutoCreateSchema",-1),h=s("span",{style:{color:"red"}},"IT",-1),m=e(`<ul><li>Category\`\` Annotation. <strong>When creating new IT classes, the <code>@Category</code> should be introduced explicitly</strong>, and the test environment should be specified by <code>LocalStandaloneIT.class</code>, <code>ClusterIT.class</code>, and <code>RemoteIT.class</code>, which corresponds to the Local Standalone, Cluster and Remote environment respectively. <strong>In general, <code>LocalStandaloneIT.class</code> and <code>ClusterIT.class</code> should both be included</strong>. Only in the case when some functionalities are only supported in the standalone version can we include <code>LocalStandaloneIT.class</code> solely.</li><li>RunWith Annotation. The <code>@RunWith(IoTDBTestRunner.class)</code> annotation should be included in every IT class.</li></ul><div class="language-java line-numbers-mode" data-ext="java"><pre class="language-java"><code><span class="token comment">// Introduce annotations to IoTDBAliasIT.class. The environments include local standalone, cluster and remote. </span>
<span class="token annotation punctuation">@RunWith</span><span class="token punctuation">(</span><span class="token class-name">IoTDBTestRunner</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span>
<span class="token annotation punctuation">@Category</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token class-name">LocalStandaloneIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">,</span> <span class="token class-name">ClusterIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">,</span> <span class="token class-name">RemoteIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">IoTDBAliasIT</span> <span class="token punctuation">{</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
<span class="token punctuation">}</span>
<span class="token comment">// Introduce annotations to IoTDBAlignByDeviceIT.class. The environments include local standalone and cluster. </span>
<span class="token annotation punctuation">@RunWith</span><span class="token punctuation">(</span><span class="token class-name">IoTDBTestRunner</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span>
<span class="token annotation punctuation">@Category</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token class-name">LocalStandaloneIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">,</span> <span class="token class-name">ClusterIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">IoTDBAlignByDeviceIT</span> <span class="token punctuation">{</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="_2-housekeeping-to-prepare-for-the-test-and-clean-up-the-environment-after-the-test" tabindex="-1"><a class="header-anchor" href="#_2-housekeeping-to-prepare-for-the-test-and-clean-up-the-environment-after-the-test" aria-hidden="true">#</a> 2. Housekeeping to Prepare for the Test and Clean up the Environment after the Test</h4><p>Preparations before the test include starting an IoTDB (single or cluster) instance and preparing data for the test. The logic should be implemented in the <code>setUp()</code> method, and the method should follow the annotation <code>@BeforeClass</code> or <code>@Before</code>. The former means that this method is the first method executed for the IT class and is executed only once. The latter indicates that <code>setUp()</code> will be executed before each test method in the IT class.</p><ul><li>Please start IoTDB instance through the factor class, i.e., <code>EnvFactory.getEnv().initBeforeClass()</code>.</li><li>Data preparation for the test includes registering databases, registering time series, and writing time series data as required by the test. It is recommended to implement a separate method within the IT class to prepare the data, such as <code>insertData()</code>. Please try to take advantage of the <code>executeBatch()</code> in JDBC or <code>insertRecords()</code> and <code>insertTablets()</code> in Session API if multiple statements or operations are to be executed.</li></ul><div class="language-java line-numbers-mode" data-ext="java"><pre class="language-java"><code><span class="token annotation punctuation">@BeforeClass</span>
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">setUp</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span>
<span class="token comment">// start an IoTDB instance</span>
<span class="token class-name">EnvFactory</span><span class="token punctuation">.</span><span class="token function">getEnv</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">initBeforeClass</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token comment">// data preparation</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>After the test, please clean up the environment by shut down the connections that have not been closed. This logic should be implemented in the <code>tearDown()</code> method. The <code>tearDown()</code> method follows the annotation <code>@AfterClass</code> or <code>@After</code>. The former means that this method is the last method to execute for the IT class and is executed only once. The latter indicates that <code>tearDown()</code> will be executed after each test method in the IT class.</p><ul><li>If the IoTDB connection is declared as an instance variable and is not closed after the test, please explicitly close it in the <code>tearDown()</code> method.</li><li>The cleaning up should be implemented through the factory class, i.e., <code>EnvFactory.getEnv().cleanAfterClass()</code>.</li></ul><div class="language-java line-numbers-mode" data-ext="java"><pre class="language-java"><code><span class="token annotation punctuation">@AfterClass</span>
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">tearDown</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token comment">// close the connection</span>
<span class="token comment">// clean up the environment</span>
<span class="token class-name">EnvFactory</span><span class="token punctuation">.</span><span class="token function">getEnv</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">cleanAfterClass</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="_3-implementing-the-logic-of-it" tabindex="-1"><a class="header-anchor" href="#_3-implementing-the-logic-of-it" aria-hidden="true">#</a> 3. Implementing the logic of IT</h4><p>IT of Apache IoTDB should be implemented as black-box testing. Please name the method as &quot;functionality&quot;+&quot;Test&quot;, e.g., &quot;<span style="color:green;">selectWithAlias</span><span style="color:red;">Test</span>&quot;. The interaction should be implemented through JDBC or Session API.</p><p>1 With JDBC</p><p>When using the JDBC interface, it is recommended that the connection be established in a try statement. Connections established in this way do not need to be closed in the tearDown method explicitly. Connections need to be established through the factory class, i.e., <code>EnvFactory.getEnv().getConnection()</code>. It is not necessary to specify the IP address or port number. The sample code is shown below.</p><div class="language-java line-numbers-mode" data-ext="java"><pre class="language-java"><code><span class="token annotation punctuation">@Test</span>
<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">someFunctionTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
<span class="token keyword">try</span> <span class="token punctuation">(</span><span class="token class-name">Connection</span> connection <span class="token operator">=</span> <span class="token class-name">EnvFactory</span><span class="token punctuation">.</span><span class="token function">getEnv</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getConnection</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">Statement</span> statement <span class="token operator">=</span> connection<span class="token punctuation">.</span><span class="token function">createStatement</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> <span class="token comment">// execute the statements and test the correctness</span>
<span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">Exception</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>
e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">Assert</span><span class="token punctuation">.</span><span class="token function">fail</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>Please note that,</p><ul><li><strong>It is required to use <code>executeQuery()</code> to query the data from the database and get the ResultSet.</strong></li><li><strong>For updating the database without any return value, it is required to use <code>execute()</code> method to interact with the database.</strong> The sample code is as follows.</li></ul><div class="language-java line-numbers-mode" data-ext="java"><pre class="language-java"><code><span class="token annotation punctuation">@Test</span>
<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">exampleTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span>
<span class="token keyword">try</span> <span class="token punctuation">(</span><span class="token class-name">Connection</span> connection <span class="token operator">=</span> <span class="token class-name">EnvFactory</span><span class="token punctuation">.</span><span class="token function">getEnv</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">getConnection</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">Statement</span> statement <span class="token operator">=</span> connection<span class="token punctuation">.</span><span class="token function">createStatement</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token comment">// use execute() to set the databases</span>
statement<span class="token punctuation">.</span><span class="token function">execute</span><span class="token punctuation">(</span><span class="token string">&quot;CREATE DATABASE root.sg&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// use executeQuery() query the databases</span>
<span class="token keyword">try</span> <span class="token punctuation">(</span><span class="token class-name">ResultSet</span> resultSet <span class="token operator">=</span> statement<span class="token punctuation">.</span><span class="token function">executeQuery</span><span class="token punctuation">(</span><span class="token string">&quot;SHOW DATABASES&quot;</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token keyword">if</span> <span class="token punctuation">(</span>resultSet<span class="token punctuation">.</span><span class="token function">next</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token class-name">String</span> storageGroupPath <span class="token operator">=</span> resultSet<span class="token punctuation">.</span><span class="token function">getString</span><span class="token punctuation">(</span><span class="token string">&quot;database&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">Assert</span><span class="token punctuation">.</span><span class="token function">assertEquals</span><span class="token punctuation">(</span><span class="token string">&quot;root.sg&quot;</span><span class="token punctuation">,</span> storageGroupPath<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span>
<span class="token class-name">Assert</span><span class="token punctuation">.</span><span class="token function">fail</span><span class="token punctuation">(</span><span class="token string">&quot;This ResultSet is empty.&quot;</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>2 With Session API</p><p>Currently, it is not recommended to implement IT with Session API.</p><p>3 Annotations of Environment for the Test Methods</p><p>For test methods, developers can also specify a test environment with the annotation before the method. It is important to note that a case with additional test environment annotations will be tested not only in the specified environment, but also in the environment of the IT class to which the use case belongs. The sample code is as follows.</p><div class="language-java line-numbers-mode" data-ext="java"><pre class="language-java"><code><span class="token annotation punctuation">@RunWith</span><span class="token punctuation">(</span><span class="token class-name">IoTDBTestRunner</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span>
<span class="token annotation punctuation">@Category</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token class-name">LocalStandaloneIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">IoTDBExampleIT</span> <span class="token punctuation">{</span>
<span class="token comment">// This case will only be tested in a local stand-alone test environment</span>
<span class="token annotation punctuation">@Test</span>
<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">theStandaloneCaseTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
<span class="token punctuation">}</span>
<span class="token comment">// The use case will be tested in the local standalone environment, the cluster environment, and the remote test environment.</span>
<span class="token annotation punctuation">@Test</span>
<span class="token annotation punctuation">@Category</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token class-name">ClusterIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">,</span> <span class="token class-name">RemoteIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token keyword">public</span> <span class="token keyword">void</span> <span class="token function">theAllEnvCaseTest</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="_4-change-the-configurations-of-iotdb-when-testing" tabindex="-1"><a class="header-anchor" href="#_4-change-the-configurations-of-iotdb-when-testing" aria-hidden="true">#</a> 4. Change the configurations of IoTDB when testing</h4><p>Sometimes, the configurations of IoTDB need to be changed in order to test the functionalities under certain conditions. Because changing the configurations on a remote machine is troublesome, configuration modification is not allowed in the remote environment. However, it is allowed in the local standalone and cluster environment. Changes of the configuration files should be implemented in the <code>setUp()</code> method, before <code>EnvFactory.getEnv().initBeforeClass()</code>, and should be implemented through ConfigFactory. In <code>tearDown()</code> , please undo all changes of the configurations and revert to its original default settings by ConfigFactory after the environment cleanup (<code>EnvFactory.getEnv().cleanAfterTest()</code>). The example code is as follows.</p><div class="language-java line-numbers-mode" data-ext="java"><pre class="language-java"><code><span class="token annotation punctuation">@RunWith</span><span class="token punctuation">(</span><span class="token class-name">IoTDBTestRunner</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">)</span>
<span class="token annotation punctuation">@Category</span><span class="token punctuation">(</span><span class="token punctuation">{</span><span class="token class-name">LocalStandaloneIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">,</span> <span class="token class-name">ClusterIT</span><span class="token punctuation">.</span><span class="token keyword">class</span><span class="token punctuation">}</span><span class="token punctuation">)</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">IoTDBAlignedSeriesQueryIT</span> <span class="token punctuation">{</span>
<span class="token keyword">protected</span> <span class="token keyword">static</span> <span class="token keyword">boolean</span> enableSeqSpaceCompaction<span class="token punctuation">;</span>
<span class="token keyword">protected</span> <span class="token keyword">static</span> <span class="token keyword">boolean</span> enableUnseqSpaceCompaction<span class="token punctuation">;</span>
<span class="token keyword">protected</span> <span class="token keyword">static</span> <span class="token keyword">boolean</span> enableCrossSpaceCompaction<span class="token punctuation">;</span>
<span class="token annotation punctuation">@BeforeClass</span>
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">setUp</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span>
<span class="token comment">// get the default configurations</span>
enableSeqSpaceCompaction <span class="token operator">=</span> <span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">isEnableSeqSpaceCompaction</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
enableUnseqSpaceCompaction <span class="token operator">=</span> <span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">isEnableUnseqSpaceCompaction</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
enableCrossSpaceCompaction <span class="token operator">=</span> <span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">isEnableCrossSpaceCompaction</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// update configurations</span>
<span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">setEnableSeqSpaceCompaction</span><span class="token punctuation">(</span><span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">setEnableUnseqSpaceCompaction</span><span class="token punctuation">(</span><span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">setEnableCrossSpaceCompaction</span><span class="token punctuation">(</span><span class="token boolean">false</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">EnvFactory</span><span class="token punctuation">.</span><span class="token function">getEnv</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">initBeforeClass</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">AlignedWriteUtil</span><span class="token punctuation">.</span><span class="token function">insertData</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token annotation punctuation">@AfterClass</span>
<span class="token keyword">public</span> <span class="token keyword">static</span> <span class="token keyword">void</span> <span class="token function">tearDown</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">throws</span> <span class="token class-name">Exception</span> <span class="token punctuation">{</span>
<span class="token class-name">EnvFactory</span><span class="token punctuation">.</span><span class="token function">getEnv</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">cleanAfterClass</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token comment">// revert to the default configurations </span>
<span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">setEnableSeqSpaceCompaction</span><span class="token punctuation">(</span>enableSeqSpaceCompaction<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">setEnableUnseqSpaceCompaction</span><span class="token punctuation">(</span>enableUnseqSpaceCompaction<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token class-name">ConfigFactory</span><span class="token punctuation">.</span><span class="token function">getConfig</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">setEnableCrossSpaceCompaction</span><span class="token punctuation">(</span>enableCrossSpaceCompaction<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="q-a" tabindex="-1"><a class="header-anchor" href="#q-a" aria-hidden="true">#</a> Q&amp;A</h2><h3 id="ways-to-check-the-log-after-the-ci-failure" tabindex="-1"><a class="header-anchor" href="#ways-to-check-the-log-after-the-ci-failure" aria-hidden="true">#</a> Ways to check the log after the CI failure</h3><p>1 click <em>Details</em> of the corresponding test</p><img style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;" src="https://gitbox.apache.org/repos/asf?p=iotdb-bin-resources.git;a=blob_plain;f=integration-test/pic/details.png"><p>2 check and download the error log</p><img style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;" src="https://gitbox.apache.org/repos/asf?p=iotdb-bin-resources.git;a=blob_plain;f=integration-test/pic/download1.png"><p>You can also click the <em>summary</em> at the upper left and then check and download the error log.</p><img style="width:100%;max-width:800px;max-height:600px;margin-left:auto;margin-right:auto;display:block;" src="https://gitbox.apache.org/repos/asf?p=iotdb-bin-resources.git;a=blob_plain;f=integration-test/pic/download2.png"><h3 id="commands-for-running-it" tabindex="-1"><a class="header-anchor" href="#commands-for-running-it" aria-hidden="true">#</a> Commands for running IT</h3>`,34),v={href:"https://github.com/apache/iotdb/blob/master/integration-test/README.md",target:"_blank",rel:"noopener noreferrer"};function g(f,b){const a=c("ExternalLinkIcon");return p(),i("div",null,[l(`
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
`),r,s("p",null,[n("When writing new IT classes, the developers are encouraged to create the new ones in the "),s("a",d,[n("integration-test"),t(a)]),n(' module. Except for the classes serving the other test cases, the classes containing integration tests to evaluate the functionality of IoTDB should be named "function"+"IT". For example, the test for auto-registration metadata in IoTDB is named “'),k,h,n("”.")]),m,s("p",null,[n("Please check "),s("a",v,[n("Integration Test For the MPP Architecture"),t(a)]),n(" for details.")])])}const w=o(u,[["render",g],["__file","Integration-Test-refactoring-tutorial.html.vue"]]);export{w as default};