You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Josh Elser (JIRA)" <ji...@apache.org> on 2017/11/20 22:47:00 UTC
[jira] [Created] (HBASE-19310) Verify IntegrationTests don't rely
on Rules outside of JUnit context
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)