org.apache.lucene.util

## Class TestRuleLimitSysouts

- java.lang.Object
- - com.carrotsearch.randomizedtesting.rules.TestRuleAdapter
  - - org.apache.lucene.util.TestRuleLimitSysouts

All Implemented Interfaces:
  org.junit.rules.TestRule

    public class TestRuleLimitSysouts
    extends com.carrotsearch.randomizedtesting.rules.TestRuleAdapter

This test rule serves two purposes:

- it fails the test if it prints too much to stdout and stderr (tests that chatter too much are discouraged)
- the rule ensures an absolute hard limit of stuff written to stdout and stderr to prevent accidental infinite loops from filling all available disk space with persisted output.

The rule is not enforced for certain test types (see `isEnforced()`).

### Nested Class Summary

Nested Classes
`static interface` `TestRuleLimitSysouts.Limit` An annotation specifying the limit of bytes per class.

### Field Summary

Fields
`static long` `DEFAULT_HARD_LIMIT` Max hard limit of sysout bytes.
`static long` `DEFAULT_LIMIT` Max limit of bytes printed to either `System.out` or `System.err`.
`static int` `MAX_LIMIT` Maximum limit allowed for `TestRuleLimitSysouts.Limit.bytes()` before sysout check suppression is suggested.

### Constructor Summary

Constructors
Constructor and Description
`TestRuleLimitSysouts(TestRuleMarkFailure failureMarker)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`protected void` `afterAlways(List<Throwable> errors)`
`protected void` `afterIfSuccessful()` We're only interested in failing the suite if it was successful (otherwise just propagate the original problem and don't bother doing anything else).
`protected void` `before()`
`static void` `checkCaptureStreams()` Ensures `System.out` and `System.err` point to delegate streams.
`protected boolean` `isEnforced()`

### Methods inherited from class com.carrotsearch.randomizedtesting.rules.TestRuleAdapter

`apply`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### DEFAULT_LIMIT

    public static final long DEFAULT_LIMIT

Max limit of bytes printed to either `System.out` or `System.err`. This limit is enforced per-class (suite).

See Also:
  Constant Field Values

#### DEFAULT_HARD_LIMIT

    public static final long DEFAULT_HARD_LIMIT

Max hard limit of sysout bytes.

See Also:
  Constant Field Values

#### MAX_LIMIT

    public static final int MAX_LIMIT

Maximum limit allowed for `TestRuleLimitSysouts.Limit.bytes()` before sysout check suppression is suggested.

See Also:
  Constant Field Values

### Constructor Detail

#### TestRuleLimitSysouts

    public TestRuleLimitSysouts(TestRuleMarkFailure failureMarker)

### Method Detail

#### before

    protected void before()
                   throws Throwable

Overrides:
  `before` in class `com.carrotsearch.randomizedtesting.rules.TestRuleAdapter`
Throws:
  `Throwable`

#### checkCaptureStreams

    public static void checkCaptureStreams()

Ensures `System.out` and `System.err` point to delegate streams.

#### isEnforced

    protected boolean isEnforced()

#### afterIfSuccessful

    protected void afterIfSuccessful()
                              throws Throwable

We're only interested in failing the suite if it was successful (otherwise just propagate the original problem and don't bother doing anything else).

Overrides:
  `afterIfSuccessful` in class `com.carrotsearch.randomizedtesting.rules.TestRuleAdapter`
Throws:
  `Throwable`

#### afterAlways

    protected void afterAlways(List<Throwable> errors)
                        throws Throwable

Overrides:
  `afterAlways` in class `com.carrotsearch.randomizedtesting.rules.TestRuleAdapter`
Throws:
  `Throwable`