[Minor] Made Base encoding/decoding performance tests configurable

To enable them, set the system property
ch.eitchnet.utils.test.runPerfTests=true
This commit is contained in:
Robert von Burg 2013-09-21 10:03:27 +02:00
parent a5ffe0a6cc
commit b7a4762a05
2 changed files with 157 additions and 68 deletions

View File

@ -30,6 +30,7 @@ import static ch.eitchnet.utils.helper.BaseEncoding.toBase32Hex;
import junit.framework.Assert;
import org.junit.Test;
import org.junit.runners.JUnit4;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -38,8 +39,16 @@ import org.slf4j.LoggerFactory;
*
*/
public class BaseDecodingTest {
public static final String PROP_RUN_PERF_TESTS = "ch.eitchnet.utils.test.runPerfTests"; //$NON-NLS-1$
private static final Logger logger = LoggerFactory.getLogger(BaseDecodingTest.class);
public static boolean isSkipPerfTests() {
String context = BaseDecodingTest.class.getSimpleName();
String key = PROP_RUN_PERF_TESTS;
boolean runPerfTests = PropertiesHelper.getPropertyBool(context, key, Boolean.FALSE);
return !runPerfTests;
}
@Test
public void testBase64() {
Assert.assertEquals("", fromBase64(""));
@ -49,6 +58,59 @@ public class BaseDecodingTest {
Assert.assertEquals("foob", fromBase64("Zm9vYg=="));
Assert.assertEquals("fooba", fromBase64("Zm9vYmE="));
Assert.assertEquals("foobar", fromBase64("Zm9vYmFy"));
}
@Test
public void testBase32() {
Assert.assertEquals("", fromBase32(""));
Assert.assertEquals("f", fromBase32("MY======"));
Assert.assertEquals("fo", fromBase32("MZXQ===="));
Assert.assertEquals("foo", fromBase32("MZXW6==="));
Assert.assertEquals("foob", fromBase32("MZXW6YQ="));
Assert.assertEquals("fooba", fromBase32("MZXW6YTB"));
Assert.assertEquals("foobar", fromBase32("MZXW6YTBOI======"));
}
@Test
public void testBase32Hex() {
Assert.assertEquals("", fromBase32Hex(""));
Assert.assertEquals("f", fromBase32Hex("CO======"));
Assert.assertEquals("fo", fromBase32Hex("CPNG===="));
Assert.assertEquals("foo", fromBase32Hex("CPNMU==="));
Assert.assertEquals("foob", fromBase32Hex("CPNMUOG="));
Assert.assertEquals("fooba", fromBase32Hex("CPNMUOJ1"));
Assert.assertEquals("foobar", fromBase32Hex("CPNMUOJ1E8======"));
}
@Test
public void testBase32Dmedia() {
Assert.assertEquals("", fromBase32Dmedia(""));
Assert.assertEquals("binary foo", fromBase32Dmedia("FCNPVRELI7J9FUUI"));
Assert.assertEquals("f", fromBase32Dmedia("FR======"));
Assert.assertEquals("fo", fromBase32Dmedia("FSQJ===="));
Assert.assertEquals("foo", fromBase32Dmedia("FSQPX==="));
Assert.assertEquals("foob", fromBase32Dmedia("FSQPXRJ="));
Assert.assertEquals("fooba", fromBase32Dmedia("FSQPXRM4"));
Assert.assertEquals("foobar", fromBase32Dmedia("FSQPXRM4HB======"));
}
@Test
public void testBase16() {
Assert.assertEquals("", fromBase16(""));
Assert.assertEquals("f", fromBase16("66"));
Assert.assertEquals("fo", fromBase16("666F"));
Assert.assertEquals("foo", fromBase16("666F6F"));
Assert.assertEquals("foob", fromBase16("666F6F62"));
Assert.assertEquals("fooba", fromBase16("666F6F6261"));
Assert.assertEquals("foobar", fromBase16("666F6F626172"));
}
@Test
public void testBase64Perf() {
if (isSkipPerfTests()) {
return;
}
byte[] bytes = new byte[1024 * 1024];
for (int i = 0; i < bytes.length; i++) {
@ -63,14 +125,11 @@ public class BaseDecodingTest {
}
@Test
public void testBase32() {
Assert.assertEquals("", fromBase32(""));
Assert.assertEquals("f", fromBase32("MY======"));
Assert.assertEquals("fo", fromBase32("MZXQ===="));
Assert.assertEquals("foo", fromBase32("MZXW6==="));
Assert.assertEquals("foob", fromBase32("MZXW6YQ="));
Assert.assertEquals("fooba", fromBase32("MZXW6YTB"));
Assert.assertEquals("foobar", fromBase32("MZXW6YTBOI======"));
public void testBase32Perf() {
if (isSkipPerfTests()) {
logger.info("Not running performance tests as not enabled by system property " + PROP_RUN_PERF_TESTS);
return;
}
byte[] bytes = new byte[1024 * 1024];
for (int i = 0; i < bytes.length; i++) {
@ -85,14 +144,11 @@ public class BaseDecodingTest {
}
@Test
public void testBase32Hex() {
Assert.assertEquals("", fromBase32Hex(""));
Assert.assertEquals("f", fromBase32Hex("CO======"));
Assert.assertEquals("fo", fromBase32Hex("CPNG===="));
Assert.assertEquals("foo", fromBase32Hex("CPNMU==="));
Assert.assertEquals("foob", fromBase32Hex("CPNMUOG="));
Assert.assertEquals("fooba", fromBase32Hex("CPNMUOJ1"));
Assert.assertEquals("foobar", fromBase32Hex("CPNMUOJ1E8======"));
public void testBase32HexPerf() {
if (isSkipPerfTests()) {
logger.info("Not running performance tests as not enabled by system property " + PROP_RUN_PERF_TESTS);
return;
}
byte[] bytes = new byte[1024 * 1024];
for (int i = 0; i < bytes.length; i++) {
@ -107,16 +163,11 @@ public class BaseDecodingTest {
}
@Test
public void testBase32Dmedia() {
Assert.assertEquals("", fromBase32Dmedia(""));
Assert.assertEquals("binary foo", fromBase32Dmedia("FCNPVRELI7J9FUUI"));
Assert.assertEquals("f", fromBase32Dmedia("FR======"));
Assert.assertEquals("fo", fromBase32Dmedia("FSQJ===="));
Assert.assertEquals("foo", fromBase32Dmedia("FSQPX==="));
Assert.assertEquals("foob", fromBase32Dmedia("FSQPXRJ="));
Assert.assertEquals("fooba", fromBase32Dmedia("FSQPXRM4"));
Assert.assertEquals("foobar", fromBase32Dmedia("FSQPXRM4HB======"));
public void testBase32DmediaPerf() {
if (isSkipPerfTests()) {
logger.info("Not running performance tests as not enabled by system property " + PROP_RUN_PERF_TESTS);
return;
}
long start = System.nanoTime();
byte[] bytes = new byte[1024 * 1024];
@ -128,14 +179,11 @@ public class BaseDecodingTest {
}
@Test
public void testBase16() {
Assert.assertEquals("", fromBase16(""));
Assert.assertEquals("f", fromBase16("66"));
Assert.assertEquals("fo", fromBase16("666F"));
Assert.assertEquals("foo", fromBase16("666F6F"));
Assert.assertEquals("foob", fromBase16("666F6F62"));
Assert.assertEquals("fooba", fromBase16("666F6F6261"));
Assert.assertEquals("foobar", fromBase16("666F6F626172"));
public void testBase16Perf() {
if (isSkipPerfTests()) {
logger.info("Not running performance tests as not enabled by system property " + PROP_RUN_PERF_TESTS);
return;
}
byte[] bytes = new byte[1024 * 1024];
for (int i = 0; i < bytes.length; i++) {

View File

@ -21,10 +21,12 @@
*/
package ch.eitchnet.utils.helper;
import static ch.eitchnet.utils.helper.BaseDecodingTest.PROP_RUN_PERF_TESTS;
import static ch.eitchnet.utils.helper.BaseDecodingTest.isSkipPerfTests;
import static ch.eitchnet.utils.helper.BaseEncoding.toBase16;
import static ch.eitchnet.utils.helper.BaseEncoding.toBase32;
import static ch.eitchnet.utils.helper.BaseEncoding.toBase32Hex;
import static ch.eitchnet.utils.helper.BaseEncoding.toBase32Dmedia;
import static ch.eitchnet.utils.helper.BaseEncoding.toBase32Hex;
import static ch.eitchnet.utils.helper.BaseEncoding.toBase64;
import junit.framework.Assert;
@ -49,14 +51,6 @@ public class BaseEncodingTest {
Assert.assertEquals("Zm9vYg==", toBase64("foob"));
Assert.assertEquals("Zm9vYmE=", toBase64("fooba"));
Assert.assertEquals("Zm9vYmFy", toBase64("foobar"));
long start = System.nanoTime();
byte[] bytes = new byte[1024 * 1024];
for (int i = 0; i < 200; i++) {
toBase64(bytes);
}
long end = System.nanoTime();
logger.info("Encoding 200MB Base64 took " + StringHelper.formatNanoDuration(end - start));
}
@Test
@ -68,14 +62,6 @@ public class BaseEncodingTest {
Assert.assertEquals("MZXW6YQ=", toBase32("foob"));
Assert.assertEquals("MZXW6YTB", toBase32("fooba"));
Assert.assertEquals("MZXW6YTBOI======", toBase32("foobar"));
long start = System.nanoTime();
byte[] bytes = new byte[1024 * 1024];
for (int i = 0; i < 200; i++) {
toBase32(bytes);
}
long end = System.nanoTime();
logger.info("Encoding 200MB Base32 took " + StringHelper.formatNanoDuration(end - start));
}
@Test
@ -87,19 +73,10 @@ public class BaseEncodingTest {
Assert.assertEquals("CPNMUOG=", toBase32Hex("foob"));
Assert.assertEquals("CPNMUOJ1", toBase32Hex("fooba"));
Assert.assertEquals("CPNMUOJ1E8======", toBase32Hex("foobar"));
long start = System.nanoTime();
byte[] bytes = new byte[1024 * 1024];
for (int i = 0; i < 200; i++) {
toBase32Hex(bytes);
}
long end = System.nanoTime();
logger.info("Encoding 200MB Base32Hex took " + StringHelper.formatNanoDuration(end - start));
}
@Test
public void testBase32Dmedia() {
Assert.assertEquals("", toBase32Dmedia(""));
Assert.assertEquals("FCNPVRELI7J9FUUI", toBase32Dmedia("binary foo"));
Assert.assertEquals("FR======", toBase32Dmedia("f"));
@ -108,14 +85,6 @@ public class BaseEncodingTest {
Assert.assertEquals("FSQPXRJ=", toBase32Dmedia("foob"));
Assert.assertEquals("FSQPXRM4", toBase32Dmedia("fooba"));
Assert.assertEquals("FSQPXRM4HB======", toBase32Dmedia("foobar"));
long start = System.nanoTime();
byte[] bytes = new byte[1024 * 1024];
for (int i = 0; i < 200; i++) {
toBase32Hex(bytes);
}
long end = System.nanoTime();
logger.info("Encoding 200MB Base32Dmedia took " + StringHelper.formatNanoDuration(end - start));
}
@Test
@ -127,6 +96,78 @@ public class BaseEncodingTest {
Assert.assertEquals("666F6F62", toBase16("foob"));
Assert.assertEquals("666F6F6261", toBase16("fooba"));
Assert.assertEquals("666F6F626172", toBase16("foobar"));
}
@Test
public void testBase64Perf() {
if (isSkipPerfTests()) {
logger.info("Not running performance tests as not enabled by system property " + PROP_RUN_PERF_TESTS);
return;
}
long start = System.nanoTime();
byte[] bytes = new byte[1024 * 1024];
for (int i = 0; i < 200; i++) {
toBase64(bytes);
}
long end = System.nanoTime();
logger.info("Encoding 200MB Base64 took " + StringHelper.formatNanoDuration(end - start));
}
@Test
public void testBase32Perf() {
if (isSkipPerfTests()) {
logger.info("Not running performance tests as not enabled by system property " + PROP_RUN_PERF_TESTS);
return;
}
long start = System.nanoTime();
byte[] bytes = new byte[1024 * 1024];
for (int i = 0; i < 200; i++) {
toBase32(bytes);
}
long end = System.nanoTime();
logger.info("Encoding 200MB Base32 took " + StringHelper.formatNanoDuration(end - start));
}
@Test
public void testBase32HexPerf() {
if (isSkipPerfTests()) {
logger.info("Not running performance tests as not enabled by system property " + PROP_RUN_PERF_TESTS);
return;
}
long start = System.nanoTime();
byte[] bytes = new byte[1024 * 1024];
for (int i = 0; i < 200; i++) {
toBase32Hex(bytes);
}
long end = System.nanoTime();
logger.info("Encoding 200MB Base32Hex took " + StringHelper.formatNanoDuration(end - start));
}
@Test
public void testBase32DmediaPerf() {
if (isSkipPerfTests()) {
logger.info("Not running performance tests as not enabled by system property " + PROP_RUN_PERF_TESTS);
return;
}
long start = System.nanoTime();
byte[] bytes = new byte[1024 * 1024];
for (int i = 0; i < 200; i++) {
toBase32Hex(bytes);
}
long end = System.nanoTime();
logger.info("Encoding 200MB Base32Dmedia took " + StringHelper.formatNanoDuration(end - start));
}
@Test
public void testBase16Perf() {
if (isSkipPerfTests()) {
logger.info("Not running performance tests as not enabled by system property " + PROP_RUN_PERF_TESTS);
return;
}
long start = System.nanoTime();
byte[] bytes = new byte[1024 * 1024];