You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.5 KiB
104 lines
2.5 KiB
package ws |
|
|
|
// const RELAY = "wss://nos.lol" |
|
|
|
// // test if we can fetch a couple of random events |
|
// func TestSubscribeBasic(t *testing.T) { |
|
// rl := mustRelayConnect(t, RELAY) |
|
// defer rl.Close() |
|
// |
|
// sub, err := rl.Subscribe( |
|
// context.Background(), filters.New( |
|
// &filter.F{ |
|
// Kinds: &kinds.T{K: []*kind.T{kind.TextNote}}, |
|
// Limit: values.ToUintPointer(2), |
|
// }, |
|
// ), |
|
// ) |
|
// assert.NoError(t, err) |
|
// timeout := time.After(5 * time.Second) |
|
// n := 0 |
|
// for { |
|
// select { |
|
// case event := <-sub.Events: |
|
// assert.NotNil(t, event) |
|
// n++ |
|
// case <-sub.EndOfStoredEvents: |
|
// assert.Equal(t, 2, n) |
|
// sub.Unsub() |
|
// return |
|
// case <-rl.Context().Done(): |
|
// t.Fatalf("connection closed: %v", rl.Context().Err()) |
|
// case <-timeout: |
|
// t.Fatalf("timeout") |
|
// } |
|
// } |
|
// } |
|
// |
|
// // test if we can do multiple nested subscriptions |
|
// func TestNestedSubscriptions(t *testing.T) { |
|
// rl := mustRelayConnect(t, RELAY) |
|
// defer rl.Close() |
|
// |
|
// n := atomic.Uint32{} |
|
// |
|
// // fetch 2 replies to a note |
|
// sub, err := rl.Subscribe( |
|
// context.Background(), filters.New( |
|
// &filter.F{ |
|
// Kinds: kinds.New(kind.TextNote), |
|
// Tags: tags.New( |
|
// tag.New( |
|
// "e", |
|
// "0e34a74f8547e3b95d52a2543719b109fd0312aba144e2ef95cba043f42fe8c5", |
|
// ), |
|
// ), |
|
// Limit: values.ToUintPointer(3), |
|
// }, |
|
// ), |
|
// ) |
|
// assert.NoError(t, err) |
|
// |
|
// for { |
|
// select { |
|
// case ev := <-sub.Events: |
|
// // now fetch author of this |
|
// sub, err := rl.Subscribe( |
|
// context.Background(), filters.New( |
|
// &filter.F{ |
|
// Kinds: kinds.New(kind.ProfileMetadata), |
|
// Authors: tag.New(ev.PubKeyString()), |
|
// Limit: values.ToUintPointer(1), |
|
// }, |
|
// ), |
|
// ) |
|
// assert.NoError(t, err) |
|
// |
|
// for { |
|
// select { |
|
// case <-sub.Events: |
|
// // do another subscription here in "sync" mode, just so |
|
// // we're sure things aren't blocking |
|
// rl.QuerySync( |
|
// context.Background(), |
|
// &filter.F{Limit: values.ToUintPointer(1)}, |
|
// ) |
|
// n.Add(1) |
|
// if n.Load() == 3 { |
|
// // if we get here, it means the test passed |
|
// return |
|
// } |
|
// case <-sub.Context.Done(): |
|
// case <-sub.EndOfStoredEvents: |
|
// sub.Unsub() |
|
// } |
|
// } |
|
// case <-sub.EndOfStoredEvents: |
|
// sub.Unsub() |
|
// return |
|
// case <-sub.Context.Done(): |
|
// t.Fatalf("connection closed: %v", rl.Context().Err()) |
|
// return |
|
// } |
|
// } |
|
// }
|
|
|