Author: sebb
Date: Sat Apr 24 17:54:50 2010
New Revision: 937661
URL: http://svn.apache.org/viewvc?rev=937661&view=rev
Log:
Add baToHexBytes method to avoid unnecessary conversion via string
Modified:
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/util/JOrphanUtils.java
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java
jakarta/jmeter/trunk/test/src/org/apache/jorphan/util/TestJorphanUtils.java
Modified:
jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/util/JOrphanUtils.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/util/JOrphanUtils.java?rev=937661&r1=937660&r2=937661&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/util/JOrphanUtils.java
(original)
+++ jakarta/jmeter/trunk/src/jorphan/org/apache/jorphan/util/JOrphanUtils.java
Sat Apr 24 17:54:50 2010
@@ -468,4 +468,26 @@ public final class JOrphanUtils {
}
return sb.toString();
}
+
+ /**
+ * Convert binary byte array to hex string.
+ *
+ * @param ba input binary byte array
+ * @return hex representation of binary input
+ */
+ public static byte[] baToHexBytes(byte ba[]) {
+ byte[] hb = new byte[ba.length*2];
+ for (int i = 0; i < ba.length; i++) {
+ byte upper = (byte) ((ba[i] & 0xf0) >> 4);
+ byte lower = (byte) (ba[i] & 0x0f);
+ hb[2*i]=toHexChar(upper);
+ hb[2*i+1]=toHexChar(lower);
+ }
+ return hb;
+ }
+
+ private static byte toHexChar(byte in){
+ if (in < 10) return (byte) (in+'0');
+ return (byte) ((in-10)+'a');
+ }
}
Modified:
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java?rev=937661&r1=937660&r2=937661&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java
(original)
+++
jakarta/jmeter/trunk/src/protocol/http/org/apache/jmeter/protocol/http/sampler/HTTPSamplerBase.java
Sat Apr 24 17:54:50 2010
@@ -1478,7 +1478,7 @@ public abstract class HTTPSamplerBase ex
w.flush();
if (asMD5 && md != null) {
byte[] md5Result = md.digest();
- w.write(JOrphanUtils.baToHexString(md5Result).getBytes());
+ w.write(JOrphanUtils.baToHexBytes(md5Result));
sampleResult.setBytes(totalBytes);
}
w.close();
Modified:
jakarta/jmeter/trunk/test/src/org/apache/jorphan/util/TestJorphanUtils.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/test/src/org/apache/jorphan/util/TestJorphanUtils.java?rev=937661&r1=937660&r2=937661&view=diff
==============================================================================
--- jakarta/jmeter/trunk/test/src/org/apache/jorphan/util/TestJorphanUtils.java
(original)
+++ jakarta/jmeter/trunk/test/src/org/apache/jorphan/util/TestJorphanUtils.java
Sat Apr 24 17:54:50 2010
@@ -22,6 +22,8 @@
package org.apache.jorphan.util;
+import java.io.UnsupportedEncodingException;
+
import junit.framework.TestCase;
public class TestJorphanUtils extends TestCase {
@@ -301,4 +303,17 @@ public class TestJorphanUtils extends Te
assertEquals("00",JOrphanUtils.baToHexString(new byte[]{0}));
assertEquals("0f107f8081ff",JOrphanUtils.baToHexString(new
byte[]{15,16,127,-128,-127,-1}));
}
+
+ public void testbaToByte() throws Exception{
+ assertEqualsArray(new byte[]{},JOrphanUtils.baToHexBytes(new
byte[]{}));
+ assertEqualsArray(new byte[]{'0','0'},JOrphanUtils.baToHexBytes(new
byte[]{0}));
+
assertEqualsArray("0f107f8081ff".getBytes("UTF-8"),JOrphanUtils.baToHexBytes(new
byte[]{15,16,127,-128,-127,-1}));
+ }
+
+ private void assertEqualsArray(byte[] expected, byte[] actual){
+ assertEquals("arrays must be same length",expected.length,
actual.length);
+ for(int i=0; i < expected.length; i++){
+ assertEquals("values must be the same for index:
"+i,expected[i],actual[i]);
+ }
+ }
}