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

Function TestReplica

enterprise/replicasync/replicasync_test.go:29–270  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

27}
28
29func TestReplica(t *testing.T) {
30 t.Parallel()
31 t.Run("CreateOnNew", func(t *testing.T) {
32 // This ensures that a new replica is created on New.
33 t.Parallel()
34 db, pubsub := dbtestutil.NewDB(t)
35 closeChan := make(chan struct{}, 1)
36 cancel, err := pubsub.Subscribe(replicasync.PubsubEvent, func(ctx context.Context, message []byte) {
37 select {
38 case closeChan <- struct{}{}:
39 default:
40 }
41 })
42 require.NoError(t, err)
43 defer cancel()
44 ctx, cancelCtx := context.WithCancel(context.Background())
45 defer cancelCtx()
46 server, err := replicasync.New(ctx, testutil.Logger(t), db, pubsub, nil)
47 require.NoError(t, err)
48 <-closeChan
49 _ = server.Close()
50 require.NoError(t, err)
51 })
52 t.Run("ConnectsToPeerReplica", func(t *testing.T) {
53 // Ensures that the replica reports a successful status for
54 // accessing all of its peers.
55 t.Parallel()
56 dh := &derpyHandler{}
57 defer dh.requireOnlyDERPPaths(t)
58 srv := httptest.NewServer(dh)
59 defer srv.Close()
60 db, pubsub := dbtestutil.NewDB(t)
61 peer, err := db.InsertReplica(context.Background(), database.InsertReplicaParams{
62 ID: uuid.New(),
63 CreatedAt: dbtime.Now(),
64 StartedAt: dbtime.Now(),
65 UpdatedAt: dbtime.Now(),
66 Hostname: "something",
67 RelayAddress: srv.URL,
68 Primary: true,
69 })
70 require.NoError(t, err)
71 ctx, cancelCtx := context.WithCancel(context.Background())
72 defer cancelCtx()
73 server, err := replicasync.New(ctx, testutil.Logger(t), db, pubsub, &replicasync.Options{
74 RelayAddress: "http://169.254.169.254",
75 })
76 require.NoError(t, err)
77 defer server.Close()
78
79 require.Len(t, server.Regional(), 1)
80 require.Equal(t, peer.ID, server.Regional()[0].ID)
81 require.Empty(t, server.Self().Error)
82 _ = server.Close()
83 })
84 t.Run("ConnectsToPeerReplicaTLS", func(t *testing.T) {
85 // Ensures that the replica reports a successful status for
86 // accessing all of its peers.

Callers

nothing calls this directly

Calls 15

requireOnlyDERPPathsMethod · 0.95
CloseMethod · 0.95
NewDBFunction · 0.92
NewFunction · 0.92
LoggerFunction · 0.92
NowFunction · 0.92
GenerateTLSCertificateFunction · 0.92
RegionalMethod · 0.80
SelfMethod · 0.80
NotEmptyMethod · 0.80
SetCallbackMethod · 0.80
AllPrimaryMethod · 0.80

Tested by

no test coverage detected