Skip to content

Commit 6ebfe5e

Browse files
committed
Optimize MD5 computations in tests
1 parent c951ac3 commit 6ebfe5e

File tree

2 files changed

+10
-8
lines changed

2 files changed

+10
-8
lines changed

client/src/test/java/org/asynchttpclient/reactivestreams/ReactiveStreamsTest.java

+6-7
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
import static io.netty.handler.codec.http.HttpHeaderNames.*;
1616
import static org.asynchttpclient.Dsl.*;
17-
import static org.asynchttpclient.test.TestUtils.LARGE_IMAGE_BYTES;
17+
import static org.asynchttpclient.test.TestUtils.*;
1818
import static org.testng.Assert.assertEquals;
1919
import io.netty.buffer.ByteBuf;
2020
import io.netty.buffer.Unpooled;
@@ -222,11 +222,10 @@ public void testStreamingPutImage() throws Exception {
222222
public void testConnectionDoesNotGetClosed() throws Exception {
223223
// test that we can stream the same request multiple times
224224
try (AsyncHttpClient client = asyncHttpClient(config().setRequestTimeout(100 * 6000))) {
225-
String expectedMd5 = TestUtils.md5(LARGE_IMAGE_BYTES);
226225
BoundRequestBuilder requestBuilder = client.preparePut(getTargetUrl())//
227226
.setBody(createPublisher(LARGE_IMAGE_BYTES, 1000))//
228227
.setHeader("X-" + CONTENT_LENGTH, LARGE_IMAGE_BYTES.length)//
229-
.setHeader("X-" + CONTENT_MD5, expectedMd5);
228+
.setHeader("X-" + CONTENT_MD5, LARGE_IMAGE_BYTES_MD5);
230229

231230
Response response = requestBuilder.execute().get();
232231
assertEquals(response.getStatusCode(), 200, "HTTP response was invalid on first request.");
@@ -235,8 +234,8 @@ public void testConnectionDoesNotGetClosed() throws Exception {
235234
responseBody = response.getResponseBodyAsBytes();
236235
assertEquals(Integer.valueOf(response.getHeader("X-" + CONTENT_LENGTH)).intValue(), LARGE_IMAGE_BYTES.length, "Server side payload length invalid");
237236
assertEquals(responseBody.length, LARGE_IMAGE_BYTES.length, "Client side payload length invalid");
238-
assertEquals(response.getHeader(CONTENT_MD5), expectedMd5, "Server side payload MD5 invalid");
239-
assertEquals(TestUtils.md5(responseBody), expectedMd5, "Client side payload MD5 invalid");
237+
assertEquals(response.getHeader(CONTENT_MD5), LARGE_IMAGE_BYTES_MD5, "Server side payload MD5 invalid");
238+
assertEquals(TestUtils.md5(responseBody), LARGE_IMAGE_BYTES_MD5, "Client side payload MD5 invalid");
240239
assertEquals(responseBody, LARGE_IMAGE_BYTES, "Image bytes are not equal on first attempt");
241240

242241
response = requestBuilder.execute().get();
@@ -246,8 +245,8 @@ public void testConnectionDoesNotGetClosed() throws Exception {
246245
assertEquals(responseBody.length, LARGE_IMAGE_BYTES.length, "Client side payload length invalid");
247246

248247
try {
249-
assertEquals(response.getHeader(CONTENT_MD5), expectedMd5, "Server side payload MD5 invalid");
250-
assertEquals(TestUtils.md5(responseBody), expectedMd5, "Client side payload MD5 invalid");
248+
assertEquals(response.getHeader(CONTENT_MD5), LARGE_IMAGE_BYTES_MD5, "Server side payload MD5 invalid");
249+
assertEquals(TestUtils.md5(responseBody), LARGE_IMAGE_BYTES_MD5, "Client side payload MD5 invalid");
251250
assertEquals(responseBody, LARGE_IMAGE_BYTES, "Image bytes weren't equal on subsequent test");
252251
} catch (AssertionError e) {
253252
e.printStackTrace();

client/src/test/java/org/asynchttpclient/test/TestUtils.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import org.asynchttpclient.SslEngineFactory;
6262
import org.asynchttpclient.netty.ssl.JsseSslEngineFactory;
6363
import org.asynchttpclient.util.Base64;
64+
import org.asynchttpclient.util.MessageDigestUtils;
6465
import org.eclipse.jetty.security.ConstraintMapping;
6566
import org.eclipse.jetty.security.ConstraintSecurityHandler;
6667
import org.eclipse.jetty.security.HashLoginService;
@@ -89,6 +90,7 @@ public class TestUtils {
8990
public static final byte[] PATTERN_BYTES = "FooBarBazQixFooBarBazQixFooBarBazQixFooBarBazQixFooBarBazQixFooBarBazQix".getBytes(Charset.forName("UTF-16"));
9091
public static final File LARGE_IMAGE_FILE;
9192
public static final byte[] LARGE_IMAGE_BYTES;
93+
public static final String LARGE_IMAGE_BYTES_MD5;
9294
public static final File SIMPLE_TEXT_FILE;
9395
public static final String SIMPLE_TEXT_FILE_STRING;
9496
private static final LoginService LOGIN_SERVICE = new HashLoginService("MyRealm", "src/test/resources/realm.properties");
@@ -99,6 +101,7 @@ public class TestUtils {
99101
TMP_DIR.deleteOnExit();
100102
LARGE_IMAGE_FILE = resourceAsFile("300k.png");
101103
LARGE_IMAGE_BYTES = FileUtils.readFileToByteArray(LARGE_IMAGE_FILE);
104+
LARGE_IMAGE_BYTES_MD5 = TestUtils.md5(LARGE_IMAGE_BYTES);
102105
SIMPLE_TEXT_FILE = resourceAsFile("SimpleTextFile.txt");
103106
SIMPLE_TEXT_FILE_STRING = FileUtils.readFileToString(SIMPLE_TEXT_FILE, UTF_8);
104107
} catch (Exception e) {
@@ -373,7 +376,7 @@ public static String md5(byte[] bytes) {
373376

374377
public static String md5(byte[] bytes, int offset, int len) {
375378
try {
376-
MessageDigest md = MessageDigest.getInstance("MD5");
379+
MessageDigest md = MessageDigestUtils.pooledMd5MessageDigest();
377380
md.update(bytes, offset, len);
378381
return Base64.encode(md.digest());
379382
} catch (Exception e) {

0 commit comments

Comments
 (0)