e2e_tests/config/config.go (101 lines of code) (raw):

// Copyright 2019 Google Inc. All Rights Reserved. // // 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 config import ( "encoding/json" "flag" "fmt" "math" "os" "regexp" "strings" "time" ) var ( agentEndpoint = flag.String("agent_endpoint", "", "API endpoint to use for the agent to use for the tests") endpoint = flag.String("endpoint", "osconfig.googleapis.com:443", "API endpoint to use for the tests") oauthDefault = flag.String("local_oauth", "", "path to service creds file") agentRepo = flag.String("agent_repo", "", "repo to pull agent from (unstable, staging, or stable, leave blank for no agent install)") bucketDefault = "osconfig-agent-end2end-tests" logPushIntervalDefault = 3 * time.Second logsPath = fmt.Sprintf("logs-%s", time.Now().Format("2006-01-02-15:04:05")) testSuiteRegex *regexp.Regexp testSuiteFilter = flag.String("test_suite_filter", "", "test suite filter") testCaseRegex *regexp.Regexp testCaseFilter = flag.String("test_case_filter", "", "test case filter") zones map[string]int testZone = flag.String("test_zone", "", "test zone") testZones = flag.String("test_zones", "{}", "test zones") projects []string testProjectIDs = flag.String("test_project_ids", "", "test project ids") // OutDir is the out directory to use. OutDir = flag.String("out_dir", "/tmp", "artifact directory") ) func init() { flag.Parse() if *testSuiteFilter != "" { var err error testSuiteRegex, err = regexp.Compile(*testSuiteFilter) if err != nil { fmt.Println("-test_suite_filter flag not valid:", err) os.Exit(1) } } if *testCaseFilter != "" { var err error testCaseRegex, err = regexp.Compile(*testCaseFilter) if err != nil { fmt.Println("-test_case_filter flag not valid:", err) os.Exit(1) } } if len(strings.TrimSpace(*testProjectIDs)) == 0 { fmt.Println("-test_project_ids must be specified") os.Exit(1) } projects = strings.Split(*testProjectIDs, ",") zones = make(map[string]int) if len(strings.TrimSpace(*testZone)) != 0 { zones[*testZone] = math.MaxInt32 } else { err := json.Unmarshal([]byte(*testZones), &zones) if err != nil { fmt.Printf("Error parsing zones `%s`\n", *testZones) os.Exit(1) } } if len(zones) == 0 { fmt.Println("Error, no zones specified") os.Exit(1) } } // Projects are the projects to use. func Projects() []string { return projects } // Zones are the zones and associated quota to use. func Zones() map[string]int { return zones } // TestSuiteFilter is the test suite filter regex. func TestSuiteFilter() *regexp.Regexp { return testSuiteRegex } // TestCaseFilter is the test case filter regex. func TestCaseFilter() *regexp.Regexp { return testCaseRegex } // AgentRepo returns the agentRepo func AgentRepo() string { return *agentRepo } // AgentSvcEndpoint returns the agentEndpoint func AgentSvcEndpoint() string { return *agentEndpoint } // SvcEndpoint returns the endpoint func SvcEndpoint() string { return *endpoint } // OauthPath returns the oauthPath file path func OauthPath() string { return *oauthDefault } // LogBucket returns the oauthPath file path func LogBucket() string { return bucketDefault } // LogsPath returns the oauthPath file path func LogsPath() string { return logsPath } // LogPushInterval returns the interval at which the serial console logs are written to GCS func LogPushInterval() time.Duration { return logPushIntervalDefault }