fix(wecom): resolve upstream rebase conflicts after channel refactor

Rebase onto latest upstream/main, keep ring-buffer dedupe behavior, move dedupe tests to pkg/channels/wecom, and ensure wecom/channels race tests pass.
This commit is contained in:
esubaalew 2026-03-02 18:54:11 +03:00
parent 29e9b6b4b5
commit 2e0be92776

View file

@ -1,4 +1,4 @@
package channels package wecom
import ( import (
"sync" "sync"
@ -48,11 +48,11 @@ func TestMessageDeduplicator_ConcurrentSameMessage(t *testing.T) {
} }
func TestMessageDeduplicator_CircularQueueEviction(t *testing.T) { func TestMessageDeduplicator_CircularQueueEviction(t *testing.T) {
// Create a deduplicator with a very small capacity to test eviction easily // Create a deduplicator with a very small capacity to test eviction easily.
capacity := 3 capacity := 3
d := NewMessageDeduplicator(capacity) d := NewMessageDeduplicator(capacity)
// Fill the queue // Fill the queue.
d.MarkMessageProcessed("msg-1") d.MarkMessageProcessed("msg-1")
d.MarkMessageProcessed("msg-2") d.MarkMessageProcessed("msg-2")
d.MarkMessageProcessed("msg-3") d.MarkMessageProcessed("msg-3")
@ -62,7 +62,7 @@ func TestMessageDeduplicator_CircularQueueEviction(t *testing.T) {
t.Fatalf("expected map size to be 3, got %d", len(d.msgs)) t.Fatalf("expected map size to be 3, got %d", len(d.msgs))
} }
// This should evict msg-1 and add msg-4 // This should evict msg-1 and add msg-4.
if ok := d.MarkMessageProcessed("msg-4"); !ok { if ok := d.MarkMessageProcessed("msg-4"); !ok {
t.Fatalf("msg-4 should be accepted") t.Fatalf("msg-4 should be accepted")
} }
@ -71,12 +71,12 @@ func TestMessageDeduplicator_CircularQueueEviction(t *testing.T) {
t.Fatalf("expected map size to remain at max capacity (3), got %d", len(d.msgs)) t.Fatalf("expected map size to remain at max capacity (3), got %d", len(d.msgs))
} }
// msg-1 should now be forgotten (evicted) // msg-1 should now be forgotten (evicted).
if ok := d.MarkMessageProcessed("msg-1"); !ok { if ok := d.MarkMessageProcessed("msg-1"); !ok {
t.Fatalf("msg-1 should be accepted again because it was evicted") t.Fatalf("msg-1 should be accepted again because it was evicted")
} }
// msg-2 should have been evicted when we added msg-1 back // msg-2 should have been evicted when we added msg-1 back.
if ok := d.MarkMessageProcessed("msg-2"); !ok { if ok := d.MarkMessageProcessed("msg-2"); !ok {
t.Fatalf("msg-2 should be accepted again because it was evicted") t.Fatalf("msg-2 should be accepted again because it was evicted")
} }