tests/search: use data from frontend JSON page
tests/search/run.sh now runs tests by comparing data fetched from the
frontend instead of directly from the database.
For golang/go#44142
Change-Id: Ic66cd2ff4867170d9f89b5f7a9f4bbc6ad64370b
Reviewed-on: https://go-review.googlesource.com/c/pkgsite/+/346529
Trust: Julie Qiu <julie@golang.org>
Run-TryBot: Julie Qiu <julie@golang.org>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
Reviewed-by: Jamal Carvalho <jamal@golang.org>
diff --git a/devtools/docker/compose.yaml b/devtools/docker/compose.yaml
index 70ea027..c41397d 100644
--- a/devtools/docker/compose.yaml
+++ b/devtools/docker/compose.yaml
@@ -42,6 +42,19 @@
volumes:
- ../../:/pkgsite
working_dir: /pkgsite
+ searchtest:
+ image: golang:1.16.7
+ depends_on:
+ - frontend
+ environment:
+ <<: *database-variables
+ <<: *go-variables
+ WAITFORIT_TIMEOUT: 300
+ entrypoint: ./third_party/wait-for-it/wait-for-it.sh frontend:8080 -- go run
+ command: "tests/search/main.go -frontend http://frontend:8080"
+ volumes:
+ - ../../:/pkgsite
+ working_dir: /pkgsite
api:
image: golang:1.16.7
depends_on:
diff --git a/tests/search/main.go b/tests/search/main.go
index f579afe..8d8a450 100755
--- a/tests/search/main.go
+++ b/tests/search/main.go
@@ -22,10 +22,14 @@
"golang.org/x/pkgsite/internal/database"
"golang.org/x/pkgsite/internal/derrors"
"golang.org/x/pkgsite/internal/experiment"
+ "golang.org/x/pkgsite/internal/frontend"
"golang.org/x/pkgsite/internal/log"
"golang.org/x/pkgsite/internal/postgres"
)
+var frontendHost = flag.String("frontend", "http://localhost:8080",
+ "Use the frontend host referred to by this URL for comparing data")
+
func main() {
flag.Parse()
@@ -36,15 +40,10 @@
}
log.SetLevel(cfg.LogLevel)
- // Wrap the postgres driver with our own wrapper, which adds OpenCensus instrumentation.
- ddb, err := database.Open("pgx", cfg.DBConnInfo(), "seeddb")
- if err != nil {
- log.Fatalf(ctx, "database.Open for host %s failed with %v", cfg.DBHost, err)
+ if err := runImportedByUpdates(ctx, cfg.DBConnInfo(), cfg.DBHost); err != nil {
+ log.Fatal(ctx, err)
}
- db := postgres.New(ddb)
- defer db.Close()
-
- if err := run(ctx, db); err != nil {
+ if err := run(*frontendHost); err != nil {
log.Fatal(ctx, err)
}
}
@@ -59,21 +58,30 @@
internal.ExperimentSymbolSearch,
}
-func run(ctx context.Context, db *postgres.DB) error {
+func runImportedByUpdates(ctx context.Context, dbConnInfo, dbHost string) error {
+ ddb, err := database.Open("pgx", dbConnInfo, "seeddb")
+ if err != nil {
+ log.Fatalf(ctx, "database.Open for host %s failed with %v", dbHost, err)
+ }
+ db := postgres.New(ddb)
+ defer db.Close()
counts, err := readImportedByCounts(importedbyFile)
if err != nil {
return err
}
- if _, err := db.UpdateSearchDocumentsImportedByCountWithCounts(ctx, counts); err != nil {
- return err
- }
+ _, err = db.UpdateSearchDocumentsImportedByCountWithCounts(ctx, counts)
+ return err
+}
+
+func run(frontendHost string) error {
tests, err := readSearchTests(testFile)
if err != nil {
return err
}
+ client := frontend.NewClient(frontendHost)
var failed bool
for _, st := range tests {
- output, err := runTest(ctx, db, st)
+ output, err := runTest(client, st)
if err != nil {
return err
}
@@ -93,16 +101,17 @@
return nil
}
-func runTest(ctx context.Context, db *postgres.DB, st *searchTest) (output []string, err error) {
+func runTest(client *frontend.Client, st *searchTest) (output []string, err error) {
defer derrors.Wrap(&err, "runTest(ctx, db, st.title: %q)", st.title)
- results, err := db.Search(ctx, st.query, postgres.SearchOptions{MaxResults: 10, SearchSymbols: true})
+ searchPage, err := client.Search(st.query, "symbol")
if err != nil {
return nil, err
}
+ gotResults := searchPage.Results
for i, want := range st.results {
- got := &postgres.SearchResult{}
- if len(results) > i {
- got = results[i]
+ got := &frontend.SearchResult{}
+ if len(gotResults) > i {
+ got = gotResults[i]
}
if want.symbol != got.SymbolName || want.pkg != got.PackagePath {
output = append(output,
diff --git a/tests/search/run.sh b/tests/search/run.sh
index 2549d72..6cc661d 100755
--- a/tests/search/run.sh
+++ b/tests/search/run.sh
@@ -16,7 +16,7 @@
export GO_DISCOVERY_DATABASE_NAME=discovery_symbol_test
export GO_DISCOVERY_CONFIG_DYNAMIC=tests/search/config.yaml
export GO_DISCOVERY_SEED_DB_FILE=tests/search/seed.txt
- dockercompose build && dockercompose run seeddb && ./devtools/go.sh run tests/search/main.go
+ dockercompose build && dockercompose run seeddb && dockercompose run searchtest
local status=$?
if [ $status -eq 0 ]