コード例 #1
0
ファイル: etcd_store_adapter.go プロジェクト: idouba/gorouter
func (adapter *ETCDStoreAdapter) makeStoreNode(etcdNode *etcd.Node) *storeadapter.StoreNode {
	if etcdNode == nil {
		return nil
	}

	if etcdNode.Dir {
		node := storeadapter.StoreNode{
			Key:        etcdNode.Key,
			Dir:        true,
			Value:      []byte{},
			ChildNodes: []storeadapter.StoreNode{},
			TTL:        uint64(etcdNode.TTL),
			Index:      uint64(etcdNode.ModifiedIndex),
		}

		for _, child := range etcdNode.Nodes {
			node.ChildNodes = append(node.ChildNodes, *adapter.makeStoreNode(child))
		}

		return &node
	} else {
		return &storeadapter.StoreNode{
			Key:   etcdNode.Key,
			Value: []byte(etcdNode.Value),
			TTL:   uint64(etcdNode.TTL),
			Index: uint64(etcdNode.ModifiedIndex),
		}
	}
}
コード例 #2
0
				expected := dopplerservice.Event{
					UDPDopplers: []string{"1.2.3.4:567"},
					TLSDopplers: []string{"9.8.7.6:555"},
				}
				Expect(finder.Next()).To(Equal(expected))
			})
		})

		Context("with invalid JSON", func() {
			BeforeEach(func() {
				protocols = []string{"udp"}
				metaNode, legacyNode = etcdNodes(map[string][]string{
					"z1/doppler_z1/0": []string{"udp://1.2.3.4:567"},
				}, nil)
				metaNode.ChildNodes = append(metaNode.ChildNodes, storeadapter.StoreNode{
					Key:   path.Join(dopplerservice.META_ROOT, "z1/doppler_z1/0"),
					Value: []byte(`gobbledegook`),
				})
			})

			It("ignores the doppler", func() {
				expected := dopplerservice.Event{
					UDPDopplers: []string{"1.2.3.4:567"},
				}
				Expect(finder.Next()).To(Equal(expected))
			})
		})

		Context("with data in the meta node", func() {
			BeforeEach(func() {
				protocols = []string{"tls", "udp", "ws"}
				metaNode, legacyNode = etcdNodes(map[string][]string{