| // Copyright 2016 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| package org.chromium.net.smoke; |
| |
| import android.content.Context; |
| |
| import org.json.JSONObject; |
| |
| import org.chromium.base.Log; |
| import org.chromium.net.CronetTestUtil; |
| import org.chromium.net.ExperimentalCronetEngine; |
| |
| /** Provides support for tests that depend on QUIC and HTTP2 servers. */ |
| class ChromiumNativeTestSupport extends ChromiumPlatformOnlyTestSupport { |
| private static final String TAG = ChromiumNativeTestSupport.class.getSimpleName(); |
| |
| @Override |
| public TestServer createTestServer(Context context, Protocol protocol) { |
| switch (protocol) { |
| case QUIC: |
| return new QuicTestServer(context); |
| case HTTP2: |
| return new Http2TestServer(context); |
| case HTTP1: |
| return super.createTestServer(context, protocol); |
| default: |
| throw new RuntimeException("Unknown server protocol: " + protocol); |
| } |
| } |
| |
| @Override |
| public void addHostResolverRules(JSONObject experimentalOptionsJson) { |
| try { |
| JSONObject hostResolverParams = CronetTestUtil.generateHostResolverRules(); |
| experimentalOptionsJson.put("HostResolverRules", hostResolverParams); |
| } catch (Exception e) { |
| throw new RuntimeException(e); |
| } |
| } |
| |
| @Override |
| public void installMockCertVerifierForTesting(ExperimentalCronetEngine.Builder builder) { |
| CronetTestUtil.setMockCertVerifierForTesting( |
| builder, org.chromium.net.QuicTestServer.createMockCertVerifier()); |
| } |
| |
| @Override |
| public void loadTestNativeLibrary() { |
| System.loadLibrary("cronet_tests"); |
| } |
| |
| private static class QuicTestServer implements TestServer { |
| private final Context mContext; |
| |
| QuicTestServer(Context context) { |
| mContext = context; |
| } |
| |
| @Override |
| public boolean start() { |
| org.chromium.net.QuicTestServer.startQuicTestServer(mContext); |
| return true; |
| } |
| |
| @Override |
| public void shutdown() { |
| org.chromium.net.QuicTestServer.shutdownQuicTestServer(); |
| } |
| |
| @Override |
| public String getSuccessURL() { |
| return org.chromium.net.QuicTestServer.getServerURL() + "/simple.txt"; |
| } |
| } |
| |
| private static class Http2TestServer implements TestServer { |
| private final Context mContext; |
| |
| Http2TestServer(Context context) { |
| mContext = context; |
| } |
| |
| @Override |
| public boolean start() { |
| try { |
| return org.chromium.net.Http2TestServer.startHttp2TestServer(mContext); |
| } catch (Exception e) { |
| Log.e(TAG, "Exception during Http2TestServer start", e); |
| return false; |
| } |
| } |
| |
| @Override |
| public void shutdown() { |
| try { |
| org.chromium.net.Http2TestServer.shutdownHttp2TestServer(); |
| } catch (Exception e) { |
| Log.e(TAG, "Exception during Http2TestServer shutdown", e); |
| } |
| } |
| |
| @Override |
| public String getSuccessURL() { |
| return org.chromium.net.Http2TestServer.getEchoMethodUrl(); |
| } |
| } |
| } |