OSDN Git Service

delete miner
[bytom/vapor.git] / vendor / github.com / go-kit / kit / sd / consul / integration_test.go
1 // +build integration
2
3 package consul
4
5 import (
6         "io"
7         "os"
8         "testing"
9         "time"
10
11         "github.com/go-kit/kit/endpoint"
12         "github.com/go-kit/kit/log"
13         "github.com/go-kit/kit/sd"
14         stdconsul "github.com/hashicorp/consul/api"
15 )
16
17 func TestIntegration(t *testing.T) {
18         consulAddr := os.Getenv("CONSUL_ADDR")
19         if consulAddr == "" {
20                 t.Fatal("CONSUL_ADDR is not set")
21         }
22         stdClient, err := stdconsul.NewClient(&stdconsul.Config{
23                 Address: consulAddr,
24         })
25         if err != nil {
26                 t.Fatal(err)
27         }
28         client := NewClient(stdClient)
29         logger := log.NewLogfmtLogger(os.Stderr)
30
31         // Produce a fake service registration.
32         r := &stdconsul.AgentServiceRegistration{
33                 ID:                "my-service-ID",
34                 Name:              "my-service-name",
35                 Tags:              []string{"alpha", "beta"},
36                 Port:              12345,
37                 Address:           "my-address",
38                 EnableTagOverride: false,
39                 // skipping check(s)
40         }
41
42         // Build an Instancer on r.Name + r.Tags.
43         factory := func(instance string) (endpoint.Endpoint, io.Closer, error) {
44                 t.Logf("factory invoked for %q", instance)
45                 return endpoint.Nop, nil, nil
46         }
47         instancer := NewInstancer(
48                 client,
49                 log.With(logger, "component", "instancer"),
50                 r.Name,
51                 r.Tags,
52                 true,
53         )
54         endpointer := sd.NewEndpointer(
55                 instancer,
56                 factory,
57                 log.With(logger, "component", "endpointer"),
58         )
59
60         time.Sleep(time.Second)
61
62         // Before we publish, we should have no endpoints.
63         endpoints, err := endpointer.Endpoints()
64         if err != nil {
65                 t.Error(err)
66         }
67         if want, have := 0, len(endpoints); want != have {
68                 t.Errorf("want %d, have %d", want, have)
69         }
70
71         // Build a registrar for r.
72         registrar := NewRegistrar(client, r, log.With(logger, "component", "registrar"))
73         registrar.Register()
74         defer registrar.Deregister()
75
76         time.Sleep(time.Second)
77
78         // Now we should have one active endpoints.
79         endpoints, err = endpointer.Endpoints()
80         if err != nil {
81                 t.Error(err)
82         }
83         if want, have := 1, len(endpoints); want != have {
84                 t.Errorf("want %d, have %d", want, have)
85         }
86 }