Skip to content

Commit aa32239

Browse files
committed
Using option.WithEndpoint to connect to bigquery-emulator
1 parent decd290 commit aa32239

File tree

3 files changed

+35
-15
lines changed

3 files changed

+35
-15
lines changed

database/bigquery/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* [Examples](./examples)
55

66
### Usage
7-
`bigquery://https://www.googleapis.com/bigquery/v2:443?x-migrations-table=schema_migrations&x-statement-timeout=0&credentials_filename=./myproject-XXXXXXXXXXXXX-XXXXXXXXXXXX.json&project_id=myproject-XXXXXXXXXXXXX&dataset_id=mydataset`
7+
`bigquery://https://bigquery.googleapis.com/bigquery/v2/?x-migrations-table=schema_migrations&x-statement-timeout=0&credentials_filename=./myproject-XXXXXXXXXXXXX-XXXXXXXXXXXX.json&project_id=myproject-XXXXXXXXXXXXX&dataset_id=mydataset`
88

99

1010
### System variables reference

database/bigquery/bigquery.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"google.golang.org/api/option"
1515
"io"
1616
nurl "net/url"
17+
"os"
1718
"strconv"
1819
"strings"
1920
"time"
@@ -148,12 +149,14 @@ func (b *BigQuery) Open(url string) (database.Driver, error) {
148149
}
149150
}
150151

151-
//By default, try to get from environment variable GOOGLE_APPLICATION_CREDENTIALS
152152
if q.Has("credentials_filename") {
153153
opts = append(opts, option.WithCredentialsFile(q.Get("credentials_filename")))
154+
} else if os.Getenv("GOOGLE_APPLICATION_CREDENTIALS") != "" {
155+
opts = append(opts, option.WithCredentialsFile(os.Getenv("GOOGLE_APPLICATION_CREDENTIALS")))
156+
} else {
157+
opts = append(opts, option.WithoutAuthentication())
154158
}
155159

156-
// By default, try to get from credentials file
157160
projectID := bigquery.DetectProjectID
158161
if q.Has("project_id") {
159162
projectID = q.Get("project_id")
@@ -175,6 +178,8 @@ func (b *BigQuery) Open(url string) (database.Driver, error) {
175178
config.TimeZone = q.Get("time_zone")
176179
}
177180

181+
opts = append(opts, option.WithEndpoint(fmt.Sprintf("%s%s", purl.Host, purl.Path)))
182+
178183
client, err := bigquery.NewClient(ctx, projectID, opts...)
179184
if err != nil {
180185
return nil, err

database/bigquery/bigquery_test.go

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ import (
77
)
88

99
const (
10-
connectionUrl = "bigquery://https://www.googleapis.com/bigquery/v2:443?x-migrations-table=schema_migrations&x-statement-timeout=0&credentials_filename=./tmp/myproject-XXXXXXXXXXXXX-XXXXXXXXXXXX.json&dataset_id=mydataset"
10+
//connectionUrl = "bigquery://https://bigquery.googleapis.com/bigquery/v2/?x-migrations-table=schema_migrations&x-statement-timeout=0&credentials_filename=./tmp/myproject-XXXXXXXXXXXXX-XXXXXXXXXXXX.json&dataset_id=mydataset"
11+
connectionUrl = "bigquery://http://0.0.0.0:9050/?x-migrations-table=schema_migrations&project_id=myproject&dataset_id=mydataset"
1112
)
1213

1314
func openConnection() (database.Driver, error) {
@@ -22,65 +23,75 @@ func openConnection() (database.Driver, error) {
2223
}
2324

2425
func TestOpen(t *testing.T) {
25-
_, err := openConnection()
26+
driver, err := openConnection()
2627
if err != nil {
2728
t.Error(err)
2829
return
2930
}
31+
32+
defer driver.Close()
3033
}
3134

32-
func TestVersion(t *testing.T) {
35+
func TestClose(t *testing.T) {
3336
driver, err := openConnection()
3437
if err != nil {
3538
t.Error(err)
3639
return
3740
}
3841

39-
version, dirty, err := driver.Version()
42+
defer driver.Close()
43+
44+
err = driver.Close()
4045
if err != nil {
4146
t.Error(err)
4247
return
4348
}
44-
45-
t.Log(version, dirty)
4649
}
4750

48-
func TestDrop(t *testing.T) {
51+
func TestVersion(t *testing.T) {
4952
driver, err := openConnection()
5053
if err != nil {
5154
t.Error(err)
5255
return
5356
}
5457

55-
err = driver.Drop()
58+
defer driver.Close()
59+
60+
version, dirty, err := driver.Version()
5661
if err != nil {
5762
t.Error(err)
5863
return
5964
}
65+
66+
t.Log(version, dirty)
6067
}
6168

62-
func TestClose(t *testing.T) {
69+
func TestSetVersion(t *testing.T) {
6370
driver, err := openConnection()
6471
if err != nil {
6572
t.Error(err)
6673
return
6774
}
6875

69-
err = driver.Close()
76+
defer driver.Close()
77+
78+
err = driver.SetVersion(-1, false)
7079
if err != nil {
7180
t.Error(err)
7281
return
7382
}
7483
}
7584

76-
func TestSetVersion(t *testing.T) {
85+
func TestDrop(t *testing.T) {
7786
driver, err := openConnection()
7887
if err != nil {
7988
t.Error(err)
8089
return
8190
}
8291

83-
err = driver.SetVersion(-1, false)
92+
defer driver.Close()
93+
94+
err = driver.Drop()
8495
if err != nil {
8596
t.Error(err)
8697
return
@@ -94,6 +105,8 @@ func TestRun(t *testing.T) {
94105
return
95106
}
96107

108+
defer driver.Close()
109+
97110
err = driver.Run(strings.NewReader(`
98111
CREATE TABLE IF NOT EXISTS users (
99112
first_name STRING,
@@ -112,6 +125,8 @@ func TestRunWithError(t *testing.T) {
112125
return
113126
}
114127

128+
defer driver.Close()
129+
115130
err = driver.Run(strings.NewReader(`
116131
CREATE TABLE IF NOT EXISTS users (
117132
first_name STRINGa,

0 commit comments

Comments
 (0)