github.com/google/cloudprober@v0.11.3/contrib/gcp/bigquery/bigquery_test.go (about) 1 package bigquery 2 3 import ( 4 "context" 5 "errors" 6 "testing" 7 ) 8 9 type stubRunner struct { 10 result, query string 11 err error 12 } 13 14 func (f *stubRunner) Query(ctx context.Context, query string) (string, error) { 15 f.query = query 16 return f.result, f.err 17 } 18 19 func TestProbe(t *testing.T) { 20 probeTests := []struct { 21 table, expQuery string 22 result string 23 err error 24 expMetrics string 25 }{ 26 {"", "SELECT 1", "1", nil, "bigquery_connect 1"}, 27 {"ds.table", "SELECT COUNT(*) FROM ds.table", "500", nil, "row_count 500"}, 28 {"", "SELECT 1", "", errors.New("connection error"), ""}, 29 } 30 31 for _, pt := range probeTests { 32 f := stubRunner{ 33 result: pt.result, 34 err: pt.err, 35 } 36 metrics, err := Probe(context.Background(), &f, pt.table) 37 if err != pt.err { 38 t.Errorf("Probe(table=%#v): mismatched error, got %#v want %#v", pt.table, err, pt.err) 39 } 40 if metrics != pt.expMetrics { 41 t.Errorf("Probe(table=%#v) = %#v, want %#v", pt.table, metrics, pt.expMetrics) 42 } 43 if f.query != pt.expQuery { 44 t.Errorf("Probe(table=%#v): unexpected BQL, got: %#v, want %#v", pt.table, f.query, pt.expQuery) 45 } 46 } 47 }