History

fix(cloud): align reader query contract

Vincent Koc committed 4 months ago

Commit 9dfd28e1 parent 9ec9c2f2 files · +25 −7Browse files

Unified · Split

2 files
  1. internal/cli/app_test.go +24 −6
  2. internal/cli/cloud_commands.go +1 −1
internal/cli/app_test.go+24−6
@@ -694,7 +694,7 @@ func TestRemoteCloudModeDoesNotCreateLocalDB(t *testing.T) { · 693 unmodified lines
694694 t.Setenv("HOME", dir)
695695 t.Setenv("CRAWL_REMOTE_TOKEN", "test-token")
696696
697− var sawQuery bool
697+ var queryArgSets [][]string
698698 server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
699699 if got := r.Header.Get("authorization"); got != "Bearer test-token" {
700700 http.Error(w, "missing bearer", http.StatusUnauthorized)
@@ -723,7 +723,12 @@ func TestRemoteCloudModeDoesNotCreateLocalDB(t *testing.T) { · 22 unmodified lines
723723 http.Error(w, "unexpected query", http.StatusBadRequest)
724724 return
725725 }
726− sawQuery = true
726+ argNames := make([]string, 0, len(req.Args))
727+ for name := range req.Args {
728+ argNames = append(argNames, name)
729+ }
730+ sort.Strings(argNames)
731+ queryArgSets = append(queryArgSets, argNames)
727732 _ = json.NewEncoder(w).Encode(crawlremote.QueryResult{
728733 Values: []map[string]any{{
729734 "thread_id": 10,
@@ -790,8 +795,10 @@ func TestRemoteCloudModeDoesNotCreateLocalDB(t *testing.T) { · 60 unmodified lines
790795 if err := searchApp.Run(ctx, []string{"--config", configPath, "--json", "search", "openclaw/openclaw", "--query", "remote"}); err != nil {
791796 t.Fatalf("remote search: %v", err)
792797 }
793− if !sawQuery || !strings.Contains(searchOut.String(), `"remote search"`) {
794− t.Fatalf("remote search did not use worker query: saw=%v out=%s", sawQuery, searchOut.String())
798+ if len(queryArgSets) != 1 ||
799+ !slices.Equal(queryArgSets[0], []string{"limit", "mode", "owner", "query", "repo"}) ||
800+ !strings.Contains(searchOut.String(), `"remote search"`) {
801+ t.Fatalf("remote search query args=%v out=%s", queryArgSets, searchOut.String())
795802 }
796803 ghSearchApp := New()
797804 var ghSearchOut bytes.Buffer
@@ -802,6 +809,10 @@ func TestRemoteCloudModeDoesNotCreateLocalDB(t *testing.T) { · 4 unmodified lines
802809 if !strings.Contains(ghSearchOut.String(), `"number": 42`) || !strings.Contains(ghSearchOut.String(), `"url": "https://github.com/openclaw/openclaw/issues/42"`) {
803810 t.Fatalf("remote gh search output = %s", ghSearchOut.String())
804811 }
812+ if len(queryArgSets) != 2 ||
813+ !slices.Equal(queryArgSets[1], []string{"kind", "limit", "owner", "query", "repo", "state"}) {
814+ t.Fatalf("remote gh search query args=%v", queryArgSets)
815+ }
805816 doctorApp := New()
806817 var doctorOut bytes.Buffer
807818 doctorApp.Stdout = &doctorOut
@@ -829,8 +840,15 @@ func TestRemoteCloudModeDoesNotCreateLocalDB(t *testing.T) { · 21 unmodified lines
829840 func testSnapshotPublishContract() crawlremote.Contract {
830841 contract := crawlremote.BaseContract()
831842 contract.Apps = []crawlremote.AppSpec{{
832− App: "gitcrawl",
833− Queries: gitcrawlCloudReaderQuerySpecs(),
843+ App: "gitcrawl",
844+ Queries: []crawlremote.QuerySpec{
845+ {Name: "gitcrawl.threads.search", Args: []string{"owner", "repo", "query", "kind", "state", "mode", "limit"}},
846+ {Name: "gitcrawl.clusters.related", Args: []string{"owner", "repo", "number"}},
847+ {Name: "gitcrawl.clusters.list", Args: []string{"owner", "repo", "status", "min_size"}},
848+ {Name: "gitcrawl.clusters.members", Args: []string{"owner", "repo", "cluster_id"}},
849+ {Name: "gitcrawl.pull_requests.review_context", Args: []string{"owner", "repo", "number"}},
850+ {Name: "gitcrawl.coverage", Args: []string{"dataset"}},
851+ },
834852 IngestTables: []crawlremote.IngestTableSpec{
835853 {Name: "repositories", Columns: gitcrawlRepositoryColumns},
836854 {Name: "threads", Columns: gitcrawlThreadColumns},
internal/cli/cloud_commands.go+1−1
@@ -36,7 +36,7 @@ var gitcrawlCloudCoverageColumns = []string{ · 35 unmodified lines
3636
3737 func gitcrawlCloudReaderQuerySpecs() []crawlremote.QuerySpec {
3838 return []crawlremote.QuerySpec{
39− {Name: "gitcrawl.threads.search", Args: []string{"owner", "repo", "query", "kind", "state"}},
39+ {Name: "gitcrawl.threads.search", Args: []string{"owner", "repo", "query", "kind", "state", "mode", "limit"}},
4040 {Name: "gitcrawl.clusters.related", Args: []string{"owner", "repo", "number"}},
4141 {Name: "gitcrawl.clusters.list", Args: []string{"owner", "repo", "status", "min_size"}},
4242 {Name: "gitcrawl.clusters.members", Args: []string{"owner", "repo", "cluster_id"}},