Example #1
0
			"ComponentName",
			func() error { return nil },
			20*time.Millisecond,
			35*time.Millisecond,
			fakelogger.NewFakeLogger(),
			adapter,
		)

		Eventually(func() string { return adapter.MaintainedNodeName }).Should(Equal("/hm/locks/ComponentName"))
	})

	Context("when the locker fails", func() {
		disaster := errors.New("oh no!")

		BeforeEach(func() {
			adapter.MaintainNodeError = disaster
		})

		It("returns the error", func() {
			err := Daemonize(
				"Daemon Test",
				func() error { Fail("NOPE"); return nil },
				20*time.Millisecond,
				35*time.Millisecond,
				fakelogger.NewFakeLogger(),
				adapter,
			)

			Ω(err).Should(Equal(disaster))
		})
	})
Example #2
0
					EtcdUrls:                  []string{"test:123", "test:456"},
					Zone:                      "z1",
					DropsondeIncomingMessagesPort: 1234,
				}
			})

			It("sends a heartbeat to etcd", func() {
				main.StartHeartbeats(localIp, time.Second, &conf, adapter, loggertesthelper.Logger())
				Expect(adapter.GetMaintainedNodeName()).To(Equal("/healthstatus/doppler/z1/doppler_z1/0"))

				Expect(adapter.MaintainedNodeValue).To(Equal([]byte(localIp)))
			})

			Context("when there is an error", func() {
				It("panics", func() {
					adapter.MaintainNodeError = errors.New("error")
					Expect(func() { main.StartHeartbeats(localIp, time.Second, &conf, adapter, loggertesthelper.Logger()) }).To(Panic())
				})
			})
		})

		Context("without a valid ETCD config", func() {
			It("does not send a heartbeat", func() {
				conf := config.Config{
					JobName: "doppler_z1",
					Index:   0,
					EtcdMaxConcurrentRequests: 10,
				}

				localIp, _ := localip.LocalIP()
				main.StartHeartbeats(localIp, time.Second, &conf, adapter, loggertesthelper.Logger())
Example #3
0
	var adapter *fakestoreadapter.FakeStoreAdapter

	BeforeEach(func() {
		adapter = fakestoreadapter.New()
	})

	Context("with valid ETCD config", func() {
		var dopplerKey string

		BeforeEach(func() {
			dopplerKey = fmt.Sprintf("/doppler/meta/%s/%s/%d", conf.Zone, conf.JobName, conf.Index)
		})

		It("Panics if etcd returns error", func() {
			err := errors.New("some etcd time out error")
			adapter.MaintainNodeError = err
			Expect(func() {
				announcer.Announce(localIP, time.Second, &conf, adapter, loggertesthelper.Logger())
			}).To(Panic())
		})

		Context("when tls transport is enabled", func() {
			It("has udp and tcp value", func() {
				dopplerMeta := fmt.Sprintf(`{"version": 1, "ip": "%s", "transports":[{"protocol":"udp","port":1234},{"protocol":"tls","port":4567}]}`, localIP)

				conf.EnableTLSTransport = true
				conf.TLSListenerConfig = config.TLSListenerConfig{
					Port: 4567,
				}
				announcer.Announce(localIP, time.Second, &conf, adapter, loggertesthelper.Logger())