Search in sources :

Example 46 with VisibleForTesting

use of com.google.common.annotations.VisibleForTesting in project hadoop by apache.

the class XDR method getBytes.

@VisibleForTesting
public byte[] getBytes() {
    ByteBuffer d = asReadOnlyWrap().buffer();
    byte[] b = new byte[d.remaining()];
    d.get(b);
    return b;
}
Also used : ByteBuffer(java.nio.ByteBuffer) VisibleForTesting(com.google.common.annotations.VisibleForTesting)

Example 47 with VisibleForTesting

use of com.google.common.annotations.VisibleForTesting in project hadoop by apache.

the class NNStorage method setStorageDirectories.

/**
   * Set the storage directories which will be used. This should only ever be
   * called from inside NNStorage. However, it needs to remain package private
   * for testing, as StorageDirectories need to be reinitialised after using
   * Mockito.spy() on this class, as Mockito doesn't work well with inner
   * classes, such as StorageDirectory in this case.
   *
   * Synchronized due to initialization of storageDirs and removedStorageDirs.
   *
   * @param fsNameDirs Locations to store images.
   * @param fsEditsDirs Locations to store edit logs.
   * @throws IOException
   */
@VisibleForTesting
synchronized void setStorageDirectories(Collection<URI> fsNameDirs, Collection<URI> fsEditsDirs, Collection<URI> sharedEditsDirs) throws IOException {
    getStorageDirs().clear();
    this.removedStorageDirs.clear();
    // Add all name dirs with appropriate NameNodeDirType
    for (URI dirName : fsNameDirs) {
        checkSchemeConsistency(dirName);
        boolean isAlsoEdits = false;
        for (URI editsDirName : fsEditsDirs) {
            if (editsDirName.compareTo(dirName) == 0) {
                isAlsoEdits = true;
                fsEditsDirs.remove(editsDirName);
                break;
            }
        }
        NameNodeDirType dirType = (isAlsoEdits) ? NameNodeDirType.IMAGE_AND_EDITS : NameNodeDirType.IMAGE;
        // URI is of type file://
        if (dirName.getScheme().compareTo("file") == 0) {
            this.addStorageDir(new StorageDirectory(new File(dirName.getPath()), dirType, // Don't lock the dir if it's shared.
            sharedEditsDirs.contains(dirName)));
        }
    }
    // Add edits dirs if they are different from name dirs
    for (URI dirName : fsEditsDirs) {
        checkSchemeConsistency(dirName);
        // URI is of type file://
        if (dirName.getScheme().compareTo("file") == 0) {
            this.addStorageDir(new StorageDirectory(new File(dirName.getPath()), NameNodeDirType.EDITS, sharedEditsDirs.contains(dirName)));
        }
    }
}
Also used : URI(java.net.URI) RandomAccessFile(java.io.RandomAccessFile) PersistentLongFile(org.apache.hadoop.hdfs.util.PersistentLongFile) File(java.io.File) VisibleForTesting(com.google.common.annotations.VisibleForTesting)

Example 48 with VisibleForTesting

use of com.google.common.annotations.VisibleForTesting in project hadoop by apache.

the class NameNode method parseArguments.

