@Override public void executeWithTracker(Tracker tracker) throws IOException { List<URL> paths = tracker.getPaths(key, domain); if (!paths.isEmpty()) { HttpURLConnection httpConnection = null; IOException lastException = null; for (URL path : paths) { try { log.debug("HTTP HEAD -> {}", path); httpConnection = httpFactory.newConnection(path); httpConnection.setRequestMethod("HEAD"); length = getContentLength(httpConnection); log.debug("Content-Length: {}", length); return; } catch (IOException e) { log.debug("Failed to open input -> {}", path); log.debug("Exception was: ", e); lastException = e; } finally { if (httpConnection != null) { httpConnection.disconnect(); } } } throw lastException; } else { log.debug("No paths found for domain={},key={} - throwing", domain, key); throw new FileNotFoundException("domain=" + domain + ",key=" + key); } }
@Before public void setUp() throws IOException { URL url = new URL("http://www.last.fm/"); when(mockDestination.getPath()).thenReturn(url); when(mockHttpFactory.newConnection(url)).thenReturn(mockHttpConnection); when(mockHttpConnection.getInputStream()).thenReturn(mockInputStream); when(mockHttpConnection.getOutputStream()).thenReturn(mockOutputStream); when(mockHttpConnection.getResponseMessage()).thenReturn("message"); when(mockHttpConnection.getResponseCode()).thenReturn(HttpURLConnection.HTTP_OK); when(mockTrackerFactory.getTracker()).thenReturn(mockTracker); when(address.size()).thenReturn(1); when(mockTrackerFactory.getAddresses()).thenReturn(address); stream = new FileUploadOutputStream( mockTrackerFactory, mockHttpFactory, KEY, DOMAIN, mockDestination, mockWriteLock); }