cloudprober/main.go (45 lines of code) (raw):

/* * * Copyright 2019 gRPC authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package main import ( "os" spanner "cloud.google.com/go/spanner/apiv1" ) func parseArgs() []bool { // Currently we only have spanner probers. May add new features in the future. vars := []bool{false} for _, arg := range os.Args { if arg == "--spanner" { vars[0] = true } } return vars } type spannerProber func(*spanner.Client, map[string]int64) error func executeSpannerProber(p spannerProber, client *spanner.Client, metrics map[string]int64, count *int, util *stackdriverUtil) { err := p(client, metrics) if err != nil { *count = (*count) + 1 util.reportError(err) } } func executeSpannerProbers() { metrics := make(map[string]int64) client := createClient() failureCount := 0 util := newStackdriverUtil("Spanner") defer util.closeErrClient() executeSpannerProber(sessionManagementProber, client, metrics, &failureCount, util) executeSpannerProber(executeSqlProber, client, metrics, &failureCount, util) executeSpannerProber(readProber, client, metrics, &failureCount, util) executeSpannerProber(transactionProber, client, metrics, &failureCount, util) executeSpannerProber(partitionProber, client, metrics, &failureCount, util) if failureCount == 0 { util.setSuccess() } util.addMetricsDict(metrics) util.outputMetrics() } func main() { vars := parseArgs() if vars[0] { executeSpannerProbers() } }