1
1
package util
2
2
3
3
import (
4
+ "context"
5
+ "encoding/json"
4
6
"flag"
5
- "fmt"
6
- "io/ioutil"
7
- "log"
8
- "math/rand"
9
7
"os"
10
8
goruntime "runtime"
11
9
"strings"
12
10
"testing"
13
11
14
12
"github.com/coreos/pkg/capnslog"
15
13
16
- newetcdclient "github.com/coreos/etcd/client"
17
- "github.com/coreos/go-etcd/etcd"
14
+ etcdclient "github.com/coreos/etcd/client"
18
15
19
16
"k8s.io/kubernetes/pkg/capabilities"
20
17
etcdtest "k8s.io/kubernetes/pkg/storage/etcd/testing"
@@ -46,27 +43,22 @@ func RequireEtcd(t *testing.T) *etcdtest.EtcdTestServer {
46
43
return s
47
44
}
48
45
49
- func NewEtcdClient () * etcd.Client {
50
- etcdServers := []string {GetEtcdURL ()}
51
-
52
- client := etcd .NewClient (etcdServers )
53
- if err := serveretcd .TestEtcdClient (client ); err != nil {
54
- panic (err )
55
- }
46
+ func NewEtcdClient () etcdclient.Client {
47
+ client , _ := MakeNewEtcdClient ()
56
48
return client
57
49
}
58
50
59
- func MakeNewEtcdClient () (newetcdclient .Client , error ) {
51
+ func MakeNewEtcdClient () (etcdclient .Client , error ) {
60
52
etcdServers := []string {GetEtcdURL ()}
61
53
62
- cfg := newetcdclient .Config {
54
+ cfg := etcdclient .Config {
63
55
Endpoints : etcdServers ,
64
56
}
65
- client , err := newetcdclient .New (cfg )
57
+ client , err := etcdclient .New (cfg )
66
58
if err != nil {
67
59
return nil , err
68
60
}
69
- return client , serveretcd .TestNewEtcdClient (client )
61
+ return client , serveretcd .TestEtcdClient (client )
70
62
}
71
63
72
64
func GetEtcdURL () string {
@@ -76,16 +68,6 @@ func GetEtcdURL() string {
76
68
return url
77
69
}
78
70
79
- func logEtcd () {
80
- etcd .SetLogger (log .New (os .Stderr , "go-etcd" , log .LstdFlags ))
81
- }
82
-
83
- func withEtcdKey (f func (string )) {
84
- prefix := fmt .Sprintf ("/test-%d" , rand .Int63 ())
85
- defer NewEtcdClient ().Delete (prefix , true )
86
- f (prefix )
87
- }
88
-
89
71
func DumpEtcdOnFailure (t * testing.T ) {
90
72
if ! t .Failed () {
91
73
return
@@ -99,16 +81,31 @@ func DumpEtcdOnFailure(t *testing.T) {
99
81
last = 0
100
82
}
101
83
name := f .Name ()[last :]
102
-
103
84
client := NewEtcdClient ()
104
- etcdResponse , err := client .RawGet ("/" , false , true )
85
+ keyClient := etcdclient .NewKeysAPI (client )
86
+
87
+ response , err := keyClient .Get (context .Background (), "/" , & etcdclient.GetOptions {Recursive : true , Sort : true })
105
88
if err != nil {
106
89
t .Logf ("error dumping etcd: %v" , err )
107
90
return
108
91
}
92
+ jsonResponse , err := json .Marshal (response .Node )
93
+ if err != nil {
94
+ t .Logf ("error encoding etcd dump: %v" , err )
95
+ return
96
+ }
109
97
110
- if err := ioutil .WriteFile (GetBaseDir ()+ "/etcd-dump-" + name + ".json" , etcdResponse .Body , os .FileMode (0444 )); err != nil {
111
- t .Logf ("error dumping etcd: %v" , err )
98
+ t .Logf ("dumping etcd to %q" , GetBaseDir ()+ "/etcd-dump-" + name + ".json" )
99
+ dumpFile , err := os .OpenFile (GetBaseDir ()+ "/etcd-dump-" + name + ".json" , os .O_WRONLY | os .O_CREATE , 0444 )
100
+ if err != nil {
101
+ t .Logf ("error writing etcd dump: %v" , err )
112
102
return
113
103
}
104
+ defer dumpFile .Close ()
105
+ _ , err = dumpFile .Write (jsonResponse )
106
+ if err != nil {
107
+ t .Logf ("error writing etcd dump: %v" , err )
108
+ return
109
+ }
110
+
114
111
}
0 commit comments