/** Test <code>long skip(long len)</code>. */ @Test public void skipTest() throws IOException, TachyonException { String uniqPath = PathUtils.uniqPath(); for (int k = MIN_LEN + DELTA; k <= MAX_LEN; k += DELTA) { TachyonFile f = TachyonFSTestUtils.createByteFile(mTfs, uniqPath + "/file_" + k, k, mWriteUnderStore); FileInStream is = mTfs.getInStream(f, mReadCache); Assert.assertEquals(k / 2, is.skip(k / 2)); Assert.assertEquals(k / 2, is.read()); is.close(); Assert.assertFalse(mTfs.getInfo(f).getInMemoryPercentage() == 100); if (k >= 3) { is = mTfs.getInStream(f, mReadCache); int t = k / 3; Assert.assertEquals(t, is.skip(t)); Assert.assertEquals(t, is.read()); Assert.assertEquals(t, is.skip(t)); Assert.assertEquals(2 * t + 1, is.read()); is.close(); Assert.assertFalse(mTfs.getInfo(f).getInMemoryPercentage() == 100); } } }
/** Test {@link tachyon.client.block.BufferedBlockInStream#skip(long)}. */ @Test public void skipTest() throws IOException, TachyonException { for (int k = MIN_LEN + DELTA; k <= MAX_LEN; k += DELTA) { for (CreateFileOptions op : getOptionSet()) { TachyonURI path = new TachyonURI(sTestPath + "/file_" + k + "_" + op.hashCode()); FileInStream is = sFileSystem.openFile(path, FileSystemTestUtils.toOpenFileOptions(op)); Assert.assertEquals(k / 2, is.skip(k / 2)); Assert.assertEquals(k / 2, is.read()); is.close(); is = sFileSystem.openFile(path, FileSystemTestUtils.toOpenFileOptions(op)); int t = k / 3; Assert.assertEquals(t, is.skip(t)); Assert.assertEquals(t, is.read()); Assert.assertEquals(t, is.skip(t)); Assert.assertEquals(2 * t + 1, is.read()); is.close(); } } }
/** * Prints the file's last 1KB of contents to the console. * * @param path The TachyonURI path as the input of the command * @return 0 if command is successful, -1 if an error occurred.f * @throws IOException */ public int tail(TachyonURI path) throws IOException { TachyonFile fd; FileInfo fInfo; try { fd = mTfs.open(path); if (fd == null) { System.out.println(ExceptionMessage.PATH_DOES_NOT_EXIST.getMessage(path)); return -1; } fInfo = mTfs.getInfo(fd); } catch (TachyonException e) { throw new IOException(e); } if (!fInfo.isFolder) { InStreamOptions op = new InStreamOptions.Builder(mTachyonConf) .setTachyonStorageType(TachyonStorageType.NO_STORE) .build(); FileInStream is = null; try { is = mTfs.getInStream(fd, op); byte[] buf = new byte[Constants.KB]; long bytesToRead = 0L; if (fInfo.getLength() > Constants.KB) { bytesToRead = Constants.KB; } else { bytesToRead = fInfo.getLength(); } is.skip(fInfo.getLength() - bytesToRead); int read = is.read(buf); if (read != -1) { System.out.write(buf, 0, read); } return 0; } catch (TachyonException e) { throw new IOException(e); } finally { is.close(); } } else { System.out.println(path + " is not a file."); return -1; } }