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)