hadoop-common-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Colin McCabe <cmcc...@alumni.cmu.edu>
Subject Re: making a hadoop-common test run if a property is set
Date Fri, 14 Dec 2012 18:57:08 GMT
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.


On Fri, Dec 14, 2012 at 9:56 AM, Steve Loughran <stevel@hortonworks.com> wrote:
> The swiftfs tests need only to run if there's a target filesystem; copying
> the s3/s3n tests, something like
>   <property>
>     <name>test.fs.swift.name</name>
>     <value>swift://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

View raw message