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

Roman Shaposhnik commented on HBASE-4821:
-----------------------------------------

@Enis,

I had a really nice chat with Jon yesterday and we arrived at a common 
understanding that the tests in general fall into 3 distinct categories (please 
note that this categories classify test *implementation* and not whether they 
are used as part of the mvn test, mvn verify or Bigtop's test infra -- more on 
that later): 
  # pure unit tests -- they reach into the guts of the implementation and use 
non-public APIs. There's absolutely no way to run that testcode on anything but 
MiniHBase/MiniDFS/MiniMR. Bigtop has no role to play in helping HBase community 
with developing/maintaining/executing those tests.
  # HBase-specific functional tests -- these are the tests that only use public 
APIs and don't muck about with internals. They are, however, only concerned 
with HBase itself. IOW, a test that wants to verify that you can submit an 
Oozie workflow that has Hive->HBASE->Pig pipeline does not fall into this 
category
  # Integration tests -- these are the multi-component tests that exercise  not 
just HBase but a # of different components. An above example of the Oozie 
workflow falls into this category.

Here's how an ideal situation looks from Bigtop's perspective: 
  * you guys totally take care of #1 and you implement it as usual unit tests. 
  * Bigtop (with your help) takes care of #3. It simply makes no sense to 
reproduce the same infra at the HBase level.
  * A proposal on #2 is this -- these tests belong to HBase. However, they have 
to be clearly marked as belonging to the functional class AND they have to 
utilize a very thin shim layer so you can use them in an mvn verify context and 
we can reuse them in Bigtop running against a fully distributed beefy clusters. 
At this point I'm convinced that TestLoadAndVerify should be the first example 
of this class and it should reside in HBase codebase (yet be available to 
Bigtop).

Let me know if this makes sense.
                
> A fully automated comprehensive distributed integration test for HBase
> ----------------------------------------------------------------------
>
>                 Key: HBASE-4821
>                 URL: https://issues.apache.org/jira/browse/HBASE-4821
>             Project: HBase
>          Issue Type: Improvement
>            Reporter: Mikhail Bautin
>            Assignee: Mikhail Bautin
>            Priority: Critical
>
> To properly verify that a particular version of HBase is good for production 
> deployment we need a better way to do real cluster testing after incremental 
> changes. Running unit tests is good, but we also need to deploy HBase to a 
> cluster, run integration tests, load tests, Thrift server tests, kill some 
> region servers, kill the master, and produce a report. All of this needs to 
> happen in 20-30 minutes with minimal manual intervention. I think this way we 
> can combine agile development with high stability of the codebase. I am 
> envisioning a high-level framework written in a scripting language (e.g. 
> Python) that would abstract external operations such as "deploy to test 
> cluster", "kill a particular server", "run load test A", "run load test B" 
> (we already have a few kinds of load tests implemented in Java, and we could 
> write a Thrift load test in Python). This tool should also produce 
> intermediate output, allowing to catch problems early and restart the test.
> No implementation has yet been done. Any ideas or suggestions are welcome.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to