// Copyright 2018 The etcd 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 tester import ( "fmt" "math/rand" "net" "net/url" "strings" ) func isValidURL(u string) bool { _, err := url.Parse(u) return err == nil } func getPort(addr string) (port string, err error) { urlAddr, err := url.Parse(addr) if err != nil { return "", err } _, port, err = net.SplitHostPort(urlAddr.Host) if err != nil { return "", err } return port, nil } func getSameValue(vals map[string]int64) bool { var rv int64 for _, v := range vals { if rv == 0 { rv = v } if rv != v { return false } } return true } func max(n1, n2 int64) int64 { if n1 > n2 { return n1 } return n2 } func errsToError(errs []error) error { if len(errs) == 0 { return nil } stringArr := make([]string, len(errs)) for i, err := range errs { stringArr[i] = err.Error() } return fmt.Errorf(strings.Join(stringArr, ", ")) } func randBytes(size int) []byte { data := make([]byte, size) for i := 0; i < size; i++ { data[i] = byte(int('a') + rand.Intn(26)) } return data }