Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

3tableを連続で取得する #1

Merged
merged 20 commits into from
Mar 8, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
71a09f5
3のTableに対してPKでのReadRowを実行する処理を入れてみた
sinmetal Feb 23, 2019
024627c
TraceSpansBufferMaxBytesを設定
sinmetal Feb 23, 2019
a3fb8d4
TraceSpansBufferMaxBytesが足らない?みたいなので、更に増量してみた
sinmetal Feb 23, 2019
c036c07
TraceSpansBufferMaxBytesを128MiBにした
sinmetal Feb 23, 2019
a188de0
動いてるのかを見るために、SpannerへのINSERTも行うようにしてみた
sinmetal Feb 23, 2019
6fa50f7
deadline 2secで設定した
sinmetal Mar 1, 2019
292e5db
libを最新にアップデート
sinmetal Mar 1, 2019
17dd107
ずっと動かし続けるので、AlwaysSampleをやめた
sinmetal Mar 1, 2019
2eccc46
回り続けるとログの量がすごいので、Sleep 100msを入れた
sinmetal Mar 1, 2019
d561b6a
Stackdriver ProfilerとTraceを一旦外した
sinmetal Mar 1, 2019
f7b4a88
grpc.Dialerにログを入れた
sinmetal Mar 2, 2019
a5ec64e
Sleepに乱数が入るようにした
sinmetal Mar 2, 2019
22c73a7
Stackdriver Trace追加, 中途半端に入れてたgRPCのインターセプターを外した
sinmetal Mar 2, 2019
31858c9
span入れてなかった!
sinmetal Mar 2, 2019
9cc3214
fix snap name
sinmetal Mar 2, 2019
b7b045f
gRPCをdebug logが入ったぐすりさんのやつに差し替えた
sinmetal Mar 4, 2019
6803ac2
gRPCのログが出るかを確認するロジックを追加
sinmetal Mar 4, 2019
b2139bc
Tokenのキャッシュを入れた
sinmetal Mar 5, 2019
fbcaada
時間計測にSleep入ってた・・・!
sinmetal Mar 5, 2019
39f12e3
fix go modules
sinmetal Mar 8, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
145 changes: 145 additions & 0 deletions cache_token_source.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
package main

import (
"context"
"fmt"
"sync"
"time"

"golang.org/x/oauth2"
googleoauth2 "golang.org/x/oauth2/google"
)

// FindDefaultCredentialsWithProactiveCache is a wrapper of golang.org/x/oauth2/google.FindDefaultCredentials.
// It runs goroutine which periodically fetches new token and caches it in background.
// The goroutine keeps running until the ctx ends.
//
// FindDefaultCredentials searches for "Application Default Credentials".
//
// It looks for credentials in the following places,
// preferring the first location found:
//
// 1. A JSON file whose path is specified by the
// GOOGLE_APPLICATION_CREDENTIALS environment variable.
// 2. A JSON file in a location known to the gcloud command-line tool.
// On Windows, this is %APPDATA%/gcloud/application_default_credentials.json.
// On other systems, $HOME/.config/gcloud/application_default_credentials.json.
// 3. On Google App Engine standard first generation runtimes (<= Go 1.9) it uses
// the appengine.AccessToken function.
// 4. On Google Compute Engine, Google App Engine standard second generation runtimes
// (>= Go 1.11), and Google App Engine flexible environment, it fetches
// credentials from the metadata server.
// (In this final case any provided scopes are ignored.)
func FindDefaultCredentialsWithProactiveCache(ctx context.Context, scopes ...string) (*googleoauth2.Credentials, error) {
ts := &proactiveCacheTokenSource{
new: &forceNewTokenSource{ctx: ctx, scopes: scopes},
}

go ts.run(ctx)

return &googleoauth2.Credentials{
TokenSource: ts,
}, nil
}

