github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/clients/hadoopfs/src/test/java/io/lakefs/contract/TestLakeFSContractRename.java (about)

     1  package io.lakefs.contract;
     2  
     3  import org.apache.hadoop.conf.Configuration;
     4  import org.apache.hadoop.fs.FileSystem;
     5  import org.apache.hadoop.fs.Path;
     6  import org.apache.hadoop.fs.contract.AbstractContractRenameTest;
     7  import org.apache.hadoop.fs.contract.AbstractFSContract;
     8  
     9  import static org.apache.hadoop.fs.contract.ContractTestUtils.dataset;
    10  import static org.apache.hadoop.fs.contract.ContractTestUtils.writeDataset;
    11  
    12  public class TestLakeFSContractRename extends AbstractContractRenameTest {
    13  
    14    @Override
    15    protected AbstractFSContract createContract(Configuration conf) {
    16      return new LakeFSContract(conf);
    17    }
    18  
    19    @Override
    20    public void testRenameDirIntoExistingDir() throws Throwable {
    21      describe("Verify renaming a dir into an existing dir puts the files"
    22               +" from the source dir into the existing dir"
    23               +" and leaves existing files alone");
    24      FileSystem fs = getFileSystem();
    25      String sourceSubdir = "source";
    26      Path srcDir = path(sourceSubdir);
    27      Path srcFilePath = new Path(srcDir, "source-256.txt");
    28      byte[] srcDataset = dataset(256, 'a', 'z');
    29      writeDataset(fs, srcFilePath, srcDataset, srcDataset.length, 1024, false);
    30      Path destDir = path("dest");
    31  
    32      Path destFilePath = new Path(destDir, "dest-512.txt");
    33      byte[] destDateset = dataset(512, 'A', 'Z');
    34      writeDataset(fs, destFilePath, destDateset, destDateset.length, 1024,
    35          false);
    36      assertIsFile(destFilePath);
    37  
    38      boolean rename = fs.rename(srcDir, destDir);
    39      assertFalse("s3a doesn't support rename to non-empty directory", rename);
    40    }
    41  }