drill-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paul Rogers (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (DRILL-5203) Provide per-test control over logging for unit tests
Date Tue, 21 Feb 2017 19:40:44 GMT

     [ https://issues.apache.org/jira/browse/DRILL-5203?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Paul Rogers resolved DRILL-5203.
--------------------------------
    Resolution: Fixed

Added as part of the new "cluster fixture" unit test framework.

> Provide per-test control over logging for unit tests
> ----------------------------------------------------
>
>                 Key: DRILL-5203
>                 URL: https://issues.apache.org/jira/browse/DRILL-5203
>             Project: Apache Drill
>          Issue Type: Improvement
>          Components: Tools, Build & Test
>    Affects Versions: 1.9.0
>            Reporter: Paul Rogers
>            Assignee: Paul Rogers
>            Priority: Minor
>
> Drill provides extensive logging. In production, users typically turn on all logging
to some useful level, say WARN for normal operation or DEBUG when problems occur.
> Drill has a wide variety of unit tests, each of which covers some particular part of
the product. When working in that area, we wish to turn on logging just for that one area,
and often just for the test being used to drive development (in Test-Driven Development fashion.)
> Today, we control logging only via the single, shared {{logback.xml}} file in {{$DRILL_HOME/conf}}
in production, and the {{logback-test.xml}} file in the {{src/resources}} directory during
development. This is a very blunt tool: it affects all tests and is cumbersome to use on a
per-test basis.
> This, then is the motivation for a "log fixture": a simple piece of code that lets us
turn on very targeted logging for the duration of a single test, then restore the defaults
afterwards.
> Example:
> {code}
>   @Test
>   public void testSomething() throws Exception {
>     LogFixtureBuilder logBuilder = LogFixture.builder()
>         .toConsole()
>         .disable() // Turn off all logging...
>         // Except for this one logger
>         .logger(ExternalSortBatch.class, Level.DEBUG);
>     try (LogFixture logs = logBuilder.build()) {
>       // Do the test here: the one logger is set to debug to the console
>     }
>     // Logging back to configured settings
>   }
> {code}
> Alternatively, the settings can affect an entire test class:
> {code}
>   private static LogFixture logFixture;
>   @BeforeClass
>   public static void setup() {
>     logFixture = LogFixture.builder()
>         .toConsole()
>         .disable()
>         .logger(ExternalSortBatch.class, Level.DEBUG)
>         .build();
>   }
>   @AfterClass
>   public void tearDown() {
>     logFixture.close();
>   }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message