mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
server: rewrite keepSetting in TestMultiNodeKillOne
It avoids blocking http request.
This commit is contained in:
parent
b1426e2635
commit
434bf8ca81
@ -20,6 +20,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"net/http/httptest"
|
"net/http/httptest"
|
||||||
|
"net/url"
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
@ -339,37 +340,22 @@ func TestModeSwitch(t *testing.T) {
|
|||||||
|
|
||||||
// Sending set commands
|
// Sending set commands
|
||||||
func keepSetting(urlStr string, stop chan bool) {
|
func keepSetting(urlStr string, stop chan bool) {
|
||||||
stopSet := false
|
tc := NewTestClient()
|
||||||
i := 0
|
i := 0
|
||||||
c := etcd.NewClient([]string{urlStr})
|
value := url.Values(map[string][]string{"value": {"bar"}})
|
||||||
for {
|
for {
|
||||||
key := fmt.Sprintf("%s_%v", "foo", i)
|
resp, err := tc.PutForm(fmt.Sprintf("%s/v2/keys/foo_%v", urlStr, i), value)
|
||||||
|
if err == nil {
|
||||||
result, err := c.Set(key, "bar", 0)
|
tc.ReadBody(resp)
|
||||||
|
|
||||||
if err != nil || result.Node.Key != "/"+key || result.Node.Value != "bar" {
|
|
||||||
select {
|
|
||||||
case <-stop:
|
|
||||||
stopSet = true
|
|
||||||
|
|
||||||
default:
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
select {
|
select {
|
||||||
case <-stop:
|
case <-stop:
|
||||||
stopSet = true
|
stop <- true
|
||||||
|
return
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
|
||||||
if stopSet {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
i++
|
i++
|
||||||
}
|
}
|
||||||
stop <- true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type leadterm struct {
|
type leadterm struct {
|
||||||
|
@ -21,6 +21,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"reflect"
|
"reflect"
|
||||||
@ -981,7 +982,11 @@ type testHttpClient struct {
|
|||||||
|
|
||||||
// Creates a new HTTP client with KeepAlive disabled.
|
// Creates a new HTTP client with KeepAlive disabled.
|
||||||
func NewTestClient() *testHttpClient {
|
func NewTestClient() *testHttpClient {
|
||||||
return &testHttpClient{&http.Client{Transport: &http.Transport{DisableKeepAlives: true}}}
|
tr := &http.Transport{
|
||||||
|
Dial: (&net.Dialer{Timeout: time.Second}).Dial,
|
||||||
|
DisableKeepAlives: true,
|
||||||
|
}
|
||||||
|
return &testHttpClient{&http.Client{Transport: tr}}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reads the body from the response and closes it.
|
// Reads the body from the response and closes it.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user