On Mon, Dec 17, 2012 at 11:03 AM, Steve Loughran <ste...@hortonworks.com> wrote:
> On 17 December 2012 16:06, Tom White <t...@cloudera.com> wrote:
>
>> 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.
>>
>
> I'd like that -though one problem with the current system is that you need
> to get the s3 (and soon: openstack) credentials into
> src/test/resources/core-site.xml, which isn't the right approach. If we
> could get them into properties files things would be easier.
> That's overkill for adding a few more openstack tests -but I would like to
> make it easier to turn those and the rackspace ones without sticking my
> secrets into an XML file under SCM

I think the way to go is to have one XML file include another.

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration xmlns:xi="http://www.w3.org/2001/XInclude";>
  <property>
     <name>boring.config.1</name>
     <value>boring-value</value>
     ... etc, etc...
  <xi:include href="../secret-stuff.xml" />
</configuration>

That way, you can keep the boring configuration under version control,
and still have your password sitting in a small separate
non-version-controlled XML file.

We use this trick a bunch with the HA configuration stuff-- 99% of the
configuration is the same between the Active and Standby Namenodes,
but you can't give them the same dfs.ha.namenode.id or dfs.name.dir.
Includes help a lot here.

> another tactic could be to have specific test projects: test-s3,
> test-openstack, test-... which contain nothing but test cases. You'd set
> jenkins up those test projects too -the reason for having the separate
> names is to make it blatantly clear which tests you've not run

I dunno.  Every time a project puts unit or system tests into a
separate project, the developers never run them.  I've seen it happen
enough times that I think I can call it an anti-pattern by now.  I
like having tests alongside the code-- to the maximum extent that is
possible.

cheers,
Colin

>
>
>
>> 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