@VisibleForTesting
static StartupOption parseArguments(String[] args) {
    int argsLen = (args == null) ? 0 : args.length;
    StartupOption startOpt = StartupOption.REGULAR;
    for (int i = 0; i < argsLen; i++) {
        String cmd = args[i];
        if (StartupOption.FORMAT.getName().equalsIgnoreCase(cmd)) {
            startOpt = StartupOption.FORMAT;
            for (i = i + 1; i < argsLen; i++) {
                if (args[i].equalsIgnoreCase(StartupOption.CLUSTERID.getName())) {
                    i++;
                    if (i >= argsLen) {
                        // if no cluster id specified, return null
                        LOG.error("Must specify a valid cluster ID after the " + StartupOption.CLUSTERID.getName() + " flag");
                        return null;
                    }
                    String clusterId = args[i];
                    // Make sure an id is specified and not another flag
                    if (clusterId.isEmpty() || clusterId.equalsIgnoreCase(StartupOption.FORCE.getName()) || clusterId.equalsIgnoreCase(StartupOption.NONINTERACTIVE.getName())) {
                        LOG.error("Must specify a valid cluster ID after the " + StartupOption.CLUSTERID.getName() + " flag");
                        return null;
                    }
                    startOpt.setClusterId(clusterId);
                }
                if (args[i].equalsIgnoreCase(StartupOption.FORCE.getName())) {
                    startOpt.setForceFormat(true);
                }
                if (args[i].equalsIgnoreCase(StartupOption.NONINTERACTIVE.getName())) {
                    startOpt.setInteractiveFormat(false);
                }
            }
        } else if (StartupOption.GENCLUSTERID.getName().equalsIgnoreCase(cmd)) {
            startOpt = StartupOption.GENCLUSTERID;
        } else if (StartupOption.REGULAR.getName().equalsIgnoreCase(cmd)) {
            startOpt = StartupOption.REGULAR;
        } else if (StartupOption.BACKUP.getName().equalsIgnoreCase(cmd)) {
            startOpt = StartupOption.BACKUP;
        } else if (StartupOption.CHECKPOINT.getName().equalsIgnoreCase(cmd)) {
            startOpt = StartupOption.CHECKPOINT;
        } else if (StartupOption.UPGRADE.getName().equalsIgnoreCase(cmd) || StartupOption.UPGRADEONLY.getName().equalsIgnoreCase(cmd)) {
            startOpt = StartupOption.UPGRADE.getName().equalsIgnoreCase(cmd) ? StartupOption.UPGRADE : StartupOption.UPGRADEONLY;
            /* Can be followed by CLUSTERID with a required parameter or
         * RENAMERESERVED with an optional parameter
         */
            while (i + 1 < argsLen) {
                String flag = args[i + 1];
                if (flag.equalsIgnoreCase(StartupOption.CLUSTERID.getName())) {
                    if (i + 2 < argsLen) {
                        i += 2;
                        startOpt.setClusterId(args[i]);
                    } else {
                        LOG.error("Must specify a valid cluster ID after the " + StartupOption.CLUSTERID.getName() + " flag");
                        return null;
                    }
                } else if (flag.equalsIgnoreCase(StartupOption.RENAMERESERVED.getName())) {
                    if (i + 2 < argsLen) {
                        FSImageFormat.setRenameReservedPairs(args[i + 2]);
                        i += 2;
                    } else {
                        FSImageFormat.useDefaultRenameReservedPairs();
                        i += 1;
                    }
                } else {
                    LOG.error("Unknown upgrade flag " + flag);
                    return null;
                }
            }
        } else if (StartupOption.ROLLINGUPGRADE.getName().equalsIgnoreCase(cmd)) {
            startOpt = StartupOption.ROLLINGUPGRADE;
            ++i;
            if (i >= argsLen) {
                LOG.error("Must specify a rolling upgrade startup option " + RollingUpgradeStartupOption.getAllOptionString());
                return null;
            }
            startOpt.setRollingUpgradeStartupOption(args[i]);
        } else if (StartupOption.ROLLBACK.getName().equalsIgnoreCase(cmd)) {
            startOpt = StartupOption.ROLLBACK;
        } else if (StartupOption.IMPORT.getName().equalsIgnoreCase(cmd)) {
            startOpt = StartupOption.IMPORT;
        } else if (StartupOption.BOOTSTRAPSTANDBY.getName().equalsIgnoreCase(cmd)) {
            startOpt = StartupOption.BOOTSTRAPSTANDBY;
            return startOpt;
        } else if (StartupOption.INITIALIZESHAREDEDITS.getName().equalsIgnoreCase(cmd)) {
            startOpt = StartupOption.INITIALIZESHAREDEDITS;
            for (i = i + 1; i < argsLen; i++) {
                if (StartupOption.NONINTERACTIVE.getName().equals(args[i])) {
                    startOpt.setInteractiveFormat(false);
                } else if (StartupOption.FORCE.getName().equals(args[i])) {
                    startOpt.setForceFormat(true);
                } else {
                    LOG.error("Invalid argument: " + args[i]);
                    return null;
                }
            }
            return startOpt;
        } else if (StartupOption.RECOVER.getName().equalsIgnoreCase(cmd)) {
            if (startOpt != StartupOption.REGULAR) {
                throw new RuntimeException("Can't combine -recover with " + "other startup options.");
            }
            startOpt = StartupOption.RECOVER;
            while (++i < argsLen) {
                if (args[i].equalsIgnoreCase(StartupOption.FORCE.getName())) {
                    startOpt.setForce(MetaRecoveryContext.FORCE_FIRST_CHOICE);
                } else {
                    throw new RuntimeException("Error parsing recovery options: " + "can't understand option \"" + args[i] + "\"");
                }
            }
        } else if (StartupOption.METADATAVERSION.getName().equalsIgnoreCase(cmd)) {
            startOpt = StartupOption.METADATAVERSION;
        } else {
            return null;
        }
    }
    return startOpt;
}
Also used : StartupOption(org.apache.hadoop.hdfs.server.common.HdfsServerConstants.StartupOption) RollingUpgradeStartupOption(org.apache.hadoop.hdfs.server.common.HdfsServerConstants.RollingUpgradeStartupOption) VisibleForTesting(com.google.common.annotations.VisibleForTesting)

