[ 
https://issues.apache.org/jira/browse/STORM-1179?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14993804#comment-14993804
 ] 

Robert Joseph Evans commented on STORM-1179:
--------------------------------------------

Perhaps we need to define better what types of tests we want and how do we want 
to run them.

I see several different levels/types of testing that should be run at different 
frequencies.  All of these are things that we need to do, but may not all fully 
be a part of the community for various reasons.

1) True unit tests.  They run fast enough that they should not be a burden to 
have on by default and be a part of any build.  They should frequently mock out 
dependencies and try to concentrate on only executing/testing a relatively 
small defined piece of code.
2) LocalCluster integration tests.  These are tests that put all of the parts 
of storm-core together and validate that it works as a system.  Some things 
that are hard to test on their own may need to be in here too.  Currently way 
too many of our tests are like this.  These should be able to test various 
configuration scenarios for correctness. I personally feel that these don't 
need to run as part of the build by default, but should be run as a part of CI.
3) Cluster Integration tests.  This is where ductape comes in.  These should 
spin up not just storm, but the other components that storm can talk to.  
H-Base, HDFS, Redis, Elastisearch, Kerberos, etc.  These don't need to be 
exhaustive tests trying lots of different configurations, as spinning up a 
cluster and running a topology can be rather slow.  These should mostly test 
that everything can still talk to each other and we can get the expected 
output.  I would love to see these as a part of CI, but I don't see travis-ci 
supporting it.
4) Failure/Stress tests.  These should ideally use ductape too.  They should 
take a set of topologies and run through various situations, especially around 
trident, where we kill things, wait for recovery and verify we didn't do the 
wrong thing.  These can be extended in the future to include slow network, etc 
as we begin to support mitigations for these situations.  These too I would 
love to to see as a part of CI, but again I don't see travis CI supporting it.
5) Performance tests, probably using some of ductape to set things up but maybe 
not.  These I would see as an extended version of ThroughputVsLatency.  Ideally 
we could have one that does trident and one that can work with acking disabled, 
and perhaps even a more real world test that interacts with other systems.  
These are looking at what the maximum throughput is that we can support for a 
given latency.  These are things that are not simple to automatically evaluate, 
and really should be run on the same hardware each time so that results can be 
truly comparable.  Ideally the code is in open source, but actually running 
them may have to be done outside of the community CI.
6) Scale tests.  How large of a cluster can we support and how large of an 
individual topology can we support.  This is probably similar to the 
performance tests, but running at a much larger scale.  We should be looking at 
the performance of topologies, and various operations, specifically nimbus and 
UI for a very large cluster.  I would love to see some/all of the code for this 
be in open source, but running it regularly will probably have to be done 
outside of the community because of a lack of hardware, and the need for manual 
evaluation of the results.

I think we should concentrate on the first three, with the first two covered by 
this JIRA, and the third covered by a separate JIRA.  We can then branch off 
into automating the others once the first three are done, and we have developed 
experience with ductape, or whatever system we decide to use. 

> Create Maven Profiles for Integration Tests
> -------------------------------------------
>
>                 Key: STORM-1179
>                 URL: https://issues.apache.org/jira/browse/STORM-1179
>             Project: Apache Storm
>          Issue Type: Bug
>          Components: storm-core
>    Affects Versions: 0.11.0
>            Reporter: Hugo Louro
>            Assignee: Hugo Louro
>




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to