diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/SimulatedFSDataset.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/SimulatedFSDataset.java index 312da1fe64b..d1284fe03a3 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/SimulatedFSDataset.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/datanode/SimulatedFSDataset.java @@ -420,9 +420,66 @@ public class SimulatedFSDataset implements FsDatasetSpi { } } + static class SimulatedVolume implements FsVolumeSpi { + private final SimulatedStorage storage; + + SimulatedVolume(final SimulatedStorage storage) { + this.storage = storage; + } + + @Override + public String getStorageID() { + return storage.getStorageUuid(); + } + + @Override + public String[] getBlockPoolList() { + return new String[0]; + } + + @Override + public long getAvailable() throws IOException { + return storage.getCapacity() - storage.getUsed(); + } + + @Override + public String getBasePath() { + return null; + } + + @Override + public String getPath(String bpid) throws IOException { + return null; + } + + @Override + public File getFinalizedDir(String bpid) throws IOException { + return null; + } + + @Override + public StorageType getStorageType() { + return null; + } + + @Override + public boolean isTransientStorage() { + return false; + } + + @Override + public void reserveSpaceForRbw(long bytesToReserve) { + } + + @Override + public void releaseReservedSpace(long bytesToRelease) { + } + } + private final Map> blockMap = new HashMap>(); private final SimulatedStorage storage; + private final SimulatedVolume volume; private final String datanodeUuid; public SimulatedFSDataset(DataStorage storage, Configuration conf) { @@ -439,6 +496,7 @@ public class SimulatedFSDataset implements FsDatasetSpi { this.storage = new SimulatedStorage( conf.getLong(CONFIG_PROPERTY_CAPACITY, DEFAULT_CAPACITY), conf.getEnum(CONFIG_PROPERTY_STATE, DEFAULT_STATE)); + this.volume = new SimulatedVolume(this.storage); } public synchronized void injectBlocks(String bpid, @@ -1138,7 +1196,7 @@ public class SimulatedFSDataset implements FsDatasetSpi { @Override public FsVolumeSpi getVolume(ExtendedBlock b) { - throw new UnsupportedOperationException(); + return volume; } @Override