test(plugins): speed up integration tests (~45% improvement) (#5137)
* test(plugins): speed up integration tests with shared wazero cache Reduce plugin test suite runtime from ~22s to ~12s by: - Creating a shared wazero compilation cache directory in TestPlugins() and setting conf.Server.CacheFolder globally so all test Manager instances reuse compiled WASM binaries from disk cache - Moving 6 createTestManager* calls from inside It blocks to BeforeAll blocks in scrobbler_adapter_test.go and manager_call_test.go - Replacing time.Sleep(2s) in KVStore TTL test with Eventually polling - Reducing WebSocket callback sleeps from 100ms to 10ms Signed-off-by: Deluan <deluan@navidrome.org> * test(plugins): enhance websocket tests by storing server messages for verification Signed-off-by: Deluan <deluan@navidrome.org> --------- Signed-off-by: Deluan <deluan@navidrome.org>
This commit is contained in:
@@ -677,7 +677,6 @@ var _ = Describe("KVStoreService Integration", Ordered, func() {
|
||||
conf.Server.Plugins.Enabled = true
|
||||
conf.Server.Plugins.Folder = tmpDir
|
||||
conf.Server.Plugins.AutoReload = false
|
||||
conf.Server.CacheFolder = filepath.Join(tmpDir, "cache")
|
||||
conf.Server.DataFolder = tmpDir
|
||||
|
||||
// Setup mock DataStore with pre-enabled plugin
|
||||
@@ -924,16 +923,15 @@ var _ = Describe("KVStoreService Integration", Ordered, func() {
|
||||
Expect(output.Exists).To(BeTrue())
|
||||
Expect(output.Value).To(Equal([]byte("temporary")))
|
||||
|
||||
// Wait for expiration
|
||||
time.Sleep(2 * time.Second)
|
||||
|
||||
// Should no longer exist
|
||||
output, err = callTestKVStore(ctx, testKVStoreInput{
|
||||
Operation: "get",
|
||||
Key: "ttl_key",
|
||||
})
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(output.Exists).To(BeFalse())
|
||||
// Poll until the key expires (1s TTL)
|
||||
Eventually(func(g Gomega) {
|
||||
output, err := callTestKVStore(ctx, testKVStoreInput{
|
||||
Operation: "get",
|
||||
Key: "ttl_key",
|
||||
})
|
||||
g.Expect(err).ToNot(HaveOccurred())
|
||||
g.Expect(output.Exists).To(BeFalse())
|
||||
}).WithTimeout(3 * time.Second).WithPolling(200 * time.Millisecond).Should(Succeed())
|
||||
})
|
||||
|
||||
It("should delete keys by prefix", func() {
|
||||
|
||||
Reference in New Issue
Block a user