@Test
 @LocalTachyonClusterResource.Config(
     tachyonConfParams = {
       Constants.SECURITY_AUTHENTICATION_TYPE,
       "CUSTOM",
       Constants.SECURITY_AUTHENTICATION_CUSTOM_PROVIDER,
       NameMatchAuthenticationProvider.FULL_CLASS_NAME
     },
     startCluster = false)
 public void customAuthenticationDenyConnectTest() throws Exception {
   /**
    * Using tachyon as loginUser for unit testing, only tachyon user is allowed to connect to
    * Tachyon Master.
    */
   System.setProperty(Constants.SECURITY_LOGIN_USERNAME, "tachyon");
   mLocalTachyonClusterResource.start();
   // Using no-tachyon as loginUser to connect to Master, the IOException will be thrown
   clearLoginUser();
   mThrown.expect(ConnectionFailedException.class);
   System.setProperty(Constants.SECURITY_LOGIN_USERNAME, "no-tachyon");
   FileSystemMasterClient masterClient =
       new FileSystemMasterClient(
           mLocalTachyonClusterResource.get().getMaster().getAddress(),
           mLocalTachyonClusterResource.get().getMasterTachyonConf());
   try {
     Assert.assertFalse(masterClient.isConnected());
     masterClient.connect();
   } finally {
     masterClient.close();
   }
 }
 @BeforeClass
 public static final void beforeClass() throws Exception {
   sFileSystem = sLocalTachyonClusterResource.get().getClient();
   sTachyonConf = sLocalTachyonClusterResource.get().getMasterTachyonConf();
   sWriteBoth = StreamOptionUtils.getCreateFileOptionsCacheThrough(sTachyonConf);
   sWriteTachyon = StreamOptionUtils.getCreateFileOptionsMustCache(sTachyonConf);
   sWriteUnderStore = StreamOptionUtils.getCreateFileOptionsThrough(sTachyonConf);
 }
  @BeforeClass
  public static void beforeClass() throws Exception {
    Configuration conf = new Configuration();
    conf.set("fs.tachyon.impl", TFS.class.getName());

    TachyonFileSystem tachyonFS = sLocalTachyonClusterResource.get().getClient();
    TachyonFSTestUtils.createByteFile(
        tachyonFS, "/testFile1", TachyonStorageType.STORE, UnderStorageType.SYNC_PERSIST, FILE_LEN);

    URI uri = URI.create(sLocalTachyonClusterResource.get().getMasterUri());
    sTFS = FileSystem.get(uri, conf);
  }
  @Test
  @LocalTachyonClusterResource.Config(
      tachyonConfParams = {
        Constants.SECURITY_AUTHENTICATION_TYPE,
        "CUSTOM",
        Constants.SECURITY_AUTHENTICATION_CUSTOM_PROVIDER,
        NameMatchAuthenticationProvider.FULL_CLASS_NAME,
        Constants.SECURITY_LOGIN_USERNAME,
        "tachyon"
      })
  public void customAuthenticationDenyConnectTest() throws Exception {
    mThrown.expect(ConnectionFailedException.class);

    FileSystemMasterClient masterClient =
        new FileSystemMasterClient(
            mLocalTachyonClusterResource.get().getMaster().getAddress(), ClientContext.getConf());
    try {
      Assert.assertFalse(masterClient.isConnected());
      // Using no-tachyon as loginUser to connect to Master, the IOException will be thrown
      LoginUserTestUtils.resetLoginUser(ClientContext.getConf(), "no-tachyon");
      masterClient.connect();
    } finally {
      masterClient.close();
    }
  }
  @BeforeClass
  public static final void beforeClass() throws Exception {
    sFileSystem = sLocalTachyonClusterResource.get().getClient();
    sTachyonConf = sLocalTachyonClusterResource.get().getMasterTachyonConf();
    sWriteBoth = StreamOptionUtils.getCreateFileOptionsCacheThrough(sTachyonConf);
    sWriteTachyon = StreamOptionUtils.getCreateFileOptionsMustCache(sTachyonConf);
    sWriteUnderStore = StreamOptionUtils.getCreateFileOptionsThrough(sTachyonConf);
    sTestPath = PathUtils.uniqPath();

    // Create files of varying size and write type to later read from
    for (int k = MIN_LEN; k <= MAX_LEN; k += DELTA) {
      for (CreateFileOptions op : getOptionSet()) {
        TachyonURI path = new TachyonURI(sTestPath + "/file_" + k + "_" + op.hashCode());
        FileSystemTestUtils.createByteFile(sFileSystem, path, op, k);
      }
    }
  }
  @BeforeClass
  public static void beforeClass() throws Exception {
    Configuration conf = new Configuration();
    conf.set("fs.tachyon.impl", TFS.class.getName());

    URI uri = URI.create(sLocalTachyonClusterResource.get().getMasterUri());

    sTFS = FileSystem.get(uri, conf);
  }
 /**
  * Test Tachyon client connects or disconnects to the Master. When the client connects
  * successfully to the Master, it can successfully create file or not.
  *
  * @param filename
  * @throws Exception
  */
 private void authenticationOperationTest(String filename) throws Exception {
   FileSystemMasterClient masterClient =
       new FileSystemMasterClient(
           mLocalTachyonClusterResource.get().getMaster().getAddress(),
           mLocalTachyonClusterResource.get().getMasterTachyonConf());
   Assert.assertFalse(masterClient.isConnected());
   masterClient.connect();
   Assert.assertTrue(masterClient.isConnected());
   masterClient.createFile(new TachyonURI(filename), CreateFileOptions.defaults());
   Assert.assertNotNull(masterClient.getStatus(new TachyonURI(filename)));
   masterClient.disconnect();
   masterClient.close();
 }
 @Test
 @LocalTachyonClusterResource.Config(
     tachyonConfParams = {
       Constants.SECURITY_AUTHENTICATION_TYPE,
       "CUSTOM",
       Constants.SECURITY_AUTHENTICATION_CUSTOM_PROVIDER,
       NameMatchAuthenticationProvider.FULL_CLASS_NAME
     },
     startCluster = false)
 public void customAuthenticationOpenCloseTest() throws Exception {
   /**
    * Using tachyon as loginUser for unit testing, only tachyon user is allowed to connect to
    * Tachyon Master.
    */
   System.setProperty(Constants.SECURITY_LOGIN_USERNAME, "tachyon");
   mLocalTachyonClusterResource.start();
   authenticationOperationTest("/file-custom");
 }