a1 = app.NewApp() a2 = app.NewApp() analyzer = New(etcdStoreAdapter) }) insertDesiredIntoStore := func(desired models.DesiredAppState) { key := "/desired/" + desired.StoreKey() value := desired.ToJson() node := storeadapter.StoreNode{ Key: key, Value: value, } etcdStoreAdapter.Set([]storeadapter.StoreNode{node}) } insertActualIntoStore := func(heartbeat models.InstanceHeartbeat) { key := "/actual/" + heartbeat.StoreKey() value := heartbeat.ToJson() node := storeadapter.StoreNode{ Key: key, Value: value, } etcdStoreAdapter.Set([]storeadapter.StoreNode{node}) } Context("When /desired and /actual are missing", func() { It("Should not send any start or stop messages", func() {
for _, recordSize := range recordSizes { recordSize := recordSize Measure(fmt.Sprintf("Read/Write Performance With record size: %dbytes (will generate %d records)", recordSize, numRecords), func(b Benchmarker) { data := make([]storeadapter.StoreNode, numRecords) for i := 0; i < numRecords; i++ { data[i] = storeadapter.StoreNode{ Key: fmt.Sprintf("/record/%d", i), Value: randomBytes(recordSize), TTL: 0, } } b.Time("writing to the store", func() { err := storeAdapter.Set(data) Ω(err).ShouldNot(HaveOccured()) }, StorePerformanceReport{ Subject: "write", StoreType: storeType, NumStoreNodes: nodes, RecordSize: recordSize, NumRecords: numRecords, Concurrency: concurrency, }) b.Time("reading from the store", func() { node, err := storeAdapter.ListRecursively("/record") Ω(err).ShouldNot(HaveOccured()) Ω(len(node.ChildNodes)).Should(Equal(numRecords), "Didn't find the correct number of entries in the store") }, StorePerformanceReport{
. "github.com/onsi/gomega" ) var _ = Describe("Walk", func() { var etcdStoreAdapter storeadapter.StoreAdapter BeforeEach(func() { conf, _ := config.DefaultConfig() etcdStoreAdapter = storeadapter.NewETCDStoreAdapter(etcdRunner.NodeURLS(), conf.StoreMaxConcurrentRequests) err := etcdStoreAdapter.Connect() Ω(err).ShouldNot(HaveOccured()) etcdStoreAdapter.Set([]storeadapter.StoreNode{ storeadapter.StoreNode{Key: "/desired-fresh", Value: []byte("123"), TTL: 0}, storeadapter.StoreNode{Key: "/actual-fresh", Value: []byte("456"), TTL: 0}, storeadapter.StoreNode{Key: "/desired/guid1", Value: []byte("guid1"), TTL: 0}, storeadapter.StoreNode{Key: "/desired/guid2", Value: []byte("guid2"), TTL: 0}, storeadapter.StoreNode{Key: "/menu/oj", Value: []byte("sweet"), TTL: 0}, storeadapter.StoreNode{Key: "/menu/breakfast/pancakes", Value: []byte("tasty"), TTL: 0}, storeadapter.StoreNode{Key: "/menu/breakfast/waffles", Value: []byte("delish"), TTL: 0}, }) }) It("can recurse through keys in the store", func() { visited := make(map[string]string) Walk(etcdStoreAdapter, "/", func(node storeadapter.StoreNode) { visited[node.Key] = string(node.Value) }) Ω(visited).Should(Equal(map[string]string{ "/desired-fresh": "123", "/actual-fresh": "456",