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

Hadoop QA commented on HBASE-7384:
----------------------------------

{color:red}-1 overall{color}.  Here are the results of testing the latest 
attachment 
  http://issues.apache.org/jira/secure/attachment/12562544/hbase-7384_1.0.patch
  against trunk revision .

    {color:green}+1 @author{color}.  The patch does not contain any @author 
tags.

    {color:green}+1 tests included{color}.  The patch appears to include 8 new 
or modified tests.

    {color:green}+1 hadoop2.0{color}.  The patch compiles against the hadoop 
2.0 profile.

    {color:red}-1 javadoc{color}.  The javadoc tool appears to have generated 2 
warning messages.

    {color:green}+1 javac{color}.  The applied patch does not increase the 
total number of javac compiler warnings.

    {color:green}+1 findbugs{color}.  The patch does not introduce any new 
Findbugs (version 1.3.9) warnings.

    {color:green}+1 release audit{color}.  The applied patch does not increase 
the total number of release audit warnings.

    {color:red}-1 lineLengths{color}.  The patch introduces lines longer than 
100

     {color:red}-1 core tests{color}.  The patch failed these unit tests:
                       
org.apache.hadoop.hbase.replication.regionserver.TestReplicationSink
                  
org.apache.hadoop.hbase.coprocessor.TestRegionObserverInterface
                  org.apache.hadoop.hbase.rest.TestStatusResource
                  org.apache.hadoop.hbase.rest.TestSchemaResource
                  org.apache.hadoop.hbase.client.TestAdmin
                  org.apache.hadoop.hbase.coprocessor.TestCoprocessorEndpoint
                  org.apache.hadoop.hbase.master.TestMasterTransitions
                  org.apache.hadoop.hbase.replication.TestReplicationSource
                  org.apache.hadoop.hbase.master.TestAssignmentManagerOnCluster
                  org.apache.hadoop.hbase.rest.TestScannersWithFilters
                  org.apache.hadoop.hbase.regionserver.TestServerCustomProtocol
                  
org.apache.hadoop.hbase.master.TestMasterRestartAfterDisablingTable
                  org.apache.hadoop.hbase.master.TestMaster
                  org.apache.hadoop.hbase.util.TestIdLock
                  org.apache.hadoop.hbase.client.TestShell
                  org.apache.hadoop.hbase.master.TestMasterNoCluster
                  org.apache.hadoop.hbase.regionserver.TestClusterId
                  org.apache.hadoop.hbase.coprocessor.TestMasterObserver
                  
org.apache.hadoop.hbase.regionserver.wal.TestHLogSplitCompressed
                  org.apache.hadoop.hbase.master.TestDistributedLogSplitting
                  org.apache.hadoop.hbase.regionserver.wal.TestWALReplay
                  org.apache.hadoop.hbase.zookeeper.TestZooKeeperACL
                  org.apache.hadoop.hbase.filter.TestColumnRangeFilter
                  org.apache.hadoop.hbase.coprocessor.TestWALObserver
                  org.apache.hadoop.hbase.io.hfile.TestHFileBlock
                  
org.apache.hadoop.hbase.security.access.TestAccessControlFilter
                  org.apache.hadoop.hbase.TestLocalHBaseCluster
                  org.apache.hadoop.hbase.util.TestFSUtils
                  org.apache.hadoop.hbase.TestFullLogReconstruction
                  org.apache.hadoop.hbase.coprocessor.TestRegionObserverBypass
                  org.apache.hadoop.hbase.mapreduce.TestRowCounter
                  org.apache.hadoop.hbase.mapreduce.TestMultithreadedTableMapper
                  org.apache.hadoop.hbase.security.token.TestZKSecretWatcher
                  org.apache.hadoop.hbase.replication.TestReplication
                  org.apache.hadoop.hbase.TestAcidGuarantees
                  
org.apache.hadoop.hbase.security.access.TestZKPermissionsWatcher
                  org.apache.hadoop.hbase.regionserver.wal.TestLogRollAbort
                  
org.apache.hadoop.hbase.master.handler.TestTableDeleteFamilyHandler
                  org.apache.hadoop.hbase.util.hbck.TestOfflineMetaRebuildHole
                  org.apache.hadoop.hbase.master.TestMasterFileSystem
                  
org.apache.hadoop.hbase.io.encoding.TestUpgradeFromHFileV1ToEncoding
                  
