blob: 1803707decc4b9576f5e82ca0cbc08da6f6942b0 [file] [log] [blame]
<p>String <code>"enormous"</code>, <code>"large"</code>, <code>"medium"</code>, or
<code>"small"</code>; <a href="#configurable-attributes">nonconfigurable</a>;
default is <code>"medium"</code></p>
<p>Specifies a test target's "heaviness": how much time/resources it needs to run.</p>
<p>Unit tests are considered "small", integration tests "medium", and end-to-end tests "large" or
"enormous". Bazel uses the size to determine a default timeout, which can be overridden using the
<code>timeout</code> attribute. The timeout is for all tests in the BUILD target, not for each
individual test. When the test is run locally, the <code>size</code> is additionally used for
scheduling purposes: Bazel tries to respect <code>--local_{ram,cpu}_resources</code> and not
overwhelm the local machine by running lots of heavy tests at the same time.</p>
<p>Test sizes correspond to the following default timeouts and assumed peak local resource
usages:</p>
<table style="width: 100%">
<tr>
<th>Size</th>
<th>RAM (in MB)</th>
<th>CPU (in CPU cores)</th>
<th>Default timeout</th>
</tr>
<tr>
<td>small</td>
<td>20</td>
<td>1</td>
<td>short (1 minute)</td>
</tr>
<tr>
<td>medium</td>
<td>100</td>
<td>1</td>
<td>moderate (5 minutes)</td>
</tr>
<tr>
<td>large</td>
<td>300</td>
<td>1</td>
<td>long (15 minutes)</td>
</tr>
<tr>
<td>enormous</td>
<td>800</td>
<td>1</td>
<td>eternal (60 minutes)</td>
</tr>
</table>
<p>
The environment variable
<code><a href="${link test-encyclopedia#initial-conditions}">TEST_SIZE</a></code> will be set to
the value of this attribute when spawning the test.
</p>