You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Devaraj Das (JIRA)" <ji...@apache.org> on 2012/06/19 20:55:42 UTC

[jira] [Updated] (HBASE-4821) A fully automated comprehensive distributed integration test for HBase

     [ https://issues.apache.org/jira/browse/HBASE-4821?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Devaraj Das updated HBASE-4821:
-------------------------------

    Attachment: 4821-1.patch

Attaching a cut of the patch (based against 0.92) that I was working on in HBASE-6053. At a high level what this does is:
1. Abstracts out the methods from MiniHBaseCluster to HBaseClusterShim. 

2. Makes parts of HBaseTestingUtility work with the abstract class, HBaseClusterShim. 

3. Provides an implementation of HBaseClusterShim called RealHBaseCluster that would work with real clusters. MiniHBaseCluster would be used in the unit test mode.

4. Provides a class ServerManager that provides APIs to start/stop/kill servers. This is used by the RealHBaseCluster implementation.

The patch definitely requires work but thought I'll post what I currently have.. Feedback welcome on the approach.
                
> 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
>         Attachments: 4821-1.patch
>
>
> 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