There are some tests like the S3 tests that end with "Test" (e.g.
Jets3tNativeS3FileSystemContractTest) - unlike normal tests which
start with "Test". Only those that start with "Test" are run
automatically (see the surefire configuration in
hadoop-project/pom.xml). You have to run the others manually with "mvn
test -Dtest=...".

The mechanism that Colin describes is probably better though, since
the environment-specific tests can be run as a part of a full test run
by Jenkins if configured appropriately.

Tom

On Mon, Dec 17, 2012 at 10:06 AM, Steve Loughran <ste...@hortonworks.com> wrote:
> thanks, I'l; have a look. I've always wanted to add the notion of skipped
> to test runs -all the way through to the XML and generated reports, but
> you'd have to do a new junit runner for this and tweak the reporting code.
> Which, if it involved going near maven source, is not something I am
> prepared to do
>
> On 14 December 2012 18:57, Colin McCabe <cmcc...@alumni.cmu.edu> wrote:
>
>> 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>
>> >     <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
>>

Reply via email to