package com.scaleunlimited.cascading.hadoop; import java.io.File; import java.io.InputStream; import java.io.OutputStream; import org.apache.commons.io.FileUtils; import org.junit.Assert; import org.junit.Test; import com.scaleunlimited.cascading.BasePath; public class HadoopPathTest extends Assert { @Test public void test() throws Exception { // Clear it out first. final String targetDirname = "build/test/HadoopPathTest/test"; File targetDirFile = new File(targetDirname); FileUtils.deleteDirectory(targetDirFile); assertFalse(targetDirFile.exists()); BasePath path = new HadoopPath(targetDirname); assertEquals(targetDirname, path.getPath()); assertEquals(targetDirFile.toURI().toString(), path.getAbsolutePath()); assertEquals(targetDirFile.toURI().toString(), path.toString()); assertFalse(path.exists()); assertTrue(path.mkdirs()); assertTrue(path.isDirectory()); assertFalse(path.isFile()); assertTrue(targetDirFile.exists()); assertTrue(targetDirFile.isDirectory()); // Now try out relative paths. final String subdirName = "subdir"; BasePath subPath = new HadoopPath(path, subdirName); assertEquals(targetDirname + "/subdir", subPath.getPath()); BasePath dest = new HadoopPath("build/test/HadoopPathTest/test2"); dest.delete(true); assertFalse(dest.exists()); assertTrue(path.rename(dest)); assertTrue(dest.exists()); assertFalse(path.exists()); // A rename to itself always succeeds, it's just that nothing has changed. assertTrue(dest.rename(dest)); } @Test public void testInputOutput() throws Exception { // Clear it out first. final String targetDirname = "build/test/HadoopPathTest/testInputOutput"; File targetDirFile = new File(targetDirname); FileUtils.deleteDirectory(targetDirFile); assertFalse(targetDirFile.exists()); BasePath path = new HadoopPath(targetDirname); assertTrue(path.mkdirs()); BasePath file = new HadoopPath(path, "test.txt"); assertFalse(file.exists()); assertTrue(file.createNewFile()); assertTrue(file.exists()); assertTrue(file.isFile()); final String sourceStr = "Hello world"; OutputStream os = file.openOutputStream(); os.write(sourceStr.getBytes("UTF-8")); os.close(); InputStream is = file.openInputStream(); byte[] buffer = new byte[1000]; int len = is.read(buffer); String result = new String(buffer, 0, len, "UTF-8"); assertEquals(sourceStr, result); is.close(); } }