manifest, err = manifest.SetConsulJobInstanceCount(3) Expect(err).NotTo(HaveOccurred()) yaml, err := manifest.ToYAML() Expect(err).NotTo(HaveOccurred()) _, err = boshClient.Deploy(yaml) Expect(err).NotTo(HaveOccurred()) Eventually(func() ([]bosh.VM, error) { return helpers.DeploymentVMs(boshClient, manifest.Name) }, "1m", "10s").Should(ConsistOf(helpers.GetVMsFromManifest(manifest))) }) By("checking if value was persisted", func() { actualVal, err := kv.Get(testKey) Expect(err).NotTo(HaveOccurred()) Expect(actualVal).To(Equal(testValue)) }) By("setting a persistent value to check if the cluster is up", func() { err := kv.Set(testKey, testValue) Expect(err).NotTo(HaveOccurred()) }) }) }) Describe("scaling from 3 nodes to 5", func() { BeforeEach(func() { guid, err := helpers.NewGUID() Expect(err).NotTo(HaveOccurred())
Expect(err).NotTo(HaveOccurred()) }) }) Context("when a consul node is killed", func() { It("is still able to function on healthy vms", func() { By("setting and getting a value", func() { guid, err := helpers.NewGUID() Expect(err).NotTo(HaveOccurred()) testKey := "consul-key-" + guid testValue := "consul-value-" + guid err = kv.Set(testKey, testValue) Expect(err).NotTo(HaveOccurred()) value, err := kv.Get(testKey) Expect(err).NotTo(HaveOccurred()) Expect(value).To(Equal(testValue)) }) By("killing indices", func() { for i := 0; i < 5; i++ { err := boshClient.SetVMResurrection(consulManifest.Name, "consul", i, false) Expect(err).NotTo(HaveOccurred()) } leader, err := jobIndexOfLeader(kv, boshClient, consulManifest.Name) Expect(err).ToNot(HaveOccurred()) rand.Seed(time.Now().Unix()) startingIndex := rand.Intn(3)