(t *testing.T)
| 45 | if !*perfRun { |
| 46 | t.Skip("set -perf-run to execute the perf harness") |
| 47 | } |
| 48 | |
| 49 | runID := *perfRunID |
| 50 | if runID == "" { |
| 51 | runID = time.Now().UTC().Format("20060102T150405Z") |
| 52 | } |
| 53 | nightlyMode := strings.HasPrefix(runID, "nightly-") |
| 54 | |
| 55 | catalog, err := core.LoadCatalog(*perfCatalog) |
| 56 | if err != nil { |
| 57 | t.Fatalf("LoadCatalog(%s): %v", *perfCatalog, err) |
| 58 | } |
| 59 | |
| 60 | runtimeContract, err := datasets.ResolveRuntimeContract(defaultManifestPath(*perfCatalog)) |
| 61 | if err != nil { |
| 62 | t.Fatalf("resolve dataset runtime contract: %v", err) |
| 63 | } |
| 64 | if nightlyMode && !runtimeContract.Frozen { |
| 65 | t.Fatalf("nightly run requires %s", datasets.DatasetVersionEnv) |
| 66 | } |
| 67 | if nightlyMode || runtimeContract.Frozen { |
| 68 | if err := core.ValidateReadOnlyCatalog(catalog); err != nil { |
| 69 | t.Fatalf("read-only catalog validation failed: %v", err) |
| 70 | } |
| 71 | } |
| 72 | |
| 73 | outputDir := filepath.Join(*perfOutputBase, runID) |
| 74 | sink, err := core.NewArtifactSink(outputDir) |
| 75 | if err != nil { |
| 76 | t.Fatalf("NewArtifactSink(%s): %v", outputDir, err) |
| 77 | } |
| 78 | |
| 79 | pgwireDSN := *perfPGWireDSN |
| 80 | var cpLogs bytes.Buffer |
| 81 | if pgwireDSN == "" { |
| 82 | h, err := startLocalDuckgres(t, *perfUsername, *perfPassword, &cpLogs) |
| 83 | if err != nil { |
| 84 | t.Fatalf("start local duckgres: %v", err) |
| 85 | } |
| 86 | t.Cleanup(func() { h.cleanup() }) |
| 87 | pgwireDSN = h.pgwireDSN |
| 88 | } |
| 89 | pgwireDSN, err = pgwireDSNForHarness(pgwireDSN, *perfPassword) |
| 90 | if err != nil { |
| 91 | t.Fatalf("resolve pgwire dsn: %v", err) |
| 92 | } |
| 93 | |
| 94 | pg, err := pgdriver.NewFromDSN(pgwireDSN) |
| 95 | if err != nil { |
| 96 | t.Fatalf("NewFromDSN(%s): %v", pgwireDSN, err) |
| 97 | } |
| 98 | t.Cleanup(func() { _ = pg.Close() }) |
| 99 | |
| 100 | runner := core.NewQueryRunner(core.RunnerConfig{ |
| 101 | RunID: runID, |
| 102 | Catalog: catalog, |
| 103 | DatasetVersion: runtimeContract.DatasetVersion, |
| 104 | Drivers: map[core.Protocol]core.ProtocolDriver{ |
nothing calls this directly
no test coverage detected