Skip to content

Some test case run twice #22664

@tiancaiamao

Description

@tiancaiamao

Development Task

For example,

cd statistics/handle
go test -check.list

The result looks like this:

testUpdateListSuite.TestInsertAndDelete
testStatsSuite.TestAbnormalIndexFeedback
testStatsSuite.TestAdminReloadStatistics
testStatsSuite.TestAutoUpdate
testStatsSuite.TestAutoUpdatePartition
testStatsSuite.TestAvgColLen
testStatsSuite.TestColumnIDs
testStatsSuite.TestConversion
testStatsSuite.TestCorrelation
testStatsSuite.TestCorrelationStatsCompute
testStatsSuite.TestDDLAfterLoad
testStatsSuite.TestDDLHistogram
testStatsSuite.TestDDLPartition
testStatsSuite.TestDDLTable
testStatsSuite.TestDeleteUpdateFeedback
testStatsSuite.TestDisableFeedback
testStatsSuite.TestDumpAlteredTable
testStatsSuite.TestDumpCMSketchWithTopN
testStatsSuite.TestDumpExtendedStats
testStatsSuite.TestDumpPartitions
testStatsSuite.TestDumpPseudoColumns
testStatsSuite.TestDumpVer2Stats
testStatsSuite.TestDurationToTS
testStatsSuite.TestEmptyTable
testStatsSuite.TestExtendedStatsDefaultSwitch
testStatsSuite.TestExtendedStatsOps
testStatsSuite.TestFeedbackCounter
testStatsSuite.TestFeedbackRanges
testStatsSuite.TestGCExtendedStats
testStatsSuite.TestGCPartition
testStatsSuite.TestGCStats
testStatsSuite.TestIndexQueryFeedback
testStatsSuite.TestIndexQueryFeedback4TopN
testStatsSuite.TestInitStats
testStatsSuite.TestInitStatsVer2
testStatsSuite.TestLoadHist
testStatsSuite.TestLoadHistCorrelation
testStatsSuite.TestLoadStats
testStatsSuite.TestLogDetailedInfo
testStatsSuite.TestMultiSession
testStatsSuite.TestNeedAnalyzeTable
testStatsSuite.TestOutOfOrderUpdate
testStatsSuite.TestQueryFeedback
testStatsSuite.TestQueryFeedbackForPartition
testStatsSuite.TestRollback
testStatsSuite.TestSingleSessionInsert
testStatsSuite.TestSplitRange
testStatsSuite.TestStatsCache
testStatsSuite.TestStatsCacheMemTracker
testStatsSuite.TestStatsStoreAndLoad
testStatsSuite.TestTableAnalyzed
testStatsSuite.TestTxnWithFailure
testStatsSuite.TestUnsignedFeedbackRanges
testStatsSuite.TestUpdateErrorRate
testStatsSuite.TestUpdatePartition
testStatsSuite.TestUpdatePartitionErrorRate
testStatsSuite.TestUpdatePartitionStatsByLocalFeedback
testStatsSuite.TestUpdateStatsByLocalFeedback
testStatsSuite.TestUpdateSystemTable
testStatsSuite.TestVersion
statsSerialSuite.TestAbnormalIndexFeedback
statsSerialSuite.TestAdminReloadStatistics
statsSerialSuite.TestAutoUpdate
statsSerialSuite.TestAutoUpdatePartition
statsSerialSuite.TestAvgColLen
statsSerialSuite.TestColumnIDs
statsSerialSuite.TestConversion
statsSerialSuite.TestCorrelation
statsSerialSuite.TestCorrelationStatsCompute
statsSerialSuite.TestDDLAfterLoad
statsSerialSuite.TestDDLHistogram
statsSerialSuite.TestDDLPartition
statsSerialSuite.TestDDLTable
statsSerialSuite.TestDeleteUpdateFeedback
statsSerialSuite.TestDisableFeedback
statsSerialSuite.TestDumpAlteredTable
statsSerialSuite.TestDumpCMSketchWithTopN
statsSerialSuite.TestDumpExtendedStats
statsSerialSuite.TestDumpPartitions
statsSerialSuite.TestDumpPseudoColumns
statsSerialSuite.TestDumpVer2Stats
statsSerialSuite.TestDurationToTS
statsSerialSuite.TestEmptyTable
statsSerialSuite.TestExtendedStatsDefaultSwitch
statsSerialSuite.TestExtendedStatsOps
statsSerialSuite.TestFeedbackCounter
statsSerialSuite.TestFeedbackRanges
statsSerialSuite.TestGCExtendedStats
statsSerialSuite.TestGCIndexUsageInformation
statsSerialSuite.TestGCPartition
statsSerialSuite.TestGCStats
statsSerialSuite.TestIndexQueryFeedback
statsSerialSuite.TestIndexQueryFeedback4TopN
statsSerialSuite.TestIndexUsageInformation
statsSerialSuite.TestInitStats
statsSerialSuite.TestInitStatsVer2
statsSerialSuite.TestLoadHist
statsSerialSuite.TestLoadHistCorrelation
statsSerialSuite.TestLoadStats
statsSerialSuite.TestLogDetailedInfo
statsSerialSuite.TestMultiSession
statsSerialSuite.TestNeedAnalyzeTable
statsSerialSuite.TestOutOfOrderUpdate
statsSerialSuite.TestQueryFeedback
statsSerialSuite.TestQueryFeedbackForPartition
statsSerialSuite.TestRollback
statsSerialSuite.TestSingleSessionInsert
statsSerialSuite.TestSplitRange
statsSerialSuite.TestStatsCache
statsSerialSuite.TestStatsCacheMemTracker
statsSerialSuite.TestStatsStoreAndLoad
statsSerialSuite.TestTableAnalyzed
statsSerialSuite.TestTxnWithFailure
statsSerialSuite.TestUnsignedFeedbackRanges
statsSerialSuite.TestUpdateErrorRate
statsSerialSuite.TestUpdatePartition
statsSerialSuite.TestUpdatePartitionErrorRate
statsSerialSuite.TestUpdatePartitionStatsByLocalFeedback
statsSerialSuite.TestUpdateStatsByLocalFeedback
statsSerialSuite.TestUpdateSystemTable
statsSerialSuite.TestVersion

Many tests run twice, both in statsSerialSuite and testStatsSuite.

It caused by the wrong usage of the pingcap/check package.

type Base struct {}
func (b *Base) TestXXX()  ...
type Override struct {
    Base
}

Suite(&Base{})
SerialSuites(&Override{})

In the SerialSuites(), the Override also has the TestXXX method, so this one is registered.
As it's already registered in Suite(&Base{}), TestXXX is registered twice and run twice.

The correct way to do override is never to write TestXXX in the base class, just the SetUpXXX methods.

type Base struct{}
func (b *Base) SetUpSuite() ...

type Override1 struct {
    Base
}
func (o *Override1) TestXXX() ...

type Override2 struct {
    Base
}
func (o *Override2) TestYYY() ...

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions