diff --git a/sd/etcdv3/integration_test.go b/sd/etcdv3/integration_test.go index 5fea42ee6..53731b2d9 100644 --- a/sd/etcdv3/integration_test.go +++ b/sd/etcdv3/integration_test.go @@ -36,14 +36,6 @@ func runIntegration(settings integrationSettings, client Client, service Service registrar.Register() t.Log("Registered") - // Deregister our instance. (so we test registrar only scenario) - registrar.Deregister() - t.Log("Deregistered") - - // Re-Register our instance. - registrar.Register() - t.Log("Registered") - // Retrieve entries from etcd manually. entries, err = client.GetEntries(settings.key) if err != nil { @@ -172,6 +164,50 @@ func TestIntegrationTTL(t *testing.T) { runIntegration(settings, client, service, t) } +func TestIntegrationRegistrarOnly(t *testing.T) { + settings := testIntegrationSettings(t) + client, err := NewClient(context.Background(), []string{settings.addr}, ClientOptions{ + DialTimeout: 2 * time.Second, + DialKeepAlive: 2 * time.Second, + }) + if err != nil { + t.Fatalf("NewClient(%q): %v", settings.addr, err) + } + + service := Service{ + Key: settings.key, + Value: settings.value, + TTL: NewTTLOption(time.Second*3, time.Second*10), + } + defer client.Deregister(service) + + // Verify test data is initially empty. + entries, err := client.GetEntries(settings.key) + if err != nil { + t.Fatalf("GetEntries(%q): expected no error, got one: %v", settings.key, err) + } + if len(entries) > 0 { + t.Fatalf("GetEntries(%q): expected no instance entries, got %d", settings.key, len(entries)) + } + t.Logf("GetEntries(%q): %v (OK)", settings.key, entries) + + // Instantiate a new Registrar, passing in test data. + registrar := NewRegistrar( + client, + service, + log.With(log.NewLogfmtLogger(os.Stderr), "component", "registrar"), + ) + + // Register our instance. + registrar.Register() + t.Log("Registered") + + // Deregister our instance. (so we test registrar only scenario) + registrar.Deregister() + t.Log("Deregistered") + +} + func within(d time.Duration, f func() bool) bool { deadline := time.Now().Add(d) for time.Now().Before(deadline) {