@AfterClass
 public static void tearDownClass() {
   if (executorService != null) {
     executorService.shutdownNow();
   }
   if (fakeS3 != null) {
     fakeS3.shutdown();
   }
 }
  @BeforeClass
  public static void setUpClass() throws IOException, InterruptedException, URISyntaxException {
    File dir =
        new File(new File("target", UUID.randomUUID().toString()), "fakes3_root").getAbsoluteFile();
    Assert.assertTrue(dir.mkdirs());
    fakeS3Root = dir.getAbsolutePath();
    port = getFreePort();
    fakeS3 = new FakeS3(fakeS3Root, port);
    Assume.assumeTrue("Please install fakes3 in your system", fakeS3.fakes3Installed());
    // Start the fakes3 server
    executorService = Executors.newSingleThreadExecutor();
    executorService.submit(fakeS3);

    populateFakes3();
  }