forked from sensu/sensu-go
/
testing.go
44 lines (38 loc) · 1012 Bytes
/
testing.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package etcd
import (
"fmt"
"log"
"testing"
"github.com/sensu/sensu-go/testing/testutil"
"github.com/stretchr/testify/require"
)
// NewTestEtcd creates a new Etcd for testing purposes.
func NewTestEtcd(t *testing.T) (*Etcd, func()) {
tmpDir, remove := testutil.TempDir(t)
ports := make([]int, 2)
err := testutil.RandomPorts(ports)
if err != nil {
remove()
log.Panic(err)
}
clURL := fmt.Sprintf("http://127.0.0.1:%d", ports[0])
apURL := fmt.Sprintf("http://127.0.0.1:%d", ports[1])
initCluster := fmt.Sprintf("default=%s", apURL)
cfg := NewConfig()
cfg.DataDir = tmpDir
cfg.AdvertiseClientURLs = []string{clURL}
cfg.ListenClientURLs = []string{clURL}
cfg.ListenPeerURLs = []string{apURL}
cfg.InitialCluster = initCluster
cfg.InitialClusterState = ClusterStateNew
cfg.InitialAdvertisePeerURLs = []string{apURL}
cfg.Name = "default"
e, err := NewEtcd(cfg)
require.NoError(t, err)
return e, func() {
defer remove()
defer func() {
require.NoError(t, e.Shutdown())
}()
}
}