Kengo Seki created AVRO-2452:
--------------------------------
Summary: Interop tests should check the number of records
Key: AVRO-2452
URL: https://issues.apache.org/jira/browse/AVRO-2452
Project: Apache Avro
Issue Type: Test
Components: c, java
Reporter: Kengo Seki
Assignee: Kengo Seki
Currently, data interop tests for Java and Python2 don't check the number of
records in the input file, so they will pass if the file is accidentally empty.
{code:title=lang/java/ipc/src/test/java/org/apache/avro/DataFileInteropTest.java}
private <T extends Object> void readFiles(DatumReaderProvider<T> provider)
throws IOException {
for (File f : Objects.requireNonNull(DATAFILE_DIR.listFiles())) {
System.out.println("Reading: " + f.getName());
try (FileReader<? extends Object> reader = DataFileReader.openReader(f,
provider.get())) {
for (Object datum : reader) {
Assert.assertNotNull(datum);
}
}
}
}
{code}
{code:title=lang/py/test/test_datafile_interop.py}
# read data in binary from file
reader = open(os.path.join('@INTEROP_DATA_DIR@', f), 'rb')
datum_reader = io.DatumReader()
dfr = datafile.DataFileReader(reader, datum_reader)
for datum in dfr:
assert datum is not None
{code}
They should also check the number of records in the file, just as the PHP and
Ruby's ones.
{code:title=lang/php/test/InterOpTest.php}
$this->assertNotEquals(0, count($data),
sprintf("no data read from %s", $file_name));
foreach ($data as $idx => $datum)
$this->assertNotNull($datum, sprintf("null datum from %s", $file_name));
{code}
{code:title=lang/ruby/interop/test_interop.rb}
i = 0
r.each do |datum|
i += 1
assert_not_nil datum, "nil datum from #{fn}"
end
assert_not_equal 0, i, "no data read in from #{fn}"
{code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)