MCPcopy Index your code
hub / github.com/coder/coder / TestPubsub

Function TestPubsub

coderd/database/pubsub/pubsub_linux_test.go:28–111  ·  view source on GitHub ↗

nolint:tparallel,paralleltest

(t *testing.T)

Source from the content-addressed store, hash-verified

26
27// nolint:tparallel,paralleltest
28func TestPubsub(t *testing.T) {
29 t.Parallel()
30
31 if testing.Short() {
32 t.SkipNow()
33 return
34 }
35
36 t.Run("Postgres", func(t *testing.T) {
37 ctx, cancelFunc := context.WithCancel(context.Background())
38 defer cancelFunc()
39 logger := testutil.Logger(t)
40
41 connectionURL, err := dbtestutil.Open(t)
42 require.NoError(t, err)
43 db, err := sql.Open("postgres", connectionURL)
44 require.NoError(t, err)
45 defer db.Close()
46 pubsub, err := pubsub.New(ctx, logger, db, connectionURL)
47 require.NoError(t, err)
48 defer pubsub.Close()
49 event := "test"
50 data := "testing"
51 messageChannel := make(chan []byte)
52 unsub, err := pubsub.Subscribe(event, func(ctx context.Context, message []byte) {
53 messageChannel <- message
54 })
55 require.NoError(t, err)
56 defer unsub()
57 go func() {
58 err = pubsub.Publish(event, []byte(data))
59 assert.NoError(t, err)
60 }()
61 message := <-messageChannel
62 assert.Equal(t, string(message), data)
63 })
64
65 t.Run("PostgresCloseCancel", func(t *testing.T) {
66 ctx, cancelFunc := context.WithCancel(context.Background())
67 defer cancelFunc()
68 logger := testutil.Logger(t)
69 connectionURL, err := dbtestutil.Open(t)
70 require.NoError(t, err)
71 db, err := sql.Open("postgres", connectionURL)
72 require.NoError(t, err)
73 defer db.Close()
74 pubsub, err := pubsub.New(ctx, logger, db, connectionURL)
75 require.NoError(t, err)
76 defer pubsub.Close()
77 cancelFunc()
78 })
79
80 t.Run("NotClosedOnCancelContext", func(t *testing.T) {
81 ctx, cancel := context.WithCancel(context.Background())
82 defer cancel()
83 logger := testutil.Logger(t)
84 connectionURL, err := dbtestutil.Open(t)
85 require.NoError(t, err)

Callers

nothing calls this directly

Calls 10

LoggerFunction · 0.92
OpenFunction · 0.92
NewFunction · 0.92
SkipNowMethod · 0.80
RunMethod · 0.65
CloseMethod · 0.65
SubscribeMethod · 0.65
PublishMethod · 0.65
OpenMethod · 0.45
EqualMethod · 0.45

Tested by

no test coverage detected