// DefaultTokenSourceWithProactiveCache returns the token source for
// "Application Default Credentials".
// It is a shortcut for FindDefaultCredentials(ctx, scope).TokenSource.
func DefaultTokenSourceWithProactiveCache(ctx context.Context, scope ...string) (oauth2.TokenSource, error) {
creds, err := FindDefaultCredentialsWithProactiveCache(ctx, scope...)
if err != nil {
return nil, err
}
return creds.TokenSource, nil
}

type forceNewTokenSource struct {
ctx context.Context
scopes []string
}

func (s *forceNewTokenSource) Token() (*oauth2.Token, error) {
fmt.Println("ForceNewTokenSource.Token()")
creds, err := googleoauth2.FindDefaultCredentials(s.ctx, s.scopes...)
if err != nil {
fmt.Printf("ForceNewTokenSource.Token() err %+v\n", err)
return nil, err
}
return creds.TokenSource.Token()
}

type proactiveCacheTokenSource struct {
new oauth2.TokenSource

mu sync.RWMutex
t *oauth2.Token
}

func (s *proactiveCacheTokenSource) Token() (*oauth2.Token, error) {
s.mu.RLock()
tk := s.t
s.mu.RUnlock()

if tk.Valid() {
fmt.Println("Token().ReturnCacheToken")
return tk, nil
}

s.mu.Lock()
defer s.mu.Unlock()

fmt.Println("Token().NewToken")
t, err := s.new.Token()
if err != nil {
fmt.Printf("Token().NewToken err %+v\n", err)
return nil, err
}
s.t = t
fmt.Println("Token().Finish")
return t, nil
}

func (s *proactiveCacheTokenSource) run(ctx context.Context) {
maxWait := 10 * time.Second
initialWait := 100 * time.Millisecond

ticker := time.NewTicker(38 * time.Minute)
defer ticker.Stop()

retrych := make(chan struct{}, 1)
retrych <- struct{}{}
wait := initialWait

for {
select {
case <-ctx.Done():
fmt.Println("proactiveCacheTokenSource.run() ctx.Done()")
return
case <-ticker.C:
case <-retrych:
}

fmt.Println("proactiveCacheTokenSource.newToken()")
token, err := s.new.Token()
if err != nil {
fmt.Printf("proactiveCacheTokenSource.newToken().error %+v\n", err)
time.Sleep(wait)
wait := wait * 2
fmt.Printf("proactiveCacheTokenSource.newToken().error.wait %+v\n", wait)
if wait >= maxWait {
wait = maxWait
}

select {
case retrych <- struct{}{}:
default: // non blocking
}
continue
}

s.mu.Lock()
s.t = token
s.mu.Unlock()
wait = initialWait
}
}
8 changes: 8 additions & 0 deletions cloudbuild-playground.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
steps:
- name: 'golang:1.11.1-stretch'
entrypoint: 'go'
args: ['build', '.']
env: ['GO111MODULE=on']
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '--tag=gcr.io/$PROJECT_ID/sinmetal/srunner/$BRANCH_NAME:$COMMIT_SHA', '.']
images: ['gcr.io/$PROJECT_ID/sinmetal/srunner/$BRANCH_NAME:$COMMIT_SHA']
7 changes: 5 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
module github.com/sinmetal/srunner

require (
cloud.google.com/go v0.35.1
cloud.google.com/go v0.36.0
contrib.go.opencensus.io/exporter/stackdriver v0.9.1
github.com/census-instrumentation/opencensus-proto v0.1.0 // indirect
github.com/google/uuid v1.1.0
github.com/google/uuid v1.1.1
github.com/kelseyhightower/envconfig v1.3.0
github.com/pkg/errors v0.8.1
github.com/sinmetal/gcpmetadata v0.0.0-20190204122414-bb2afc737814
go.opencensus.io v0.19.0
golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890
google.golang.org/api v0.1.0
google.golang.org/grpc v1.17.0
)

