예제 #1
0
		})

		redis.RespondToDo(func(commandName string, args ...interface{}) (reply interface{}, err error) {
			if commandName == "SENTINEL" {
				return []interface{}{"masterAddr", "port"}, nil
			} else {
				roleCalled = true
				return "role:master", nil
			}
		})
	})

	Describe("#ConnectAndGetMaster", func() {
		It("connects to a sentinel and returns the master connection", func() {
			sentinel = mcredis.NewSentinel(redisDialer, "master", "goodSentinel", 0)
			masterConn, err := sentinel.ConnectAndGetMaster()

			Expect(err).To(BeNil())
			Expect(dialSentinelCount).To(Equal(1))
			Expect(dialMasterCount).To(Equal(1))
			Expect(roleCalled).To(BeTrue())
			Expect(masterConn).To(Equal(redis))
		})

		It("returns an error if it cannot connect to any sentinels", func() {
			sentinel = mcredis.NewSentinel(redisDialer, "master", "badSentinel", 0)
			_, err := sentinel.ConnectAndGetMaster()

			Expect(err.Error()).To(Equal("Failed to connect to a sentinel"))
			Expect(dialSentinelCount).To(Equal(1))
		})