MCPcopy
hub / github.com/benbjohnson/litestream / TestServer_HandleList

Function TestServer_HandleList

server_test.go:63–218  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

61}
62
63func TestServer_HandleList(t *testing.T) {
64 t.Run("EmptyStore", func(t *testing.T) {
65 store := litestream.NewStore(nil, litestream.CompactionLevels{{Level: 0}})
66 store.CompactionMonitorEnabled = false
67 require.NoError(t, store.Open(t.Context()))
68 defer store.Close(t.Context())
69
70 server := litestream.NewServer(store)
71 server.SocketPath = testSocketPath(t)
72 require.NoError(t, server.Start())
73 defer server.Close()
74
75 client := newSocketClient(t, server.SocketPath)
76 resp, err := client.Get("http://localhost/list")
77 require.NoError(t, err)
78 defer resp.Body.Close()
79
80 require.Equal(t, http.StatusOK, resp.StatusCode)
81
82 var result litestream.ListResponse
83 require.NoError(t, json.NewDecoder(resp.Body).Decode(&result))
84 require.Empty(t, result.Databases)
85 })
86
87 t.Run("WithDatabases", func(t *testing.T) {
88 db1, sqldb1 := testingutil.MustOpenDBs(t)
89 defer testingutil.MustCloseDBs(t, db1, sqldb1)
90
91 db2, sqldb2 := testingutil.MustOpenDBs(t)
92 defer testingutil.MustCloseDBs(t, db2, sqldb2)
93
94 store := litestream.NewStore([]*litestream.DB{db1, db2}, litestream.CompactionLevels{{Level: 0}})
95 store.CompactionMonitorEnabled = false
96 require.NoError(t, store.Open(t.Context()))
97 defer store.Close(t.Context())
98
99 server := litestream.NewServer(store)
100 server.SocketPath = testSocketPath(t)
101 require.NoError(t, server.Start())
102 defer server.Close()
103
104 client := newSocketClient(t, server.SocketPath)
105 resp, err := client.Get("http://localhost/list")
106 require.NoError(t, err)
107 defer resp.Body.Close()
108
109 require.Equal(t, http.StatusOK, resp.StatusCode)
110
111 var result litestream.ListResponse
112 require.NoError(t, json.NewDecoder(resp.Body).Decode(&result))
113 require.Len(t, result.Databases, 2)
114
115 // Verify both databases are listed (order may vary).
116 paths := make(map[string]string)
117 for _, db := range result.Databases {
118 paths[db.Path] = db.Status
119 }
120 require.Contains(t, paths, db1.Path())

Callers

nothing calls this directly

Calls 14

OpenMethod · 0.95
CloseMethod · 0.95
StartMethod · 0.95
CloseMethod · 0.95
NewStoreFunction · 0.92
NewServerFunction · 0.92
MustOpenDBsFunction · 0.92
MustCloseDBsFunction · 0.92
newSocketClientFunction · 0.85
testSocketPathFunction · 0.70
RunMethod · 0.45
CloseMethod · 0.45

Tested by

no test coverage detected