replace google.golang.org/grpc => github.com/kazegusuri/grpc-go v0.0.0-20190303174943-5a9bd920d6da
22 changes: 17 additions & 5 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@ cloud.google.com/go v0.23.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.31.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.35.1 h1:LMe/Btq0Eijsc97JyBwMc0KMXOe0orqAMdg7/EkywN8=
cloud.google.com/go v0.35.1/go.mod h1:wfjPZNvXCBYESy3fIynybskMP48KVPrjSPCnXiK7Prg=
cloud.google.com/go v0.36.0 h1:+aCSj7tOo2LODWVEuZDZeGCckdt6MlSF+X/rB3wUiS8=
cloud.google.com/go v0.36.0/go.mod h1:RUoy9p/M4ge0HzT8L+SDZ8jg+Q6fth0CiBuhFJpSV40=
contrib.go.opencensus.io/exporter/stackdriver v0.9.1 h1:W6APgQ9we4BH8U8bnq/FvwLKo2WSMHuiMkkS/Slkg30=
contrib.go.opencensus.io/exporter/stackdriver v0.9.1/go.mod h1:hNe5qQofPbg6bLQY5wHCvQ7o+2E5P8PkegEuQ+MyRw0=
dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU=
Expand All @@ -24,13 +25,17 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk
github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/envoyproxy/go-control-plane v0.6.7/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g=
github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
github.com/go-ini/ini v1.25.4 h1:Mujh4R/dH6YL8bxuISne3xX2+qcQ9p0IxKAP6ExWoUo=
github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8=
github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
Expand All @@ -44,10 +49,9 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a
github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57 h1:eqyIo2HjKhKe/mJzTG8n4VqvLXIOEG+SLdDqX7xGtkY=
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
github.com/google/uuid v1.1.0 h1:Jf4mxPC/ziBnoPIdpQdPJ9OeiomAUHLvxmPRSPH9m4s=
github.com/google/uuid v1.1.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gax-go v2.0.0+incompatible h1:j0GKcs05QVmm7yesiZq2+9cxHkNK9YM6zKx4D2qucQU=
github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY=
github.com/googleapis/gax-go/v2 v2.0.3 h1:siORttZ36U2R/WjiJuDz8znElWBiAlO9rVt+mqJt0Cc=
Expand All @@ -59,13 +63,16 @@ github.com/grpc-ecosystem/grpc-gateway v1.6.2/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpg
github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU=
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8 h1:12VvqtR6Aowv3l/EQUlocDHW2Cp4G9WJVH7uyH8QFJE=
github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
github.com/kazegusuri/grpc-go v0.0.0-20190303174943-5a9bd920d6da h1:KdknhhtZbM/rVwrROqexhMttRVrcavCsWxGFVcHcCNs=
github.com/kazegusuri/grpc-go v0.0.0-20190303174943-5a9bd920d6da/go.mod h1:1QQVG+wb5LlpVfCKTGvjLm6zpif+nyCwDModdwBuIMo=
github.com/kelseyhightower/envconfig v1.3.0 h1:IvRS4f2VcIQy6j4ORGIf9145T/AsUB+oY8LyvN8BXNM=
github.com/kelseyhightower/envconfig v1.3.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4=
github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo=
Expand Down Expand Up @@ -120,6 +127,7 @@ go.opencensus.io v0.19.0/go.mod h1:AYeH0+ZxYyghG8diqaaIq/9P3VgCCt5GF2ldCY4dkFg=
go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE=
golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw=
golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20181217174547-8f45f776aaf1/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
Expand All @@ -144,6 +152,7 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20181218192612-074acd46bca6 h1:MXtOG7w2ND9qNCUZSDBGll/SpVIq7ftozR9I8/JGBHY=
golang.org/x/sys v0.0.0-20181218192612-074acd46bca6/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2 h1:z99zHgr7hKfrUcX/KsoJk5FJfjTceCKIp96+biqP4To=
Expand All @@ -153,6 +162,7 @@ golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxb
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181030000716-a0a13e073c7b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20181219222714-6e267b5cc78e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
google.golang.org/api v0.0.0-20180603000442-8e296ef26005/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
Expand All @@ -169,8 +179,9 @@ google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoA
google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg=
google.golang.org/genproto v0.0.0-20181219182458-5a97ab628bfb/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg=
google.golang.org/genproto v0.0.0-20190122154452-ba6ebe99b011 h1:qqbFavhspmcup7Z0WTJ/U0U2ICmudcpXHTSiCFNLPbY=
google.golang.org/genproto v0.0.0-20190122154452-ba6ebe99b011/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg=
google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922 h1:mBVYJnbrXLA/ZCBTCe7PtEgAUP+1bg92qTaFoPHdz+8=
google.golang.org/genproto v0.0.0-20190201180003-4b09977fb922/go.mod h1:L3J43x8/uS+qIUoksaLKe6OS3nUKxOKuIFz1sl2/jx4=
google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio=
Expand All @@ -184,6 +195,7 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o=
honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20180920025451-e3ad64cb4ed3/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck=
sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0=
43 changes: 30 additions & 13 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,27 @@ import (
"fmt"
"log"

"cloud.google.com/go/profiler"
"cloud.google.com/go/spanner"
"contrib.go.opencensus.io/exporter/stackdriver"
"github.com/kelseyhightower/envconfig"
"github.com/sinmetal/gcpmetadata"
"go.opencensus.io/trace"
"google.golang.org/api/option"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
"google.golang.org/grpc/grpclog"
)

