private void execute(String [] args, String namenode) { FsShell shell=new FsShell(); FileSystem fs=null; try { ToolRunner.run(shell, args); fs = FileSystem.get(NameNode.getUri(NameNode.getAddress(namenode)), shell.getConf()); assertTrue("Directory does not get created", fs.isDirectory(new Path("/data"))); fs.delete(new Path("/data"), true); } catch (Exception e) { System.err.println(e.getMessage()); e.printStackTrace(); } finally { if (fs!=null) { try { fs.close(); } catch (IOException ignored) { } } } }
public void execute(Configuration conf, FileSystem fs) throws Exception { fs.mkdirs(new Path(TEST_ROOT)); createFiles(fs, TEST_ROOT, fileEntries); final FsShell fsShell = new FsShell(conf); final String deletePath = TEST_ROOT + "/" + deleteEntry.getPath(); String[] tmpCmdOpts = StringUtils.split(cmdAndOptions); ArrayList<String> tmpArray = new ArrayList<String>(Arrays.asList(tmpCmdOpts)); tmpArray.add(deletePath); final String[] cmdOpts = tmpArray.toArray(new String[tmpArray.size()]); userUgi.doAs(new PrivilegedExceptionAction<String>() { public String run() throws Exception { return execCmd(fsShell, cmdOpts); } }); boolean deleted = !fs.exists(new Path(deletePath)); assertEquals(expectedToDelete, deleted); deldir(fs, TEST_ROOT); }
@Test public void testDeleteSnapshotCommandWithIllegalArguments() throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); PrintStream psOut = new PrintStream(out); System.setOut(psOut); System.setErr(psOut); FsShell shell = new FsShell(); shell.setConf(conf); String[] argv1 = {"-deleteSnapshot", "/tmp"}; int val = shell.run(argv1); assertTrue(val == -1); assertTrue(out.toString().contains( argv1[0] + ": Incorrect number of arguments.")); out.reset(); String[] argv2 = {"-deleteSnapshot", "/tmp", "s1", "s2"}; val = shell.run(argv2); assertTrue(val == -1); assertTrue(out.toString().contains( argv2[0] + ": Incorrect number of arguments.")); psOut.close(); out.close(); }
/** * Test that users can copy a snapshot while preserving its xattrs. */ @Test (timeout = 120000) public void testCopySnapshotShouldPreserveXAttrs() throws Exception { FileSystem.mkdirs(hdfs, path, FsPermission.createImmutable((short) 0700)); hdfs.setXAttr(path, name1, value1); hdfs.setXAttr(path, name2, value2); SnapshotTestHelper.createSnapshot(hdfs, path, snapshotName); Path snapshotCopy = new Path(path.toString() + "-copy"); String[] argv = new String[] { "-cp", "-px", snapshotPath.toUri().toString(), snapshotCopy.toUri().toString() }; int ret = ToolRunner.run(new FsShell(conf), argv); assertEquals("cp -px is not working on a snapshot", SUCCESS, ret); Map<String, byte[]> xattrs = hdfs.getXAttrs(snapshotCopy); assertArrayEquals(value1, xattrs.get(name1)); assertArrayEquals(value2, xattrs.get(name2)); }
@Test public void testRenameSnapshotCommandWithIllegalArguments() throws Exception { ByteArrayOutputStream out = new ByteArrayOutputStream(); PrintStream psOut = new PrintStream(out); System.setOut(psOut); System.setErr(psOut); FsShell shell = new FsShell(); shell.setConf(conf); String[] argv1 = {"-renameSnapshot", "/tmp", "s1"}; int val = shell.run(argv1); assertTrue(val == -1); assertTrue(out.toString().contains( argv1[0] + ": Incorrect number of arguments.")); out.reset(); String[] argv2 = {"-renameSnapshot", "/tmp", "s1", "s2", "s3"}; val = shell.run(argv2); assertTrue(val == -1); assertTrue(out.toString().contains( argv2[0] + ": Incorrect number of arguments.")); psOut.close(); out.close(); }
@Test public void testRelativePath() throws Exception { final Path sub1 = new Path(inputPath, "dir1"); fs.mkdirs(sub1); createFile(inputPath, fs, sub1.getName(), "a"); final FsShell shell = new FsShell(conf); final List<String> originalPaths = lsr(shell, "input"); System.out.println("originalPaths: " + originalPaths); // make the archive: final String fullHarPathStr = makeArchive(); // compare results: final List<String> harPaths = lsr(shell, fullHarPathStr); Assert.assertEquals(originalPaths, harPaths); }
@Test public void testRelativePathWitRepl() throws Exception { final Path sub1 = new Path(inputPath, "dir1"); fs.mkdirs(sub1); createFile(inputPath, fs, sub1.getName(), "a"); final FsShell shell = new FsShell(conf); final List<String> originalPaths = lsr(shell, "input"); System.out.println("originalPaths: " + originalPaths); // make the archive: final String fullHarPathStr = makeArchiveWithRepl(); // compare results: final List<String> harPaths = lsr(shell, fullHarPathStr); Assert.assertEquals(originalPaths, harPaths); }
@Test public void testPathWithSpaces() throws Exception { // create files/directories with spaces createFile(inputPath, fs, "c c"); final Path sub1 = new Path(inputPath, "sub 1"); fs.mkdirs(sub1); createFile(sub1, fs, "file x y z"); createFile(sub1, fs, "file"); createFile(sub1, fs, "x"); createFile(sub1, fs, "y"); createFile(sub1, fs, "z"); final Path sub2 = new Path(inputPath, "sub 1 with suffix"); fs.mkdirs(sub2); createFile(sub2, fs, "z"); final FsShell shell = new FsShell(conf); final String inputPathStr = inputPath.toUri().getPath(); final List<String> originalPaths = lsr(shell, inputPathStr); // make the archive: final String fullHarPathStr = makeArchive(); // compare results final List<String> harPaths = lsr(shell, fullHarPathStr); Assert.assertEquals(originalPaths, harPaths); }
@Test public void testSingleFile() throws Exception { final Path sub1 = new Path(inputPath, "dir1"); fs.mkdirs(sub1); String singleFileName = "a"; createFile(inputPath, fs, sub1.getName(), singleFileName); final FsShell shell = new FsShell(conf); final List<String> originalPaths = lsr(shell, sub1.toString()); System.out.println("originalPaths: " + originalPaths); // make the archive: final String fullHarPathStr = makeArchive(sub1, singleFileName); // compare results: final List<String> harPaths = lsr(shell, fullHarPathStr); Assert.assertEquals(originalPaths, harPaths); }
@Test public void testGlobFiles() throws Exception { final Path sub1 = new Path(inputPath, "dir1"); final Path sub2 = new Path(inputPath, "dir2"); fs.mkdirs(sub1); String fileName = "a"; createFile(inputPath, fs, sub1.getName(), fileName); createFile(inputPath, fs, sub2.getName(), fileName); createFile(inputPath, fs, sub1.getName(), "b"); // not part of result final String glob = "dir{1,2}/a"; final FsShell shell = new FsShell(conf); final List<String> originalPaths = lsr(shell, inputPath.toString(), inputPath + "/" + glob); System.out.println("originalPaths: " + originalPaths); // make the archive: final String fullHarPathStr = makeArchive(inputPath, glob); // compare results: final List<String> harPaths = lsr(shell, fullHarPathStr, fullHarPathStr + "/" + glob); Assert.assertEquals(originalPaths, harPaths); }
private void execute(String [] args, String namenode) { FsShell shell=new FsShell(); FileSystem fs=null; try { ToolRunner.run(shell, args); fs = FileSystem.get(DFSUtilClient.getNNUri( DFSUtilClient.getNNAddress(namenode)), shell.getConf()); assertTrue("Directory does not get created", fs.isDirectory(new Path("/data"))); fs.delete(new Path("/data"), true); } catch (Exception e) { System.err.println(e.getMessage()); e.printStackTrace(); } finally { if (fs!=null) { try { fs.close(); } catch (IOException ignored) { } } } }
@Test(timeout = 120000) public void testEncryptionZoneWithTrash() throws Exception { // Create the encryption zone1 final HdfsAdmin dfsAdmin = new HdfsAdmin(FileSystem.getDefaultUri(conf), conf); final Path zone1 = new Path("/zone1"); fs.mkdirs(zone1); dfsAdmin.createEncryptionZone(zone1, TEST_KEY); // Create the encrypted file in zone1 final Path encFile1 = new Path(zone1, "encFile1"); final int len = 8192; DFSTestUtil.createFile(fs, encFile1, len, (short) 1, 0xFEED); Configuration clientConf = new Configuration(conf); clientConf.setLong(FS_TRASH_INTERVAL_KEY, 1); FsShell shell = new FsShell(clientConf); // Delete encrypted file from the shell with trash enabled // Verify the file is moved to appropriate trash within the zone verifyShellDeleteWithTrash(shell, encFile1); // Delete encryption zone from the shell with trash enabled // Verify the zone is moved to appropriate trash location in user's home dir verifyShellDeleteWithTrash(shell, zone1); }
private void verifyShellDeleteWithTrash(FsShell shell, Path path) throws Exception{ try { final Path trashFile = new Path(shell.getCurrentTrashDir(path) + "/" + path); String[] argv = new String[]{"-rm", "-r", path.toString()}; int res = ToolRunner.run(shell, argv); assertEquals("rm failed", 0, res); assertTrue("File not in trash : " + trashFile, fs.exists(trashFile)); } catch (IOException ioe) { fail(ioe.getMessage()); } finally { if (fs.exists(path)) { fs.delete(path, true); } } }
private void execute(String [] args, String namenode) { FsShell shell=new FsShell(); FileSystem fs=null; try { ToolRunner.run(shell, args); fs = new DistributedFileSystem(NameNode.getAddress(namenode), shell.getConf()); assertTrue("Directory does not get created", fs.isDirectory(new Path("/data"))); fs.delete(new Path("/data"), true); } catch (Exception e) { System.err.println(e.getMessage()); e.printStackTrace(); } finally { if (fs!=null) { try { fs.close(); } catch (IOException ignored) { } } } }
public void testLsr() throws Exception { Configuration conf = new Configuration(); cluster = new MiniDFSCluster(conf, 2, true, null); DistributedFileSystem dfs = (DistributedFileSystem)cluster.getFileSystem(); try { final String root = createTree(dfs, "lsr"); dfs.mkdirs(new Path(root, "zzz")); runLsCmd(new FsShell(conf), root, 0, "-lsr", null); final Path sub = new Path(root, "sub"); dfs.setPermission(sub, new FsPermission((short)0)); final UserGroupInformation ugi = UserGroupInformation.getCurrentUGI(); final String tmpusername = ugi.getUserName() + "1"; UnixUserGroupInformation tmpUGI = new UnixUserGroupInformation( tmpusername, new String[] {tmpusername}); UnixUserGroupInformation.saveToConf(conf, UnixUserGroupInformation.UGI_PROPERTY_NAME, tmpUGI); String results = runLsCmd(new FsShell(conf), root, -1, "-lsr", null); assertTrue(results.contains("zzz")); } finally { cluster.shutdown(); } }