Example 49 with VisibleForTesting

use of com.google.common.annotations.VisibleForTesting in project hadoop by apache.

the class SecureIOUtils method forceSecureOpenFSDataInputStream.

/**
   * Same as openFSDataInputStream except that it will run even if security is
   * off. This is used by unit tests.
   */
@VisibleForTesting
protected static FSDataInputStream forceSecureOpenFSDataInputStream(File file, String expectedOwner, String expectedGroup) throws IOException {
    final FSDataInputStream in = rawFilesystem.open(new Path(file.getAbsolutePath()));
    boolean success = false;
    try {
        Stat stat = NativeIO.POSIX.getFstat(in.getFileDescriptor());
        checkStat(file, stat.getOwner(), stat.getGroup(), expectedOwner, expectedGroup);
        success = true;
        return in;
    } finally {
        if (!success) {
            in.close();
        }
    }
}
Also used : Path(org.apache.hadoop.fs.Path) Stat(org.apache.hadoop.io.nativeio.NativeIO.POSIX.Stat) FSDataInputStream(org.apache.hadoop.fs.FSDataInputStream) VisibleForTesting(com.google.common.annotations.VisibleForTesting)

Example 50 with VisibleForTesting

use of com.google.common.annotations.VisibleForTesting in project hadoop by apache.

the class SecureIOUtils method forceSecureOpenForRead.

/**
   * Same as openForRead() except that it will run even if security is off.
   * This is used by unit tests.
   */
@VisibleForTesting
protected static FileInputStream forceSecureOpenForRead(File f, String expectedOwner, String expectedGroup) throws IOException {
    FileInputStream fis = new FileInputStream(f);
    boolean success = false;
    try {
        Stat stat = NativeIO.POSIX.getFstat(fis.getFD());
        checkStat(f, stat.getOwner(), stat.getGroup(), expectedOwner, expectedGroup);
        success = true;
        return fis;
    } finally {
        if (!success) {
            fis.close();
        }
    }
}
Also used : Stat(org.apache.hadoop.io.nativeio.NativeIO.POSIX.Stat) FileInputStream(java.io.FileInputStream) VisibleForTesting(com.google.common.annotations.VisibleForTesting)

Aggregations

VisibleForTesting (com.google.common.annotations.VisibleForTesting)808 IOException (java.io.IOException)135 ArrayList (java.util.ArrayList)67 Map (java.util.Map)52 Path (java.nio.file.Path)47 File (java.io.File)41 HashMap (java.util.HashMap)37 Path (org.apache.hadoop.fs.Path)33 List (java.util.List)29 ImmutableList (com.google.common.collect.ImmutableList)28 Matcher (java.util.regex.Matcher)26 HashSet (java.util.HashSet)23 ImmutableMap (com.google.common.collect.ImmutableMap)21 FileStatus (org.apache.hadoop.fs.FileStatus)21 SourcePath (com.facebook.buck.rules.SourcePath)20 FileHandle (org.apache.hadoop.nfs.nfs3.FileHandle)19 DFSClient (org.apache.hadoop.hdfs.DFSClient)18 Nfs3FileAttributes (org.apache.hadoop.nfs.nfs3.Nfs3FileAttributes)18 ImmutableSet (com.google.common.collect.ImmutableSet)17 LinkedHashMap (java.util.LinkedHashMap)17