[VOL-5486] Fix deprecated versions
Change-Id: If0b888d6c2f33b2f415c8b03b08dc994bb3df3f4
Signed-off-by: Abhay Kumar <abhay.kumar@radisys.com>
diff --git a/vendor/go.etcd.io/gofail/runtime/runtime.go b/vendor/go.etcd.io/gofail/runtime/runtime.go
new file mode 100644
index 0000000..f6e1589
--- /dev/null
+++ b/vendor/go.etcd.io/gofail/runtime/runtime.go
@@ -0,0 +1,151 @@
+// Copyright 2016 CoreOS, Inc.
+//
+// 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 runtime
+
+import (
+ "fmt"
+ "os"
+ "strings"
+ "sync"
+)
+
+var (
+ ErrNoExist = fmt.Errorf("failpoint: failpoint does not exist")
+ ErrDisabled = fmt.Errorf("failpoint: failpoint is disabled")
+
+ failpoints map[string]*Failpoint
+ // failpointsMu protects the failpoints map, preventing concurrent
+ // accesses during commands such as Enabling and Disabling
+ failpointsMu sync.RWMutex
+
+ envTerms map[string]string
+
+ // panicMu (panic mutex) ensures that the action of panic failpoints
+ // and serving of the HTTP requests won't be executed at the same time,
+ // avoiding the possibility that the server runtime panics during processing
+ // requests
+ panicMu sync.Mutex
+)
+
+func init() {
+ failpoints = make(map[string]*Failpoint)
+ envTerms = make(map[string]string)
+ if s := os.Getenv("GOFAIL_FAILPOINTS"); len(s) > 0 {
+ fpMap, err := parseFailpoints(s)
+ if err != nil {
+ fmt.Printf("fail to parse failpoint: %v\n", err)
+ os.Exit(1)
+ }
+ envTerms = fpMap
+ }
+ if s := os.Getenv("GOFAIL_HTTP"); len(s) > 0 {
+ if err := serve(s); err != nil {
+ fmt.Println(err)
+ os.Exit(1)
+ }
+ }
+}
+
+func parseFailpoints(fps string) (map[string]string, error) {
+ // The format is <FAILPOINT>=<TERMS>[;<FAILPOINT>=<TERMS>]*
+ fpMap := map[string]string{}
+
+ for _, fp := range strings.Split(fps, ";") {
+ if len(fp) == 0 {
+ continue
+ }
+ fpTerm := strings.Split(fp, "=")
+ if len(fpTerm) != 2 {
+ err := fmt.Errorf("bad failpoint %q", fp)
+ return nil, err
+ }
+ fpMap[fpTerm[0]] = fpTerm[1]
+ }
+ return fpMap, nil
+}
+
+// Enable sets a failpoint to a given failpoint description.
+func Enable(name, inTerms string) error {
+ failpointsMu.RLock()
+ fp := failpoints[name]
+ failpointsMu.RUnlock()
+ if fp == nil {
+ return ErrNoExist
+ }
+
+ t, err := newTerms(name, inTerms)
+ if err != nil {
+ fmt.Printf("failed to enable \"%s=%s\" (%v)\n", name, inTerms, err)
+ return err
+ }
+
+ fp.SetTerm(t)
+
+ return nil
+}
+
+// Disable stops a failpoint from firing.
+func Disable(name string) error {
+ failpointsMu.RLock()
+ fp := failpoints[name]
+ failpointsMu.RUnlock()
+ if fp == nil {
+ return ErrNoExist
+ }
+
+ return fp.ClearTerm()
+}
+
+// Status gives the current setting and execution count for the failpoint
+func Status(failpath string) (string, int, error) {
+ failpointsMu.RLock()
+ fp := failpoints[failpath]
+ failpointsMu.RUnlock()
+ if fp == nil {
+ return "", 0, ErrNoExist
+ }
+
+ return fp.Status()
+}
+
+func List() []string {
+ failpointsMu.Lock()
+ defer failpointsMu.Unlock()
+ return list()
+}
+
+func list() []string {
+ ret := make([]string, 0, len(failpoints))
+ for fp := range failpoints {
+ ret = append(ret, fp)
+ }
+ return ret
+}
+
+func register(name string) *Failpoint {
+ failpointsMu.Lock()
+ if _, ok := failpoints[name]; ok {
+ failpointsMu.Unlock()
+ panic(fmt.Sprintf("failpoint name %s is already registered.", name))
+ }
+
+ fp := &Failpoint{}
+ failpoints[name] = fp
+ failpointsMu.Unlock()
+ if t, ok := envTerms[name]; ok {
+ Enable(name, t)
+ }
+ return fp
+}