mirror of
https://github.com/nbd-wtf/go-nostr.git
synced 2025-03-18 22:03:02 +01:00
53 lines
831 B
Go
53 lines
831 B
Go
|
package nostr
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"testing"
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
func TestEOSEMadness(t *testing.T) {
|
||
|
rl := mustRelayConnect(RELAY)
|
||
|
defer rl.Close()
|
||
|
|
||
|
sub, err := rl.Subscribe(context.Background(), Filters{
|
||
|
{Kinds: []int{KindTextNote}, Limit: 2},
|
||
|
})
|
||
|
if err != nil {
|
||
|
t.Errorf("subscription failed: %v", err)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
timeout := time.After(3 * time.Second)
|
||
|
n := 0
|
||
|
e := 0
|
||
|
|
||
|
for {
|
||
|
select {
|
||
|
case event := <-sub.Events:
|
||
|
if event == nil {
|
||
|
t.Fatalf("event is nil: %v", event)
|
||
|
}
|
||
|
n++
|
||
|
case <-sub.EndOfStoredEvents:
|
||
|
e++
|
||
|
if e > 1 {
|
||
|
t.Fatalf("eose infinite loop")
|
||
|
}
|
||
|
continue
|
||
|
case <-rl.Context().Done():
|
||
|
t.Fatalf("connection closed: %v", rl.Context().Err())
|
||
|
case <-timeout:
|
||
|
goto end
|
||
|
}
|
||
|
}
|
||
|
|
||
|
end:
|
||
|
if e != 1 {
|
||
|
t.Fatalf("didn't get an eose")
|
||
|
}
|
||
|
if n < 2 {
|
||
|
t.Fatalf("didn't get events")
|
||
|
}
|
||
|
}
|