org.apache.hadoop.hbase.coprocessor.TestRegionServerCoprocessorExceptionWithAbort
                  org.apache.hadoop.hbase.master.TestMasterFailover
                  
org.apache.hadoop.hbase.regionserver.TestSplitTransactionOnCluster
                  org.apache.hadoop.hbase.mapreduce.TestImportExport
                  org.apache.hadoop.hbase.regionserver.wal.TestHLogSplit
                  org.apache.hadoop.hbase.master.TestZKBasedOpenCloseRegion
                  org.apache.hadoop.hbase.filter.TestFilterWithScanLimits
                  org.apache.hadoop.hbase.catalog.TestMetaReaderEditor
                  org.apache.hadoop.hbase.rest.TestMultiRowResource
                  org.apache.hadoop.hbase.rest.TestVersionResource
                  org.apache.hadoop.hbase.regionserver.wal.TestHLog
                  org.apache.hadoop.hbase.TestRegionRebalancing
                  org.apache.hadoop.hbase.constraint.TestConstraint
                  org.apache.hadoop.hbase.rest.TestRowResource
                  org.apache.hadoop.hbase.master.TestMasterMetrics
                  org.apache.hadoop.hbase.client.TestFromClientSide
                  org.apache.hadoop.hbase.coprocessor.TestRowProcessorEndpoint
                  org.apache.hadoop.hbase.rest.TestGzipFilter
                  org.apache.hadoop.hbase.backup.TestHFileArchiving
                  org.apache.hadoop.hbase.TestInfoServers
                  org.apache.hadoop.hbase.util.hbck.TestOfflineMetaRebuildBase
                  org.apache.hadoop.hbase.replication.TestMasterReplication
                  
org.apache.hadoop.hbase.coprocessor.TestMasterCoprocessorExceptionWithRemove
                  org.apache.hadoop.hbase.rest.TestScannerResource
                  
org.apache.hadoop.hbase.catalog.TestMetaMigrationConvertingToPB
                  org.apache.hadoop.hbase.rest.TestTableResource
                  org.apache.hadoop.hbase.master.TestMasterMetricsWrapper
                  org.apache.hadoop.hbase.io.TestFileLink
                  org.apache.hadoop.hbase.TestClusterBootOrder
                  org.apache.hadoop.hbase.util.TestRegionSplitter
                  org.apache.hadoop.hbase.regionserver.TestHRegionBusyWait
                  org.apache.hadoop.hbase.util.TestMergeTool
                  
org.apache.hadoop.hbase.replication.TestReplicationWithCompression
                  org.apache.hadoop.hbase.regionserver.wal.TestHLogFiltering
                  org.apache.hadoop.hbase.thrift2.TestThriftHBaseServiceHandler
                  org.apache.hadoop.hbase.fs.TestBlockReorder
                  org.apache.hadoop.hbase.io.encoding.TestChangingEncoding
                  org.apache.hadoop.hbase.catalog.TestCatalogTrackerOnCluster
                  org.apache.hadoop.hbase.util.TestHBaseFsck
                  
org.apache.hadoop.hbase.coprocessor.TestMasterCoprocessorExceptionWithAbort
                  
org.apache.hadoop.hbase.io.encoding.TestLoadAndSwitchEncodeOnDisk
                  
org.apache.hadoop.hbase.coprocessor.TestRegionServerCoprocessorExceptionWithRemove
                  org.apache.hadoop.hbase.regionserver.TestCompaction
                  org.apache.hadoop.hbase.rest.client.TestRemoteTable
                  org.apache.hadoop.hbase.regionserver.TestAtomicOperation
                  org.apache.hadoop.hbase.master.TestRollingRestart
                  org.apache.hadoop.hbase.security.access.TestTablePermissions
                  org.apache.hadoop.hbase.master.TestMasterShutdown
                  org.apache.hadoop.hbase.util.TestMiniClusterLoadSequential
                  
