| <!DOCTYPE HTML> |
| <!-- NewPage --> |
| <html lang="en"> |
| <head> |
| <!-- Generated by javadoc --> |
| <title>org.apache.calcite.test.concurrent (Calcite 1.20.0 Test API)</title> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style"> |
| <link rel="stylesheet" type="text/css" href="../../../../../jquery/jquery-ui.css" title="Style"> |
| <script type="text/javascript" src="../../../../../script.js"></script> |
| <script type="text/javascript" src="../../../../../jquery/jszip/dist/jszip.min.js"></script> |
| <script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script> |
| <!--[if IE]> |
| <script type="text/javascript" src="../../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script> |
| <![endif]--> |
| <script type="text/javascript" src="../../../../../jquery/jquery-3.3.1.js"></script> |
| <script type="text/javascript" src="../../../../../jquery/jquery-migrate-3.0.1.js"></script> |
| <script type="text/javascript" src="../../../../../jquery/jquery-ui.js"></script> |
| </head> |
| <body> |
| <script type="text/javascript"><!-- |
| try { |
| if (location.href.indexOf('is-external=true') == -1) { |
| parent.document.title="org.apache.calcite.test.concurrent (Calcite 1.20.0 Test API)"; |
| } |
| } |
| catch(err) { |
| } |
| //--> |
| var pathtoroot = "../../../../../"; |
| var useModuleDirectories = true; |
| loadScripts(document, 'script');</script> |
| <noscript> |
| <div>JavaScript is disabled on your browser.</div> |
| </noscript> |
| <header role="banner"> |
| <nav role="navigation"> |
| <div class="fixedNav"> |
| <!-- ========= START OF TOP NAVBAR ======= --> |
| <div class="topNav"><a id="navbar.top"> |
| <!-- --> |
| </a> |
| <div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div> |
| <a id="navbar.top.firstrow"> |
| <!-- --> |
| </a> |
| <ul class="navList" title="Navigation"> |
| <li><a href="../../../../../index.html">Overview</a></li> |
| <li class="navBarCell1Rev">Package</li> |
| <li>Class</li> |
| <li><a href="package-use.html">Use</a></li> |
| <li><a href="package-tree.html">Tree</a></li> |
| <li><a href="../../../../../deprecated-list.html">Deprecated</a></li> |
| <li><a href="../../../../../index-all.html">Index</a></li> |
| <li><a href="../../../../../help-doc.html">Help</a></li> |
| </ul> |
| </div> |
| <div class="subNav"> |
| <ul class="navList" id="allclasses_navbar_top"> |
| <li><a href="../../../../../allclasses.html">All Classes</a></li> |
| </ul> |
| <ul class="navListSearch"> |
| <li><label for="search">SEARCH:</label> |
| <input type="text" id="search" value="search" disabled="disabled"> |
| <input type="reset" id="reset" value="reset" disabled="disabled"> |
| </li> |
| </ul> |
| <div> |
| <script type="text/javascript"><!-- |
| allClassesLink = document.getElementById("allclasses_navbar_top"); |
| if(window==top) { |
| allClassesLink.style.display = "block"; |
| } |
| else { |
| allClassesLink.style.display = "none"; |
| } |
| //--> |
| </script> |
| <noscript> |
| <div>JavaScript is disabled on your browser.</div> |
| </noscript> |
| </div> |
| <a id="skip.navbar.top"> |
| <!-- --> |
| </a></div> |
| <!-- ========= END OF TOP NAVBAR ========= --> |
| </div> |
| <div class="navPadding"> </div> |
| <script type="text/javascript"><!-- |
| $('.navPadding').css('padding-top', $('.fixedNav').css("height")); |
| //--> |
| </script> |
| </nav> |
| </header> |
| <main role="main"> |
| <div class="header"> |
| <h1 title="Package" class="title">Package org.apache.calcite.test.concurrent</h1> |
| </div> |
| <div class="contentContainer"> |
| <section role="region"><a id="package.description"> |
| <!-- --> |
| </a> |
| <div class="block">A framework for concurrent JDBC unit tests. |
| |
| <p>The class <code>ConcurrentCommandGenerator</code> provides a Java API for |
| constructing concurrent JDBC tests: an instance of the class represents a |
| test case, which contains several sequences of SQL commands (abstracted as |
| subclasses of <code>ConcurrentCommand</code>). Each sequence is run in its |
| own thread as a separate jdbc client (ie a separate |
| <code>java.sql.Connection</code>). There are facilties to synchronize these |
| command threads. Only a simple command sequence is supported: no branching, |
| no looping.</p> |
| |
| <p>An alternative is to define a test by writing a test script in |
| <code>mtsql</code> format, as described below. An instance of |
| <code>ConcurrentCommandScript</code> parses and executes a script.</p> |
| |
| <h3>Script Format</h3> |
| |
| <h4>Syntax:</h4> |
| |
| <p>The syntactic structure of an <i>mtsql</i> script is: |
| |
| <blockquote><pre> |
| <directive>* |
| <setup section>? |
| <cleanup section>? |
| <thread section>+ |
| |
| <directive> := @[no]lockstep | @enable | @disable |
| <setup section> := @setup <basic command>* @end |
| <cleanup section> := @setup <basic command>* @end |
| <thread section> := @thread <thread-name>? |
| <command>* @end |
| |
| <command> := |
| <basic command> | |
| <command prefix>? <threadly command> | |
| <synchronization point> |
| </pre></blockquote> |
| |
| <p>Blank lines and comments are allowed anywhere. |
| A comment starts with two hyphens and runs to the end of the line. |
| Command names start with an '@'. |
| Some commands run to the end of the line; but a command that contains SQL |
| can |
| span lines and ends with a semicolon. |
| |
| <h4>Semantics:</h4> |
| |
| <p>Running a section means running its commands in sequence. |
| First the setup section (if any) is run. |
| Next all the thread sections are run at once, each in its own thread. |
| When all these threads complete, the cleanup section (if any) is run. |
| |
| <h4>Synchronization:</h4> |
| |
| <p>The threads are synchronized by inserting synchronization points |
| (@sync).</p> |
| |
| <p>When a thread reaches a @sync, it waits until all threads are waiting |
| on the same @sync: then all threads proceed. @sync points have no |
| names. Clearly all thread sections must contain the same number of @sync |
| points.</p> |
| |
| <p>The directive @lockstep has the same effect as adding a @sync |
| after each command in every thread section. Clearly it requires that all |
| thread sections have the same number of commands. The default is the antonym |
| @nolockstep.</p> |
| |
| <p>The directive @disable means "skip this script". The deault is the |
| antonym @enable.</p> |
| |
| |
| <h4>Error handling: </h4> |
| |
| <p>When a sql command fails, the rest of its section is skipped. However, if |
| the attribute <i>force</i> is true the error is ignored, and the section |
| continues. <i>force</i> has an independent value in each section. Within a |
| section it can be toggled using the sql directive <code>!SET FORCE |
| <i>val</i></code>, where <i>val</i> can be <i>true, false, on, off.</i> (This |
| is modelled after sqlline and sqllineClient. Other sqlline |
| <i>!-</i>directives are ignored.)</p> |
| |
| <p>An error in a thread section will stop that thread, but the other threads |
| continue (with one fewer partner to synchronize with), and finally the |
| cleanup section runs. If the setup section quits, then only the cleanup |
| section is run.</p> |
| |
| <h4>Basic Commands (allowed in any section):</h4> |
| |
| <blockquote><pre> |
| <SQL statement>: |
| An SQL statement terminated by a semicolon. The statement can span lines. |
| </pre></blockquote> |
| |
| <blockquote><pre> |
| @include FILE |
| Reads and executes the contents of FILE, another mtsql script. |
| Inclusions may nest. |
| </pre></blockquote> |
| |
| <h4>Threaded Commands (allowed only in a @thread section):</h4> |
| |
| <blockquote><pre> |
| @sleep N -- thread sleeps for N milliseconds |
| @echo MESSAGE -- prints the message to stdout |
| |
| <SQL statement> ';' -- executes the SQL |
| @timeout N <SQL> ';' -- executes the SQL with the given ms timeout |
| @rowlimit N <SQL> ';' -- executes the SQL, stops after N rows |
| @err <SQL> ';' -- executes the SQL, expecting it to fail |
| |
| @repeat N <command>+ @end |
| Denotes a repeated block of commands, with repeat count = N. |
| N must be positive. |
| |
| @prepare SQL-STATEMENT ';' |
| Prepares the sql. A thread has at most one prepared statement at a time. |
| |
| @print FORMAT |
| Sets the result-printing format for the current prepared statement. |
| FORMAT is a sequence of the phrases: |
| none -- means print nothing |
| all -- means print all rows (the default) |
| every N -- means print the rows 0, N, 2N, etc. |
| count -- means print row number (starts with 0). |
| time -- means print the time each printed row was fetched |
| total -- means print a final summary, with row count and |
| net fetch time (not including any timeout). |
| |
| (Sorry, no way yet to print selected columns, to print time in a special way, |
| etc.) |
| |
| @fetch <timeout>? |
| Starts fetching and printing result rows, with an optional timeout (in |
| msecs). Stop on EOD or on timeout. |
| |
| @close |
| Closes the current prepared statement. However that an open prepared |
| statement will be closed automatically at the end of its thread. |
| |
| @shell <Shell Command> |
| Runs the command in a spawned subshell, proceeds after it concludes, but |
| quits if it fails. For @shell and @echo, the command or message |
| runs to the end of the line in the script, but can be continued if the |
| line ends with a single '\'. |
| </pre></blockquote> |
| |
| <h4>Substituted Variables</h4> |
| |
| <p>Needed mainly to pass arguments to the command of @shell, but also |
| useful to |
| parameterize SQL statements, timeout values etc. |
| |
| <ul> |
| <li>Variable Expansion: If VAR is a declared variable, $VAR is replaced |
| by the value of VAR. Quotes are ignored. $$ expands to $. A variable |
| cannot expand to a mtsql command name.</li> |
| |
| <li>Variable Declaration: Before being used, a script variable must be |
| explicitly declared in the script (or an included script) |
| by a @var command.</li> |
| </ul> |
| |
| <blockquote><pre> |
| @var VAR |
| Declares a variable VAR |
| @var VAR1 VAR2 ... VARn |
| Declares n variables. |
| </pre></blockquote> |
| |
| <p>The initial value of a script variable VAR is taken from the shell |
| environment variable of the same name. The value can be set to a |
| different value when the script is run, by employing a phrase |
| VAR=VALUE on the mtsql command line.</p> |
| |
| <h4>Stand-Alone Tool</h4> |
| |
| <p>A command-line tool that runs an mtsql script against a specified JDBC |
| connection,a nd prints the query results. (But see @print command to |
| filter the output.)</p> |
| |
| <p> Usage: mtsql [-qvg] -u SERVER -d DRIVER [-n USER] [-p PASSWORD] |
| [VAR=VALUE]* SCRIPT [SCRIPT]*<br> |
| Flags: -q : (quiet) do not print results.<br> |
| -v : (verbose) trace as script is parsed.<br> |
| -g : (debug) print command lists before starting the threads<br> |
| -u SERVER : sets the target; a JDBC URL.<br> |
| -d DRIVER : sets the jdbc driver; a class on the classpath<br> |
| VAR=VALUE : binds the script variable VAR to the VALUE; VAR must be |
| declared at the beginning of the script(s) in a @var command.</p> |
| |
| |
| <h4>Example Script</h4> |
| |
| <blockquote><pre>-- redundant: |
| @nolockstep |
| |
| -- Two threads reading the same data. |
| @thread 1,2 |
| -- pre execute the SQL to prime the pumps |
| @timeout 1000 select * from sales.bids; |
| |
| @prepare select * from sales.bids; |
| |
| -- rendezvous with writer thread |
| @sync |
| @fetch 15000 |
| @sync |
| @close |
| @end |
| |
| @thread writer |
| -- rendezvous with reader threads |
| @sync |
| @sleep 5000 |
| insert into sales.bids |
| values(1, 'ORCL', 100, 12.34, 10000, 'Oracle at 12.34'); |
| commit; |
| insert into sales.bids |
| values(2, 'MSFT', 101, 23.45, 20000, 'Microsoft at 23.45'); |
| commit; |
| |
| -- real test has more inserts here |
| |
| @sync |
| @end</pre></blockquote> |
| |
| <h3>Example Output File</h3> |
| |
| <p>The output from each thread is stored in a temporary file until |
| the test completes. At that point, the files are merged together |
| into a single <code>.log</code> file containing the results of each |
| thread, in the order the threads were defined. The output for the |
| example script looks like: |
| |
| <blockquote><pre>-- thread 1 |
| > select * from sales.bids; |
| +---------+------------+ |
| | DEPTNO | NAME | |
| +---------+------------+ |
| | 10 | Sales | |
| | 20 | Marketing | |
| | 30 | Accounts | |
| +---------+------------+ |
| > |
| > select * from sales.bids; |
| +---------+------------+ |
| | DEPTNO | NAME | |
| +---------+------------+ |
| | 10 | Sales | |
| | 20 | Marketing | |
| | 30 | Accounts | |
| +---------+------------+ |
| |
| -- end of thread 1 |
| |
| -- thread 2 |
| > select * from sales.bids; |
| +---------+------------+ |
| | DEPTNO | NAME | |
| +---------+------------+ |
| | 10 | Sales | |
| | 20 | Marketing | |
| | 30 | Accounts | |
| +---------+------------+ |
| > |
| > select * from sales.bids; |
| +---------+------------+ |
| | DEPTNO | NAME | |
| +---------+------------+ |
| | 10 | Sales | |
| | 20 | Marketing | |
| | 30 | Accounts | |
| +---------+------------+ |
| |
| -- end of thread 2 |
| |
| -- thread writer |
| > insert into sales.bids |
| > values(1, 'ORCL', 100, 12.34, 10000, 'Oracle at 12.34'); |
| 1 row affected. |
| > commit; |
| > insert into sales.bids |
| > values(2, 'MSFT', 101, 23.45, 20000, 'Microsoft at 23.45'); |
| 1 row affected. |
| > commit; |
| -- end of thread writer</pre></blockquote> |
| |
| <p>(Yes the results of the select statements are obviously wrong.) |
| |
| <h3>Open Issues</h3> |
| |
| <ul> |
| <li>Repeating tests for a period of time isn't supported.</li> |
| </ul></div> |
| </section> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <table class="typeSummary"> |
| <caption><span>Interface Summary</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Interface</th> |
| <th class="colLast" scope="col">Description</th> |
| </tr> |
| <tbody> |
| <tr class="altColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestCommand</a></th> |
| <td class="colLast"> |
| <div class="block">ConcurrentTestCommand represents a command, sequentially executed by |
| <a href="ConcurrentTestCommandExecutor.html" title="class in org.apache.calcite.test.concurrent"><code>ConcurrentTestCommandExecutor</code></a>, during a concurrency test</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestPluginCommand.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestPluginCommand</a></th> |
| <td class="colLast"> |
| <div class="block">Used to extend functionality of mtsql.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestPluginCommand.TestContext.html" title="interface in org.apache.calcite.test.concurrent">ConcurrentTestPluginCommand.TestContext</a></th> |
| <td class="colLast"> |
| <div class="block">Test context.</div> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li class="blockList"> |
| <table class="typeSummary"> |
| <caption><span>Class Summary</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Class</th> |
| <th class="colLast" scope="col">Description</th> |
| </tr> |
| <tbody> |
| <tr class="altColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandExecutor.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandExecutor</a></th> |
| <td class="colLast"> |
| <div class="block">ConcurrentTestCommandExecutor is a thread that executes a sequence of |
| <a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent"><code>commands</code></a> on a JDBC connection.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandExecutor.Sync.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandExecutor.Sync</a></th> |
| <td class="colLast"> |
| <div class="block">Synchronization object that allows multiple |
| ConcurrentTestCommandExecutors to execute commands in lock-step.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandGenerator.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator</a></th> |
| <td class="colLast"> |
| <div class="block">ConcurrentTestCommandGenerator creates instances of |
| <a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent"><code>ConcurrentTestCommand</code></a> that perform specific actions in a specific |
| order and within the context of a test thread |
| (<a href="ConcurrentTestCommandExecutor.html" title="class in org.apache.calcite.test.concurrent"><code>ConcurrentTestCommandExecutor</code></a>).</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandGenerator.AbstractCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.AbstractCommand</a></th> |
| <td class="colLast"> |
| <div class="block">abstract base to handle SQLExceptions</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandGenerator.AutoSynchronizationCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.AutoSynchronizationCommand</a></th> |
| <td class="colLast"> |
| <div class="block">AutoSynchronizationCommand is idential to SynchronizationCommand, except |
| that it is generated automatically by the test harness and is not counted |
| when displaying the step number in which an error occurred.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandGenerator.CloseCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.CloseCommand</a></th> |
| <td class="colLast"> |
| <div class="block">CloseCommand closes a previously prepared statement.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandGenerator.CommandWithTimeout.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.CommandWithTimeout</a></th> |
| <td class="colLast"> |
| <div class="block">Command that executes statements with a given timeout.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandGenerator.CommitCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.CommitCommand</a></th> |
| <td class="colLast"> |
| <div class="block">CommitCommand commits pending transactions via |
| <code>Connection.commit()</code>.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandGenerator.DdlCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.DdlCommand</a></th> |
| <td class="colLast"> |
| <div class="block">DdlCommand executes DDL commands.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandGenerator.ExplainCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.ExplainCommand</a></th> |
| <td class="colLast"> |
| <div class="block">ExplainCommand executes explain plan commands.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandGenerator.FailedThread.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.FailedThread</a></th> |
| <td class="colLast"> |
| <div class="block">Describes a thread that failed</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandGenerator.FetchAndCompareCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.FetchAndCompareCommand</a></th> |
| <td class="colLast"> |
| <div class="block">FetchAndCompareCommand executes a previously prepared statement stored in |
| the ConcurrentTestCommandExecutor and then validates the returned |
| rows against expected data.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandGenerator.InsertCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.InsertCommand</a></th> |
| <td class="colLast"> |
| <div class="block">InsertCommand exeutes an insert, update or delete SQL statement.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandGenerator.PrepareCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.PrepareCommand</a></th> |
| <td class="colLast"> |
| <div class="block">PrepareCommand creates a <code>PreparedStatement</code>.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandGenerator.RollbackCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.RollbackCommand</a></th> |
| <td class="colLast"> |
| <div class="block">RollbackCommand rolls back pending transactions via |
| <code>Connection.rollback()</code>.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandGenerator.SleepCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.SleepCommand</a></th> |
| <td class="colLast"> |
| <div class="block">SleepCommand causes the execution thread to wait for all other threads in |
| the test before continuing.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandGenerator.SynchronizationCommand.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandGenerator.SynchronizationCommand</a></th> |
| <td class="colLast"> |
| <div class="block">SynchronizationCommand causes the execution thread to wait for all other |
| threads in the test before continuing.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandScript.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandScript</a></th> |
| <td class="colLast"> |
| <div class="block">ConcurrentTestCommandScript creates instances of |
| <a href="ConcurrentTestCommand.html" title="interface in org.apache.calcite.test.concurrent"><code>ConcurrentTestCommand</code></a> that perform specific actions in a specific |
| order and within the context of a test thread |
| (<a href="ConcurrentTestCommandExecutor.html" title="class in org.apache.calcite.test.concurrent"><code>ConcurrentTestCommandExecutor</code></a>).</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandScript.CommandWithTimeout.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandScript.CommandWithTimeout</a></th> |
| <td class="colLast"> |
| <div class="block">Command that has a timeout.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandScript.CommandWithTimeoutAndRowLimit.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandScript.CommandWithTimeoutAndRowLimit</a></th> |
| <td class="colLast"> |
| <div class="block">Command with timeout and row limit.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandScript.StateAction.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandScript.StateAction</a></th> |
| <td class="colLast"> |
| <div class="block">State action.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandScript.StateDatum.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandScript.StateDatum</a></th> |
| <td class="colLast"> |
| <div class="block">State datum.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommandScript.Tool.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommandScript.Tool</a></th> |
| <td class="colLast"> |
| <div class="block">Standalone client test tool.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestPlugin.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestPlugin</a></th> |
| <td class="colLast"> |
| <div class="block">Used to extend functionality of mtsql.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestTimedCommandGenerator.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestTimedCommandGenerator</a></th> |
| <td class="colLast"> |
| <div class="block">ConcurrentTestTimedCommandGenerator extends |
| <a href="ConcurrentTestCommandGenerator.html" title="class in org.apache.calcite.test.concurrent"><code>ConcurrentTestCommandGenerator</code></a> and repeats the configured command |
| sequence until a certain amount of time has elapsed.</div> |
| </td> |
| </tr> |
| <tr class="rowColor"> |
| <th class="colFirst" scope="row"><a href="SamplePlugin.html" title="class in org.apache.calcite.test.concurrent">SamplePlugin</a></th> |
| <td class="colLast"> |
| <div class="block">Sample mtsql plugin.</div> |
| </td> |
| </tr> |
| <tr class="altColor"> |
| <th class="colFirst" scope="row"><a href="SamplePlugin.DescribeResultSet.html" title="class in org.apache.calcite.test.concurrent">SamplePlugin.DescribeResultSet</a></th> |
| <td class="colLast"> |
| <div class="block">Command that describes a result set.</div> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| <li class="blockList"> |
| <table class="typeSummary"> |
| <caption><span>Exception Summary</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Exception</th> |
| <th class="colLast" scope="col">Description</th> |
| </tr> |
| <tbody> |
| <tr class="altColor"> |
| <th class="colFirst" scope="row"><a href="ConcurrentTestCommand.ShouldHaveFailedException.html" title="class in org.apache.calcite.test.concurrent">ConcurrentTestCommand.ShouldHaveFailedException</a></th> |
| <td class="colLast"> |
| <div class="block">Indicates that a command should have failed, but instead succeeded, which |
| is a test error</div> |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </li> |
| </ul> |
| </div> |
| </main> |
| <footer role="contentinfo"> |
| <nav role="navigation"> |
| <!-- ======= START OF BOTTOM NAVBAR ====== --> |
| <div class="bottomNav"><a id="navbar.bottom"> |
| <!-- --> |
| </a> |
| <div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div> |
| <a id="navbar.bottom.firstrow"> |
| <!-- --> |
| </a> |
| <ul class="navList" title="Navigation"> |
| <li><a href="../../../../../index.html">Overview</a></li> |
| <li class="navBarCell1Rev">Package</li> |
| <li>Class</li> |
| <li><a href="package-use.html">Use</a></li> |
| <li><a href="package-tree.html">Tree</a></li> |
| <li><a href="../../../../../deprecated-list.html">Deprecated</a></li> |
| <li><a href="../../../../../index-all.html">Index</a></li> |
| <li><a href="../../../../../help-doc.html">Help</a></li> |
| </ul> |
| </div> |
| <div class="subNav"> |
| <ul class="navList" id="allclasses_navbar_bottom"> |
| <li><a href="../../../../../allclasses.html">All Classes</a></li> |
| </ul> |
| <div> |
| <script type="text/javascript"><!-- |
| allClassesLink = document.getElementById("allclasses_navbar_bottom"); |
| if(window==top) { |
| allClassesLink.style.display = "block"; |
| } |
| else { |
| allClassesLink.style.display = "none"; |
| } |
| //--> |
| </script> |
| <noscript> |
| <div>JavaScript is disabled on your browser.</div> |
| </noscript> |
| </div> |
| <a id="skip.navbar.bottom"> |
| <!-- --> |
| </a></div> |
| <!-- ======== END OF BOTTOM NAVBAR ======= --> |
| </nav> |
| <p class="legalCopy"><small>Copyright © 2012–2019 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p> |
| </footer> |
| </body> |
| </html> |