public HttpResponse get(Application application, String hostName, String serviceType, Path path, Query query) {
        return get(application, hostName, serviceType, path, query, null);
    }
@Test
    public void testNormalGet() {
        ArgumentCaptor<HttpFetcher.Params> actualParams = ArgumentCaptor.forClass(HttpFetcher.Params.class);
        ArgumentCaptor<URI> actualUrl = ArgumentCaptor.forClass(URI.class);
        HttpResponse response = new StaticResponse(200, "application/json", "body");
        when(fetcher.get(actualParams.capture(), actualUrl.capture())).thenReturn(response);

        HttpResponse actualResponse = proxy.get(applicationMock, hostname, CLUSTERCONTROLLER_CONTAINER.serviceName,
                                                Path.parse("clustercontroller-status/v1/clusterName"),
                                                Query.parse("foo=bar"));

        assertEquals(1, actualParams.getAllValues().size());
        assertEquals(29000, actualParams.getValue().readTimeoutMs);

        assertEquals(1, actualUrl.getAllValues().size());
        assertEquals(URI.create("http://" + hostname + ":" + port + "/clustercontroller-status/v1/clusterName?foo=bar"),
                     actualUrl.getValue());

        // The HttpResponse returned by the fetcher IS the same object as the one returned by the proxy,
        // when everything goes well.
        assertSame(actualResponse, response);
    }