Adam S
07/19/2024, 11:43 PMdeleteRecursively()
, even though it's a file, not a directory.
https://github.com/kotest/kotest/blob/a95078d987f5416f815f96d292a80407c9242277/kotest-property/src/jvmMain/kotlin/io/kotest/property/seed/seedio.kt#L55
So, I replaced it with f.deleteIfExists()
, but it was still causing a lot of slow down.
I then checked where clearSeed()
is being called from, and the only non-test invocation is in test()
https://github.com/kotest/kotest/blob/42af0ff23307398e2723618449feda0f5646352e/kotest-property/src/commonMain/kotlin/io/kotest/property/internal/test.kt#L52
This looks suspicious to me, because it looks like clearSeed()
is always being called, while I would expect that it should only be called if the test fails. Is my understanding correct?
In any case, even if the seed should be cleared after a successful test, it is probably not good that Kotest attempts to delete the seed file so often, even if it doesn't exist. Is there a better way of doing this?Adam S
07/19/2024, 11:49 PMdeleteRecursively()
Adam S
07/19/2024, 11:49 PMdeleteIfExists()
, which is still slower than I'd likeAdam S
07/20/2024, 2:05 AMsam
07/20/2024, 3:50 AMAdam S
07/20/2024, 7:39 AMAdam S
07/20/2024, 7:42 AMAdam S
07/20/2024, 8:30 AMforAll with 22 exhaustives should run for each cross product
is 2x faster.
4m33s vs 2m20ssam
07/20/2024, 9:29 AMAdam S
07/20/2024, 9:36 AMsam
07/20/2024, 9:36 AMAdam S
07/20/2024, 9:36 AMAdam S
07/20/2024, 9:37 AMsam
07/20/2024, 9:37 AMsam
07/20/2024, 9:37 AMAdam S
07/20/2024, 9:45 AMsam
07/20/2024, 9:45 AMsam
07/20/2024, 9:46 AMsam
07/20/2024, 9:46 AMAdam S
07/20/2024, 9:51 AMproperty(...)
is a boolean, since shouldBe
uses generics and has branchesAdam S
07/20/2024, 10:01 AMClear failed seed defiantly only needs to run once before the start of the iterations right.So, PBT needs to load the seed (if it exists) before the iterations start. Could it be a problem if PBT loads the seed, then deletes the file, and then the entire process crashes? The seed would be deleted, even though it failed.
sam
07/20/2024, 10:06 AMsam
07/20/2024, 10:06 AMAdam S
07/20/2024, 10:17 AMAdam S
07/20/2024, 10:19 AMAdam S
07/20/2024, 10:19 AMAdam S
07/20/2024, 10:20 AMsam
07/20/2024, 10:20 AMAdam S
07/20/2024, 1:14 PMI think that the slowest part is checking if the result ofI've looked into this more. I don't thinkis a boolean, sinceproperty(...)
uses generics and has branchesshouldBe
shouldBe
is slow. I guess it's just that the testFn is a suspend function, so launching it is slow?
Also, BeforePropertyContextElement
and AfterPropertyContextElement
are a bit slow. But I think they're being deprecated?sam
07/20/2024, 1:14 PMsam
07/20/2024, 1:14 PMsam
07/20/2024, 1:29 PMAdam S
07/20/2024, 1:38 PMAdam S
07/20/2024, 1:38 PMsam
07/20/2024, 1:39 PMsam
07/20/2024, 1:39 PMAdam S
07/20/2024, 1:40 PMAdam S
07/20/2024, 1:40 PMsam
07/20/2024, 1:40 PMsam
07/20/2024, 1:41 PMsam
07/20/2024, 1:41 PMsam
07/20/2024, 1:41 PMAdam S
07/20/2024, 1:42 PMsam
07/20/2024, 1:42 PMsam
07/20/2024, 1:42 PMAdam S
07/20/2024, 1:42 PM./gradlew jvmTest
?sam
07/20/2024, 1:43 PMsam
07/20/2024, 1:43 PMAdam S
07/20/2024, 1:43 PMsam
07/20/2024, 1:44 PMsam
07/20/2024, 1:44 PMAdam S
07/20/2024, 1:44 PMAdam S
07/20/2024, 1:46 PMAdam S
07/20/2024, 1:46 PMsam
07/20/2024, 1:46 PMAdam S
07/20/2024, 1:47 PMsam
07/20/2024, 1:47 PMAdam S
07/20/2024, 1:48 PM~/.gradle/gradle.properties
I set java home, which I think helps
# Try to help with Build Cache re-use by always using the same JDK
org.gradle.java.home=/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home/
sam
07/20/2024, 1:49 PMAdam S
07/20/2024, 1:51 PMsam
07/20/2024, 1:52 PMAdam S
07/20/2024, 1:52 PMAdam S
07/20/2024, 1:52 PMAdam S
07/20/2024, 1:52 PMsam
07/20/2024, 1:53 PMAdam S
07/20/2024, 1:54 PMsam
07/20/2024, 1:54 PMsam
07/20/2024, 1:54 PMAdam S
07/20/2024, 1:54 PMgradle check
, then all tasks should be instantly up-to-date!sam
07/20/2024, 1:55 PMAdam S
07/20/2024, 1:55 PMsam
07/20/2024, 1:56 PMAdam S
07/20/2024, 1:56 PMsam
07/20/2024, 1:57 PMAdam S
07/20/2024, 1:59 PMsam
07/20/2024, 1:59 PMsam
07/20/2024, 2:00 PMAdam S
07/20/2024, 2:00 PMsam
07/20/2024, 2:08 PMsam
07/20/2024, 2:08 PMsam
07/20/2024, 3:16 PMAdam S
07/20/2024, 5:17 PMAdam S
07/20/2024, 5:18 PMsam
07/20/2024, 5:18 PMsam
07/20/2024, 5:18 PMAdam S
07/20/2024, 5:19 PM~/.gradle/gradle.properties
org.gradle.workers.max=2
sam
07/20/2024, 5:19 PMsam
07/20/2024, 5:19 PMAdam S
07/20/2024, 5:20 PMAdam S
07/20/2024, 5:20 PMsam
07/20/2024, 5:21 PMAdam S
07/20/2024, 5:21 PMAdam S
07/20/2024, 5:21 PMAdam S
07/20/2024, 5:21 PMAdam S
07/20/2024, 5:22 PMsam
07/20/2024, 5:26 PMsam
07/20/2024, 5:26 PMAdam S
07/20/2024, 5:27 PMAdam S
07/20/2024, 5:28 PMAdam S
07/20/2024, 5:29 PMsam
07/20/2024, 5:29 PMAdam S
07/20/2024, 5:30 PMAdam S
07/20/2024, 5:30 PMAdam S
07/20/2024, 5:30 PMAdam S
07/20/2024, 5:31 PMsam
07/20/2024, 5:46 PMsam
07/20/2024, 5:46 PMAdam S
07/21/2024, 12:19 AMAdam S
07/21/2024, 12:19 AMAdam S
07/21/2024, 12:20 AMsam
07/21/2024, 12:21 AMAdam S
07/21/2024, 12:21 AMAdam S
07/21/2024, 12:21 AMAdam S
07/21/2024, 12:22 AMsam
07/21/2024, 12:22 AMAdam S
07/21/2024, 12:23 AMAdam S
07/21/2024, 12:24 AMsam
07/21/2024, 12:27 AMAdam S
07/21/2024, 12:30 AMsam
07/21/2024, 12:30 AMsam
07/21/2024, 12:30 AMsam
07/21/2024, 12:31 AMAdam S
07/21/2024, 12:31 AMsam
07/21/2024, 12:31 AMAdam S
07/21/2024, 12:31 AMsam
07/21/2024, 12:32 AMAdam S
07/21/2024, 12:32 AMsam
07/21/2024, 12:33 AMAdam S
07/21/2024, 12:33 AMAdam S
07/21/2024, 12:34 AMsam
07/21/2024, 12:34 AMsam
07/21/2024, 12:34 AMsam
07/21/2024, 12:34 AMAdam S
07/21/2024, 12:37 AMAdam S
07/21/2024, 12:37 AMsam
07/21/2024, 12:37 AMsam
07/21/2024, 12:37 AMAdam S
07/21/2024, 12:38 AMAdam S
07/21/2024, 12:38 AMsam
07/21/2024, 12:39 AMsam
07/21/2024, 12:41 AMsam
07/21/2024, 12:41 AMAdam S
07/21/2024, 12:51 AMAdam S
07/21/2024, 9:53 AMforAll with 22 exhaustives should run for each cross product
now runs 4 times faster than before!
4m33s vs 1m00s
https://scans.gradle.com/s/42qggo5p6kaxm/tests/slowest-tests#forall-with-22-exhaustives-should-run-for-each-cross-product-2sam
07/21/2024, 1:57 PM