making a hadoop-common test run if a property is set

2012-12-14 Thread Steve Loughran
The swiftfs tests need only to run if there's a target filesystem; copying
the s3/s3n tests, something like

  property
nametest.fs.swift.name/name
valueswift://your-object-store-herel//value
  /property

How does one actually go about making junit tests optional in mvn-land?
Should the probe/skip logic be in the code -which can make people think the
test passed when it didn't actually run? Or can I turn it on/off in maven?

-steve


Re: making a hadoop-common test run if a property is set

2012-12-14 Thread Colin McCabe
One approach we've taken in the past is making the junit test skip
itself when some precondition is not true.  Then, we often create a
property which people can use to cause the skipped tests to become a
hard error.

For example, all the tests that rely on libhadoop start with these lines:

 @Test
 public void myTest() {
Assume.assumeTrue(NativeCodeLoader.isNativeCodeLoaded());
   ...
 }

This causes them to be silently skipped when libhadoop.so is not
available or loaded (perhaps because it hasn't been built.)

However, if you want to cause this to be a hard error, you simply run
 mvn test -Drequire.test.libhadoop

See TestHdfsNativeCodeLoader.java to see how this is implemented.

The main idea is that your Jenkins build slaves use all the -Drequire
lines, but people running tests locally are not inconvenienced by the
need to build libhadoop.so in every case.  This is especially good
because libhadoop.so isn't known to build on certain platforms like
AIX, etc.  It seems to be a good tradeoff so far.  I imagine that s3
could do something similar.

cheers,
Colin


On Fri, Dec 14, 2012 at 9:56 AM, Steve Loughran ste...@hortonworks.com wrote:
 The swiftfs tests need only to run if there's a target filesystem; copying
 the s3/s3n tests, something like

   property
 nametest.fs.swift.name/name
 valueswift://your-object-store-herel//value
   /property

 How does one actually go about making junit tests optional in mvn-land?
 Should the probe/skip logic be in the code -which can make people think the
 test passed when it didn't actually run? Or can I turn it on/off in maven?

 -steve