Example #1
0
File: dump.go Project: Zhann/hm9000
func Walk(store storeadapter.StoreAdapter, dirKey string, callback func(storeadapter.StoreNode)) {
	nodes, err := store.List(dirKey)
	if err != nil {
		return
	}

	for _, node := range nodes {
		if node.Key == "/_etcd" {
			continue
		}
		if node.Dir {
			Walk(store, node.Key, callback)
		} else {
			callback(node)
		}
	}
}
Example #2
0
	AfterEach(func() {
		etcdAdapter.Disconnect()
	})

	Describe("Saving desired state ", func() {
		BeforeEach(func() {
			err := store.SaveDesiredState([]models.DesiredAppState{
				app1.DesiredState(0),
				app2.DesiredState(0),
			})
			Ω(err).ShouldNot(HaveOccured())
		})

		It("can stores the passed in desired state", func() {
			nodes, err := etcdAdapter.List("/desired")
			Ω(err).ShouldNot(HaveOccured())
			Ω(nodes).Should(HaveLen(2))
			Ω(nodes).Should(ContainElement(storeadapter.StoreNode{
				Key:   "/desired/" + app1.AppGuid + "-" + app1.AppVersion,
				Value: app1.DesiredState(0).ToJson(),
				TTL:   conf.DesiredStateTTL - 1,
			}))
			Ω(nodes).Should(ContainElement(storeadapter.StoreNode{
				Key:   "/desired/" + app2.AppGuid + "-" + app2.AppVersion,
				Value: app2.DesiredState(0).ToJson(),
				TTL:   conf.DesiredStateTTL - 1,
			}))
		})
	})
Example #3
0
	AfterEach(func() {
		etcdAdapter.Disconnect()
	})

	Describe("Saving actual state ", func() {
		BeforeEach(func() {
			err := store.SaveActualState([]models.InstanceHeartbeat{
				heartbeat1,
				heartbeat2,
			})
			Ω(err).ShouldNot(HaveOccured())
		})

		It("can stores the passed in actual state", func() {
			nodes, err := etcdAdapter.List("/actual")
			Ω(err).ShouldNot(HaveOccured())
			Ω(nodes).Should(HaveLen(2))
			Ω(nodes).Should(ContainElement(storeadapter.StoreNode{
				Key:   "/actual/" + heartbeat1.InstanceGuid,
				Value: heartbeat1.ToJson(),
				TTL:   conf.HeartbeatTTL - 1,
			}))
			Ω(nodes).Should(ContainElement(storeadapter.StoreNode{
				Key:   "/actual/" + heartbeat2.InstanceGuid,
				Value: heartbeat2.ToJson(),
				TTL:   conf.HeartbeatTTL - 1,
			}))
		})
	})
Example #4
0
							data[i] = storeadapter.StoreNode{
								Key:   "/actual/" + instanceHeartbeat.InstanceGuid,
								Value: instanceHeartbeat.ToJson(),
								TTL:   0,
							}
						}

						writeTime := b.Time("writing to the store", func() {
							err := storeAdapter.Set(data)
							Ω(err).ShouldNot(HaveOccured())
						}, StorePerformanceReport{StoreType: storeType, NumStoreNodes: nodes, NumApps: numApps, Subject: "write performance"})

						Ω(writeTime.Seconds()).Should(BeNumerically("<=", 30))

						readTime := b.Time("reading from the store", func() {
							values, err := storeAdapter.List("/actual")
							Ω(err).ShouldNot(HaveOccured())
							Ω(len(values)).Should(Equal(numApps), "Didn't find the correct number of entries in the store")
						}, StorePerformanceReport{StoreType: storeType, NumStoreNodes: nodes, NumApps: numApps, Subject: "read performance"})

						Ω(readTime.Seconds()).Should(BeNumerically("<=", 3))

						usage, err := storeRunner.DiskUsage()
						Ω(err).ShouldNot(HaveOccured())
						b.RecordValue("disk usage in MB", float64(usage)/1024.0/1024.0, StorePerformanceReport{StoreType: storeType, NumStoreNodes: nodes, NumApps: numApps, Subject: "disk usage"})
					}, 5)
				}
			})
		}
	}
})