List of usage examples for org.apache.hadoop.fs FileStatus getOwner
public String getOwner()
From source file:org.apache.gobblin.data.management.copy.writer.FileAwareInputStreamDataWriterTest.java
License:Apache License
@Test public void testWrite() throws Exception { String streamString = "testContents"; FileStatus status = fs.getFileStatus(testTempPath); OwnerAndPermission ownerAndPermission = new OwnerAndPermission(status.getOwner(), status.getGroup(), new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL)); CopyableFile cf = CopyableFileUtils.getTestCopyableFile(ownerAndPermission); CopyableDatasetMetadata metadata = new CopyableDatasetMetadata( new TestCopyableDataset(new Path("/source"))); WorkUnitState state = TestUtils.createTestWorkUnitState(); state.setProp(ConfigurationKeys.WRITER_STAGING_DIR, new Path(testTempPath, "staging").toString()); state.setProp(ConfigurationKeys.WRITER_OUTPUT_DIR, new Path(testTempPath, "output").toString()); state.setProp(ConfigurationKeys.WRITER_FILE_PATH, RandomStringUtils.randomAlphabetic(5)); CopySource.serializeCopyEntity(state, cf); CopySource.serializeCopyableDataset(state, metadata); FileAwareInputStreamDataWriter dataWriter = new FileAwareInputStreamDataWriter(state, 1, 0); FileAwareInputStream fileAwareInputStream = FileAwareInputStream.builder().file(cf) .inputStream(StreamUtils.convertStream(IOUtils.toInputStream(streamString))).build(); dataWriter.write(fileAwareInputStream); dataWriter.commit();/* ww w . ja v a 2 s . co m*/ Path writtenFilePath = new Path(new Path(state.getProp(ConfigurationKeys.WRITER_OUTPUT_DIR), cf.getDatasetAndPartition(metadata).identifier()), cf.getDestination()); Assert.assertEquals(IOUtils.toString(new FileInputStream(writtenFilePath.toString())), streamString); }
From source file:org.apache.gobblin.data.management.copy.writer.FileAwareInputStreamDataWriterTest.java
License:Apache License
@Test public void testBlockWrite() throws Exception { String streamString = "testContents"; FileStatus status = fs.getFileStatus(testTempPath); OwnerAndPermission ownerAndPermission = new OwnerAndPermission(status.getOwner(), status.getGroup(), new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL)); CopyableFile cf = CopyableFileUtils.getTestCopyableFile(ownerAndPermission); CopyableDatasetMetadata metadata = new CopyableDatasetMetadata( new TestCopyableDataset(new Path("/source"))); WorkUnitState state = TestUtils.createTestWorkUnitState(); state.setProp(ConfigurationKeys.WRITER_STAGING_DIR, new Path(testTempPath, "staging").toString()); state.setProp(ConfigurationKeys.WRITER_OUTPUT_DIR, new Path(testTempPath, "output").toString()); state.setProp(ConfigurationKeys.WRITER_FILE_PATH, RandomStringUtils.randomAlphabetic(5)); state.setProp(DistcpFileSplitter.SPLIT_ENABLED, true); CopySource.serializeCopyEntity(state, cf); CopySource.serializeCopyableDataset(state, metadata); FileAwareInputStreamDataWriter dataWriter = new FileAwareInputStreamDataWriter(state, 1, 0); long splitLen = 4; int splits = (int) (streamString.length() / splitLen + 1); DistcpFileSplitter.Split split = new DistcpFileSplitter.Split(0, splitLen, 0, splits, String.format("%s.__PART%d__", cf.getDestination().getName(), 0)); FSDataInputStream dataInputStream = StreamUtils.convertStream(IOUtils.toInputStream(streamString)); dataInputStream.seek(split.getLowPosition()); FileAwareInputStream fileAwareInputStream = FileAwareInputStream.builder().file(cf) .inputStream(dataInputStream).split(Optional.of(split)).build(); dataWriter.write(fileAwareInputStream); dataWriter.commit();//from w w w .ja v a2 s . c o m Path writtenFilePath = new Path(new Path(state.getProp(ConfigurationKeys.WRITER_OUTPUT_DIR), cf.getDatasetAndPartition(metadata).identifier()), cf.getDestination()); Assert.assertEquals(IOUtils.toString(new FileInputStream(writtenFilePath.toString())), streamString.substring(0, (int) splitLen)); }
From source file:org.apache.gobblin.data.management.copy.writer.FileAwareInputStreamDataWriterTest.java
License:Apache License
@Test public void testWriteWithEncryption() throws Exception { byte[] streamString = "testEncryptedContents".getBytes("UTF-8"); byte[] expectedContents = new byte[streamString.length]; for (int i = 0; i < streamString.length; i++) { expectedContents[i] = (byte) ((streamString[i] + 1) % 256); }// www.java 2 s .c o m FileStatus status = fs.getFileStatus(testTempPath); OwnerAndPermission ownerAndPermission = new OwnerAndPermission(status.getOwner(), status.getGroup(), new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL)); CopyableFile cf = CopyableFileUtils.getTestCopyableFile(ownerAndPermission); CopyableDatasetMetadata metadata = new CopyableDatasetMetadata( new TestCopyableDataset(new Path("/source"))); WorkUnitState state = TestUtils.createTestWorkUnitState(); state.setProp(ConfigurationKeys.WRITER_STAGING_DIR, new Path(testTempPath, "staging").toString()); state.setProp(ConfigurationKeys.WRITER_OUTPUT_DIR, new Path(testTempPath, "output").toString()); state.setProp(ConfigurationKeys.WRITER_FILE_PATH, RandomStringUtils.randomAlphabetic(5)); state.setProp("writer.encrypt." + EncryptionConfigParser.ENCRYPTION_ALGORITHM_KEY, "insecure_shift"); CopySource.serializeCopyEntity(state, cf); CopySource.serializeCopyableDataset(state, metadata); FileAwareInputStreamDataWriter dataWriter = new FileAwareInputStreamDataWriter(state, 1, 0); FileAwareInputStream fileAwareInputStream = FileAwareInputStream.builder().file(cf) .inputStream(StreamUtils.convertStream(new ByteArrayInputStream(streamString))).build(); dataWriter.write(fileAwareInputStream); dataWriter.commit(); Path writtenFilePath = new Path(new Path(state.getProp(ConfigurationKeys.WRITER_OUTPUT_DIR), cf.getDatasetAndPartition(metadata).identifier()), cf.getDestination()); Assert.assertTrue(writtenFilePath.getName().endsWith("insecure_shift"), "Expected encryption name to be appended to destination"); Assert.assertEquals(IOUtils.toByteArray(new FileInputStream(writtenFilePath.toString())), expectedContents); }
From source file:org.apache.gobblin.data.management.copy.writer.FileAwareInputStreamDataWriterTest.java
License:Apache License
@Test public void testWriteWithGPGSymmetricEncryption() throws Exception { byte[] streamString = "testEncryptedContents".getBytes("UTF-8"); FileStatus status = fs.getFileStatus(testTempPath); OwnerAndPermission ownerAndPermission = new OwnerAndPermission(status.getOwner(), status.getGroup(), new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL)); CopyableFile cf = CopyableFileUtils.getTestCopyableFile(ownerAndPermission); CopyableDatasetMetadata metadata = new CopyableDatasetMetadata( new TestCopyableDataset(new Path("/source"))); WorkUnitState state = TestUtils.createTestWorkUnitState(); state.setProp(ConfigurationKeys.WRITER_STAGING_DIR, new Path(testTempPath, "staging").toString()); state.setProp(ConfigurationKeys.WRITER_OUTPUT_DIR, new Path(testTempPath, "output").toString()); state.setProp(ConfigurationKeys.WRITER_FILE_PATH, RandomStringUtils.randomAlphabetic(5)); state.setProp("writer.encrypt." + EncryptionConfigParser.ENCRYPTION_ALGORITHM_KEY, "gpg"); state.setProp("writer.encrypt." + EncryptionConfigParser.ENCRYPTION_KEYSTORE_PASSWORD_KEY, "testPassword"); CopySource.serializeCopyEntity(state, cf); CopySource.serializeCopyableDataset(state, metadata); FileAwareInputStreamDataWriter dataWriter = new FileAwareInputStreamDataWriter(state, 1, 0); FileAwareInputStream fileAwareInputStream = FileAwareInputStream.builder().file(cf) .inputStream(StreamUtils.convertStream(new ByteArrayInputStream(streamString))).build(); dataWriter.write(fileAwareInputStream); dataWriter.commit();//from ww w .j a v a2s. c om Path writtenFilePath = new Path(new Path(state.getProp(ConfigurationKeys.WRITER_OUTPUT_DIR), cf.getDatasetAndPartition(metadata).identifier()), cf.getDestination()); Assert.assertTrue(writtenFilePath.getName().endsWith("gpg"), "Expected encryption name to be appended to destination"); byte[] encryptedContent = IOUtils.toByteArray(new FileInputStream(writtenFilePath.toString())); byte[] decryptedContent = new byte[streamString.length]; IOUtils.readFully( GPGFileDecryptor.decryptFile(new FileInputStream(writtenFilePath.toString()), "testPassword"), decryptedContent); // encrypted string should not be the same as the plaintext Assert.assertNotEquals(encryptedContent, streamString); // decrypted string should be the same as the plaintext Assert.assertEquals(decryptedContent, streamString); }
From source file:org.apache.gobblin.data.management.copy.writer.FileAwareInputStreamDataWriterTest.java
License:Apache License
@Test public void testWriteWithGPGAsymmetricEncryption() throws Exception { byte[] streamString = "testEncryptedContents".getBytes("UTF-8"); FileStatus status = fs.getFileStatus(testTempPath); OwnerAndPermission ownerAndPermission = new OwnerAndPermission(status.getOwner(), status.getGroup(), new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL)); CopyableFile cf = CopyableFileUtils.getTestCopyableFile(ownerAndPermission); CopyableDatasetMetadata metadata = new CopyableDatasetMetadata( new TestCopyableDataset(new Path("/source"))); WorkUnitState state = TestUtils.createTestWorkUnitState(); state.setProp(ConfigurationKeys.WRITER_STAGING_DIR, new Path(testTempPath, "staging").toString()); state.setProp(ConfigurationKeys.WRITER_OUTPUT_DIR, new Path(testTempPath, "output").toString()); state.setProp(ConfigurationKeys.WRITER_FILE_PATH, RandomStringUtils.randomAlphabetic(5)); state.setProp("writer.encrypt." + EncryptionConfigParser.ENCRYPTION_ALGORITHM_KEY, "gpg"); File publicKeyFile = new File(testTempPath.toString(), "public.key"); FileUtils.copyInputStreamToFile(GPGFileEncryptor.class.getResourceAsStream(GPGFileEncryptorTest.PUBLIC_KEY), publicKeyFile);// w ww .j av a2s .c om state.setProp("writer.encrypt." + EncryptionConfigParser.ENCRYPTION_KEYSTORE_PATH_KEY, publicKeyFile.getAbsolutePath()); state.setProp("writer.encrypt." + EncryptionConfigParser.ENCRYPTION_KEYSTORE_PASSWORD_KEY, GPGFileEncryptorTest.PASSPHRASE); state.setProp("writer.encrypt." + EncryptionConfigParser.ENCRYPTION_KEY_NAME, GPGFileEncryptorTest.KEY_ID); CopySource.serializeCopyEntity(state, cf); CopySource.serializeCopyableDataset(state, metadata); FileAwareInputStreamDataWriter dataWriter = new FileAwareInputStreamDataWriter(state, 1, 0); FileAwareInputStream fileAwareInputStream = FileAwareInputStream.builder().file(cf) .inputStream(StreamUtils.convertStream(new ByteArrayInputStream(streamString))).build(); dataWriter.write(fileAwareInputStream); dataWriter.commit(); Path writtenFilePath = new Path(new Path(state.getProp(ConfigurationKeys.WRITER_OUTPUT_DIR), cf.getDatasetAndPartition(metadata).identifier()), cf.getDestination()); Assert.assertTrue(writtenFilePath.getName().endsWith("gpg"), "Expected encryption name to be appended to destination"); byte[] encryptedContent = IOUtils.toByteArray(new FileInputStream(writtenFilePath.toString())); byte[] decryptedContent = new byte[streamString.length]; IOUtils.readFully(GPGFileDecryptor.decryptFile(new FileInputStream(writtenFilePath.toString()), GPGFileEncryptor.class.getResourceAsStream(GPGFileEncryptorTest.PRIVATE_KEY), GPGFileEncryptorTest.PASSPHRASE), decryptedContent); // encrypted string should not be the same as the plaintext Assert.assertNotEquals(encryptedContent, streamString); // decrypted string should be the same as the plaintext Assert.assertEquals(decryptedContent, streamString); }
From source file:org.apache.gobblin.data.management.copy.writer.TarArchiveInputStreamDataWriterTest.java
License:Apache License
/** * Find the test compressed file <code><filePath/code> in classpath and read it as a {@link FileAwareInputStream} *//*from ww w . j ava 2 s.c om*/ private FileAwareInputStream getCompressedInputStream(final String filePath, final String newFileName) throws Exception { UnGzipConverter converter = new UnGzipConverter(); FileSystem fs = FileSystem.getLocal(new Configuration()); String fullPath = getClass().getClassLoader().getResource(filePath).getFile(); FileStatus status = fs.getFileStatus(testTempPath); OwnerAndPermission ownerAndPermission = new OwnerAndPermission(status.getOwner(), status.getGroup(), new FsPermission(FsAction.ALL, FsAction.ALL, FsAction.ALL)); CopyableFile cf = CopyableFileUtils.getTestCopyableFile(filePath, new Path(testTempPath, newFileName).toString(), newFileName, ownerAndPermission); FileAwareInputStream fileAwareInputStream = FileAwareInputStream.builder().file(cf) .inputStream(fs.open(new Path(fullPath))).build(); Iterable<FileAwareInputStream> iterable = converter.convertRecord("outputSchema", fileAwareInputStream, new WorkUnitState()); return Iterables.getFirst(iterable, null); }
From source file:org.apache.hcatalog.security.HdfsAuthorizationProvider.java
License:Apache License
/** * Checks the permissions for the given path and current user on Hadoop FS. If the given path * does not exists, it returns.//from w w w .j a v a 2s . c o m */ @SuppressWarnings("deprecation") protected static void checkPermissions(final FileSystem fs, final Path path, final EnumSet<FsAction> actions, String user, String[] groups) throws IOException, AccessControlException { final FileStatus stat; try { stat = fs.getFileStatus(path); } catch (FileNotFoundException fnfe) { // File named by path doesn't exist; nothing to validate. return; } catch (org.apache.hadoop.fs.permission.AccessControlException ace) { // Older hadoop version will throw this @deprecated Exception. throw new AccessControlException(ace.getMessage()); } final FsPermission dirPerms = stat.getPermission(); final String grp = stat.getGroup(); for (FsAction action : actions) { if (user.equals(stat.getOwner())) { if (dirPerms.getUserAction().implies(action)) { continue; } } if (ArrayUtils.contains(groups, grp)) { if (dirPerms.getGroupAction().implies(action)) { continue; } } if (dirPerms.getOtherAction().implies(action)) { continue; } throw new AccessControlException( "action " + action + " not permitted on path " + path + " for user " + user); } }
From source file:org.apache.hive.common.util.MockFileSystem.java
License:Apache License
public void touch(MockFile file) { if (fileStatusMap.containsKey(file)) { FileStatus fileStatus = fileStatusMap.get(file); FileStatus fileStatusNew = new FileStatus(fileStatus.getLen(), fileStatus.isDirectory(), fileStatus.getReplication(), fileStatus.getBlockSize(), fileStatus.getModificationTime() + 1, fileStatus.getAccessTime(), fileStatus.getPermission(), fileStatus.getOwner(), fileStatus.getGroup(), fileStatus.getPath()); fileStatusMap.put(file, fileStatusNew); }/* w w w .j a v a2s.c om*/ }
From source file:org.apache.hive.service.TestHS2ImpersonationWithRemoteMS.java
License:Apache License
@Test public void testImpersonation() throws Exception { assertTrue("Test setup failed. MiniHS2 is not initialized", miniHS2 != null && miniHS2.isStarted()); Class.forName(MiniHS2.getJdbcDriverName()); // Create two tables one as user "foo" and other as user "bar" Connection hs2Conn = DriverManager.getConnection(miniHS2.getJdbcURL(), "foo", null); Statement stmt = hs2Conn.createStatement(); String tableName = "foo_table"; stmt.execute("drop table if exists " + tableName); stmt.execute("create table " + tableName + " (value string)"); stmt.close();//from w ww . ja v a 2 s.co m hs2Conn.close(); hs2Conn = DriverManager.getConnection(miniHS2.getJdbcURL(), "bar", null); stmt = hs2Conn.createStatement(); tableName = "bar_table"; stmt.execute("drop table if exists " + tableName); stmt.execute("create table " + tableName + " (value string)"); stmt.close(); hs2Conn.close(); MiniDFSShim dfs = miniHS2.getDfs(); FileSystem fs = dfs.getFileSystem(); FileStatus[] files = fs.listStatus(miniHS2.getWareHouseDir()); boolean fooTableValidated = false; boolean barTableValidated = false; for (FileStatus file : files) { final String name = file.getPath().getName(); final String owner = file.getOwner(); if (name.equals("foo_table")) { fooTableValidated = owner.equals("foo"); assertTrue(String.format("User 'foo' table has wrong ownership '%s'", owner), fooTableValidated); } else if (name.equals("bar_table")) { barTableValidated = owner.equals("bar"); assertTrue(String.format("User 'bar' table has wrong ownership '%s'", owner), barTableValidated); } else { fail(String.format("Unexpected table directory '%s' in warehouse", name)); } System.out.println(String.format("File: %s, Owner: %s", name, owner)); } assertTrue("User 'foo' table not found in warehouse", fooTableValidated); assertTrue("User 'bar' table not found in warehouse", barTableValidated); }
From source file:org.apache.ignite.hadoop.fs.IgniteHadoopIgfsSecondaryFileSystem.java
License:Apache License
/** * Convert Hadoop FileStatus properties to map. * * @param status File status.//from w ww .j a v a 2 s.c om * @return IGFS attributes. */ private static Map<String, String> properties(FileStatus status) { FsPermission perm = status.getPermission(); if (perm == null) perm = FsPermission.getDefault(); return F.asMap(PROP_PERMISSION, String.format("%04o", perm.toShort()), PROP_USER_NAME, status.getOwner(), PROP_GROUP_NAME, status.getGroup()); }