Skip to content

Commit c09fe12

Browse files
committed
test/extended/etcd/etcd_storage_path.go: decode CBOR data
1 parent 59d86be commit c09fe12

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

test/extended/etcd/etcd_storage_path.go

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"strings"
99
"testing"
1010

11+
"github.com/fxamacker/cbor/v2"
1112
g "github.com/onsi/ginkgo/v2"
1213
"golang.org/x/net/context"
1314

@@ -712,6 +713,10 @@ func getFromEtcd(kv etcdv3.KV, path string) (*metaObject, error) {
712713
if err := json.Unmarshal(value, metaObj); err != nil {
713714
return nil, err
714715
}
716+
case isCBOR(value):
717+
if err := cbor.Unmarshal(value, metaObj); err != nil {
718+
return nil, err
719+
}
715720
default:
716721
// TODO handle encrypted data
717722
return nil, fmt.Errorf("unknown data format at path /%s: %s", path, string(value))
@@ -720,6 +725,17 @@ func getFromEtcd(kv etcdv3.KV, path string) (*metaObject, error) {
720725
return metaObj, nil
721726
}
722727

728+
func isCBOR(data []byte) bool {
729+
if len(data) == 0 {
730+
return false
731+
}
732+
dec := cbor.NewDecoder(bytes.NewReader(data))
733+
if err := dec.Skip(); err != nil {
734+
return false
735+
}
736+
return dec.NumBytesRead() == len(data)
737+
}
738+
723739
func diffMaps(a, b interface{}) ([]string, []string) {
724740
inA := diffMapKeys(a, b, keyStringer)
725741
inB := diffMapKeys(b, a, keyStringer)

0 commit comments

Comments
 (0)