Setup integration tests and CI (#11)

- Setup integration tests following pattern suggested in cosmos-sdk docs:
  https://docs.cosmos.network/v0.50/build/building-modules/testing#integration-tests
- Add tests for laconic modules query services
- Setup a CI workflow to run the integration tests

Reviewed-on: deep-stack/laconic2d#11
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
Co-committed-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
This commit is contained in:
2024-02-29 11:54:35 +00:00
committed by ashwin
parent d2505367aa
commit 0af44b5f17
26 changed files with 2326 additions and 129 deletions
+165 -16
View File
@@ -19,8 +19,10 @@ import (
auth "github.com/cosmos/cosmos-sdk/x/auth/keeper"
bank "github.com/cosmos/cosmos-sdk/x/bank/keeper"
"github.com/gibson042/canonicaljson-go"
cid "github.com/ipfs/go-cid"
"github.com/ipld/go-ipld-prime"
"github.com/ipld/go-ipld-prime/codec/dagjson"
cidlink "github.com/ipld/go-ipld-prime/linking/cid"
"github.com/ipld/go-ipld-prime/node/basicnode"
auctionkeeper "git.vdb.to/cerc-io/laconic2d/x/auction/keeper"
@@ -105,6 +107,7 @@ type Keeper struct {
NameRecords *collections.IndexedMap[string, registrytypes.NameRecord, NameRecordsIndexes]
RecordExpiryQueue collections.Map[time.Time, registrytypes.ExpiryQueue]
AuthorityExpiryQueue collections.Map[time.Time, registrytypes.ExpiryQueue]
AttributesMap collections.Map[collections.Pair[string, string], registrytypes.RecordsList]
}
// NewKeeper creates a new Keeper instance
@@ -147,6 +150,10 @@ func NewKeeper(
sb, registrytypes.AuthorityExpiryQueuePrefix, "authority_expiry_queue",
sdk.TimeKey, codec.CollValue[registrytypes.ExpiryQueue](cdc),
),
AttributesMap: collections.NewMap(
sb, registrytypes.AttributesMapPrefix, "attributes_map",
collections.PairKeyCodec(collections.StringKey, collections.StringKey), codec.CollValue[registrytypes.RecordsList](cdc),
),
}
schema, err := sb.Build()
@@ -237,7 +244,90 @@ func (k Keeper) GetRecordsByBondId(ctx sdk.Context, bondId string) ([]registryty
// RecordsFromAttributes gets a list of records whose attributes match all provided values
func (k Keeper) RecordsFromAttributes(ctx sdk.Context, attributes []*registrytypes.QueryRecordsRequest_KeyValueInput, all bool) ([]registrytypes.Record, error) {
panic("unimplemented")
resultRecordIds := []string{}
for i, attr := range attributes {
suffix, err := QueryValueToJSON(attr.Value)
if err != nil {
return nil, err
}
mapKey := collections.Join(attr.Key, string(suffix))
recordIds, err := k.getAttributeMapping(ctx, mapKey)
if err != nil {
return nil, err
}
if i == 0 {
resultRecordIds = recordIds
} else {
resultRecordIds = getIntersection(recordIds, resultRecordIds)
}
}
records := []registrytypes.Record{}
for _, id := range resultRecordIds {
record, err := k.GetRecordById(ctx, id)
if err != nil {
return nil, err
}
if record.Deleted {
continue
}
if !all && len(record.Names) == 0 {
continue
}
records = append(records, record)
}
return records, nil
}
// TODO not recursive, and only should be if we want to support querying with whole sub-objects,
// which seems unnecessary.
func QueryValueToJSON(input *registrytypes.QueryRecordsRequest_ValueInput) ([]byte, error) {
np := basicnode.Prototype.Any
nb := np.NewBuilder()
switch value := input.GetValue().(type) {
case *registrytypes.QueryRecordsRequest_ValueInput_String_:
err := nb.AssignString(value.String_)
if err != nil {
return nil, err
}
case *registrytypes.QueryRecordsRequest_ValueInput_Int:
err := nb.AssignInt(value.Int)
if err != nil {
return nil, err
}
case *registrytypes.QueryRecordsRequest_ValueInput_Float:
err := nb.AssignFloat(value.Float)
if err != nil {
return nil, err
}
case *registrytypes.QueryRecordsRequest_ValueInput_Boolean:
err := nb.AssignBool(value.Boolean)
if err != nil {
return nil, err
}
case *registrytypes.QueryRecordsRequest_ValueInput_Link:
link := cidlink.Link{Cid: cid.MustParse(value.Link)}
err := nb.AssignLink(link)
if err != nil {
return nil, err
}
case *registrytypes.QueryRecordsRequest_ValueInput_Array:
return nil, fmt.Errorf("recursive query values are not supported")
case *registrytypes.QueryRecordsRequest_ValueInput_Map:
return nil, fmt.Errorf("recursive query values are not supported")
default:
return nil, fmt.Errorf("value has unexpected type %T", value)
}
n := nb.Build()
var buf bytes.Buffer
if err := dagjson.Encode(n, &buf); err != nil {
return nil, fmt.Errorf("encoding value to JSON failed: %w", err)
}
return buf.Bytes(), nil
}
// PutRecord - saves a record to the store.
@@ -321,20 +411,14 @@ func (k Keeper) processRecord(ctx sdk.Context, record *registrytypes.ReadableRec
// TODO look up/validate record type here
if err := k.processAttributes(ctx, record.Attributes, record.Id, ""); err != nil {
if err := k.processAttributes(ctx, record.Attributes, record.Id); err != nil {
return err
}
// TODO
// expiryTimeKey := GetAttributesIndexKey(ExpiryTimeAttributeName, []byte(record.ExpiryTime))
// if err := k.SetAttributeMapping(ctx, expiryTimeKey, record.ID); err != nil {
// return err
// }
return k.insertRecordExpiryQueue(ctx, recordObj)
}
func (k Keeper) processAttributes(ctx sdk.Context, attrs registrytypes.AttributeMap, id string, prefix string) error {
func (k Keeper) processAttributes(ctx sdk.Context, attrs registrytypes.AttributeMap, id string) error {
np := basicnode.Prototype.Map
nb := np.NewBuilder()
encAttrs, err := canonicaljson.Marshal(attrs)
@@ -353,7 +437,7 @@ func (k Keeper) processAttributes(ctx sdk.Context, attrs registrytypes.Attribute
return fmt.Errorf("record attributes must be a map, not %T", n.Kind())
}
return k.processAttributeMap(ctx, n, id, prefix)
return k.processAttributeMap(ctx, n, id, "")
}
func (k Keeper) processAttributeMap(ctx sdk.Context, n ipld.Node, id string, prefix string) error {
@@ -378,17 +462,55 @@ func (k Keeper) processAttributeMap(ctx sdk.Context, n ipld.Node, id string, pre
if err := dagjson.Encode(valuenode, &buf); err != nil {
return err
}
// TODO
// value := buf.Bytes()
// indexKey := GetAttributesIndexKey(prefix+key, value)
// if err := k.SetAttributeMapping(ctx, indexKey, id); err != nil {
// return err
// }
value := buf.Bytes()
mapKey := collections.Join(prefix+key, string(value))
if err := k.setAttributeMapping(ctx, mapKey, id); err != nil {
return err
}
}
}
return nil
}
func (k Keeper) setAttributeMapping(ctx sdk.Context, key collections.Pair[string, string], recordId string) error {
var recordIds []string
has, err := k.AttributesMap.Has(ctx, key)
if err != nil {
return err
}
if has {
value, err := k.AttributesMap.Get(ctx, key)
if err != nil {
return err
}
recordIds = value.Value
}
recordIds = append(recordIds, recordId)
return k.AttributesMap.Set(ctx, key, registrytypes.RecordsList{Value: recordIds})
}
func (k Keeper) getAttributeMapping(ctx sdk.Context, key collections.Pair[string, string]) ([]string, error) {
if has, err := k.AttributesMap.Has(ctx, key); !has {
if err != nil {
return []string{}, err
}
k.Logger(ctx).Debug(fmt.Sprintf("store doesn't have key: %v", key))
return []string{}, nil
}
value, err := k.AttributesMap.Get(ctx, key)
if err != nil {
return []string{}, err
}
return value.Value, nil
}
func (k Keeper) populateRecordNames(ctx sdk.Context, record *registrytypes.Record) error {
iter, err := k.NameRecords.Indexes.Cid.MatchExact(ctx, record.Id)
if err != nil {
@@ -571,3 +693,30 @@ func (k Keeper) tryTakeRecordRent(ctx sdk.Context, record registrytypes.Record)
record.Deleted = false
return k.SaveRecord(ctx, record)
}
func getIntersection(a []string, b []string) []string {
result := []string{}
if len(a) < len(b) {
for _, str := range a {
if contains(b, str) {
result = append(result, str)
}
}
} else {
for _, str := range b {
if contains(a, str) {
result = append(result, str)
}
}
}
return result
}
func contains(arr []string, str string) bool {
for _, s := range arr {
if s == str {
return true
}
}
return false
}
+5
View File
@@ -6,6 +6,9 @@ const (
// ModuleName is the name of the registry module
ModuleName = "registry"
// StoreKey defines the primary module store key
StoreKey = ModuleName
// RecordRentModuleAccountName is the name of the module account that keeps track of record rents paid.
RecordRentModuleAccountName = "record_rent"
@@ -30,4 +33,6 @@ var (
RecordExpiryQueuePrefix = collections.NewPrefix(8)
AuthorityExpiryQueuePrefix = collections.NewPrefix(9)
AttributesMapPrefix = collections.NewPrefix(10)
)
+255 -78
View File
@@ -679,6 +679,52 @@ func (m *ExpiryQueue) GetValue() []string {
return nil
}
// List of record ids
// Value type to be used in AttributesMap
type RecordsList struct {
Value []string `protobuf:"bytes,1,rep,name=value,proto3" json:"value,omitempty"`
}
func (m *RecordsList) Reset() { *m = RecordsList{} }
func (m *RecordsList) String() string { return proto.CompactTextString(m) }
func (*RecordsList) ProtoMessage() {}
func (*RecordsList) Descriptor() ([]byte, []int) {
return fileDescriptor_d792f2373089b5b9, []int{9}
}
func (m *RecordsList) XXX_Unmarshal(b []byte) error {
return m.Unmarshal(b)
}
func (m *RecordsList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
if deterministic {
return xxx_messageInfo_RecordsList.Marshal(b, m, deterministic)
} else {
b = b[:cap(b)]
n, err := m.MarshalToSizedBuffer(b)
if err != nil {
return nil, err
}
return b[:n], nil
}
}
func (m *RecordsList) XXX_Merge(src proto.Message) {
xxx_messageInfo_RecordsList.Merge(m, src)
}
func (m *RecordsList) XXX_Size() int {
return m.Size()
}
func (m *RecordsList) XXX_DiscardUnknown() {
xxx_messageInfo_RecordsList.DiscardUnknown(m)
}
var xxx_messageInfo_RecordsList proto.InternalMessageInfo
func (m *RecordsList) GetValue() []string {
if m != nil {
return m.Value
}
return nil
}
func init() {
proto.RegisterType((*Params)(nil), "cerc.registry.v1.Params")
proto.RegisterType((*Record)(nil), "cerc.registry.v1.Record")
@@ -689,89 +735,91 @@ func init() {
proto.RegisterType((*NameRecordEntry)(nil), "cerc.registry.v1.NameRecordEntry")
proto.RegisterType((*Signature)(nil), "cerc.registry.v1.Signature")
proto.RegisterType((*ExpiryQueue)(nil), "cerc.registry.v1.ExpiryQueue")
proto.RegisterType((*RecordsList)(nil), "cerc.registry.v1.RecordsList")
}
func init() { proto.RegisterFile("cerc/registry/v1/registry.proto", fileDescriptor_d792f2373089b5b9) }
var fileDescriptor_d792f2373089b5b9 = []byte{
// 1221 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x57, 0xcb, 0x6e, 0xdb, 0x46,
0x17, 0x36, 0x6d, 0x59, 0xb6, 0x8e, 0x63, 0xff, 0xc1, 0xfc, 0x4e, 0x22, 0xbb, 0xb1, 0xe8, 0xa8,
0x28, 0xec, 0x20, 0x30, 0x09, 0xd9, 0x28, 0x82, 0x24, 0xe8, 0xc2, 0x72, 0x1d, 0xc3, 0x0d, 0xda,
0x3a, 0xe3, 0xac, 0x5a, 0x14, 0x02, 0x2f, 0x13, 0x79, 0x5a, 0x91, 0x14, 0xc8, 0xa1, 0x1a, 0x2d,
0x0b, 0x74, 0xd3, 0x9d, 0x97, 0x59, 0xf4, 0x0d, 0xba, 0xe8, 0x63, 0x34, 0xcb, 0x2c, 0xbb, 0x29,
0x5b, 0xd8, 0x40, 0x1f, 0x40, 0x4f, 0x50, 0x70, 0x66, 0x78, 0x95, 0x14, 0xb5, 0xc8, 0x8e, 0xe7,
0xf6, 0xcd, 0x37, 0xdf, 0x9c, 0xb9, 0x10, 0x54, 0x8b, 0xf8, 0x96, 0xee, 0x93, 0x2e, 0x0d, 0x98,
0x3f, 0xd4, 0x07, 0xad, 0xf4, 0x5b, 0xeb, 0xfb, 0x1e, 0xf3, 0xd0, 0xcd, 0x38, 0x41, 0x4b, 0x9d,
0x83, 0xd6, 0x66, 0xa3, 0xeb, 0x79, 0xdd, 0x1e, 0xd1, 0x79, 0xdc, 0x0c, 0x5f, 0xea, 0x76, 0xe8,
0x1b, 0x8c, 0x7a, 0xae, 0xa8, 0xd8, 0x54, 0xcb, 0x71, 0x46, 0x1d, 0x12, 0x30, 0xc3, 0xe9, 0xcb,
0x84, 0xf5, 0xae, 0xd7, 0xf5, 0xf8, 0xa7, 0x1e, 0x7f, 0x49, 0x6f, 0xc3, 0xf2, 0x02, 0xc7, 0x0b,
0x74, 0xd3, 0x08, 0x88, 0x3e, 0x68, 0x99, 0x84, 0x19, 0x2d, 0xdd, 0xf2, 0xa8, 0x84, 0x6d, 0xfe,
0xb1, 0x0a, 0xd5, 0x33, 0xc3, 0x37, 0x9c, 0x00, 0x51, 0x58, 0xf1, 0x89, 0xe5, 0xf9, 0x76, 0xc7,
0x27, 0x2e, 0xab, 0x2b, 0xdb, 0xca, 0xee, 0xca, 0xfe, 0x86, 0x26, 0x00, 0xb4, 0x18, 0x40, 0x93,
0x00, 0xda, 0x91, 0x47, 0xdd, 0xf6, 0xde, 0x9b, 0x48, 0x9d, 0x1b, 0x45, 0xea, 0x47, 0xdf, 0x06,
0x9e, 0xfb, 0xb8, 0x99, 0xab, 0x6d, 0x6e, 0x0f, 0x0d, 0xa7, 0x57, 0x74, 0x61, 0x10, 0x16, 0x26,
0x2e, 0x43, 0x97, 0x0a, 0xac, 0xe7, 0x82, 0x9d, 0x64, 0xae, 0xf5, 0x79, 0x39, 0xa8, 0x98, 0xac,
0x96, 0x4c, 0x56, 0xfb, 0x54, 0x26, 0xb4, 0x8f, 0xe4, 0xa0, 0x0f, 0xc7, 0x06, 0x4d, 0x41, 0x26,
0x8c, 0x9e, 0xc5, 0x5e, 0xff, 0xa9, 0x2a, 0x18, 0x65, 0x54, 0x12, 0x60, 0x14, 0xc2, 0x9a, 0x11,
0xb2, 0x0b, 0xcf, 0xa7, 0x6c, 0x28, 0x04, 0x58, 0x98, 0x25, 0xc0, 0x81, 0xe4, 0xf2, 0x40, 0x70,
0x29, 0x96, 0x27, 0x2c, 0x4a, 0x5e, 0xbc, 0x9a, 0x3a, 0xb8, 0x12, 0x3f, 0x2b, 0x70, 0xa7, 0x98,
0x92, 0x89, 0x51, 0x99, 0x25, 0xc6, 0xa9, 0x24, 0xf0, 0xc9, 0x24, 0x02, 0x63, 0x7a, 0x4c, 0x0b,
0x73, 0x49, 0x6e, 0x15, 0x68, 0xa5, 0xaa, 0xbc, 0x56, 0xe0, 0x76, 0x56, 0xd7, 0xf5, 0x0d, 0x8b,
0x74, 0xfa, 0xc4, 0xa7, 0x9e, 0x5d, 0x5f, 0x9c, 0xc5, 0xee, 0x44, 0xb2, 0x7b, 0x52, 0x66, 0x97,
0x87, 0x19, 0x27, 0x57, 0x88, 0x72, 0x6e, 0xeb, 0x69, 0xf0, 0x24, 0x8e, 0x9d, 0xf1, 0x10, 0xfa,
0x41, 0x81, 0x8d, 0xac, 0xca, 0x08, 0xad, 0x78, 0xd0, 0x0e, 0x71, 0x0d, 0xb3, 0x47, 0xec, 0x7a,
0x75, 0x5b, 0xd9, 0x5d, 0x6e, 0x1f, 0x8f, 0x22, 0xf5, 0xb0, 0x3c, 0x7c, 0x29, 0x75, 0x9c, 0x41,
0x39, 0x01, 0x67, 0x2b, 0x74, 0x28, 0x42, 0xc7, 0x22, 0x82, 0x7e, 0x53, 0x60, 0x42, 0x9d, 0xe5,
0x39, 0x0e, 0x65, 0x41, 0xb6, 0x90, 0x4b, 0xb3, 0xa4, 0xea, 0x48, 0xa9, 0xce, 0xa7, 0x71, 0x2d,
0x43, 0x4e, 0x27, 0x3d, 0x96, 0xc9, 0x25, 0x54, 0xcb, 0x33, 0x38, 0x12, 0x69, 0xe9, 0x42, 0x4f,
0x9e, 0x89, 0x4f, 0x06, 0xc4, 0xe8, 0xe5, 0x66, 0xb2, 0xfc, 0xde, 0x33, 0x29, 0x43, 0x4e, 0x9f,
0xc9, 0x58, 0xe6, 0xe4, 0x99, 0x60, 0x91, 0x96, 0xce, 0xe4, 0x17, 0x05, 0xee, 0x4e, 0x93, 0xa5,
0xf3, 0x92, 0x90, 0x7a, 0x6d, 0xd6, 0xbe, 0xfe, 0x52, 0xce, 0xe1, 0xe4, 0xdd, 0xab, 0x11, 0x83,
0xcd, 0x5a, 0x07, 0x9e, 0x83, 0x37, 0x26, 0xab, 0xff, 0x94, 0x90, 0x29, 0x6c, 0xc5, 0xd4, 0x39,
0x5b, 0x78, 0x6f, 0xb6, 0x19, 0xd8, 0x2c, 0xad, 0xa7, 0xb0, 0x15, 0x0a, 0xc7, 0x6c, 0x7f, 0x55,
0x60, 0x6b, 0xbc, 0xd8, 0xa1, 0x2e, 0x75, 0x42, 0xa7, 0x63, 0x52, 0xbb, 0xbe, 0x32, 0x8b, 0xee,
0x73, 0x49, 0xf7, 0x74, 0x1a, 0xdd, 0x1c, 0xda, 0x74, 0xbe, 0xf9, 0x24, 0xbc, 0x59, 0x26, 0xfc,
0xb9, 0x88, 0xb6, 0xa9, 0xdd, 0xfc, 0xa9, 0x02, 0x55, 0xcc, 0x4f, 0x7b, 0xb4, 0x03, 0xf3, 0xd4,
0xe6, 0xd7, 0x5a, 0xad, 0x7d, 0x67, 0x14, 0xa9, 0xff, 0x17, 0x0c, 0xb2, 0x61, 0x62, 0xac, 0x79,
0x6a, 0xa3, 0xc7, 0xb0, 0x64, 0x7a, 0xae, 0xdd, 0xa1, 0x36, 0xbf, 0x8f, 0x6a, 0xed, 0x7b, 0xa3,
0x48, 0xdd, 0x12, 0xd9, 0x32, 0x90, 0x94, 0x24, 0x26, 0xae, 0xc6, 0x5f, 0xa7, 0x36, 0xfa, 0x0c,
0x56, 0x2c, 0x9f, 0x18, 0x8c, 0x74, 0xe2, 0xfb, 0x99, 0xdf, 0x21, 0xb5, 0xf6, 0xfd, 0xec, 0x96,
0xcc, 0x05, 0x13, 0x8c, 0xbc, 0x0b, 0x83, 0xb0, 0x5e, 0x50, 0x87, 0xc4, 0x58, 0xe4, 0x55, 0x9f,
0xfa, 0x43, 0x81, 0x55, 0x29, 0x63, 0xe5, 0x82, 0x09, 0x56, 0xde, 0x85, 0x41, 0x58, 0x1c, 0xab,
0x0e, 0x4b, 0x36, 0xe9, 0x11, 0x46, 0xc4, 0xc1, 0xbd, 0x8c, 0x13, 0x13, 0x3d, 0x84, 0xaa, 0xf7,
0xbd, 0x4b, 0xfc, 0xa0, 0x5e, 0xdd, 0x5e, 0xd8, 0xad, 0xb5, 0xd5, 0x51, 0xa4, 0x7e, 0x20, 0x06,
0x10, 0xfe, 0x04, 0x5b, 0x5a, 0x58, 0xa6, 0xa3, 0x13, 0x00, 0x83, 0x31, 0x9f, 0x9a, 0x21, 0x23,
0x01, 0x3f, 0xe3, 0x6e, 0xb4, 0x77, 0x46, 0x91, 0xfa, 0xa1, 0x5c, 0xd9, 0x34, 0x96, 0x2e, 0x63,
0xe6, 0xc1, 0xb9, 0x52, 0x74, 0x00, 0x8b, 0xae, 0xe1, 0x90, 0xa0, 0xbe, 0xcc, 0x09, 0x6c, 0x8d,
0x22, 0x75, 0x43, 0x60, 0x70, 0x77, 0x52, 0x2e, 0x0c, 0x2c, 0x72, 0x51, 0x0b, 0x2a, 0x6c, 0xd8,
0x17, 0xbb, 0xb9, 0x50, 0x13, 0x7b, 0xd3, 0x1a, 0x61, 0x60, 0x9e, 0xda, 0xfc, 0x1a, 0xd6, 0x0e,
0x93, 0x4e, 0x39, 0x76, 0x99, 0x3f, 0x44, 0x08, 0x2a, 0x31, 0x9a, 0x68, 0x0a, 0xcc, 0xbf, 0xd1,
0xc7, 0xb0, 0x48, 0xe2, 0xa0, 0x7c, 0x8b, 0xa8, 0x5a, 0xf9, 0xa9, 0xa6, 0x7d, 0x61, 0x38, 0x24,
0x05, 0xc2, 0x22, 0xbb, 0xf9, 0xf7, 0x02, 0xac, 0x16, 0x02, 0xe8, 0x1b, 0xb8, 0xc9, 0x95, 0xea,
0xf4, 0x43, 0xb3, 0x47, 0xad, 0xce, 0x77, 0x64, 0x28, 0xbb, 0xef, 0x60, 0x14, 0xa9, 0x7a, 0x4e,
0xe2, 0x5c, 0x46, 0x41, 0xec, 0xbc, 0x1f, 0xaf, 0x71, 0xd7, 0x19, 0xf7, 0x3c, 0x23, 0x43, 0x84,
0x61, 0x55, 0x24, 0x19, 0xb6, 0xed, 0x93, 0x20, 0x90, 0xbd, 0xba, 0x37, 0x8a, 0xd4, 0xfb, 0x79,
0x6c, 0x19, 0x2e, 0x02, 0x27, 0x4e, 0x7c, 0x83, 0xdb, 0x87, 0xc2, 0x44, 0xb7, 0xa1, 0x7a, 0x41,
0x68, 0xf7, 0x42, 0x3c, 0x7e, 0x2a, 0x58, 0x5a, 0xb1, 0x3f, 0x60, 0x06, 0x0b, 0x03, 0xd1, 0x84,
0x58, 0x5a, 0xe8, 0x29, 0x40, 0xb2, 0x23, 0xa9, 0x68, 0xac, 0x5a, 0xa1, 0x05, 0xd2, 0x58, 0xb6,
0x93, 0x53, 0x0f, 0xae, 0x49, 0xe3, 0xb4, 0xb0, 0xe3, 0xaa, 0xff, 0x75, 0xc7, 0xb9, 0xc5, 0x5d,
0x22, 0xee, 0xda, 0xcd, 0xb1, 0x1b, 0xea, 0x45, 0xf2, 0x5c, 0x6e, 0xb7, 0x8a, 0xef, 0xd6, 0x19,
0xbb, 0xe8, 0x32, 0xbe, 0x74, 0x72, 0x3b, 0xa9, 0x79, 0x0e, 0xb5, 0x78, 0x9d, 0xa7, 0x37, 0xd0,
0x7e, 0xb1, 0x81, 0xee, 0x4e, 0x6e, 0x20, 0x71, 0x28, 0x25, 0xdd, 0xf3, 0xa3, 0x02, 0x90, 0x79,
0xd1, 0x23, 0xa8, 0xf6, 0x0c, 0x46, 0x82, 0xe4, 0x15, 0x7e, 0xef, 0x5d, 0x18, 0x9c, 0x09, 0x96,
0x05, 0xe8, 0x09, 0x2c, 0x5d, 0xd0, 0x80, 0x79, 0x7c, 0xfc, 0x85, 0x7f, 0x57, 0x9b, 0x54, 0x34,
0x1f, 0xc1, 0xff, 0x4a, 0x31, 0xb4, 0x96, 0x9d, 0x9a, 0xfc, 0x70, 0xcc, 0x5a, 0x64, 0x3e, 0xdf,
0x22, 0x4d, 0x06, 0xb5, 0x73, 0xda, 0x75, 0x0d, 0x16, 0xfa, 0x04, 0x3d, 0x80, 0x85, 0x80, 0x76,
0x65, 0xb7, 0x6f, 0x8c, 0x22, 0xf5, 0x96, 0xd0, 0x3a, 0xa0, 0xdd, 0x44, 0xe3, 0xf8, 0x13, 0xc7,
0x59, 0xf1, 0xe2, 0xf7, 0x43, 0x93, 0x6f, 0x8f, 0xb1, 0xe3, 0x56, 0x06, 0x92, 0xa2, 0xc4, 0xc4,
0xd5, 0x7e, 0x68, 0x3e, 0x23, 0xc3, 0xe6, 0x01, 0xac, 0x1c, 0xf3, 0xa5, 0x79, 0x1e, 0x92, 0x90,
0x8c, 0x91, 0x5d, 0x87, 0xc5, 0x81, 0xd1, 0x0b, 0x09, 0x97, 0xa2, 0x86, 0x85, 0xd1, 0x3e, 0x7c,
0x73, 0xd5, 0x50, 0xde, 0x5e, 0x35, 0x94, 0xbf, 0xae, 0x1a, 0xca, 0xe5, 0x75, 0x63, 0xee, 0xed,
0x75, 0x63, 0xee, 0xf7, 0xeb, 0xc6, 0xdc, 0x57, 0x3b, 0x5d, 0xca, 0xb4, 0x81, 0x6d, 0x6a, 0xcc,
0xd3, 0x63, 0xd5, 0xf6, 0xa8, 0xa7, 0xf7, 0x0c, 0xcb, 0x73, 0xa9, 0xb5, 0x6f, 0xeb, 0xaf, 0xd2,
0xbf, 0x38, 0xb3, 0xca, 0xfb, 0xea, 0xe0, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd2, 0xef, 0x57,
0x0f, 0xe9, 0x0d, 0x00, 0x00,
// 1234 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x57, 0xcd, 0x6e, 0xdb, 0x46,
0x10, 0x36, 0x6d, 0x59, 0xb6, 0x46, 0xb1, 0x1b, 0x6c, 0x9d, 0x44, 0x76, 0x63, 0xd1, 0x51, 0x50,
0xd8, 0x41, 0x60, 0x12, 0xb2, 0x51, 0x04, 0x49, 0xd0, 0x83, 0xe5, 0x3a, 0x86, 0x9b, 0xfe, 0x38,
0xeb, 0x9c, 0x5a, 0x14, 0x02, 0x7f, 0x36, 0xf2, 0xb6, 0x22, 0x29, 0x90, 0x4b, 0x35, 0x3a, 0x16,
0xe8, 0xa5, 0x37, 0x1f, 0x73, 0xe8, 0x1b, 0xf4, 0xd0, 0xc7, 0x68, 0x8e, 0x39, 0xf6, 0x52, 0xb5,
0xb0, 0x81, 0x3e, 0x80, 0x9e, 0xa0, 0xe0, 0xee, 0xf2, 0x57, 0x52, 0xd4, 0x20, 0x37, 0xce, 0xdf,
0xb7, 0xdf, 0xcc, 0xce, 0xec, 0x2e, 0x41, 0xb5, 0x88, 0x6f, 0xe9, 0x3e, 0xe9, 0xd0, 0x80, 0xf9,
0x03, 0xbd, 0xdf, 0x4c, 0xbe, 0xb5, 0x9e, 0xef, 0x31, 0x0f, 0x5d, 0x8f, 0x1c, 0xb4, 0x44, 0xd9,
0x6f, 0x6e, 0xd4, 0x3b, 0x9e, 0xd7, 0xe9, 0x12, 0x9d, 0xdb, 0xcd, 0xf0, 0x85, 0x6e, 0x87, 0xbe,
0xc1, 0xa8, 0xe7, 0x8a, 0x88, 0x0d, 0xb5, 0x68, 0x67, 0xd4, 0x21, 0x01, 0x33, 0x9c, 0x9e, 0x74,
0x58, 0xeb, 0x78, 0x1d, 0x8f, 0x7f, 0xea, 0xd1, 0x97, 0xd4, 0xd6, 0x2d, 0x2f, 0x70, 0xbc, 0x40,
0x37, 0x8d, 0x80, 0xe8, 0xfd, 0xa6, 0x49, 0x98, 0xd1, 0xd4, 0x2d, 0x8f, 0x4a, 0xd8, 0xc6, 0x5f,
0x2b, 0x50, 0x3e, 0x35, 0x7c, 0xc3, 0x09, 0x10, 0x85, 0xaa, 0x4f, 0x2c, 0xcf, 0xb7, 0xdb, 0x3e,
0x71, 0x59, 0x4d, 0xd9, 0x52, 0x76, 0xaa, 0x7b, 0xeb, 0x9a, 0x00, 0xd0, 0x22, 0x00, 0x4d, 0x02,
0x68, 0x87, 0x1e, 0x75, 0x5b, 0xbb, 0xaf, 0x87, 0xea, 0xdc, 0x68, 0xa8, 0x7e, 0xfc, 0x7d, 0xe0,
0xb9, 0x8f, 0x1a, 0x99, 0xd8, 0xc6, 0xd6, 0xc0, 0x70, 0xba, 0x79, 0x15, 0x06, 0x21, 0x61, 0xe2,
0x32, 0x74, 0xa1, 0xc0, 0x5a, 0xc6, 0xd8, 0x8e, 0x73, 0xad, 0xcd, 0xcb, 0x45, 0x45, 0xb2, 0x5a,
0x9c, 0xac, 0xf6, 0x99, 0x74, 0x68, 0x1d, 0xca, 0x45, 0x1f, 0x8c, 0x2d, 0x9a, 0x80, 0x4c, 0x58,
0x3d, 0xb5, 0xbd, 0xfa, 0x5b, 0x55, 0x30, 0x4a, 0xa9, 0xc4, 0xc0, 0x28, 0x84, 0x55, 0x23, 0x64,
0xe7, 0x9e, 0x4f, 0xd9, 0x40, 0x14, 0x60, 0x61, 0x56, 0x01, 0xf6, 0x25, 0x97, 0xfb, 0x82, 0x4b,
0x3e, 0x3c, 0x66, 0x51, 0xd0, 0xe2, 0x95, 0x44, 0xc1, 0x2b, 0xf1, 0xab, 0x02, 0xb7, 0xf2, 0x2e,
0x69, 0x31, 0x4a, 0xb3, 0x8a, 0x71, 0x22, 0x09, 0x7c, 0x3a, 0x89, 0xc0, 0x58, 0x3d, 0xa6, 0x99,
0x79, 0x49, 0x6e, 0xe4, 0x68, 0x25, 0x55, 0x79, 0xa5, 0xc0, 0xcd, 0x34, 0xae, 0xe3, 0x1b, 0x16,
0x69, 0xf7, 0x88, 0x4f, 0x3d, 0xbb, 0xb6, 0x38, 0x8b, 0xdd, 0xb1, 0x64, 0xf7, 0xb8, 0xc8, 0x2e,
0x0b, 0x33, 0x4e, 0x2e, 0x67, 0xe5, 0xdc, 0xd6, 0x12, 0xe3, 0x71, 0x64, 0x3b, 0xe5, 0x26, 0xf4,
0x93, 0x02, 0xeb, 0x69, 0x94, 0x11, 0x5a, 0xd1, 0xa2, 0x6d, 0xe2, 0x1a, 0x66, 0x97, 0xd8, 0xb5,
0xf2, 0x96, 0xb2, 0xb3, 0xdc, 0x3a, 0x1a, 0x0d, 0xd5, 0x83, 0xe2, 0xf2, 0x05, 0xd7, 0x71, 0x06,
0x45, 0x07, 0x9c, 0xee, 0xd0, 0x81, 0x30, 0x1d, 0x09, 0x0b, 0xfa, 0x43, 0x81, 0x09, 0x71, 0x96,
0xe7, 0x38, 0x94, 0x05, 0xe9, 0x46, 0x2e, 0xcd, 0x2a, 0x55, 0x5b, 0x96, 0xea, 0x6c, 0x1a, 0xd7,
0x22, 0xe4, 0x74, 0xd2, 0x63, 0x9e, 0xbc, 0x84, 0x6a, 0x31, 0x83, 0x43, 0xe1, 0x96, 0x6c, 0xf4,
0xe4, 0x4c, 0x7c, 0xd2, 0x27, 0x46, 0x37, 0x93, 0xc9, 0xf2, 0x7b, 0x67, 0x52, 0x84, 0x9c, 0x9e,
0xc9, 0x98, 0xe7, 0xe4, 0x4c, 0xb0, 0x70, 0x4b, 0x32, 0xf9, 0x4d, 0x81, 0xdb, 0xd3, 0xca, 0xd2,
0x7e, 0x41, 0x48, 0xad, 0x32, 0x6b, 0xae, 0xbf, 0x96, 0x39, 0x1c, 0xbf, 0x7d, 0x37, 0x22, 0xb0,
0x59, 0xfb, 0xc0, 0x7d, 0xf0, 0xfa, 0xe4, 0xea, 0x3f, 0x21, 0x64, 0x0a, 0x5b, 0x91, 0x3a, 0x67,
0x0b, 0xef, 0xcd, 0x36, 0x05, 0x9b, 0x55, 0xeb, 0x29, 0x6c, 0x45, 0x85, 0x23, 0xb6, 0xbf, 0x2b,
0xb0, 0x39, 0x1e, 0xec, 0x50, 0x97, 0x3a, 0xa1, 0xd3, 0x36, 0xa9, 0x5d, 0xab, 0xce, 0xa2, 0xfb,
0x4c, 0xd2, 0x3d, 0x99, 0x46, 0x37, 0x83, 0x36, 0x9d, 0x6f, 0xd6, 0x09, 0x6f, 0x14, 0x09, 0x7f,
0x29, 0xac, 0x2d, 0x6a, 0x37, 0x7e, 0x29, 0x41, 0x19, 0xf3, 0xd3, 0x1e, 0x6d, 0xc3, 0x3c, 0xb5,
0xf9, 0xb5, 0x56, 0x69, 0xdd, 0x1a, 0x0d, 0xd5, 0x0f, 0x05, 0x83, 0x74, 0x99, 0x08, 0x6b, 0x9e,
0xda, 0xe8, 0x11, 0x2c, 0x99, 0x9e, 0x6b, 0xb7, 0xa9, 0xcd, 0xef, 0xa3, 0x4a, 0xeb, 0xce, 0x68,
0xa8, 0x6e, 0x0a, 0x6f, 0x69, 0x88, 0x43, 0x62, 0x11, 0x97, 0xa3, 0xaf, 0x13, 0x1b, 0x7d, 0x0e,
0x55, 0xcb, 0x27, 0x06, 0x23, 0xed, 0xe8, 0x7e, 0xe6, 0x77, 0x48, 0xa5, 0x75, 0x2f, 0xbd, 0x25,
0x33, 0xc6, 0x18, 0x23, 0xab, 0xc2, 0x20, 0xa4, 0xe7, 0xd4, 0x21, 0x11, 0x16, 0x79, 0xd9, 0xa3,
0xfe, 0x40, 0x60, 0x95, 0x8a, 0x58, 0x19, 0x63, 0x8c, 0x95, 0x55, 0x61, 0x10, 0x12, 0xc7, 0xaa,
0xc1, 0x92, 0x4d, 0xba, 0x84, 0x11, 0x71, 0x70, 0x2f, 0xe3, 0x58, 0x44, 0x0f, 0xa0, 0xec, 0xfd,
0xe8, 0x12, 0x3f, 0xa8, 0x95, 0xb7, 0x16, 0x76, 0x2a, 0x2d, 0x75, 0x34, 0x54, 0x3f, 0x12, 0x0b,
0x08, 0x7d, 0x8c, 0x2d, 0x25, 0x2c, 0xdd, 0xd1, 0x31, 0x80, 0xc1, 0x98, 0x4f, 0xcd, 0x90, 0x91,
0x80, 0x9f, 0x71, 0xd7, 0x5a, 0xdb, 0xa3, 0xa1, 0x7a, 0x57, 0xee, 0x6c, 0x62, 0x4b, 0xb6, 0x31,
0xd5, 0xe0, 0x4c, 0x28, 0xda, 0x87, 0x45, 0xd7, 0x70, 0x48, 0x50, 0x5b, 0xe6, 0x04, 0x36, 0x47,
0x43, 0x75, 0x5d, 0x60, 0x70, 0x75, 0x1c, 0x2e, 0x04, 0x2c, 0x7c, 0x51, 0x13, 0x4a, 0x6c, 0xd0,
0x13, 0xd3, 0x9c, 0x8b, 0x89, 0xb4, 0x49, 0x8c, 0x10, 0x30, 0x77, 0x6d, 0x7c, 0x0b, 0xab, 0x07,
0x71, 0xa7, 0x1c, 0xb9, 0xcc, 0x1f, 0x20, 0x04, 0xa5, 0x08, 0x4d, 0x34, 0x05, 0xe6, 0xdf, 0xe8,
0x13, 0x58, 0x24, 0x91, 0x51, 0xbe, 0x45, 0x54, 0xad, 0xf8, 0x54, 0xd3, 0xbe, 0x32, 0x1c, 0x92,
0x00, 0x61, 0xe1, 0xdd, 0xf8, 0x77, 0x01, 0x56, 0x72, 0x06, 0xf4, 0x1d, 0x5c, 0xe7, 0x95, 0x6a,
0xf7, 0x42, 0xb3, 0x4b, 0xad, 0xf6, 0x0f, 0x64, 0x20, 0xbb, 0x6f, 0x7f, 0x34, 0x54, 0xf5, 0x4c,
0x89, 0x33, 0x1e, 0xb9, 0x62, 0x67, 0xf5, 0x78, 0x95, 0xab, 0x4e, 0xb9, 0xe6, 0x29, 0x19, 0x20,
0x0c, 0x2b, 0xc2, 0xc9, 0xb0, 0x6d, 0x9f, 0x04, 0x81, 0xec, 0xd5, 0xdd, 0xd1, 0x50, 0xbd, 0x97,
0xc5, 0x96, 0xe6, 0x3c, 0x70, 0xac, 0xc4, 0xd7, 0xb8, 0x7c, 0x20, 0x44, 0x74, 0x13, 0xca, 0xe7,
0x84, 0x76, 0xce, 0xc5, 0xe3, 0xa7, 0x84, 0xa5, 0x14, 0xe9, 0x03, 0x66, 0xb0, 0x30, 0x10, 0x4d,
0x88, 0xa5, 0x84, 0x9e, 0x00, 0xc4, 0x13, 0x49, 0x45, 0x63, 0x55, 0x72, 0x2d, 0x90, 0xd8, 0xd2,
0x49, 0x4e, 0x34, 0xb8, 0x22, 0x85, 0x93, 0xdc, 0xc4, 0x95, 0xdf, 0x75, 0xe2, 0xdc, 0xfc, 0x94,
0x88, 0xbb, 0x76, 0x63, 0xec, 0x86, 0x7a, 0x1e, 0x3f, 0x97, 0x5b, 0xcd, 0xfc, 0xbb, 0x75, 0xc6,
0x14, 0x5d, 0x44, 0x97, 0x4e, 0x66, 0x92, 0x1a, 0x67, 0x50, 0x89, 0xf6, 0x79, 0x7a, 0x03, 0xed,
0xe5, 0x1b, 0xe8, 0xf6, 0xe4, 0x06, 0x12, 0x87, 0x52, 0xdc, 0x3d, 0x3f, 0x2b, 0x00, 0xa9, 0x16,
0x3d, 0x84, 0x72, 0xd7, 0x60, 0x24, 0x88, 0x5f, 0xe1, 0x77, 0xde, 0x86, 0xc1, 0x99, 0x60, 0x19,
0x80, 0x1e, 0xc3, 0xd2, 0x39, 0x0d, 0x98, 0xc7, 0xd7, 0x5f, 0xf8, 0x7f, 0xb1, 0x71, 0x44, 0xe3,
0x21, 0x7c, 0x50, 0xb0, 0xa1, 0xd5, 0xf4, 0xd4, 0xe4, 0x87, 0x63, 0xda, 0x22, 0xf3, 0xd9, 0x16,
0x69, 0x30, 0xa8, 0x9c, 0xd1, 0x8e, 0x6b, 0xb0, 0xd0, 0x27, 0xe8, 0x3e, 0x2c, 0x04, 0xb4, 0x23,
0xbb, 0x7d, 0x7d, 0x34, 0x54, 0x6f, 0x88, 0x5a, 0x07, 0xb4, 0x13, 0xd7, 0x38, 0xfa, 0xc4, 0x91,
0x57, 0xb4, 0xf9, 0xbd, 0xd0, 0xe4, 0xe3, 0x31, 0x76, 0xdc, 0x4a, 0x43, 0x1c, 0x14, 0x8b, 0xb8,
0xdc, 0x0b, 0xcd, 0xa7, 0x64, 0xd0, 0xd8, 0x87, 0xea, 0x11, 0xdf, 0x9a, 0x67, 0x21, 0x09, 0xc9,
0x18, 0xd9, 0x35, 0x58, 0xec, 0x1b, 0xdd, 0x90, 0xf0, 0x52, 0x54, 0xb0, 0x10, 0x1a, 0x77, 0xa1,
0x2a, 0x32, 0x0c, 0xbe, 0xa0, 0x01, 0x4b, 0x9d, 0x94, 0x8c, 0x53, 0xeb, 0xe0, 0xf5, 0x65, 0x5d,
0x79, 0x73, 0x59, 0x57, 0xfe, 0xb9, 0xac, 0x2b, 0x17, 0x57, 0xf5, 0xb9, 0x37, 0x57, 0xf5, 0xb9,
0x3f, 0xaf, 0xea, 0x73, 0xdf, 0x6c, 0x77, 0x28, 0xd3, 0xfa, 0xb6, 0xa9, 0x31, 0x4f, 0x8f, 0x4a,
0xbb, 0x4b, 0x3d, 0xbd, 0x6b, 0x58, 0x9e, 0x4b, 0xad, 0x3d, 0x5b, 0x7f, 0x99, 0xfc, 0xea, 0x99,
0x65, 0xde, 0x7c, 0xfb, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xfb, 0x80, 0xc8, 0x98, 0x0e, 0x0e,
0x00, 0x00,
}
func (m *Params) Marshal() (dAtA []byte, err error) {
@@ -1305,6 +1353,38 @@ func (m *ExpiryQueue) MarshalToSizedBuffer(dAtA []byte) (int, error) {
return len(dAtA) - i, nil
}
func (m *RecordsList) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalToSizedBuffer(dAtA[:size])
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *RecordsList) MarshalTo(dAtA []byte) (int, error) {
size := m.Size()
return m.MarshalToSizedBuffer(dAtA[:size])
}
func (m *RecordsList) MarshalToSizedBuffer(dAtA []byte) (int, error) {
i := len(dAtA)
_ = i
var l int
_ = l
if len(m.Value) > 0 {
for iNdEx := len(m.Value) - 1; iNdEx >= 0; iNdEx-- {
i -= len(m.Value[iNdEx])
copy(dAtA[i:], m.Value[iNdEx])
i = encodeVarintRegistry(dAtA, i, uint64(len(m.Value[iNdEx])))
i--
dAtA[i] = 0xa
}
}
return len(dAtA) - i, nil
}
func encodeVarintRegistry(dAtA []byte, offset int, v uint64) int {
offset -= sovRegistry(v)
base := offset
@@ -1535,6 +1615,21 @@ func (m *ExpiryQueue) Size() (n int) {
return n
}
func (m *RecordsList) Size() (n int) {
if m == nil {
return 0
}
var l int
_ = l
if len(m.Value) > 0 {
for _, s := range m.Value {
l = len(s)
n += 1 + l + sovRegistry(uint64(l))
}
}
return n
}
func sovRegistry(x uint64) (n int) {
return (math_bits.Len64(x|1) + 6) / 7
}
@@ -3216,6 +3311,88 @@ func (m *ExpiryQueue) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *RecordsList) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
for iNdEx < l {
preIndex := iNdEx
var wire uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowRegistry
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
wire |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
fieldNum := int32(wire >> 3)
wireType := int(wire & 0x7)
if wireType == 4 {
return fmt.Errorf("proto: RecordsList: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: RecordsList: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowRegistry
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := dAtA[iNdEx]
iNdEx++
stringLen |= uint64(b&0x7F) << shift
if b < 0x80 {
break
}
}
intStringLen := int(stringLen)
if intStringLen < 0 {
return ErrInvalidLengthRegistry
}
postIndex := iNdEx + intStringLen
if postIndex < 0 {
return ErrInvalidLengthRegistry
}
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Value = append(m.Value, string(dAtA[iNdEx:postIndex]))
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipRegistry(dAtA[iNdEx:])
if err != nil {
return err
}
if (skippy < 0) || (iNdEx+skippy) < 0 {
return ErrInvalidLengthRegistry
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func skipRegistry(dAtA []byte) (n int, err error) {
l := len(dAtA)
iNdEx := 0