Response response = getPDFSProtocol().handle(getConnection(), DFS.RpcType.LIST_STATUS_REQUEST_VALUE, builder.build().toByteString(),
@Test public void testStream() throws IOException { TestRemoteIterator statuses = newRemoteIterator( new FileStatus(1337, false, 1, 4096, 1, 2, FsPermission.getFileDefault(), "testowner", "testgroup", new Path(TEST_PATH, "bar")), new FileStatus(0, true, 0, 0, 3, 4, FsPermission.getDirDefault(), "testowner", "testgroup", new Path(TEST_PATH, "baz")) ); final ListStatusContinuationHandle handle; { DFS.ListStatusResponse response = getResponse(TEST_PATH_STRING, statuses, 1, null); assertEquals(1, response.getStatusesList().size()); assertEquals(TEST_PATH_STRING + "/bar", response.getStatusesList().get(0).getPath()); assertTrue(response.hasHandle()); handle = response.getHandle(); assertTrue(getPDFSProtocol().isIteratorOpen(handle)); assertFalse(statuses.isClosed()); } { DFS.ListStatusResponse response = getResponse(TEST_PATH_STRING, null, 1, handle); assertEquals(1, response.getStatusesList().size()); assertEquals(TEST_PATH_STRING + "/baz", response.getStatusesList().get(0).getPath()); assertFalse(response.hasHandle()); assertFalse(getPDFSProtocol().isIteratorOpen(handle)); assertTrue(statuses.isClosed()); } }
@Test public void testStreamOptionalPath() throws IOException { TestRemoteIterator statuses = newRemoteIterator( new FileStatus(1337, false, 1, 4096, 1, 2, FsPermission.getFileDefault(), "testowner", "testgroup", new Path(TEST_PATH, "bar")), new FileStatus(0, true, 0, 0, 3, 4, FsPermission.getDirDefault(), "testowner", "testgroup", new Path(TEST_PATH, "baz")) ); final ListStatusContinuationHandle handle; { DFS.ListStatusResponse response = getResponse(TEST_PATH_STRING, statuses, 1, null); assertEquals(1, response.getStatusesList().size()); assertEquals(TEST_PATH_STRING + "/bar", response.getStatusesList().get(0).getPath()); assertTrue(response.hasHandle()); handle = response.getHandle(); assertTrue(getPDFSProtocol().isIteratorOpen(handle)); assertFalse(statuses.isClosed()); } { DFS.ListStatusResponse response = getResponse(null, null, 1, handle); assertEquals(1, response.getStatusesList().size()); assertEquals(TEST_PATH_STRING + "/baz", response.getStatusesList().get(0).getPath()); assertFalse(response.hasHandle()); assertFalse(getPDFSProtocol().isIteratorOpen(handle)); assertTrue(statuses.isClosed()); } }
@Test public void testStreamWithCacheExpiration() throws IOException { TestRemoteIterator statuses = newRemoteIterator( new FileStatus(1337, false, 1, 4096, 1, 2, FsPermission.getFileDefault(), "testowner", "testgroup", new Path(TEST_PATH, "bar")), new FileStatus(0, true, 0, 0, 3, 4, FsPermission.getDirDefault(), "testowner", "testgroup", new Path(TEST_PATH, "baz")) ); final ListStatusContinuationHandle handle; { DFS.ListStatusResponse response = getResponse(TEST_PATH_STRING, statuses, 1, null); assertEquals(1, response.getStatusesList().size()); assertEquals(TEST_PATH_STRING + "/bar", response.getStatusesList().get(0).getPath()); assertTrue(response.hasHandle()); handle = response.getHandle(); assertTrue(getPDFSProtocol().isIteratorOpen(handle)); assertFalse(statuses.isClosed()); } // Moving ticker so that open iterators expire getTicker().advance(5, TimeUnit.MINUTES); try { getResponse(TEST_PATH_STRING, null, 1, handle); fail(); } catch (UserException e) { assertEquals(ErrorType.IO_EXCEPTION, e.getErrorType()); assertSame(IOException.class, e.getCause().getClass()); } }