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