org.apache.hadoop.hbase.util.hbck.TestOfflineMetaRebuildOverlap
                  org.apache.hadoop.hbase.zookeeper.TestZKTable
                  org.apache.hadoop.hbase.util.TestCoprocessorScanPolicy
                  org.apache.hadoop.hbase.client.TestHTableMultiplexer
                  org.apache.hadoop.hbase.regionserver.TestHRegion
                  org.apache.hadoop.hbase.TestHBaseTestingUtility
                  org.apache.hadoop.hbase.coprocessor.TestClassLoading
                  org.apache.hadoop.hbase.mapreduce.TestHLogRecordReader
                  org.apache.hadoop.hbase.coprocessor.TestAggregateProtocol
                  org.apache.hadoop.hbase.TestGlobalMemStoreSize
                  org.apache.hadoop.hbase.util.TestMergeTable
                  org.apache.hadoop.hbase.replication.TestMultiSlaveReplication
                  org.apache.hadoop.hbase.thrift.TestThriftServer
                  org.apache.hadoop.hbase.client.TestHTableUtil
                  org.apache.hadoop.hbase.TestMultiVersions
                  org.apache.hadoop.hbase.rest.client.TestRemoteAdmin
                  org.apache.hadoop.hbase.util.TestMiniClusterLoadParallel
                  org.apache.hadoop.hbase.trace.TestHTraceHooks

     {color:red}-1 core zombie tests{color}.  There are 11 zombie test(s):      
at 
org.apache.hadoop.hbase.master.TestOpenedRegionHandler.testOpenedRegionHandlerOnMasterRestart(TestOpenedRegionHandler.java:87)
        at 
org.apache.hadoop.hbase.regionserver.TestHRegionServerBulkLoad.testAtomicBulkLoad(TestHRegionServerBulkLoad.java:273)

Test results: 
https://builds.apache.org/job/PreCommit-HBASE-Build/3744//testReport/
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/3744//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-server.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/3744//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop2-compat.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/3744//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop-compat.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/3744//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-protocol.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/3744//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-common.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/3744//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-hadoop1-compat.html
Findbugs warnings: 
https://builds.apache.org/job/PreCommit-HBASE-Build/3744//artifact/trunk/patchprocess/newPatchFindbugsWarningshbase-examples.html
Console output: 
https://builds.apache.org/job/PreCommit-HBASE-Build/3744//console

This message is automatically generated.
                
> Introducing waitForCondition function into test cases
> -----------------------------------------------------
>
>                 Key: HBASE-7384
>                 URL: https://issues.apache.org/jira/browse/HBASE-7384
>             Project: HBase
>          Issue Type: Test
>          Components: test
>            Reporter: Jeffrey Zhong
>            Assignee: Jeffrey Zhong
>              Labels: test
>             Fix For: 0.96.0
>
>         Attachments: hbase-7384_1.0.patch, hbase-7384.patch, Waiter.java
>
>
> Recently I'm working on flaky test cases and found we have many places using 
> while loop and sleep to wait for a condition to be true. There are several 
> issues in existing ways:
> 1) Many similar code doing the same thing
> 2) When time out happens, different errors are reported without explicitly 
> indicating a time out situation
> 3) When we want to increase the max timeout value to verify if a test case 
> fails due to a not-enough time out value, we have to recompile & redeploy code
> I propose to create a waitForCondition function as a test utility function 
> like the following:
> {code}
>     public interface WaitCheck {
>         public boolean Check() ;
>     }
>     public boolean waitForCondition(int timeOutInMilliSeconds, int 
> checkIntervalInMilliSeconds, WaitCheck s)
>             throws InterruptedException {
>         int multiplier = 1;
>         String multiplierProp = System.getProperty("extremeWaitMultiplier");
>         if(multiplierProp != null) {
>             multiplier = Integer.parseInt(multiplierProp);
>             if(multiplier < 1) {
>                 LOG.warn(String.format("Invalid extremeWaitMultiplier 
> property value:%s. is ignored.", multiplierProp));
>                 multiplier = 1;
>             }
>         }
>         int timeElapsed = 0;
>         while(timeElapsed < timeOutInMilliSeconds * multiplier) {
>             if(s.Check()) {
>                 return true;
>             }
>             Thread.sleep(checkIntervalInMilliSeconds);
>             timeElapsed += checkIntervalInMilliSeconds;
>         }
>         assertTrue("WaitForCondition failed due to time out(" + 
> timeOutInMilliSeconds + " milliseconds expired)",
>                 false);
>         return false;
>     }
> {code}
> By doing the above way, there are several advantages:
> 1) Clearly report time out error when such situation happens
> 2) Use System property extremeWaitMultiplier to increase max time out 
> dynamically for a quick verification
> 3) Standardize current wait situations
> Pleas let me know what your thoughts on this.
> Thanks,
> -Jeffrey

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to