### Question:
S3Bundle implements ConfiguredBundle<C> { public AmazonS3 getClient() { if (s3Client == null) { throw new IllegalStateException("S3 client accessed to early, can't be accessed before run."); } return s3Client; } private  S3Bundle(S3ConfigurationProvider<C> configurationProvider, Tracer tracer); @Override void initialize(Bootstrap<?> bootstrap); @Override void run(C configuration, Environment environment); AmazonS3 getClient(); static InitialBuilder builder();  }### Answer:
@Test() public void shouldProvideClient() { TestApp app = DW.getRule().getApplication(); S3Bundle bundle = app.getS3Bundle(); AmazonS3 client = bundle.getClient(); assertThat(client.getObject("bucket", "key").getObjectContent()).hasContent("data"); }
@Test() public void shouldTraceCalls() { TestApp app = DW.getRule().getApplication(); S3Bundle bundle = app.getS3Bundle(); AmazonS3 client = bundle.getClient(); client.getObject("bucket", "key").getObjectContent(); MockTracer tracer = app.getMockTracer(); assertThat(tracer.finishedSpans()) .extracting(MockSpan::operationName) .contains("GetObjectRequest"); }