const Service = "srunner"

type EnvConfig struct {
SpannerDatabase string `required:"true"`
Goroutine int `default:"10"`
Goroutine int `default:"3"`
}

func main() {
grpclog.Printf("Start GRPCLOG")

var env EnvConfig
if err := envconfig.Process("srunner", &env); err != nil {
log.Fatal(err.Error())
Expand All @@ -31,11 +37,6 @@ func main() {
panic(err)
}

// Profiler initialization, best done as early as possible.
if err := profiler.Start(profiler.Config{ProjectID: project, Service: Service, ServiceVersion: "0.0.1"}); err != nil {
panic(err)
}

{
exporter, err := stackdriver.NewExporter(stackdriver.Options{
ProjectID: project,
Expand All @@ -44,22 +45,38 @@ func main() {
panic(err)
}
trace.RegisterExporter(exporter)
trace.ApplyConfig(trace.Config{DefaultSampler: trace.AlwaysSample()})
}

ctx := context.Background()
sc, err := createClient(ctx, env.SpannerDatabase)

// Need to specify scope for the specific service.
tokenSource, err := DefaultTokenSourceWithProactiveCache(ctx, spanner.Scope)
if err != nil {
panic(err)
}

sc, err := createClient(ctx, env.SpannerDatabase,
option.WithGRPCDialOption(
grpc.WithTransportCredentials(&wrapTransportCredentials{
TransportCredentials: credentials.NewClientTLSFromCert(nil, ""),
}),
),
option.WithTokenSource(tokenSource),
)
if err != nil {
panic(err)
}
ts := NewTweetStore(sc)

endCh := make(chan error, 10)

goInsertTweet(ts, env.Goroutine, endCh)
goInsertTweetBenchmark(ts, env.Goroutine, endCh)
goUpdateTweet(ts, env.Goroutine, endCh)
goGetExitsTweet(ts, env.Goroutine, endCh)
goGetNotFoundTweet(ts, env.Goroutine, endCh)
//goInsertTweet(ts, env.Goroutine, endCh)
//goInsertTweetBenchmark(ts, env.Goroutine, endCh)
//goUpdateTweet(ts, env.Goroutine, endCh)
//goGetExitsTweet(ts, env.Goroutine, endCh)
//goGetNotFoundTweet(ts, env.Goroutine, endCh)
goGetTweet3Tables(ts, env.Goroutine, endCh)

err = <-endCh
fmt.Printf("BOMB %+v", err)
Expand Down
Loading