[squeak-dev] Timing out Trait tests
Frank Shearar
frank.shearar at gmail.com
Mon Jan 13 19:52:59 UTC 2014
On 11 January 2014 22:55, Frank Shearar <frank.shearar at gmail.com> wrote:
> On 11 January 2014 19:19, tim Rowledge <tim at rowledge.org> wrote:
>>
>> On 11-01-2014, at 6:29 AM, Frank Shearar <frank.shearar at gmail.com> wrote:
>>
>>> A bunch of the Trait tests fail, despite no one having worked on the
>>> Traits code in quite a while. The symptom is that the tests time out
>>> [1]. I've tried to debug some, only to find that they pass. For
>>> instance, <timeout: 60> sometimes "fixes" the tests.
>>>
>>> But the tests shouldn't be failing. Any takers?
>>
>> I noticed similar issues when running test on a Pi; being a relatively slow machine it takes longer to do some things and needed a larger timeout value.
>>
>> If tests that used to run within the time are now taking longer but still pass if given enough time, that implies to me that either
>> a) the tests are being run on a slower machine due to some system configuration change (are other jobs also running and taking time?)
>> b) something has changed in the execution path to slow down the tested code. Which obviously, ought not be the case.
>
> They time out on my beefy work laptop: a 2.7 GHz machine. That's
> probably a higher spec machine than the build server.
>
> If I was a betting man I'd be inclined to put my money on (b).
Attached is the output of MessageTally spyOn: [[TraitCompositionTest
debug: #testAliasCompositions] on: TestFailure do: [#fail]], after
adding <timeout: 60> to the test.
The leaves are very interesting:
**Leaves**
43.1% {28650ms} CompiledMethod>>originalTraitMethod:
36.9% {24505ms} Text>>size
9.7% {6425ms} Delay>>wait
3.4% {2239ms} SecurityManager class>>default
1.1% {749ms} CompiledMethod>>checkOKToAdd:at:
_24 seconds_ in Text >> #size ?! Also,
CompiledMethod>>originalTraitMethod: hasn't changed in 4 years. In
fact the only things that have changed, that I can see, in the code
path are Chris Muller's fixing of TestCase >> #debug and Nicolas
Cellier's cleanup of the Compiler API. Nothing looks even remotely
capable of slowing stuff down this dramatically.
frank
-------------- next part --------------
- 66321 tallies, 66496 msec.
**Tree**
--------------------------------
Process: other processes
--------------------------------
9.7% {6427ms} EventSensor>>eventTickler
9.7% {6425ms} Delay>>wait
--------------------------------
Process: (40s) 30120: nil
--------------------------------
90.1% {59929ms} TraitCompositionTest(TestCase)>>debug
80.2% {53345ms} TraitCompositionTest(TestCase)>>runCase
|78.8% {52408ms} TraitCompositionTest(TestCase)>>performTest
| |78.8% {52408ms} TraitCompositionTest>>testAliasCompositions
| | 48.5% {32241ms} Trait(ClassDescription)>>uses:
| | |48.5% {32241ms} Trait(TraitDescription)>>installTraitsFrom:
| | | 35.0% {23274ms} Trait(ClassDescription)>>installTraitsFrom:
| | | |33.7% {22394ms} Trait(ClassDescription)>>installTraitMethodDict:
| | | | |21.7% {14426ms} TraitOrganizer(Categorizer)>>classify:under:
| | | | | |21.7% {14426ms} TraitOrganizer(ClassOrganizer)>>classify:under:suppressIfDefault:
| | | | | | 21.7% {14424ms} TraitOrganizer(ClassOrganizer)>>classify:under:suppressIfDefault:logged:
| | | | | | 21.7% {14424ms} TraitOrganizer(ClassOrganizer)>>notifyOfChangedSelector:from:to:
| | | | | | 21.7% {14424ms} Trait(TraitDescription)>>notifyOfRecategorizedSelector:from:to:
| | | | | | 21.2% {14122ms} Trait(ClassDescription)>>classify:under:from:trait:
| | | | | | 21.2% {14122ms} Trait(ClassDescription)>>updateTraits
| | | | | | 21.2% {14122ms} Trait(TraitDescription)>>installTraitsFrom:
| | | | | | 19.1% {12706ms} Trait(ClassDescription)>>installTraitsFrom:
| | | | | | |16.5% {10985ms} Trait(ClassDescription)>>installTraitMethodDict:
| | | | | | | |13.4% {8906ms} Trait(ClassDescription)>>traitAddSelector:withMethod:
| | | | | | | | |7.3% {4858ms} CompiledMethod>>originalTraitMethod:
| | | | | | | | | |7.3% {4838ms} primitives
| | | | | | | | |5.8% {3871ms} CompiledMethod>>putSource:fromParseNode:inFile:withPreamble:
| | | | | | | | | 5.8% {3834ms} Text>>size
| | | | | | | |3.0% {1970ms} TraitOrganizer(Categorizer)>>classify:under:
| | | | | | | | 3.0% {1970ms} TraitOrganizer(ClassOrganizer)>>classify:under:suppressIfDefault:
| | | | | | | | 3.0% {1970ms} TraitOrganizer(ClassOrganizer)>>classify:under:suppressIfDefault:logged:
| | | | | | | | 3.0% {1967ms} TraitOrganizer(ClassOrganizer)>>notifyOfChangedSelector:from:to:
| | | | | | | | 3.0% {1965ms} Trait(TraitDescription)>>notifyOfRecategorizedSelector:from:to:
| | | | | | | | 2.0% {1337ms} AnObsoleteC2 class(ClassDescription)>>classify:under:from:trait:
| | | | | | | | 2.0% {1337ms} AnObsoleteC2 class(ClassDescription)>>updateTraits
| | | | | | | | 2.0% {1337ms} AnObsoleteC2 class(ClassDescription)>>installTraitsFrom:
| | | | | | | | 2.0% {1334ms} AnObsoleteC2 class(ClassDescription)>>installTraitMethodDict:
| | | | | | | | 1.8% {1177ms} AnObsoleteC2 class(ClassDescription)>>traitAddSelector:withMethod:
| | | | | | | | 1.1% {751ms} CompiledMethod>>originalTraitMethod:
| | | | | | | | 1.1% {748ms} primitives
| | | | | | |2.6% {1719ms} ClassTrait(ClassDescription)>>updateTraitsFrom:
| | | | | | | 2.6% {1716ms} ClassTrait(TraitDescription)>>installTraitsFrom:
| | | | | | | 2.6% {1714ms} ClassTrait(ClassDescription)>>installTraitsFrom:
| | | | | | | 2.6% {1711ms} ClassTrait(ClassDescription)>>installTraitMethodDict:
| | | | | | | 2.5% {1693ms} ClassTrait(ClassDescription)>>traitAddSelector:withMethod:
| | | | | | | 1.3% {883ms} CompiledMethod>>putSource:fromParseNode:inFile:withPreamble:
| | | | | | | |1.3% {876ms} Text>>size
| | | | | | | 1.2% {780ms} CompiledMethod>>originalTraitMethod:
| | | | | | | 1.2% {776ms} primitives
| | | | | | 2.1% {1416ms} AnObsoleteC2 class(ClassDescription)>>updateTraits
| | | | | | 2.1% {1416ms} AnObsoleteC2 class(ClassDescription)>>installTraitsFrom:
| | | | | | 2.1% {1413ms} AnObsoleteC2 class(ClassDescription)>>installTraitMethodDict:
| | | | | | 2.1% {1392ms} AnObsoleteC2 class(ClassDescription)>>traitAddSelector:withMethod:
| | | | | | 1.1% {720ms} CompiledMethod>>originalTraitMethod:
| | | | | | 1.1% {716ms} primitives
| | | | |9.7% {6426ms} Trait(ClassDescription)>>traitRemoveSelector:
| | | | | |9.4% {6259ms} TraitOrganizer(ClassOrganizer)>>removeElement:
| | | | | | 9.4% {6257ms} TraitOrganizer(ClassOrganizer)>>notifyOfChangedSelector:from:to:
| | | | | | 9.4% {6257ms} Trait(TraitDescription)>>notifyOfRecategorizedSelector:from:to:
| | | | | | 9.4% {6257ms} Trait(ClassDescription)>>classify:under:from:trait:
| | | | | | 9.4% {6257ms} Trait(ClassDescription)>>updateTraits
| | | | | | 9.4% {6257ms} Trait(TraitDescription)>>installTraitsFrom:
| | | | | | 8.0% {5349ms} Trait(ClassDescription)>>installTraitsFrom:
| | | | | | |6.9% {4605ms} Trait(ClassDescription)>>installTraitMethodDict:
| | | | | | | |6.9% {4559ms} Trait(ClassDescription)>>traitAddSelector:withMethod:
| | | | | | | | 4.0% {2679ms} CompiledMethod>>originalTraitMethod:
| | | | | | | | |4.0% {2670ms} primitives
| | | | | | | | 2.7% {1797ms} CompiledMethod>>putSource:fromParseNode:inFile:withPreamble:
| | | | | | | | 2.7% {1776ms} Text>>size
| | | | | | |1.1% {739ms} ClassTrait(ClassDescription)>>updateTraitsFrom:
| | | | | | | 1.1% {739ms} ClassTrait(TraitDescription)>>installTraitsFrom:
| | | | | | | 1.1% {739ms} ClassTrait(ClassDescription)>>installTraitsFrom:
| | | | | | | 1.1% {735ms} ClassTrait(ClassDescription)>>installTraitMethodDict:
| | | | | | | 1.1% {728ms} ClassTrait(ClassDescription)>>traitAddSelector:withMethod:
| | | | | | 1.4% {908ms} AnObsoleteC2 class(ClassDescription)>>updateTraits
| | | | | | 1.4% {908ms} AnObsoleteC2 class(ClassDescription)>>installTraitsFrom:
| | | | | | 1.4% {907ms} AnObsoleteC2 class(ClassDescription)>>installTraitMethodDict:
| | | | | | 1.4% {902ms} AnObsoleteC2 class(ClassDescription)>>traitAddSelector:withMethod:
| | | | |2.3% {1526ms} Trait(ClassDescription)>>traitAddSelector:withMethod:
| | | | | 1.3% {875ms} CompiledMethod>>originalTraitMethod:
| | | | | 1.3% {869ms} primitives
| | | |1.3% {879ms} ClassTrait(ClassDescription)>>updateTraitsFrom:
| | | | 1.3% {879ms} ClassTrait(TraitDescription)>>installTraitsFrom:
| | | | 1.3% {877ms} ClassTrait(ClassDescription)>>updateTraits
| | | | 1.3% {877ms} ClassTrait(TraitDescription)>>installTraitsFrom:
| | | | 1.3% {876ms} ClassTrait(ClassDescription)>>installTraitsFrom:
| | | | 1.3% {875ms} ClassTrait(ClassDescription)>>installTraitMethodDict:
| | | | 1.3% {867ms} ClassTrait(ClassDescription)>>traitAddSelector:withMethod:
| | | 13.5% {8967ms} Trait(ClassDescription)>>updateTraits
| | | 13.5% {8967ms} Trait(TraitDescription)>>installTraitsFrom:
| | | 11.8% {7815ms} Trait(ClassDescription)>>installTraitsFrom:
| | | |10.3% {6856ms} Trait(ClassDescription)>>installTraitMethodDict:
| | | | |8.7% {5773ms} Trait(ClassDescription)>>traitAddSelector:withMethod:
| | | | | |5.2% {3464ms} CompiledMethod>>originalTraitMethod:
| | | | | | |5.2% {3455ms} primitives
| | | | | |3.3% {2219ms} CompiledMethod>>putSource:fromParseNode:inFile:withPreamble:
| | | | | | 3.3% {2200ms} Text>>size
| | | | |1.5% {1001ms} Trait(ClassDescription)>>traitRemoveSelector:
| | | | | 1.1% {711ms} TraitOrganizer(ClassOrganizer)>>removeElement:
| | | | | 1.1% {709ms} TraitOrganizer(ClassOrganizer)>>notifyOfChangedSelector:from:to:
| | | | | 1.1% {709ms} Trait(TraitDescription)>>notifyOfRecategorizedSelector:from:to:
| | | | | 1.1% {709ms} AnObsoleteC2 class(ClassDescription)>>classify:under:from:trait:
| | | | | 1.1% {709ms} AnObsoleteC2 class(ClassDescription)>>updateTraits
| | | | | 1.1% {709ms} AnObsoleteC2 class(ClassDescription)>>installTraitsFrom:
| | | | | 1.1% {707ms} AnObsoleteC2 class(ClassDescription)>>installTraitMethodDict:
| | | | | 1.0% {694ms} AnObsoleteC2 class(ClassDescription)>>traitAddSelector:withMethod:
| | | |1.4% {955ms} ClassTrait(ClassDescription)>>updateTraitsFrom:
| | | | 1.4% {955ms} ClassTrait(TraitDescription)>>installTraitsFrom:
| | | | 1.4% {955ms} ClassTrait(ClassDescription)>>installTraitsFrom:
| | | | 1.4% {955ms} ClassTrait(ClassDescription)>>installTraitMethodDict:
| | | | 1.4% {946ms} ClassTrait(ClassDescription)>>traitAddSelector:withMethod:
| | | 1.7% {1152ms} AnObsoleteC2 class(ClassDescription)>>updateTraits
| | | 1.7% {1152ms} AnObsoleteC2 class(ClassDescription)>>installTraitsFrom:
| | | 1.7% {1151ms} AnObsoleteC2 class(ClassDescription)>>installTraitMethodDict:
| | | 1.5% {986ms} AnObsoleteC2 class(ClassDescription)>>traitAddSelector:withMethod:
| | 30.3% {20159ms} Trait(Behavior)>>compile:
| | 30.3% {20159ms} Trait(ClassDescription)>>compile:notifying:
| | 30.3% {20159ms} Trait(ClassDescription)>>compile:classified:notifying:
| | 30.3% {20159ms} Trait(ClassDescription)>>compile:classified:withStamp:notifying:
| | 30.3% {20159ms} Trait(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
| | 30.1% {20014ms} Trait(ClassDescription)>>addAndClassifySelector:withMethod:inProtocol:notifying:
| | 17.9% {11892ms} Trait(TraitDescription)>>addSelectorSilently:withMethod:
| | |17.9% {11883ms} Trait(ClassDescription)>>updateTraits
| | | 17.9% {11883ms} Trait(TraitDescription)>>installTraitsFrom:
| | | 12.6% {8403ms} Trait(ClassDescription)>>installTraitsFrom:
| | | |11.3% {7533ms} Trait(ClassDescription)>>installTraitMethodDict:
| | | | |7.0% {4624ms} TraitOrganizer(Categorizer)>>classify:under:
| | | | | |7.0% {4624ms} TraitOrganizer(ClassOrganizer)>>classify:under:suppressIfDefault:
| | | | | | 7.0% {4624ms} TraitOrganizer(ClassOrganizer)>>classify:under:suppressIfDefault:logged:
| | | | | | 7.0% {4622ms} TraitOrganizer(ClassOrganizer)>>notifyOfChangedSelector:from:to:
| | | | | | 7.0% {4622ms} Trait(TraitDescription)>>notifyOfRecategorizedSelector:from:to:
| | | | | | 6.9% {4561ms} Trait(ClassDescription)>>classify:under:from:trait:
| | | | | | 6.9% {4561ms} Trait(ClassDescription)>>updateTraits
| | | | | | 6.9% {4561ms} Trait(TraitDescription)>>installTraitsFrom:
| | | | | | 6.2% {4151ms} Trait(ClassDescription)>>installTraitsFrom:
| | | | | | 5.7% {3794ms} Trait(ClassDescription)>>installTraitMethodDict:
| | | | | | 4.1% {2699ms} Trait(ClassDescription)>>traitAddSelector:withMethod:
| | | | | | |2.4% {1587ms} CompiledMethod>>originalTraitMethod:
| | | | | | | |2.4% {1582ms} primitives
| | | | | | |1.6% {1060ms} CompiledMethod>>putSource:fromParseNode:inFile:withPreamble:
| | | | | | | 1.6% {1052ms} Text>>size
| | | | | | 1.6% {1053ms} TraitOrganizer(Categorizer)>>classify:under:
| | | | | | 1.6% {1053ms} TraitOrganizer(ClassOrganizer)>>classify:under:suppressIfDefault:
| | | | | | 1.6% {1053ms} TraitOrganizer(ClassOrganizer)>>classify:under:suppressIfDefault:logged:
| | | | | | 1.6% {1052ms} TraitOrganizer(ClassOrganizer)>>notifyOfChangedSelector:from:to:
| | | | | | 1.6% {1052ms} Trait(TraitDescription)>>notifyOfRecategorizedSelector:from:to:
| | | | | | 1.2% {799ms} AnObsoleteC2 class(ClassDescription)>>classify:under:from:trait:
| | | | | | 1.2% {799ms} AnObsoleteC2 class(ClassDescription)>>updateTraits
| | | | | | 1.2% {799ms} AnObsoleteC2 class(ClassDescription)>>installTraitsFrom:
| | | | | | 1.2% {797ms} AnObsoleteC2 class(ClassDescription)>>installTraitMethodDict:
| | | | | | 1.1% {714ms} AnObsoleteC2 class(ClassDescription)>>traitAddSelector:withMethod:
| | | | |4.3% {2873ms} Trait(ClassDescription)>>traitAddSelector:withMethod:
| | | | | 2.1% {1410ms} CompiledMethod>>originalTraitMethod:
| | | | | |2.1% {1405ms} primitives
| | | | | 2.1% {1393ms} CompiledMethod>>putSource:fromParseNode:inFile:withPreamble:
| | | | | 2.1% {1374ms} Text>>size
| | | |1.3% {867ms} ClassTrait(ClassDescription)>>updateTraitsFrom:
| | | | 1.3% {867ms} ClassTrait(TraitDescription)>>installTraitsFrom:
| | | 5.2% {3480ms} Trait(ClassDescription)>>updateTraits
| | | 4.6% {3055ms} Trait(TraitDescription)>>installTraitsFrom:
| | | 4.0% {2692ms} Trait(ClassDescription)>>installTraitsFrom:
| | | 3.3% {2175ms} Trait(ClassDescription)>>installTraitMethodDict:
| | | 3.2% {2136ms} Trait(ClassDescription)>>traitAddSelector:withMethod:
| | | 1.6% {1065ms} CompiledMethod>>originalTraitMethod:
| | | |1.6% {1058ms} primitives
| | | 1.6% {1034ms} CompiledMethod>>putSource:fromParseNode:inFile:withPreamble:
| | | 1.5% {1011ms} Text>>size
| | 12.2% {8113ms} ClassOrganizer(Categorizer)>>classify:under:
| | 12.2% {8113ms} ClassOrganizer>>classify:under:suppressIfDefault:
| | 12.2% {8113ms} ClassOrganizer>>classify:under:suppressIfDefault:logged:
| | 12.2% {8113ms} ClassOrganizer>>notifyOfChangedSelector:from:to:
| | 12.2% {8113ms} Trait(TraitDescription)>>notifyOfRecategorizedSelector:from:to:
| | 12.2% {8113ms} Trait(ClassDescription)>>classify:under:from:trait:
| | 12.2% {8113ms} Trait(ClassDescription)>>updateTraits
| | 12.2% {8113ms} Trait(TraitDescription)>>installTraitsFrom:
| | 6.2% {4125ms} Trait(ClassDescription)>>installTraitsFrom:
| | |4.8% {3212ms} Trait(ClassDescription)>>installTraitMethodDict:
| | | |4.8% {3180ms} Trait(ClassDescription)>>traitAddSelector:withMethod:
| | | | 2.6% {1711ms} CompiledMethod>>originalTraitMethod:
| | | | |2.6% {1704ms} primitives
| | | | 2.1% {1387ms} CompiledMethod>>putSource:fromParseNode:inFile:withPreamble:
| | | | 2.1% {1370ms} Text>>size
| | |1.4% {909ms} ClassTrait(ClassDescription)>>updateTraitsFrom:
| | | 1.4% {907ms} ClassTrait(TraitDescription)>>installTraitsFrom:
| | 6.0% {3988ms} Trait(ClassDescription)>>updateTraits
| | 5.2% {3474ms} Trait(TraitDescription)>>installTraitsFrom:
| | 4.6% {3033ms} Trait(ClassDescription)>>installTraitsFrom:
| | 4.0% {2636ms} Trait(ClassDescription)>>installTraitMethodDict:
| | 3.9% {2603ms} Trait(ClassDescription)>>traitAddSelector:withMethod:
| | 2.0% {1299ms} CompiledMethod>>originalTraitMethod:
| | |2.0% {1297ms} primitives
| | 1.8% {1225ms} CompiledMethod>>putSource:fromParseNode:inFile:withPreamble:
| | 1.8% {1212ms} Text>>size
|1.4% {937ms} TraitCompositionTest(TraitsTestCase)>>tearDown
| 1.4% {937ms} TraitsResource class>>resetIfDirty
| 1.4% {937ms} TraitsResource class(TestResource class)>>reset
| 1.4% {937ms} TraitsResource>>tearDown
9.9% {6583ms} TraitsResource class(TestResource class)>>isAvailable
9.9% {6583ms} TraitsResource class(TestResource class)>>current
9.9% {6583ms} TraitsResource class(Behavior)>>new
9.9% {6583ms} TraitsResource(TestResource)>>initialize
9.9% {6583ms} TraitsResource>>setUp
7.9% {5257ms} Trait(ClassDescription)>>compile:classified:
7.9% {5257ms} Trait(ClassDescription)>>compile:classified:notifying:
7.9% {5246ms} Trait(ClassDescription)>>compile:classified:withStamp:notifying:
7.9% {5246ms} Trait(ClassDescription)>>compile:classified:withStamp:notifying:logSource:
6.9% {4566ms} Trait(ClassDescription)>>addAndClassifySelector:withMethod:inProtocol:notifying:
3.5% {2353ms} ClassOrganizer(Categorizer)>>classify:under:
|3.5% {2353ms} ClassOrganizer>>classify:under:suppressIfDefault:
| 3.5% {2353ms} ClassOrganizer>>classify:under:suppressIfDefault:logged:
| 3.5% {2351ms} ClassOrganizer>>notifyOfChangedSelector:from:to:
| 3.5% {2349ms} Trait(TraitDescription)>>notifyOfRecategorizedSelector:from:to:
| 3.5% {2349ms} Trait(ClassDescription)>>classify:under:from:trait:
| 3.5% {2349ms} Trait(ClassDescription)>>updateTraits
| 3.5% {2349ms} Trait(TraitDescription)>>installTraitsFrom:
| 3.5% {2349ms} Trait(ClassDescription)>>installTraitsFrom:
| 2.8% {1837ms} Trait(ClassDescription)>>installTraitMethodDict:
| 2.7% {1814ms} Trait(ClassDescription)>>traitAddSelector:withMethod:
| 1.6% {1084ms} CompiledMethod>>putSource:fromParseNode:inFile:withPreamble:
| |1.6% {1047ms} Text>>size
| 1.0% {684ms} CompiledMethod>>originalTraitMethod:
| 1.0% {677ms} primitives
3.3% {2212ms} Trait(TraitDescription)>>addSelectorSilently:withMethod:
3.3% {2196ms} Trait(ClassDescription)>>updateTraits
3.3% {2196ms} Trait(TraitDescription)>>installTraitsFrom:
3.3% {2196ms} Trait(ClassDescription)>>installTraitsFrom:
2.6% {1722ms} Trait(ClassDescription)>>installTraitMethodDict:
2.6% {1696ms} Trait(ClassDescription)>>traitAddSelector:withMethod:
1.7% {1131ms} CompiledMethod>>putSource:fromParseNode:inFile:withPreamble:
1.7% {1116ms} Text>>size
**Leaves**
43.1% {28650ms} CompiledMethod>>originalTraitMethod:
36.9% {24505ms} Text>>size
9.7% {6425ms} Delay>>wait
3.4% {2239ms} SecurityManager class>>default
1.1% {749ms} CompiledMethod>>checkOKToAdd:at:
**Memory**
old +759,580 bytes
young -296,592 bytes
used +462,988 bytes
free -462,988 bytes
**GCs**
full 0 totalling 0 ms (0% uptime)
incr 4 totalling 85 ms (0.1% uptime), avg 21.3 ms
tenures 2 (avg 2 GCs/tenure)
root table 0 overflows
More information about the Squeak-dev
mailing list
|