summaryrefslogtreecommitdiffstats
path: root/benchmarks/regression/URLConnectionBenchmark.java
diff options
context:
space:
mode:
authorTsu Chiang Chuang <tsu@google.com>2013-03-26 17:38:46 -0700
committerTsu Chiang Chuang <tsu@google.com>2013-03-28 14:47:03 -0700
commit5a7833b406bb2716b057d3ed923f22f1f86b2a20 (patch)
tree7d0e79a91c627918879d379bc6362d20f79b512f /benchmarks/regression/URLConnectionBenchmark.java
parent0b2e0fc3b8b8886cfebd27d279383d8cae61102d (diff)
downloadlibcore-5a7833b406bb2716b057d3ed923f22f1f86b2a20.zip
libcore-5a7833b406bb2716b057d3ed923f22f1f86b2a20.tar.gz
libcore-5a7833b406bb2716b057d3ed923f22f1f86b2a20.tar.bz2
Build Caliper microbenchmark tests.Also fix the URLConnectionBenchmark tests to use the external/mockwebserver.
Change-Id: I48ec32e94f992fe570a6d729bb38971b3f211188
Diffstat (limited to 'benchmarks/regression/URLConnectionBenchmark.java')
-rw-r--r--benchmarks/regression/URLConnectionBenchmark.java132
1 files changed, 0 insertions, 132 deletions
diff --git a/benchmarks/regression/URLConnectionBenchmark.java b/benchmarks/regression/URLConnectionBenchmark.java
deleted file mode 100644
index e5ceec4..0000000
--- a/benchmarks/regression/URLConnectionBenchmark.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2010 The Android Open Source Project
- *
- * Licensed 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 benchmarks.regression;
-
-import com.google.caliper.Param;
-import com.google.caliper.SimpleBenchmark;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.net.URLConnection;
-import tests.http.MockResponse;
-import tests.http.MockWebServer;
-
-public final class URLConnectionBenchmark extends SimpleBenchmark {
-
- @Param({"0", "1024", "1048576"}) private int bodySize;
- @Param({"2048"}) private int chunkSize;
- @Param({"1024"}) private int readBufferSize;
- @Param private ResponseHeaders responseHeaders;
- @Param private TransferEncoding transferEncoding;
- private byte[] readBuffer;
-
- private MockWebServer server;
- private URL url;
-
- protected void setUp() throws Exception {
- readBuffer = new byte[readBufferSize];
- server = new MockWebServer();
-
- MockResponse response = new MockResponse();
- responseHeaders.apply(response);
- transferEncoding.setBody(response, bodySize, chunkSize);
- server.enqueue(response);
-
- server.setContinuousServing(true);
- server.play();
-
- url = server.getUrl("/");
- get(); // ensure the server has started its threads, etc.
- }
-
- protected void tearDown() throws Exception {
- /*
- * Entice the server to shut itself down gracefully. The shutdown method
- * doesn't work on Dalvik because socket.close() doesn't release blocked
- * threads. Instead, read the last continuously-served request, and then
- * cause the server to close the otherwise-reusable HTTP connection.
- */
- server.setContinuousServing(false);
- server.enqueue(new MockResponse().setDisconnectAtEnd(true));
- get();
- get();
- server.shutdown();
- }
-
- public int timeGet(int reps) throws IOException {
- int totalBytesRead = 0;
- for (int i = 0; i < reps; i++) {
- totalBytesRead += get();
- }
- return totalBytesRead;
- }
-
- private int get() throws IOException {
- int totalBytesRead = 0;
- URLConnection connection = url.openConnection();
- InputStream in = connection.getInputStream();
- int count;
- while ((count = in.read(readBuffer)) != -1) {
- totalBytesRead += count;
- }
- return totalBytesRead;
- }
-
- enum TransferEncoding {
- FIXED_LENGTH,
- CHUNKED;
-
- void setBody(MockResponse response, int bodySize, int chunkSize) throws IOException {
- if (this == TransferEncoding.FIXED_LENGTH) {
- response.setBody(new byte[bodySize]);
- } else if (this == TransferEncoding.CHUNKED) {
- response.setChunkedBody(new byte[bodySize], chunkSize);
- }
- }
- }
-
- enum ResponseHeaders {
- MINIMAL,
- TYPICAL;
-
- void apply(MockResponse response) {
- if (this == TYPICAL) {
- /* from http://api.twitter.com/1/statuses/public_timeline.json */
- response.addHeader("Date: Wed, 30 Jun 2010 17:57:39 GMT");
- response.addHeader("Server: hi");
- response.addHeader("X-RateLimit-Remaining: 0");
- response.addHeader("X-Runtime: 0.01637");
- response.addHeader("Content-Type: application/json; charset=utf-8");
- response.addHeader("X-RateLimit-Class: api_whitelisted");
- response.addHeader("Cache-Control: no-cache, max-age=300");
- response.addHeader("X-RateLimit-Reset: 1277920980");
- response.addHeader("Set-Cookie: _twitter_sess=BAh7EDoOcmV0dXJuX3RvIjZodHRwOi8vZGV2L"
- + "nR3aXR0ZXIuY29tL3BhZ2Vz%250AL3NpZ25faW5fd2l0aF90d2l0dGVyOgxjc3JmX2lkIiUw"
- + "ODFhNGY2NTM5NjRm%250ANjY1N2M2NzcwNWI0MDlmZGZjZjoVaW5fbmV3X3VzZXJfZmxvdzA"
- + "6EXRyYW5z%250AX3Byb21wdDAiKXNob3dfZGlzY292ZXJhYmlsaXR5X2Zvcl9qZXNzZXdpbH"
- + "Nv%250AbjA6E3Nob3dfaGVscF9saW5rMDoTcGFzc3dvcmRfdG9rZW4iLWUyYjlhNmM3%250A"
- + "MWJiNzI3NWNlZDI1NDY3MGMzZWNmMTE0MjI4N2EyNGE6D2NyZWF0ZWRfYXRs%250AKwhiM%2"
- + "52F6JKQE6CXVzZXJpA8tE3iIKZmxhc2hJQzonQWN0aW9uQ29udHJvbGxl%250Acjo6Rmxhc2"
- + "g6OkZsYXNoSGFzaHsABjoKQHVzZWR7ADoHaWQiJWZmMTNhM2Qx%250AZTU1YTkzMmYyMWM0M"
- + "GNhZjU4NDVjMTQz--11250628c85830219438eb7eba96a541a9af4098; domain=.twitt"
- + "er.com; path=/");
- response.addHeader("Expires: Wed, 30 Jun 2010 18:02:39 GMT");
- response.addHeader("Vary: Accept-Encoding");
- }
- }
- }
-}