Josh Elser created HBASE-19310:
----------------------------------

             Summary: Verify IntegrationTests don't rely on Rules outside of 
JUnit context
                 Key: HBASE-19310
                 URL: https://issues.apache.org/jira/browse/HBASE-19310
             Project: HBase
          Issue Type: Bug
          Components: integration tests
            Reporter: Romil Choksi
            Assignee: Josh Elser
            Priority: Critical
             Fix For: 2.0.0-beta-1


{noformat}
2017-11-16 00:43:41,204 INFO  [main] mapreduce.IntegrationTestImportTsv: 
Running test testGenerateAndLoad.
Exception in thread "main" java.lang.NullPointerException
  at org.apache.hadoop.hbase.TableName.valueOf(TableName.java:461)
  at 
org.apache.hadoop.hbase.mapreduce.IntegrationTestImportTsv.testGenerateAndLoad(IntegrationTestImportTsv.java:189)
  at 
org.apache.hadoop.hbase.mapreduce.IntegrationTestImportTsv.run(IntegrationTestImportTsv.java:229)
  at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
  at 
org.apache.hadoop.hbase.mapreduce.IntegrationTestImportTsv.main(IntegrationTestImportTsv.java:239)
{noformat}

(Potential line-number skew)

{code}
  @Test
  public void testGenerateAndLoad() throws Exception {
    LOG.info("Running test testGenerateAndLoad.");
    final TableName table = TableName.valueOf(name.getMethodName());
{code}

The JUnit framework sets the test method name inside of the JUnit {{Rule}}. 
When we invoke the test directly (ala {{hbase 
org.apache.hadoop.hbase.mapreduce.IntegrationTestImportTsv}}), this 
{{getMethodName()}} returns {{null}} and we get the above stacktrace.

Should make a pass over the ITs with main methods and {{Rule}}s to make sure we 
don't have this lurking. Another alternative is to just remove the main methods 
and just force use of {{IntegrationTestsDriver}} instead.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to