/*
 * The Alluxio Open Foundation licenses this work under the Apache License, version 2.0
 * (the "License"). You may not use this work except in compliance with the License, which is
 * available at www.apache.org/licenses/LICENSE-2.0
 *
 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
 * either express or implied, as more fully set forth in the License.
 *
 * See the NOTICE file distributed with this work for information regarding copyright ownership.
 */

package alluxio.cli.fs.command;

import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;

import alluxio.AlluxioURI;
import alluxio.client.WriteType;
import alluxio.client.file.FileSystemTestUtils;
import alluxio.client.file.URIStatus;
import alluxio.exception.AlluxioException;
import alluxio.cli.fs.AbstractAlluxioShellTest;

import org.junit.Assert;
import org.junit.Test;

import java.io.IOException;

/**
 * Tests for load command.
 */
public final class LoadCommandIntegrationTest extends AbstractAlluxioShellTest {
  @Test
  public void loadDir() throws IOException, AlluxioException {
    FileSystemTestUtils.createByteFile(mFileSystem, "/testRoot/testFileA", WriteType.THROUGH, 10);
    FileSystemTestUtils
        .createByteFile(mFileSystem, "/testRoot/testFileB", WriteType.MUST_CACHE, 10);
    AlluxioURI uriA = new AlluxioURI("/testRoot/testFileA");
    AlluxioURI uriB = new AlluxioURI("/testRoot/testFileB");

    URIStatus statusA = mFileSystem.getStatus(uriA);
    URIStatus statusB = mFileSystem.getStatus(uriB);
    assertFalse(statusA.getInAlluxioPercentage() == 100);
    assertTrue(statusB.getInAlluxioPercentage() == 100);
    // Testing loading of a directory
    mFsShell.run("load", "/testRoot");
    statusA = mFileSystem.getStatus(uriA);
    statusB = mFileSystem.getStatus(uriB);
    assertTrue(statusA.getInAlluxioPercentage() == 100);
    assertTrue(statusB.getInAlluxioPercentage() == 100);
  }

  @Test
  public void loadFile() throws IOException, AlluxioException {
    FileSystemTestUtils.createByteFile(mFileSystem, "/testFile", WriteType.THROUGH, 10);
    AlluxioURI uri = new AlluxioURI("/testFile");
    URIStatus status = mFileSystem.getStatus(uri);
    assertFalse(status.getInAlluxioPercentage() == 100);
    // Testing loading of a single file
    mFsShell.run("load", "/testFile");
    status = mFileSystem.getStatus(uri);
    assertTrue(status.getInAlluxioPercentage() == 100);
    // Testing loading a file has been loaded fully
    mFsShell.run("load", "--local", "/testFile");
    Assert.assertEquals("/testFile" + " loaded" + "\n" + "/testFile" + " loaded" + "\n",
        mOutput.toString());
    // Testing "load --local" works when the file isn't already loaded
    FileSystemTestUtils.createByteFile(mFileSystem, "/testFile2", WriteType.THROUGH, 10);
    uri = new AlluxioURI("/testFile2");
    status = mFileSystem.getStatus(uri);
    assertFalse(status.getInAlluxioPercentage() == 100);
    mFsShell.run("load", "--local", "/testFile2");
    status = mFileSystem.getStatus(uri);
    assertTrue(status.getInAlluxioPercentage() == 100);
  }
}

@@ -2454,32 +2454,376 @@
 tage() == 100);%0A
+  %7D%0A%0A  @Test%0A  public void loadFileWithLocalOption() throws IOException, AlluxioException %7B%0A    FileSystemTestUtils.createByteFile(mFileSystem, %22/testFile%22, WriteType.CACHE_THROUGH, 10);%0A    AlluxioURI uri = new AlluxioURI(%22/testFile%22);%0A    URIStatus status = mFileSystem.getStatus(uri);%0A    assertTrue(status.getInAlluxioPercentage() == 100);%0A
     // Testing l
@@ -2966,50 +2966,9 @@
 %22%5Cn%22
- + %22/testFile%22 + %22 loaded%22 + %22%5Cn%22,%0A       
+,
  mOu

Address comment, add a new test of local option test.