[squeak-dev] The Inbox: KernelTests-jar.407.mcz
mail at jaromir.net
mail at jaromir.net
Mon Nov 29 15:49:59 UTC 2021
Hi Christoph,
> From: christoph.thiede at student.hpi.uni-potsdam.de
> Date: 2021-05-28 23:05:43
> [...]
> Also, there is no guarantee that in #testTerminateInEnsure, process will not have completed earlier, is it? This totally depends on the speed & implementation of the VM. We don't want this test to fail when running on a NSA machine or on your coffee machine in 2050, do we? ;P Did you consider using semaphores instead? :-)
yes, I agree, we don't need this test; it's too dependent on the performance of the physical hardware. Besides, the functionality tested here is covered in other tests in Tests-jar.466.
Thanks,
Thanks,
Jaromir
~~~
^[^
--
Sent from Squeak Inbox Talk
On 2021-05-31T21:20:01+00:00, commits at source.squeak.org wrote:
> A new version of KernelTests was added to project The Inbox:
> http://source.squeak.org/inbox/KernelTests-jar.407.mcz
>
> ==================== Summary ====================
>
> Name: KernelTests-jar.407
> Author: jar
> Time: 31 May 2021, 11:19:58.858017 pm
> UUID: 8bb4554a-971d-ea49-9396-6a0c1625fb5b
> Ancestors: KernelTests-nice.404
>
> Add a test #testTerminateInEnsure presented by Martin McClure at 2019 Smalltalk conference. Test unwind when a process gets terminated inside the #ensure unwind block. Complement latest #terminate in the Inbox.
>
> Supersede KernelTests-jar.405 - fix underscores from Cuis
>
> =============== Diff against KernelTests-nice.404 ===============
>
> Item was added:
> + ----- Method: ProcessTest>>testTerminateInEnsure (in category 'tests') -----
> + testTerminateInEnsure
> + "As shown in
> + Martin McClure's 'Threads, Critical Sections, and Termination' (Smalltalks 2019 conference)
> + https://youtu.be/AvM5YrjK9AE
> + at 23:17
> + self new testTerminateInEnsure
> + "
> + | process count random delay |
> + random := Random new.
> + 10 timesRepeat: [
> + process := [
> + count := 0.
> + [] ensure: [
> + 10 timesRepeat: [
> + count := count + 1.
> + 1000000 timesRepeat: [12 factorial]].
> + count := count + 1]
> + ] forkAt: Processor activeProcess priority - 1.
> + delay := (random next * 100) asInteger + 10. "avoid 0-ms delay"
> + (Delay forMilliseconds: delay) wait.
> + self assert: process isTerminated not.
> + process terminate.
> + process priority: Processor activeProcess priority + 1.
> + self
> + assert: process isTerminated;
> + assert: count equals: 11 ]!
>
>
More information about the Squeak-dev
mailing list
|