public static void clearThreadStatsTag() { TrafficStats.clearThreadStatsTag(); }
@Override protected Object doInBackground(Void... params) { /* Do tag socket to avoid strict mode issue. */ TrafficStats.setThreadStatsTag(THREAD_STATS_TAG); try { return doHttpCall(); } catch (Exception e) { return e; } finally { TrafficStats.clearThreadStatsTag(); } }
HockeyLog.error("Failed to fetching feedback messages", e); } finally { TrafficStats.clearThreadStatsTag(); if (urlConnection != null) { urlConnection.disconnect();
return false; } finally { TrafficStats.clearThreadStatsTag(); try { if (output != null) {
return 0L; } finally { TrafficStats.clearThreadStatsTag(); try { if (output != null) {
@Override protected Boolean doInBackground(Void... args) { HttpURLConnection connection = null; try { TrafficStats.setThreadStatsTag(Constants.THREAD_STATS_TAG); connection = makeRequest(mMode, mParams); connection.connect(); if (connection.getResponseCode() == 200) { String responseStr = getStringFromConnection(connection); if (!TextUtils.isEmpty(responseStr)) { return handleResponse(responseStr); } } } catch (IOException e) { HockeyLog.error("Failed to login", e); } finally { TrafficStats.clearThreadStatsTag(); if (connection != null) { connection.disconnect(); } } return false; }
HockeyLog.error("Failed to send feedback message", e); } finally { TrafficStats.clearThreadStatsTag(); if (urlConnection != null) { urlConnection.disconnect();
HockeyLog.error("Failed to send feedback message", e); } finally { TrafficStats.clearThreadStatsTag(); if (urlConnection != null) { urlConnection.disconnect();
is = null; TrafficStats.clearThreadStatsTag(); } else { is = mResolver.openInputStream(uri);
TrafficStats.clearThreadStatsTag();
HockeyLog.error("Failed to transmit crash data", e); } finally { TrafficStats.clearThreadStatsTag(); if (urlConnection != null) { urlConnection.disconnect();
@Test public void failedToWritePayload() throws Exception { URL url = mock(URL.class); whenNew(URL.class).withAnyArguments().thenReturn(url); IOException exception = new IOException("mock"); HttpsURLConnection urlConnection = mock(HttpsURLConnection.class); when(url.openConnection()).thenReturn(urlConnection); OutputStream out = mock(OutputStream.class); when(urlConnection.getOutputStream()).thenReturn(out); doThrow(exception).when(out).write(any(byte[].class), anyInt(), anyInt()); HttpClient.CallTemplate callTemplate = mock(HttpClient.CallTemplate.class); when(callTemplate.buildRequestBody()).thenReturn("{}"); ServiceCallback serviceCallback = mock(ServiceCallback.class); DefaultHttpClient httpClient = new DefaultHttpClient(); mockCall(); httpClient.callAsync("", METHOD_POST, new HashMap<String, String>(), callTemplate, serviceCallback); verify(serviceCallback).onCallFailed(exception); verifyZeroInteractions(serviceCallback); verify(out).close(); verifyStatic(); TrafficStats.setThreadStatsTag(anyInt()); verifyStatic(); TrafficStats.clearThreadStatsTag(); }
TrafficStats.clearThreadStatsTag();
@Test public void failedToReadResponse() throws Exception { URL url = mock(URL.class); whenNew(URL.class).withAnyArguments().thenReturn(url); IOException exception = new IOException("mock"); HttpsURLConnection urlConnection = mock(HttpsURLConnection.class); when(url.openConnection()).thenReturn(urlConnection); when(urlConnection.getResponseCode()).thenReturn(200); InputStream inputStream = mock(InputStream.class); when(urlConnection.getInputStream()).thenReturn(inputStream); InputStreamReader inputStreamReader = mock(InputStreamReader.class); whenNew(InputStreamReader.class).withAnyArguments().thenReturn(inputStreamReader); when(inputStreamReader.read(any(char[].class))).thenThrow(exception); HttpClient.CallTemplate callTemplate = mock(HttpClient.CallTemplate.class); ServiceCallback serviceCallback = mock(ServiceCallback.class); DefaultHttpClient httpClient = new DefaultHttpClient(); mockCall(); httpClient.callAsync("", "", new HashMap<String, String>(), callTemplate, serviceCallback); verify(serviceCallback).onCallFailed(exception); verifyZeroInteractions(serviceCallback); verify(inputStream).close(); verifyStatic(); TrafficStats.setThreadStatsTag(anyInt()); verifyStatic(); TrafficStats.clearThreadStatsTag(); }
TrafficStats.setThreadStatsTag(anyInt()); verifyStatic(); TrafficStats.clearThreadStatsTag();
@Test public void failedWithError() throws Exception { URL url = mock(URL.class); whenNew(URL.class).withAnyArguments().thenReturn(url); when(url.openConnection()).thenThrow(new Error()); HttpClient.CallTemplate callTemplate = mock(HttpClient.CallTemplate.class); ServiceCallback serviceCallback = mock(ServiceCallback.class); DefaultHttpClient httpClient = new DefaultHttpClient(); mockCall(); try { httpClient.callAsync("", "", new HashMap<String, String>(), callTemplate, serviceCallback); fail(); } catch (Error ignored) { } verifyZeroInteractions(serviceCallback); verifyStatic(); TrafficStats.setThreadStatsTag(anyInt()); verifyStatic(); TrafficStats.clearThreadStatsTag(); }
@Test public void failedSerialization() throws Exception { /* Configure mock HTTP. */ URL url = mock(URL.class); whenNew(URL.class).withAnyArguments().thenReturn(url); HttpsURLConnection urlConnection = mock(HttpsURLConnection.class); when(url.openConnection()).thenReturn(urlConnection); /* Configure API client. */ HttpClient.CallTemplate callTemplate = mock(HttpClient.CallTemplate.class); JSONException exception = new JSONException("mock"); when(callTemplate.buildRequestBody()).thenThrow(exception); DefaultHttpClient httpClient = new DefaultHttpClient(); /* Test calling code. */ ServiceCallback serviceCallback = mock(ServiceCallback.class); mockCall(); httpClient.callAsync("", METHOD_POST, new HashMap<String, String>(), callTemplate, serviceCallback); verify(serviceCallback).onCallFailed(exception); verifyNoMoreInteractions(serviceCallback); verify(urlConnection).disconnect(); verifyStatic(); TrafficStats.setThreadStatsTag(anyInt()); verifyStatic(); TrafficStats.clearThreadStatsTag(); }
TrafficStats.setThreadStatsTag(anyInt()); verifyStatic(); TrafficStats.clearThreadStatsTag();
if (0 != threadStatsTag) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) TrafficStats.clearThreadStatsTag();