public void testReadWithHeader() throws IOException {
File file = makeFile();
DataFileReader<Object> reader =
new DataFileReader<>(file, new GenericDatumReader<>());
DataFileStream.Header header = reader.getHeader();
SeekableFileInput sin = new SeekableFileInput(file);
sin.seek(sin.length() / 2);
reader = DataFileReader.openReader(sin, new GenericDatumReader<>(),
header, true);
assertNotNull("Should be able to reopen from arbitrary point", reader.next());
long validPos = reader.previousSync();
sin.seek(validPos);
reader = DataFileReader.openReader(sin, new GenericDatumReader<>(),
header, false);
assertEquals("Should not move from sync point on reopen", validPos, sin.tell());
assertNotNull("Should be able to reopen at sync point", reader.next());
}