Skip to content

Commit 3e5f674

Browse files
authored
fix(mountsync): prune nested runtime trees before traversal (#356)
* chore(mountsync): instrument full-tree traversal cost * test(mountsync): reproduce nested runtime tree traversal * fix(mountsync): prune nested runtime trees before descent * fix(mountsync): bound runtime-pruning frontier requests * fix(mount): request server-side runtime exclusion
1 parent 79685bd commit 3e5f674

3 files changed

Lines changed: 626 additions & 64 deletions

File tree

internal/mountsync/http_client_test.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,41 @@ import (
1414
"testing"
1515
)
1616

17+
func TestHTTPClientListTreeRequestsPrePaginationMountRuntimeExclusion(t *testing.T) {
18+
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
19+
if r.URL.Path != "/v1/workspaces/ws_mount/fs/tree" {
20+
t.Fatalf("unexpected path %q", r.URL.Path)
21+
}
22+
query := r.URL.Query()
23+
if got := query.Get("path"); got != "/slack/channels" {
24+
t.Fatalf("expected normalized mount path, got %q", got)
25+
}
26+
if got := query.Get("depth"); got != "3" {
27+
t.Fatalf("expected depth 3, got %q", got)
28+
}
29+
if got := query.Get("cursor"); got != "/slack/channels/C123" {
30+
t.Fatalf("expected cursor to be forwarded, got %q", got)
31+
}
32+
if got := query.Get("excludeMountRuntime"); got != "true" {
33+
t.Fatalf("expected server-side mount runtime exclusion, got %q", got)
34+
}
35+
w.Header().Set("Content-Type", "application/json")
36+
_, _ = w.Write([]byte(`{"path":"/slack/channels","entries":[],"nextCursor":null}`))
37+
}))
38+
defer server.Close()
39+
40+
client := NewHTTPClient(server.URL, "token", server.Client())
41+
if _, err := client.ListTree(
42+
context.Background(),
43+
"ws_mount",
44+
"/slack/channels/",
45+
3,
46+
"/slack/channels/C123",
47+
); err != nil {
48+
t.Fatalf("list tree failed: %v", err)
49+
}
50+
}
51+
1752
func TestHTTPClientRetriesTransientFailure(t *testing.T) {
1853
var calls int32
1954
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {

0 commit comments

Comments
 (0)