LogJobFactory implements AsynchronousSpanSink.JobFactory { public static LogJobFactory withFile(final String file) throws IOException { try (FileOutputStream ignored = new FileOutputStream(file, true)) { return withWriterProvider(new WriterProvider() { @Override public Writer getWriter() throws IOException { return new OutputStreamWriter(new FileOutputStream(file, true), Charset.forName("UTF-8").newEncoder()); } }); } } private  LogJobFactory(WriterProvider writerProvider); static LogJobFactory withWriter(final Writer writer); static LogJobFactory withFile(final String file); @Override Runnable createJob(SpanData data);  }
@Test(expected = IOException.class) public void testCreateWithFileFailsIfNotWriteable() throws Exception { LogJobFactory.withFile("/"); }
@Test public void testCreateWithFileSucceedsIfWriteable() throws Exception { LogJobFactory.withFile("sample.log"); }
@Test(expected = NullPointerException.class) public void testCreateWithNullFile() throws Exception { LogJobFactory.withFile(null); }