@@ -102,8 +102,19 @@ public abstract class TestMetrics {
102102 optional (2 , "doubleCol" , DoubleType .get ())
103103 );
104104
105+ private static final Record FLOAT_DOUBLE_RECORD_1 = createRecordWithFloatAndDouble (1.2F , 3.4D );
106+ private static final Record FLOAT_DOUBLE_RECORD_2 = createRecordWithFloatAndDouble (5.6F , 7.8D );
107+ private static final Record NAN_ONLY_RECORD = createRecordWithFloatAndDouble (Float .NaN , Double .NaN );
108+
105109 private final byte [] fixed = "abcd" .getBytes (StandardCharsets .UTF_8 );
106110
111+ private static Record createRecordWithFloatAndDouble (float floatValue , double doubleValue ) {
112+ Record record = GenericRecord .create (FLOAT_DOUBLE_ONLY_SCHEMA );
113+ record .setField ("floatCol" , floatValue );
114+ record .setField ("doubleCol" , doubleValue );
115+ return record ;
116+ }
117+
107118 public abstract FileFormat fileFormat ();
108119
109120 public abstract Metrics getMetrics (Schema schema , MetricsConfig metricsConfig , Record ... records ) throws IOException ;
@@ -119,7 +130,7 @@ public boolean supportsSmallRowGroups() {
119130 return false ;
120131 }
121132
122- protected abstract OutputFile createFileToWriteTo () throws IOException ;
133+ protected abstract OutputFile createOutputFile () throws IOException ;
123134
124135 @ Test
125136 public void testMetricsForRepeatedValues () throws IOException {
@@ -335,14 +346,7 @@ public void testMetricsForNullColumns() throws IOException {
335346
336347 @ Test
337348 public void testMetricsForNaNColumns () throws IOException {
338- Record firstRecord = GenericRecord .create (FLOAT_DOUBLE_ONLY_SCHEMA );
339- firstRecord .setField ("floatCol" , Float .NaN );
340- firstRecord .setField ("doubleCol" , Double .NaN );
341- Record secondRecord = GenericRecord .create (FLOAT_DOUBLE_ONLY_SCHEMA );
342- secondRecord .setField ("floatCol" , Float .NaN );
343- secondRecord .setField ("doubleCol" , Double .NaN );
344-
345- Metrics metrics = getMetrics (FLOAT_DOUBLE_ONLY_SCHEMA , firstRecord , secondRecord );
349+ Metrics metrics = getMetrics (FLOAT_DOUBLE_ONLY_SCHEMA , NAN_ONLY_RECORD , NAN_ONLY_RECORD );
346350 Assert .assertEquals (2L , (long ) metrics .recordCount ());
347351 assertCounts (1 , 2L , 0L , 2L , metrics );
348352 assertCounts (2 , 2L , 0L , 2L , metrics );
@@ -353,19 +357,8 @@ public void testMetricsForNaNColumns() throws IOException {
353357
354358 @ Test
355359 public void testColumnBoundsWithNaNValueAtFront () throws IOException {
356- Record nonNaNRecord1 = GenericRecord .create (FLOAT_DOUBLE_ONLY_SCHEMA );
357- nonNaNRecord1 .setField ("floatCol" , 1.2F );
358- nonNaNRecord1 .setField ("doubleCol" , 3.4D );
359-
360- Record nonNaNRecord2 = GenericRecord .create (FLOAT_DOUBLE_ONLY_SCHEMA );
361- nonNaNRecord2 .setField ("floatCol" , 5.6F );
362- nonNaNRecord2 .setField ("doubleCol" , 7.8D );
363-
364- Record nanRecord = GenericRecord .create (FLOAT_DOUBLE_ONLY_SCHEMA );
365- nanRecord .setField ("floatCol" , Float .NaN );
366- nanRecord .setField ("doubleCol" , Double .NaN );
367-
368- Metrics metrics = getMetrics (FLOAT_DOUBLE_ONLY_SCHEMA , nanRecord , nonNaNRecord1 , nonNaNRecord2 );
360+ Metrics metrics = getMetrics (FLOAT_DOUBLE_ONLY_SCHEMA ,
361+ NAN_ONLY_RECORD , FLOAT_DOUBLE_RECORD_1 , FLOAT_DOUBLE_RECORD_2 );
369362 Assert .assertEquals (3L , (long ) metrics .recordCount ());
370363 assertCounts (1 , 3L , 0L , 1L , metrics );
371364 assertCounts (2 , 3L , 0L , 1L , metrics );
@@ -383,19 +376,8 @@ public void testColumnBoundsWithNaNValueAtFront() throws IOException {
383376
384377 @ Test
385378 public void testColumnBoundsWithNaNValueInMiddle () throws IOException {
386- Record nonNaNRecord1 = GenericRecord .create (FLOAT_DOUBLE_ONLY_SCHEMA );
387- nonNaNRecord1 .setField ("floatCol" , 1.2F );
388- nonNaNRecord1 .setField ("doubleCol" , 3.4D );
389-
390- Record nonNaNRecord2 = GenericRecord .create (FLOAT_DOUBLE_ONLY_SCHEMA );
391- nonNaNRecord2 .setField ("floatCol" , 5.6F );
392- nonNaNRecord2 .setField ("doubleCol" , 7.8D );
393-
394- Record nanRecord = GenericRecord .create (FLOAT_DOUBLE_ONLY_SCHEMA );
395- nanRecord .setField ("floatCol" , Float .NaN );
396- nanRecord .setField ("doubleCol" , Double .NaN );
397-
398- Metrics metrics = getMetrics (FLOAT_DOUBLE_ONLY_SCHEMA , nonNaNRecord1 , nanRecord , nonNaNRecord2 );
379+ Metrics metrics = getMetrics (FLOAT_DOUBLE_ONLY_SCHEMA ,
380+ FLOAT_DOUBLE_RECORD_1 , NAN_ONLY_RECORD , FLOAT_DOUBLE_RECORD_2 );
399381 Assert .assertEquals (3L , (long ) metrics .recordCount ());
400382 assertCounts (1 , 3L , 0L , 1L , metrics );
401383 assertCounts (2 , 3L , 0L , 1L , metrics );
@@ -413,19 +395,8 @@ public void testColumnBoundsWithNaNValueInMiddle() throws IOException {
413395
414396 @ Test
415397 public void testColumnBoundsWithNaNValueAtEnd () throws IOException {
416- Record nonNaNRecord1 = GenericRecord .create (FLOAT_DOUBLE_ONLY_SCHEMA );
417- nonNaNRecord1 .setField ("floatCol" , 1.2F );
418- nonNaNRecord1 .setField ("doubleCol" , 3.4D );
419-
420- Record nonNaNRecord2 = GenericRecord .create (FLOAT_DOUBLE_ONLY_SCHEMA );
421- nonNaNRecord2 .setField ("floatCol" , 5.6F );
422- nonNaNRecord2 .setField ("doubleCol" , 7.8D );
423-
424- Record nanRecord = GenericRecord .create (FLOAT_DOUBLE_ONLY_SCHEMA );
425- nanRecord .setField ("floatCol" , Float .NaN );
426- nanRecord .setField ("doubleCol" , Double .NaN );
427-
428- Metrics metrics = getMetrics (FLOAT_DOUBLE_ONLY_SCHEMA , nonNaNRecord1 , nonNaNRecord2 , nanRecord );
398+ Metrics metrics = getMetrics (FLOAT_DOUBLE_ONLY_SCHEMA ,
399+ FLOAT_DOUBLE_RECORD_1 , FLOAT_DOUBLE_RECORD_2 , NAN_ONLY_RECORD );
429400 Assert .assertEquals (3L , (long ) metrics .recordCount ());
430401 assertCounts (1 , 3L , 0L , 1L , metrics );
431402 assertCounts (2 , 3L , 0L , 1L , metrics );
@@ -467,7 +438,7 @@ public void testMetricsForTopLevelWithMultipleRowGroup() throws Exception {
467438 }
468439
469440 // create file with multiple row groups. by using smaller number of bytes
470- OutputFile outputFile = createFileToWriteTo ();
441+ OutputFile outputFile = createOutputFile ();
471442 Metrics metrics = getMetricsForRecordsWithSmallRowGroups (SIMPLE_SCHEMA , outputFile , records .toArray (new Record [0 ]));
472443 InputFile recordsFile = outputFile .toInputFile ();
473444
@@ -511,7 +482,7 @@ public void testMetricsForNestedStructFieldsWithMultipleRowGroup() throws IOExce
511482 }
512483
513484 // create file with multiple row groups. by using smaller number of bytes
514- OutputFile outputFile = createFileToWriteTo ();
485+ OutputFile outputFile = createOutputFile ();
515486 Metrics metrics = getMetricsForRecordsWithSmallRowGroups (NESTED_SCHEMA , outputFile , records .toArray (new Record [0 ]));
516487 InputFile recordsFile = outputFile .toInputFile ();
517488
0 commit comments