|
@@ -0,0 +1,277 @@
|
|
|
+/*
|
|
|
+ * Licensed to the Apache Software Foundation (ASF) under one or more
|
|
|
+ * contributor license agreements. See the NOTICE file distributed with this
|
|
|
+ * work for additional information regarding copyright ownership. The ASF
|
|
|
+ * licenses this file to you under the Apache License, Version 2.0 (the
|
|
|
+ * "License"); you may not use this file except in compliance with the License.
|
|
|
+ * You may obtain a copy of the License at
|
|
|
+ *
|
|
|
+ * http://www.apache.org/licenses/LICENSE-2.0
|
|
|
+ *
|
|
|
+ * Unless required by applicable law or agreed to in writing, software
|
|
|
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
|
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
|
+ * License for the specific language governing permissions and limitations under
|
|
|
+ * the License.
|
|
|
+ *
|
|
|
+ */
|
|
|
+
|
|
|
+package org.apache.hadoop.conf;
|
|
|
+
|
|
|
+import org.junit.Test;
|
|
|
+
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+import static org.hamcrest.CoreMatchers.is;
|
|
|
+import static org.hamcrest.MatcherAssert.assertThat;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Tests that Storage Units work as expected.
|
|
|
+ */
|
|
|
+public class TestStorageUnit {
|
|
|
+ final static double KB = 1024.0;
|
|
|
+ final static double MB = KB * 1024.0;
|
|
|
+ final static double GB = MB * 1024.0;
|
|
|
+ final static double TB = GB * 1024.0;
|
|
|
+ final static double PB = TB * 1024.0;
|
|
|
+ final static double EB = PB * 1024.0;
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testByteToKiloBytes() {
|
|
|
+ Map<Double, Double> results = new HashMap<>();
|
|
|
+ results.put(1024.0, 1.0);
|
|
|
+ results.put(2048.0, 2.0);
|
|
|
+ results.put(-1024.0, -1.0);
|
|
|
+ results.put(34565.0, 33.7549);
|
|
|
+ results.put(223344332.0, 218109.6992);
|
|
|
+ results.put(1234983.0, 1206.0381);
|
|
|
+ results.put(1234332.0, 1205.4023);
|
|
|
+ results.put(0.0, 0.0);
|
|
|
+
|
|
|
+ for (Map.Entry<Double, Double> entry : results.entrySet()) {
|
|
|
+ assertThat(StorageUnit.BYTES.toKBs(entry.getKey()), is(entry.getValue()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testBytesToMegaBytes() {
|
|
|
+ Map<Double, Double> results = new HashMap<>();
|
|
|
+ results.put(1048576.0, 1.0);
|
|
|
+ results.put(24117248.0, 23.0);
|
|
|
+ results.put(459920023.0, 438.6139);
|
|
|
+ results.put(234443233.0, 223.5825);
|
|
|
+ results.put(-35651584.0, -34.0);
|
|
|
+ results.put(0.0, 0.0);
|
|
|
+ for (Map.Entry<Double, Double> entry : results.entrySet()) {
|
|
|
+ assertThat(StorageUnit.BYTES.toMBs(entry.getKey()), is(entry.getValue()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testBytesToGigaBytes() {
|
|
|
+ Map<Double, Double> results = new HashMap<>();
|
|
|
+ results.put(1073741824.0, 1.0);
|
|
|
+ results.put(24696061952.0, 23.0);
|
|
|
+ results.put(459920023.0, 0.4283);
|
|
|
+ results.put(234443233.0, 0.2183);
|
|
|
+ results.put(-36507222016.0, -34.0);
|
|
|
+ results.put(0.0, 0.0);
|
|
|
+ for (Map.Entry<Double, Double> entry : results.entrySet()) {
|
|
|
+ assertThat(StorageUnit.BYTES.toGBs(entry.getKey()), is(entry.getValue()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testBytesToTerraBytes() {
|
|
|
+ Map<Double, Double> results = new HashMap<>();
|
|
|
+ results.put(1.09951E+12, 1.0);
|
|
|
+ results.put(2.52888E+13, 23.0);
|
|
|
+ results.put(459920023.0, 0.0004);
|
|
|
+ results.put(234443233.0, 0.0002);
|
|
|
+ results.put(-3.73834E+13, -34.0);
|
|
|
+ results.put(0.0, 0.0);
|
|
|
+ for (Map.Entry<Double, Double> entry : results.entrySet()) {
|
|
|
+ assertThat(StorageUnit.BYTES.toTBs(entry.getKey()), is(entry.getValue()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testBytesToPetaBytes() {
|
|
|
+ Map<Double, Double> results = new HashMap<>();
|
|
|
+ results.put(1.1259E+15, 1.0);
|
|
|
+ results.put(2.58957E+16, 23.0);
|
|
|
+ results.put(4.70958E+11, 0.0004);
|
|
|
+ results.put(234443233.0, 0.0000); // Out of precision window.
|
|
|
+ results.put(-3.82806E+16, -34.0);
|
|
|
+ results.put(0.0, 0.0);
|
|
|
+ for (Map.Entry<Double, Double> entry : results.entrySet()) {
|
|
|
+ assertThat(StorageUnit.BYTES.toPBs(entry.getKey()), is(entry.getValue()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testBytesToExaBytes() {
|
|
|
+ Map<Double, Double> results = new HashMap<>();
|
|
|
+ results.put(1.15292E+18, 1.0);
|
|
|
+ results.put(2.65172E+19, 23.0);
|
|
|
+ results.put(4.82261E+14, 0.0004);
|
|
|
+ results.put(234443233.0, 0.0000); // Out of precision window.
|
|
|
+ results.put(-3.91993E+19, -34.0);
|
|
|
+ results.put(0.0, 0.0);
|
|
|
+ for (Map.Entry<Double, Double> entry : results.entrySet()) {
|
|
|
+ assertThat(StorageUnit.BYTES.toEBs(entry.getKey()), is(entry.getValue()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testByteConversions() {
|
|
|
+ assertThat(StorageUnit.BYTES.getShortName(), is("b"));
|
|
|
+ assertThat(StorageUnit.BYTES.getSuffixChar(), is("b"));
|
|
|
+
|
|
|
+ assertThat(StorageUnit.BYTES.getLongName(), is("bytes"));
|
|
|
+ assertThat(StorageUnit.BYTES.toString(), is("bytes"));
|
|
|
+ assertThat(StorageUnit.BYTES.toBytes(1), is(1.0));
|
|
|
+ assertThat(StorageUnit.BYTES.toBytes(1024),
|
|
|
+ is(StorageUnit.BYTES.getDefault(1024)));
|
|
|
+ assertThat(StorageUnit.BYTES.fromBytes(10), is(10.0));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testKBConversions() {
|
|
|
+ assertThat(StorageUnit.KB.getShortName(), is("kb"));
|
|
|
+ assertThat(StorageUnit.KB.getSuffixChar(), is("k"));
|
|
|
+ assertThat(StorageUnit.KB.getLongName(), is("kilobytes"));
|
|
|
+ assertThat(StorageUnit.KB.toString(), is("kilobytes"));
|
|
|
+ assertThat(StorageUnit.KB.toKBs(1024),
|
|
|
+ is(StorageUnit.KB.getDefault(1024)));
|
|
|
+
|
|
|
+
|
|
|
+ assertThat(StorageUnit.KB.toBytes(1), is(KB));
|
|
|
+ assertThat(StorageUnit.KB.fromBytes(KB), is(1.0));
|
|
|
+
|
|
|
+ assertThat(StorageUnit.KB.toKBs(10), is(10.0));
|
|
|
+ assertThat(StorageUnit.KB.toMBs(3.0 * 1024.0), is(3.0));
|
|
|
+ assertThat(StorageUnit.KB.toGBs(1073741824), is(1024.0));
|
|
|
+ assertThat(StorageUnit.KB.toTBs(1073741824), is(1.0));
|
|
|
+ assertThat(StorageUnit.KB.toPBs(1.0995116e+12), is(1.0));
|
|
|
+ assertThat(StorageUnit.KB.toEBs(1.1258999e+15), is(1.0));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testMBConversions() {
|
|
|
+ assertThat(StorageUnit.MB.getShortName(), is("mb"));
|
|
|
+ assertThat(StorageUnit.MB.getSuffixChar(), is("m"));
|
|
|
+ assertThat(StorageUnit.MB.getLongName(), is("megabytes"));
|
|
|
+ assertThat(StorageUnit.MB.toString(), is("megabytes"));
|
|
|
+ assertThat(StorageUnit.MB.toMBs(1024),
|
|
|
+ is(StorageUnit.MB.getDefault(1024)));
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ assertThat(StorageUnit.MB.toBytes(1), is(MB));
|
|
|
+ assertThat(StorageUnit.MB.fromBytes(MB), is(1.0));
|
|
|
+
|
|
|
+ assertThat(StorageUnit.MB.toKBs(1), is(1024.0));
|
|
|
+ assertThat(StorageUnit.MB.toMBs(10), is(10.0));
|
|
|
+
|
|
|
+ assertThat(StorageUnit.MB.toGBs(44040192), is(43008.0));
|
|
|
+ assertThat(StorageUnit.MB.toTBs(1073741824), is(1024.0));
|
|
|
+ assertThat(StorageUnit.MB.toPBs(1073741824), is(1.0));
|
|
|
+ assertThat(StorageUnit.MB.toEBs(1 * (EB/MB)), is(1.0));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testGBConversions() {
|
|
|
+ assertThat(StorageUnit.GB.getShortName(), is("gb"));
|
|
|
+ assertThat(StorageUnit.GB.getSuffixChar(), is("g"));
|
|
|
+ assertThat(StorageUnit.GB.getLongName(), is("gigabytes"));
|
|
|
+ assertThat(StorageUnit.GB.toString(), is("gigabytes"));
|
|
|
+ assertThat(StorageUnit.GB.toGBs(1024),
|
|
|
+ is(StorageUnit.GB.getDefault(1024)));
|
|
|
+
|
|
|
+
|
|
|
+ assertThat(StorageUnit.GB.toBytes(1), is(GB));
|
|
|
+ assertThat(StorageUnit.GB.fromBytes(GB), is(1.0));
|
|
|
+
|
|
|
+ assertThat(StorageUnit.GB.toKBs(1), is(1024.0 * 1024));
|
|
|
+ assertThat(StorageUnit.GB.toMBs(10), is(10.0 * 1024));
|
|
|
+
|
|
|
+ assertThat(StorageUnit.GB.toGBs(44040192.0), is(44040192.0));
|
|
|
+ assertThat(StorageUnit.GB.toTBs(1073741824), is(1048576.0));
|
|
|
+ assertThat(StorageUnit.GB.toPBs(1.07375e+9), is(1024.0078));
|
|
|
+ assertThat(StorageUnit.GB.toEBs(1 * (EB/GB)), is(1.0));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testTBConversions() {
|
|
|
+ assertThat(StorageUnit.TB.getShortName(), is("tb"));
|
|
|
+ assertThat(StorageUnit.TB.getSuffixChar(), is("t"));
|
|
|
+ assertThat(StorageUnit.TB.getLongName(), is("terabytes"));
|
|
|
+ assertThat(StorageUnit.TB.toString(), is("terabytes"));
|
|
|
+ assertThat(StorageUnit.TB.toTBs(1024),
|
|
|
+ is(StorageUnit.TB.getDefault(1024)));
|
|
|
+
|
|
|
+ assertThat(StorageUnit.TB.toBytes(1), is(TB));
|
|
|
+ assertThat(StorageUnit.TB.fromBytes(TB), is(1.0));
|
|
|
+
|
|
|
+ assertThat(StorageUnit.TB.toKBs(1), is(1024.0 * 1024* 1024));
|
|
|
+ assertThat(StorageUnit.TB.toMBs(10), is(10.0 * 1024 * 1024));
|
|
|
+
|
|
|
+ assertThat(StorageUnit.TB.toGBs(44040192.0), is(45097156608.0));
|
|
|
+ assertThat(StorageUnit.TB.toTBs(1073741824.0), is(1073741824.0));
|
|
|
+ assertThat(StorageUnit.TB.toPBs(1024), is(1.0));
|
|
|
+ assertThat(StorageUnit.TB.toEBs(1 * (EB/TB)), is(1.0));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testPBConversions() {
|
|
|
+ assertThat(StorageUnit.PB.getShortName(), is("pb"));
|
|
|
+ assertThat(StorageUnit.PB.getSuffixChar(), is("p"));
|
|
|
+ assertThat(StorageUnit.PB.getLongName(), is("petabytes"));
|
|
|
+ assertThat(StorageUnit.PB.toString(), is("petabytes"));
|
|
|
+ assertThat(StorageUnit.PB.toPBs(1024),
|
|
|
+ is(StorageUnit.PB.getDefault(1024)));
|
|
|
+
|
|
|
+
|
|
|
+ assertThat(StorageUnit.PB.toBytes(1), is(PB));
|
|
|
+ assertThat(StorageUnit.PB.fromBytes(PB), is(1.0));
|
|
|
+
|
|
|
+ assertThat(StorageUnit.PB.toKBs(1), is(PB/KB));
|
|
|
+ assertThat(StorageUnit.PB.toMBs(10), is(10.0 * (PB / MB)));
|
|
|
+
|
|
|
+ assertThat(StorageUnit.PB.toGBs(44040192.0),
|
|
|
+ is(44040192.0 * PB/GB));
|
|
|
+ assertThat(StorageUnit.PB.toTBs(1073741824.0),
|
|
|
+ is(1073741824.0 * (PB/TB)));
|
|
|
+ assertThat(StorageUnit.PB.toPBs(1024.0), is(1024.0));
|
|
|
+ assertThat(StorageUnit.PB.toEBs(1024.0), is(1.0));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @Test
|
|
|
+ public void testEBConversions() {
|
|
|
+ assertThat(StorageUnit.EB.getShortName(), is("eb"));
|
|
|
+ assertThat(StorageUnit.EB.getSuffixChar(), is("e"));
|
|
|
+
|
|
|
+ assertThat(StorageUnit.EB.getLongName(), is("exabytes"));
|
|
|
+ assertThat(StorageUnit.EB.toString(), is("exabytes"));
|
|
|
+ assertThat(StorageUnit.EB.toEBs(1024),
|
|
|
+ is(StorageUnit.EB.getDefault(1024)));
|
|
|
+
|
|
|
+ assertThat(StorageUnit.EB.toBytes(1), is(EB));
|
|
|
+ assertThat(StorageUnit.EB.fromBytes(EB), is(1.0));
|
|
|
+
|
|
|
+ assertThat(StorageUnit.EB.toKBs(1), is(EB/KB));
|
|
|
+ assertThat(StorageUnit.EB.toMBs(10), is(10.0 * (EB / MB)));
|
|
|
+
|
|
|
+ assertThat(StorageUnit.EB.toGBs(44040192.0),
|
|
|
+ is(44040192.0 * EB/GB));
|
|
|
+ assertThat(StorageUnit.EB.toTBs(1073741824.0),
|
|
|
+ is(1073741824.0 * (EB/TB)));
|
|
|
+ assertThat(StorageUnit.EB.toPBs(1.0), is(1024.0));
|
|
|
+ assertThat(StorageUnit.EB.toEBs(42.0), is(42.0));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|