Java tutorial
/** * Copyright (C) 2016, CERN * This software is distributed under the terms of the GNU General Public * Licence version 3 (GPL Version 3), copied verbatim in the file "LICENSE". * In applying this license, CERN does not waive the privileges and immunities * granted to it by virtue of its status as Intergovernmental Organization * or submit itself to any jurisdiction. */ package ch.cern.db.hdfs; import java.io.IOException; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import org.apache.hadoop.fs.BlockLocation; import org.apache.hadoop.fs.BlockStorageLocation; import org.apache.hadoop.fs.VolumeId; import org.apache.hadoop.hdfs.DistributedFileSystem; import org.junit.Assert; import org.junit.Test; import ch.cern.db.util.SUtils; public class DistributedFileSystemMetadataTest extends DistributedFileSystem { private class TVolumeId implements VolumeId { String hex; public TVolumeId(String hex) { this.hex = SUtils.adjustLength(hex, 8, '0', false); } @Override public int compareTo(VolumeId arg0) { return 0; } @Override public String toString() { return hex; } } @Test public void computeHostsDiskIdsCount() throws IOException { List<BlockLocation> blockStorageLocations = new LinkedList<>(); blockStorageLocations .add(new BlockStorageLocation(new BlockLocation(null, new String[] { "host1", "host2" }, 0, 0), new VolumeId[] { new TVolumeId("3"), new TVolumeId("4") })); blockStorageLocations .add(new BlockStorageLocation(new BlockLocation(null, new String[] { "host2", "host3" }, 0, 0), new VolumeId[] { new TVolumeId("4"), new TVolumeId("5") })); blockStorageLocations .add(new BlockStorageLocation(new BlockLocation(null, new String[] { "host10", "host2" }, 0, 0), new VolumeId[] { new TVolumeId("3"), new TVolumeId("4") })); blockStorageLocations .add(new BlockStorageLocation(new BlockLocation(null, new String[] { "host10", "host3" }, 0, 0), new VolumeId[] { new TVolumeId("8"), new TVolumeId("5") })); blockStorageLocations.add(new BlockLocation(null, new String[] { "host10", "host3", "host3" }, 0, 0)); HashMap<String, HashMap<Integer, Integer>> hosts_diskids = DistributedFileSystemMetadata .computeHostsDiskIdsCount(blockStorageLocations); Assert.assertEquals(1, hosts_diskids.get("host1").get(3).intValue()); Assert.assertEquals(3, hosts_diskids.get("host2").get(4).intValue()); Assert.assertEquals(2, hosts_diskids.get("host3").get(5).intValue()); Assert.assertEquals(2, hosts_diskids.get("host3").get(-1).intValue()); Assert.assertEquals(1, hosts_diskids.get("host10").get(3).intValue()); Assert.assertEquals(1, hosts_diskids.get("host10").get(8).intValue()); Assert.assertEquals(1, hosts_diskids.get("host10").get(-1).intValue()); } @Test public void getDiskId() { Assert.assertEquals(-1, DistributedFileSystemMetadata.getDiskId(null)); Assert.assertEquals(1, DistributedFileSystemMetadata.getDiskId(new TVolumeId("1"))); Assert.assertEquals(16, DistributedFileSystemMetadata.getDiskId(new TVolumeId("10"))); Assert.assertEquals(27652112, DistributedFileSystemMetadata.getDiskId(new TVolumeId(Integer.toHexString(27652112)))); } }