BoshProtocol: "1", VM: boshsettings.VM{Name: "vm-abc-def"}, Ntp: boshntp.NTPInfo{ Offset: "0.34958", Timestamp: "12 Oct 17:37:58", }, } expectedSpec.Deployment = "fake-deployment" state, err := action.Run() Expect(err).ToNot(HaveOccurred()) Expect(state.AgentID).To(Equal(expectedSpec.AgentID)) Expect(state.JobState).To(Equal(expectedSpec.JobState)) Expect(state.Deployment).To(Equal(expectedSpec.Deployment)) boshassert.LacksJSONKey(GinkgoT(), state, "vitals") Expect(state).To(Equal(expectedSpec)) }) It("returns state in full format", func() { settings.AgentID = "my-agent-id" settings.VM.Name = "vm-abc-def" jobSupervisor.StatusStatus = "running" specService.Spec = boshas.V1ApplySpec{ Deployment: "fake-deployment", } expectedVitals := boshvitals.Vitals{
func init() { Describe("GetState", func() { It("get state should be synchronous", func() { settings := &fakesettings.FakeSettingsService{} _, _, _, action := buildGetStateAction(settings) Expect(action.IsAsynchronous()).To(BeFalse()) }) It("is not persistent", func() { settings := &fakesettings.FakeSettingsService{} _, _, _, action := buildGetStateAction(settings) Expect(action.IsPersistent()).To(BeFalse()) }) Describe("Run", func() { It("returns state", func() { settings := &fakesettings.FakeSettingsService{} settings.AgentID = "my-agent-id" settings.VM.Name = "vm-abc-def" specService, jobSupervisor, _, action := buildGetStateAction(settings) jobSupervisor.StatusStatus = "running" specService.Spec = boshas.V1ApplySpec{ Deployment: "fake-deployment", } expectedSpec := GetStateV1ApplySpec{ AgentID: "my-agent-id", JobState: "running", BoshProtocol: "1", VM: boshsettings.VM{Name: "vm-abc-def"}, Ntp: boshntp.NTPInfo{ Offset: "0.34958", Timestamp: "12 Oct 17:37:58", }, } expectedSpec.Deployment = "fake-deployment" state, err := action.Run() Expect(err).ToNot(HaveOccurred()) Expect(state.AgentID).To(Equal(expectedSpec.AgentID)) Expect(state.JobState).To(Equal(expectedSpec.JobState)) Expect(state.Deployment).To(Equal(expectedSpec.Deployment)) boshassert.LacksJSONKey(GinkgoT(), state, "vitals") Expect(state).To(Equal(expectedSpec)) }) It("returns state in full format", func() { settings := &fakesettings.FakeSettingsService{} settings.AgentID = "my-agent-id" settings.VM.Name = "vm-abc-def" specService, jobSupervisor, fakeVitals, action := buildGetStateAction(settings) jobSupervisor.StatusStatus = "running" specService.Spec = boshas.V1ApplySpec{ Deployment: "fake-deployment", } expectedVitals := boshvitals.Vitals{ Load: []string{"foo", "bar", "baz"}, } fakeVitals.GetVitals = expectedVitals expectedVM := map[string]interface{}{"name": "vm-abc-def"} state, err := action.Run("full") Expect(err).ToNot(HaveOccurred()) boshassert.MatchesJSONString(GinkgoT(), state.AgentID, `"my-agent-id"`) boshassert.MatchesJSONString(GinkgoT(), state.JobState, `"running"`) boshassert.MatchesJSONString(GinkgoT(), state.Deployment, `"fake-deployment"`) Expect(*state.Vitals).To(Equal(expectedVitals)) boshassert.MatchesJSONMap(GinkgoT(), state.VM, expectedVM) }) Context("when current cannot be retrieved", func() { It("without current spec", func() { settings := &fakesettings.FakeSettingsService{} specService, _, _, action := buildGetStateAction(settings) specService.GetErr = errors.New("fake-spec-get-error") _, err := action.Run() Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("fake-spec-get-error")) }) }) Context("when vitals cannot be retrieved", func() { It("returns error", func() { settings := &fakesettings.FakeSettingsService{} _, _, fakeVitals, action := buildGetStateAction(settings) fakeVitals.GetErr = errors.New("fake-vitals-get-error") _, err := action.Run("full") Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("fake-vitals-get-error")) }) }) }) }) }
func init() { Describe("Testing with Ginkgo", func() { It("vitals construction", func() { _, service := buildVitalsService() vitals, err := service.Get() expectedVitals := map[string]interface{}{ "cpu": map[string]string{ "sys": "10.0", "user": "******", "wait": "1.0", }, "disk": map[string]interface{}{ "system": map[string]string{ "percent": "50", "inode_percent": "10", }, "ephemeral": map[string]string{ "percent": "75", "inode_percent": "20", }, "persistent": map[string]string{ "percent": "100", "inode_percent": "75", }, }, "load": []string{"0.20", "4.55", "1.12"}, "mem": map[string]string{ "kb": "700", "percent": "70", }, "swap": map[string]string{ "kb": "600", "percent": "60", }, } Expect(err).ToNot(HaveOccurred()) boshassert.MatchesJSONMap(GinkgoT(), vitals, expectedVitals) }) It("getting vitals when missing disks", func() { statsCollector, service := buildVitalsService() statsCollector.DiskStats = map[string]boshstats.DiskStats{ "/": boshstats.DiskStats{ DiskUsage: boshstats.Usage{Used: 100, Total: 200}, InodeUsage: boshstats.Usage{Used: 50, Total: 500}, }, } vitals, err := service.Get() Expect(err).ToNot(HaveOccurred()) boshassert.LacksJSONKey(GinkgoT(), vitals.Disk, "ephemeral") boshassert.LacksJSONKey(GinkgoT(), vitals.Disk, "persistent") }) It("get getting vitals on system disk error", func() { statsCollector, service := buildVitalsService() statsCollector.DiskStats = map[string]boshstats.DiskStats{} _, err := service.Get() Expect(err).To(HaveOccurred()) }) }) }