[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
+}