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  }