001package org.nuxeo.runtime.test.runner;
002
003import org.apache.log4j.MDC;
004import org.junit.runners.model.FrameworkMethod;
005
006import com.google.inject.Binder;
007
008public class MDCFeature implements RunnerFeature {
009
010    protected static final String F_TEST = "fTest";
011
012    protected static final String F_SUITE = "fSuite";
013
014    protected static final String F_STATE = "fState";
015
016    @Override
017    public void initialize(FeaturesRunner runner) throws Exception {
018        MDC.put(F_STATE, "initialize");
019    }
020
021    @Override
022    public void configure(FeaturesRunner runner, Binder binder) {
023        MDC.put(F_STATE, "configure");
024    }
025
026    @Override
027    public void beforeRun(FeaturesRunner runner) throws Exception {
028        MDC.put(F_STATE, "beforeRun");
029    }
030
031    @Override
032    public void afterRun(FeaturesRunner runner) throws Exception {
033        MDC.put(F_STATE, "afterRun");
034    }
035
036    @Override
037    public void start(FeaturesRunner runner) throws Exception {
038        MDC.put(F_STATE, "start");
039    }
040
041    @Override
042    public void testCreated(Object test) throws Exception {
043        MDC.put(F_STATE, "testCreated");
044        MDC.put(F_SUITE, test.getClass());
045    }
046
047    @Override
048    public void stop(FeaturesRunner runner) throws Exception {
049        MDC.remove(F_STATE);
050        MDC.remove(F_SUITE);
051        MDC.remove(F_TEST);
052    }
053
054    @Override
055    public void beforeSetup(FeaturesRunner runner) throws Exception {
056        MDC.put(F_STATE, "beforeSetup");
057    }
058
059    @Override
060    public void afterTeardown(FeaturesRunner runner) throws Exception {
061        MDC.put(F_STATE, "afterTeardown");
062    }
063
064    @Override
065    public void beforeMethodRun(FeaturesRunner runner, FrameworkMethod method, Object test) throws Exception {
066        MDC.put(F_STATE, "beforeMethodRun");
067        MDC.put(F_TEST, method.getMethod().getName());
068    }
069
070    @Override
071    public void afterMethodRun(FeaturesRunner runner, FrameworkMethod method, Object test) throws Exception {
072        MDC.put(F_STATE, "afterMethodRun");
073        MDC.remove(F_TEST);
074    }
075
076}