Example #1
0
			Expect(err).NotTo(HaveOccurred())

			node, err := fakeStore.Get("syslog_drain_binder/leader")
			Expect(err).NotTo(HaveOccurred())
			Expect(node.Value).To(BeEquivalentTo("name"))
			Expect(node.TTL).To(Equal(uint64(1)))
		})

		It("sets the IsLeader flag to true", func() {
			candidate.RunForElection()
			Expect(candidate.IsLeader()).To(BeTrue())
		})

		It("re-attempts on an interval if key already exists", func() {
			err := fakeStore.Create(storeadapter.StoreNode{
				Key:   "syslog_drain_binder/leader",
				Value: []byte("some-other-instance"),
			})
			Expect(err).NotTo(HaveOccurred())

			go candidate.RunForElection()

			Eventually(func() int { return len(testingSink.Records()) }, 3).Should(BeNumerically(">=", 2))
			for _, record := range testingSink.Records() {
				Expect(record.Message).To(Equal("Elector: 'name' lost election for cluster leader."))
			}
		})

		It("returns an error if any other error occurs while setting key", func() {
			testError := errors.New("test error")
			fakeStore.CreateErrInjector = fakestoreadapter.NewFakeStoreAdapterErrorInjector("syslog_drain_binder", testError)
Example #2
0
		fakeStoreAdapter          *fakestoreadapter.FakeStoreAdapter
	)

	BeforeEach(func() {
		originalEtcdQueryInterval = main.EtcdQueryInterval

		fakeStoreAdapter = fakestoreadapter.New()

		main.EtcdQueryInterval = 1 * time.Millisecond
	})

	AfterEach(func() {
		main.EtcdQueryInterval = originalEtcdQueryInterval
	})

	It("gets loggregator addresses (with port) from the store", func() {
		stopChan := make(chan struct{})
		defer close(stopChan)

		node := storeadapter.StoreNode{
			Key:   "healthstatus/loggregator/z1/loggregator/0",
			Value: []byte("1.2.3.4"),
		}
		fakeStoreAdapter.Create(node)

		provider := main.MakeProvider(fakeStoreAdapter, "healthstatus/loggregator", 3456, loggertesthelper.Logger())

		Eventually(provider.ServerAddresses).Should(ConsistOf("1.2.3.4:3456"))
	})
})