### Question:
Trace { public static Tracer trace(String desc, Parameter... parameters) { TraceCollector collector = _tracer.get(); if (collector == null) { return DO_NOTHING; } TracerImpl tracer = new TracerImpl(desc, parameters, collector.getNextId(), collector.getScope()); collector.add(tracer); return tracer; }  static String getNodeName(); static void setNodeName(String nodeName); static void setupTrace(String rootId); static void setupTrace(String rootId, String requestId); static Parameter param(String name, Object value); static void tearDownTrace(); static Tracer trace(String desc, Parameter... parameters); static TraceStorage getStorage(); static void setStorage(TraceStorage storage); static Runnable getRunnable(final Runnable runnable); static Callable<V> getCallable(final Callable<V> callable); static Collection<? extends Callable<V>> getCallables(final Collection<? extends Callable<V>> callables); static TraceId getTraceId(); static boolean isTraceRunning(); static ExecutorService getExecutorService(final ExecutorService service);  }### Answer:
@Test public void testTrace() throws IOException { Trace.setStorage(new BaseTraceStorage(new BlurConfiguration()) { @Override public void store(TraceCollector collector) { assertEquals("test", collector.getId().getRootId()); assertEquals(3, collector.getTraces().size()); } @Override public void close() throws IOException { } }); Trace.setupTrace("test", null); Tracer trace = Trace.trace("1"); long meth1; try { meth1 = meth1(); } finally { trace.done(); } System.out.println(meth1); Trace.tearDownTrace(); }
@Test public void testNoTrace() { Tracer trace = Trace.trace("1"); long meth1; try { meth1 = meth1(); } finally { trace.done(); } System.out.println(meth1); }