Merge pull request #1073 from travisturner/fix-framerestore-test

Fix FrameRestore test
This commit is contained in:
Travis Turner 2018-01-29 15:59:42 -06:00 committed by GitHub
commit 143d3de66b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 392 additions and 112 deletions

View file

@ -130,19 +130,20 @@ func (n *nopGossiper) SendAsync(pb proto.Message) error {
// Broadcast message types.
const (
MessageTypeCreateSlice = 1
MessageTypeCreateIndex = 2
MessageTypeDeleteIndex = 3
MessageTypeCreateFrame = 4
MessageTypeDeleteFrame = 5
MessageTypeCreateInputDefinition = 6
MessageTypeDeleteInputDefinition = 7
MessageTypeDeleteView = 8
MessageTypeClusterStatus = 9
MessageTypeResizeInstruction = 10
MessageTypeResizeInstructionComplete = 11
MessageTypeSetCoordinator = 12
MessageTypeNodeState = 13
MessageTypeCreateSlice = iota
MessageTypeCreateIndex
MessageTypeDeleteIndex
MessageTypeCreateFrame
MessageTypeDeleteFrame
MessageTypeCreateView
MessageTypeDeleteView
MessageTypeCreateInputDefinition
MessageTypeDeleteInputDefinition
MessageTypeClusterStatus
MessageTypeResizeInstruction
MessageTypeResizeInstructionComplete
MessageTypeSetCoordinator
MessageTypeNodeState
)
// MarshalMessage encodes the protobuf message into a byte slice.
@ -159,12 +160,14 @@ func MarshalMessage(m proto.Message) ([]byte, error) {
typ = MessageTypeCreateFrame
case *internal.DeleteFrameMessage:
typ = MessageTypeDeleteFrame
case *internal.CreateViewMessage:
typ = MessageTypeCreateView
case *internal.DeleteViewMessage:
typ = MessageTypeDeleteView
case *internal.CreateInputDefinitionMessage:
typ = MessageTypeCreateInputDefinition
case *internal.DeleteInputDefinitionMessage:
typ = MessageTypeDeleteInputDefinition
case *internal.DeleteViewMessage:
typ = MessageTypeDeleteView
case *internal.ClusterStatus:
typ = MessageTypeClusterStatus
case *internal.ResizeInstruction:
@ -201,12 +204,14 @@ func UnmarshalMessage(buf []byte) (proto.Message, error) {
m = &internal.CreateFrameMessage{}
case MessageTypeDeleteFrame:
m = &internal.DeleteFrameMessage{}
case MessageTypeCreateView:
m = &internal.CreateViewMessage{}
case MessageTypeDeleteView:
m = &internal.DeleteViewMessage{}
case MessageTypeCreateInputDefinition:
m = &internal.CreateInputDefinitionMessage{}
case MessageTypeDeleteInputDefinition:
m = &internal.DeleteInputDefinitionMessage{}
case MessageTypeDeleteView:
m = &internal.DeleteViewMessage{}
case MessageTypeClusterStatus:
m = &internal.ClusterStatus{}
case MessageTypeResizeInstruction:

View file

@ -571,7 +571,30 @@ func (f *Frame) RecalculateCaches() {
}
// CreateViewIfNotExists returns the named view, creating it if necessary.
// Additionally, a CreateViewMessage is sent to the cluster.
func (f *Frame) CreateViewIfNotExists(name string) (*View, error) {
view, err := f.CreateViewIfNotExistsBase(name)
if err != nil {
return nil, err
}
// Broadcast view creation to the cluster.
err = f.broadcaster.SendSync(
&internal.CreateViewMessage{
Index: f.index,
Frame: f.name,
View: name,
})
if err != nil {
return nil, err
}
return view, nil
}
// CreateViewIfNotExistsBase returns the named view, creating it if necessary.
func (f *Frame) CreateViewIfNotExistsBase(name string) (*View, error) {
// Don't create inverse views if they are not enabled.
if !f.InverseEnabled() && IsInverseView(name) {
return nil, ErrFrameInverseDisabled

View file

@ -34,6 +34,7 @@
NodeStatus
ClusterStatus
Field
CreateViewMessage
DeleteViewMessage
ResizeInstruction
ResizeSource
@ -800,6 +801,38 @@ func (m *Field) GetMax() int64 {
return 0
}
type CreateViewMessage struct {
Index string `protobuf:"bytes,1,opt,name=Index,proto3" json:"Index,omitempty"`
Frame string `protobuf:"bytes,2,opt,name=Frame,proto3" json:"Frame,omitempty"`
View string `protobuf:"bytes,3,opt,name=View,proto3" json:"View,omitempty"`
}
func (m *CreateViewMessage) Reset() { *m = CreateViewMessage{} }
func (m *CreateViewMessage) String() string { return proto.CompactTextString(m) }
func (*CreateViewMessage) ProtoMessage() {}
func (*CreateViewMessage) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{25} }
func (m *CreateViewMessage) GetIndex() string {
if m != nil {
return m.Index
}
return ""
}
func (m *CreateViewMessage) GetFrame() string {
if m != nil {
return m.Frame
}
return ""
}
func (m *CreateViewMessage) GetView() string {
if m != nil {
return m.View
}
return ""
}
type DeleteViewMessage struct {
Index string `protobuf:"bytes,1,opt,name=Index,proto3" json:"Index,omitempty"`
Frame string `protobuf:"bytes,2,opt,name=Frame,proto3" json:"Frame,omitempty"`
@ -809,7 +842,7 @@ type DeleteViewMessage struct {
func (m *DeleteViewMessage) Reset() { *m = DeleteViewMessage{} }
func (m *DeleteViewMessage) String() string { return proto.CompactTextString(m) }
func (*DeleteViewMessage) ProtoMessage() {}
func (*DeleteViewMessage) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{25} }
func (*DeleteViewMessage) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{26} }
func (m *DeleteViewMessage) GetIndex() string {
if m != nil {
@ -844,7 +877,7 @@ type ResizeInstruction struct {
func (m *ResizeInstruction) Reset() { *m = ResizeInstruction{} }
func (m *ResizeInstruction) String() string { return proto.CompactTextString(m) }
func (*ResizeInstruction) ProtoMessage() {}
func (*ResizeInstruction) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{26} }
func (*ResizeInstruction) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{27} }
func (m *ResizeInstruction) GetJobID() int64 {
if m != nil {
@ -899,7 +932,7 @@ type ResizeSource struct {
func (m *ResizeSource) Reset() { *m = ResizeSource{} }
func (m *ResizeSource) String() string { return proto.CompactTextString(m) }
func (*ResizeSource) ProtoMessage() {}
func (*ResizeSource) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{27} }
func (*ResizeSource) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{28} }
func (m *ResizeSource) GetURI() *URI {
if m != nil {
@ -946,7 +979,7 @@ func (m *ResizeInstructionComplete) Reset() { *m = ResizeInstructionComp
func (m *ResizeInstructionComplete) String() string { return proto.CompactTextString(m) }
func (*ResizeInstructionComplete) ProtoMessage() {}
func (*ResizeInstructionComplete) Descriptor() ([]byte, []int) {
return fileDescriptorPrivate, []int{28}
return fileDescriptorPrivate, []int{29}
}
func (m *ResizeInstructionComplete) GetJobID() int64 {
@ -978,7 +1011,7 @@ type SetCoordinatorMessage struct {
func (m *SetCoordinatorMessage) Reset() { *m = SetCoordinatorMessage{} }
func (m *SetCoordinatorMessage) String() string { return proto.CompactTextString(m) }
func (*SetCoordinatorMessage) ProtoMessage() {}
func (*SetCoordinatorMessage) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{29} }
func (*SetCoordinatorMessage) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{30} }
func (m *SetCoordinatorMessage) GetOld() *URI {
if m != nil {
@ -1002,7 +1035,7 @@ type Topology struct {
func (m *Topology) Reset() { *m = Topology{} }
func (m *Topology) String() string { return proto.CompactTextString(m) }
func (*Topology) ProtoMessage() {}
func (*Topology) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{30} }
func (*Topology) Descriptor() ([]byte, []int) { return fileDescriptorPrivate, []int{31} }
func (m *Topology) GetNodeSet() []*URI {
if m != nil {
@ -1044,6 +1077,7 @@ func init() {
proto.RegisterType((*NodeStatus)(nil), "internal.NodeStatus")
proto.RegisterType((*ClusterStatus)(nil), "internal.ClusterStatus")
proto.RegisterType((*Field)(nil), "internal.Field")
proto.RegisterType((*CreateViewMessage)(nil), "internal.CreateViewMessage")
proto.RegisterType((*DeleteViewMessage)(nil), "internal.DeleteViewMessage")
proto.RegisterType((*ResizeInstruction)(nil), "internal.ResizeInstruction")
proto.RegisterType((*ResizeSource)(nil), "internal.ResizeSource")
@ -2063,6 +2097,42 @@ func (m *Field) MarshalTo(dAtA []byte) (int, error) {
return i, nil
}
func (m *CreateViewMessage) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
n, err := m.MarshalTo(dAtA)
if err != nil {
return nil, err
}
return dAtA[:n], nil
}
func (m *CreateViewMessage) MarshalTo(dAtA []byte) (int, error) {
var i int
_ = i
var l int
_ = l
if len(m.Index) > 0 {
dAtA[i] = 0xa
i++
i = encodeVarintPrivate(dAtA, i, uint64(len(m.Index)))
i += copy(dAtA[i:], m.Index)
}
if len(m.Frame) > 0 {
dAtA[i] = 0x12
i++
i = encodeVarintPrivate(dAtA, i, uint64(len(m.Frame)))
i += copy(dAtA[i:], m.Frame)
}
if len(m.View) > 0 {
dAtA[i] = 0x1a
i++
i = encodeVarintPrivate(dAtA, i, uint64(len(m.View)))
i += copy(dAtA[i:], m.View)
}
return i, nil
}
func (m *DeleteViewMessage) Marshal() (dAtA []byte, err error) {
size := m.Size()
dAtA = make([]byte, size)
@ -2810,6 +2880,24 @@ func (m *Field) Size() (n int) {
return n
}
func (m *CreateViewMessage) Size() (n int) {
var l int
_ = l
l = len(m.Index)
if l > 0 {
n += 1 + l + sovPrivate(uint64(l))
}
l = len(m.Frame)
if l > 0 {
n += 1 + l + sovPrivate(uint64(l))
}
l = len(m.View)
if l > 0 {
n += 1 + l + sovPrivate(uint64(l))
}
return n
}
func (m *DeleteViewMessage) Size() (n int) {
var l int
_ = l
@ -6399,6 +6487,143 @@ func (m *Field) Unmarshal(dAtA []byte) error {
}
return nil
}
func (m *CreateViewMessage) 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 ErrIntOverflowPrivate
}
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: CreateViewMessage: wiretype end group for non-group")
}
if fieldNum <= 0 {
return fmt.Errorf("proto: CreateViewMessage: illegal tag %d (wire type %d)", fieldNum, wire)
}
switch fieldNum {
case 1:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Index", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowPrivate
}
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 ErrInvalidLengthPrivate
}
postIndex := iNdEx + intStringLen
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Index = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 2:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Frame", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowPrivate
}
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 ErrInvalidLengthPrivate
}
postIndex := iNdEx + intStringLen
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.Frame = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
case 3:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field View", wireType)
}
var stringLen uint64
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowPrivate
}
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 ErrInvalidLengthPrivate
}
postIndex := iNdEx + intStringLen
if postIndex > l {
return io.ErrUnexpectedEOF
}
m.View = string(dAtA[iNdEx:postIndex])
iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipPrivate(dAtA[iNdEx:])
if err != nil {
return err
}
if skippy < 0 {
return ErrInvalidLengthPrivate
}
if (iNdEx + skippy) > l {
return io.ErrUnexpectedEOF
}
iNdEx += skippy
}
}
if iNdEx > l {
return io.ErrUnexpectedEOF
}
return nil
}
func (m *DeleteViewMessage) Unmarshal(dAtA []byte) error {
l := len(dAtA)
iNdEx := 0
@ -7422,82 +7647,82 @@ var (
func init() { proto.RegisterFile("private.proto", fileDescriptorPrivate) }
var fileDescriptorPrivate = []byte{
// 1222 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x57, 0xcf, 0x6f, 0x1b, 0xc5,
0x17, 0xff, 0xae, 0xd7, 0x76, 0xec, 0xe7, 0xba, 0x75, 0xe7, 0x9b, 0x06, 0x27, 0x8a, 0x5c, 0x33,
0x07, 0x12, 0x2a, 0x11, 0xc0, 0x95, 0x10, 0x04, 0x55, 0x82, 0xc6, 0xae, 0xba, 0x40, 0x92, 0x76,
0x9c, 0x16, 0xc1, 0x01, 0x69, 0x62, 0x0f, 0xc9, 0x2a, 0xeb, 0x5d, 0xb3, 0x3b, 0x4e, 0xe2, 0x1e,
0xb8, 0xc1, 0x01, 0xee, 0x88, 0x3b, 0xff, 0x0c, 0x47, 0xfe, 0x04, 0x14, 0xfe, 0x08, 0x24, 0x2e,
0xa0, 0x79, 0x3b, 0xb3, 0xbb, 0xfe, 0x95, 0x34, 0xb9, 0xed, 0x7b, 0xf3, 0x79, 0x6f, 0x3e, 0xf3,
0x7e, 0xcd, 0x2c, 0x54, 0x87, 0xa1, 0x7b, 0xca, 0xa5, 0xd8, 0x1a, 0x86, 0x81, 0x0c, 0x48, 0xc9,
0xf5, 0xa5, 0x08, 0x7d, 0xee, 0xd1, 0x7d, 0x28, 0x3b, 0x7e, 0x5f, 0x9c, 0xef, 0x0a, 0xc9, 0x49,
0x13, 0x2a, 0x3b, 0x81, 0x37, 0x1a, 0xf8, 0x5f, 0xf0, 0x43, 0xe1, 0xd5, 0xad, 0xa6, 0xb5, 0x59,
0x66, 0x59, 0x95, 0x42, 0x1c, 0xb8, 0x03, 0xf1, 0x7c, 0xc4, 0x7d, 0x39, 0x1a, 0xd4, 0x73, 0x31,
0x22, 0xa3, 0xa2, 0xff, 0x58, 0x50, 0x7e, 0x12, 0xf2, 0x81, 0x40, 0x8f, 0x6b, 0x50, 0x62, 0xc1,
0x59, 0xd6, 0x5d, 0x22, 0x93, 0xb7, 0xe0, 0xb6, 0xe3, 0x9f, 0x8a, 0x30, 0x12, 0x1d, 0x9f, 0x1f,
0x7a, 0xa2, 0x8f, 0xee, 0x4a, 0x6c, 0x4a, 0x4b, 0xd6, 0xa1, 0xbc, 0xc3, 0x7b, 0xc7, 0xe2, 0x60,
0x3c, 0x14, 0x75, 0x1b, 0x9d, 0xa4, 0x8a, 0x64, 0xb5, 0xeb, 0xbe, 0x12, 0xf5, 0x7c, 0xd3, 0xda,
0xac, 0xb2, 0x54, 0x31, 0xcd, 0xb7, 0x30, 0xc3, 0x97, 0x50, 0xb8, 0xc5, 0xb8, 0x7f, 0x94, 0x70,
0x28, 0x22, 0x87, 0x09, 0x1d, 0xd9, 0x80, 0xe2, 0x13, 0x57, 0x78, 0xfd, 0xa8, 0xbe, 0xd4, 0xb4,
0x37, 0x2b, 0xad, 0x3b, 0x5b, 0x26, 0x7e, 0x5b, 0xa8, 0x67, 0x7a, 0x99, 0x52, 0xb8, 0xed, 0x0c,
0x86, 0x41, 0x28, 0x99, 0x88, 0x86, 0x81, 0x1f, 0x09, 0x52, 0x03, 0xbb, 0x13, 0x86, 0xfa, 0xec,
0xea, 0x93, 0x7e, 0x0f, 0xb5, 0xc7, 0x5e, 0xd0, 0x3b, 0x69, 0x73, 0xc9, 0x99, 0xf8, 0x6e, 0x24,
0x22, 0x49, 0x96, 0xa1, 0x80, 0x59, 0xd0, 0xb8, 0x58, 0x50, 0x5a, 0x8c, 0xa4, 0x0e, 0x73, 0x2c,
0x28, 0x2d, 0xda, 0x63, 0x28, 0xf2, 0x2c, 0x16, 0x94, 0xb6, 0xeb, 0xb9, 0xbd, 0x38, 0x04, 0x79,
0x16, 0x0b, 0x84, 0x40, 0xfe, 0xa5, 0x2b, 0xce, 0xf4, 0xb9, 0xf1, 0x9b, 0x3a, 0x70, 0x37, 0xb3,
0xbf, 0xa6, 0xb9, 0x02, 0x45, 0x16, 0x9c, 0x39, 0xed, 0xa8, 0x6e, 0x35, 0xed, 0xcd, 0x3c, 0xd3,
0x12, 0x46, 0x17, 0xd3, 0xaf, 0x96, 0x72, 0xb8, 0x94, 0x2a, 0xe8, 0x2a, 0x14, 0x30, 0xd4, 0xea,
0x94, 0xa9, 0xad, 0xfa, 0xa4, 0xff, 0x5a, 0x50, 0xde, 0xe5, 0xe7, 0x48, 0x23, 0x22, 0x8f, 0xa0,
0xd4, 0x95, 0xdc, 0xef, 0xf3, 0xb0, 0x8f, 0xa0, 0x4a, 0xeb, 0xcd, 0x34, 0x84, 0x09, 0x6c, 0xcb,
0x60, 0x3a, 0xbe, 0x0c, 0xc7, 0x2c, 0x31, 0x21, 0xdb, 0xb0, 0xa4, 0x6b, 0x02, 0x39, 0x54, 0x5a,
0xcd, 0x79, 0xd6, 0x49, 0xd9, 0x28, 0x63, 0x63, 0xb0, 0xf6, 0x31, 0x54, 0x27, 0xdc, 0x2a, 0xae,
0x27, 0x62, 0x6c, 0x32, 0x72, 0x22, 0xc6, 0x2a, 0x76, 0xa7, 0xdc, 0x1b, 0xc5, 0x71, 0xce, 0xb3,
0x58, 0xd8, 0xce, 0x7d, 0x68, 0xad, 0x6d, 0xc3, 0xad, 0xac, 0xd7, 0xeb, 0xd8, 0xd2, 0x6f, 0x80,
0xec, 0x84, 0x82, 0x4b, 0x81, 0xf4, 0x76, 0x45, 0x14, 0xf1, 0x23, 0xb1, 0x38, 0xd3, 0x71, 0xf6,
0x72, 0xd9, 0xec, 0xad, 0x43, 0xd9, 0x89, 0xcc, 0xc1, 0x6d, 0xac, 0xcb, 0x54, 0x41, 0x1f, 0x00,
0x69, 0x0b, 0x4f, 0x48, 0xa1, 0xfb, 0xf7, 0x12, 0xff, 0xb4, 0x6b, 0xb8, 0x5c, 0x8d, 0x25, 0x1b,
0x90, 0x57, 0xad, 0x8b, 0x54, 0x2a, 0xad, 0xff, 0xa7, 0x91, 0x4e, 0xe6, 0x04, 0x43, 0x00, 0x75,
0x8d, 0x53, 0xdd, 0xee, 0x57, 0x1c, 0x70, 0x4e, 0x29, 0x9b, 0xad, 0xec, 0xe9, 0xad, 0x92, 0x01,
0xa2, 0xb7, 0xfa, 0xc4, 0x9c, 0xf5, 0xa6, 0x5b, 0xd1, 0xaf, 0xb5, 0x56, 0xb5, 0xc4, 0x9e, 0x5a,
0x8d, 0x6d, 0xf0, 0x7b, 0xf1, 0x91, 0xa7, 0x78, 0x28, 0xdf, 0xaa, 0x87, 0xa2, 0xba, 0xdd, 0xb4,
0x95, 0x6f, 0x14, 0xe8, 0x43, 0x28, 0x76, 0x7b, 0xc7, 0x62, 0xc0, 0xc9, 0xdb, 0xaa, 0x50, 0xfb,
0xe2, 0x5c, 0x44, 0xba, 0xcc, 0xef, 0x4c, 0x85, 0x8f, 0x99, 0x75, 0xfa, 0xb3, 0xa5, 0xd9, 0x2f,
0x60, 0x54, 0xc4, 0xbd, 0xa3, 0x7a, 0x7e, 0x66, 0xe2, 0x28, 0x3d, 0xd3, 0xcb, 0xa4, 0x03, 0x35,
0xc7, 0x1f, 0x8e, 0x64, 0x5b, 0x7c, 0xeb, 0xfa, 0xae, 0x74, 0x03, 0x3f, 0xaa, 0x17, 0xd1, 0x64,
0x35, 0xbb, 0xf5, 0x04, 0x82, 0xcd, 0x98, 0xd0, 0x1f, 0x2d, 0xb8, 0x33, 0xa5, 0xbc, 0x82, 0x57,
0xee, 0x72, 0x5e, 0x1f, 0x24, 0x23, 0xd3, 0x46, 0x60, 0x63, 0x21, 0x9b, 0xc9, 0x09, 0xfa, 0x9b,
0x05, 0xcb, 0xf3, 0x00, 0x73, 0xd9, 0x34, 0x00, 0x9e, 0x85, 0xee, 0x80, 0x87, 0xe3, 0xcf, 0xc5,
0x58, 0xdf, 0x1e, 0x19, 0x0d, 0xf9, 0x12, 0x56, 0xa6, 0x7c, 0x7d, 0xda, 0x8b, 0x43, 0x14, 0x93,
0xba, 0xbf, 0x90, 0x54, 0x8c, 0x63, 0x0b, 0xcc, 0xe9, 0xdf, 0x16, 0xdc, 0x9b, 0xbb, 0x94, 0x56,
0x9f, 0x95, 0x2d, 0xf4, 0x07, 0x50, 0x7b, 0xa9, 0x06, 0x43, 0x5b, 0x44, 0xd2, 0xf5, 0xb9, 0x42,
0xea, 0xf2, 0x9c, 0xd1, 0x13, 0x07, 0x4a, 0xa8, 0xdb, 0xe5, 0x43, 0x4d, 0xf3, 0x9d, 0x2b, 0x68,
0x6e, 0x19, 0xbc, 0x9e, 0x9b, 0x46, 0x54, 0x64, 0x70, 0x8e, 0x9b, 0x4b, 0x01, 0x05, 0x35, 0x11,
0x27, 0x0c, 0xae, 0x35, 0xd5, 0x02, 0x58, 0x37, 0x93, 0x64, 0x82, 0xc9, 0xe5, 0x3d, 0xf9, 0x11,
0x40, 0x0a, 0xd5, 0xed, 0x7e, 0x49, 0x7d, 0x66, 0xc0, 0xf4, 0x29, 0xac, 0x9b, 0x31, 0x77, 0x8d,
0x0d, 0x4d, 0xb5, 0xe4, 0xd2, 0x6a, 0xa1, 0x1d, 0xb0, 0x5f, 0x30, 0x47, 0x5d, 0x75, 0xd8, 0xad,
0x26, 0x45, 0x5a, 0x52, 0x26, 0x4f, 0x83, 0x48, 0x1a, 0x13, 0xf5, 0xad, 0x74, 0xcf, 0x82, 0x50,
0x22, 0xe3, 0x2a, 0xc3, 0x6f, 0xea, 0x40, 0x6d, 0x2f, 0xe8, 0x8b, 0xae, 0xe4, 0x32, 0x99, 0x44,
0xf7, 0xd1, 0x35, 0x3a, 0xac, 0xb4, 0xaa, 0xe9, 0xc1, 0x5e, 0x30, 0x87, 0xe1, 0xa6, 0x6a, 0xc0,
0x2b, 0x03, 0x33, 0x94, 0x50, 0xa0, 0x3f, 0x59, 0x00, 0xc6, 0xd7, 0x28, 0xba, 0xda, 0xcb, 0xfb,
0x99, 0x3b, 0x75, 0x76, 0x58, 0x25, 0x4b, 0x2c, 0x73, 0xf3, 0x6e, 0x9a, 0xd9, 0xa4, 0xa3, 0x5e,
0x4b, 0xf1, 0xb1, 0x5e, 0x9f, 0x9f, 0x53, 0x0f, 0xaa, 0x3b, 0xde, 0x28, 0x92, 0x22, 0xd4, 0x74,
0x12, 0xce, 0x56, 0x86, 0x33, 0xd9, 0x80, 0x25, 0xa4, 0x2c, 0xa4, 0x1e, 0x01, 0x53, 0x44, 0xcd,
0x2a, 0x3e, 0x1d, 0x62, 0x7f, 0x4e, 0x3b, 0x79, 0xb6, 0x19, 0x05, 0xed, 0x42, 0x61, 0x71, 0x5f,
0x13, 0xc8, 0xe3, 0x63, 0x4f, 0xa7, 0x02, 0xdf, 0x79, 0x35, 0xb0, 0x77, 0xdd, 0xb8, 0x76, 0x6c,
0xa6, 0x3e, 0x51, 0xc3, 0xcf, 0xb1, 0xb6, 0x95, 0x86, 0xab, 0x6b, 0xee, 0x6e, 0x5c, 0x2b, 0x6a,
0x2e, 0xdf, 0xe4, 0x42, 0x32, 0xef, 0x25, 0x3b, 0xf3, 0x5e, 0xfa, 0x25, 0x07, 0x77, 0x99, 0x88,
0xdc, 0x57, 0xc2, 0xf1, 0x23, 0x19, 0x8e, 0x92, 0x3e, 0xff, 0x2c, 0x38, 0x74, 0xda, 0xe8, 0xd5,
0x66, 0xb1, 0x60, 0x32, 0x98, 0x5b, 0x98, 0xc1, 0x77, 0xd5, 0x0b, 0x3b, 0x08, 0xfb, 0xaa, 0xd9,
0x83, 0x50, 0xe7, 0x64, 0x0a, 0x98, 0x45, 0x90, 0xf7, 0x60, 0xa9, 0x1b, 0x8c, 0xc2, 0x5e, 0x72,
0x13, 0xac, 0xa4, 0xe0, 0x98, 0x55, 0xbc, 0xcc, 0x0c, 0x2c, 0x93, 0xf1, 0xc2, 0xe5, 0x19, 0x27,
0x8f, 0xa6, 0x32, 0x8e, 0x6f, 0xdf, 0x4a, 0xeb, 0x8d, 0xd4, 0x60, 0x62, 0x99, 0x4d, 0xa2, 0xe9,
0x0f, 0x16, 0xdc, 0xca, 0x52, 0x78, 0xad, 0x2e, 0x88, 0x53, 0x91, 0x9b, 0x9b, 0x0a, 0x7b, 0x5e,
0x2a, 0xf2, 0x69, 0x2a, 0xd2, 0x67, 0x52, 0x21, 0xf3, 0x4c, 0xa2, 0xc7, 0xb0, 0x3a, 0x93, 0x9f,
0x9d, 0x60, 0x30, 0x54, 0x85, 0x70, 0xd3, 0x3c, 0x2d, 0x43, 0xa1, 0x13, 0x86, 0x3a, 0x43, 0x65,
0x16, 0x0b, 0xf4, 0x2b, 0xb8, 0xd7, 0x15, 0x32, 0x93, 0x9e, 0x4c, 0xff, 0xef, 0x7b, 0xfd, 0x05,
0x27, 0xdf, 0xf7, 0xfa, 0x0a, 0xb0, 0x27, 0xce, 0x16, 0x6c, 0xb8, 0x27, 0xce, 0xe8, 0x73, 0x28,
0x1d, 0x04, 0xc3, 0xc0, 0x0b, 0x8e, 0xc6, 0xd9, 0x16, 0xb3, 0x5e, 0xbf, 0xc5, 0x72, 0x53, 0x2d,
0xf6, 0xb8, 0xf6, 0xfb, 0x45, 0xc3, 0xfa, 0xe3, 0xa2, 0x61, 0xfd, 0x79, 0xd1, 0xb0, 0x7e, 0xfd,
0xab, 0xf1, 0xbf, 0xc3, 0x22, 0xfe, 0xfd, 0x3d, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xb9, 0x4f,
0x86, 0xdb, 0x0e, 0x0e, 0x00, 0x00,
// 1229 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0x1b, 0x45,
0x14, 0x67, 0xbd, 0xb6, 0x63, 0x3f, 0xc7, 0x8d, 0x33, 0xa4, 0xc1, 0x89, 0x22, 0xd7, 0xcc, 0x81,
0x84, 0x4a, 0x04, 0x70, 0x25, 0x04, 0x41, 0x95, 0xa0, 0xb1, 0xab, 0x2e, 0x90, 0xa4, 0x1d, 0xa7,
0x45, 0x70, 0x40, 0x9a, 0xd8, 0x43, 0xb2, 0xca, 0x7a, 0xd7, 0xec, 0x8e, 0x93, 0xb8, 0x07, 0x6e,
0x70, 0x80, 0x3b, 0xe2, 0xce, 0x97, 0xe1, 0xc8, 0x47, 0x40, 0xe1, 0x43, 0x20, 0x71, 0x01, 0xcd,
0xbf, 0xdd, 0xf5, 0xda, 0x4e, 0x9a, 0x88, 0xdb, 0xbe, 0x37, 0xbf, 0xf7, 0xe6, 0x37, 0xef, 0xdf,
0xcc, 0x42, 0x75, 0x18, 0xba, 0x67, 0x94, 0xb3, 0xed, 0x61, 0x18, 0xf0, 0x00, 0x95, 0x5c, 0x9f,
0xb3, 0xd0, 0xa7, 0x1e, 0x3e, 0x80, 0xb2, 0xe3, 0xf7, 0xd9, 0xc5, 0x1e, 0xe3, 0x14, 0x35, 0xa1,
0xb2, 0x1b, 0x78, 0xa3, 0x81, 0xff, 0x05, 0x3d, 0x62, 0x5e, 0xdd, 0x6a, 0x5a, 0x5b, 0x65, 0x92,
0x56, 0x09, 0xc4, 0xa1, 0x3b, 0x60, 0xcf, 0x46, 0xd4, 0xe7, 0xa3, 0x41, 0x3d, 0xa7, 0x10, 0x29,
0x15, 0xfe, 0xc7, 0x82, 0xf2, 0xe3, 0x90, 0x0e, 0x98, 0xf4, 0xb8, 0x0e, 0x25, 0x12, 0x9c, 0xa7,
0xdd, 0xc5, 0x32, 0x7a, 0x0b, 0xee, 0x38, 0xfe, 0x19, 0x0b, 0x23, 0xd6, 0xf1, 0xe9, 0x91, 0xc7,
0xfa, 0xd2, 0x5d, 0x89, 0x64, 0xb4, 0x68, 0x03, 0xca, 0xbb, 0xb4, 0x77, 0xc2, 0x0e, 0xc7, 0x43,
0x56, 0xb7, 0xa5, 0x93, 0x44, 0x11, 0xaf, 0x76, 0xdd, 0x97, 0xac, 0x9e, 0x6f, 0x5a, 0x5b, 0x55,
0x92, 0x28, 0xb2, 0x7c, 0x0b, 0x53, 0x7c, 0x11, 0x86, 0x45, 0x42, 0xfd, 0xe3, 0x98, 0x43, 0x51,
0x72, 0x98, 0xd0, 0xa1, 0x4d, 0x28, 0x3e, 0x76, 0x99, 0xd7, 0x8f, 0xea, 0x0b, 0x4d, 0x7b, 0xab,
0xd2, 0x5a, 0xda, 0x36, 0xf1, 0xdb, 0x96, 0x7a, 0xa2, 0x97, 0x31, 0x86, 0x3b, 0xce, 0x60, 0x18,
0x84, 0x9c, 0xb0, 0x68, 0x18, 0xf8, 0x11, 0x43, 0x35, 0xb0, 0x3b, 0x61, 0xa8, 0xcf, 0x2e, 0x3e,
0xf1, 0xf7, 0x50, 0x7b, 0xe4, 0x05, 0xbd, 0xd3, 0x36, 0xe5, 0x94, 0xb0, 0xef, 0x46, 0x2c, 0xe2,
0x68, 0x05, 0x0a, 0x32, 0x0b, 0x1a, 0xa7, 0x04, 0xa1, 0x95, 0x91, 0xd4, 0x61, 0x56, 0x82, 0xd0,
0x4a, 0x7b, 0x19, 0x8a, 0x3c, 0x51, 0x82, 0xd0, 0x76, 0x3d, 0xb7, 0xa7, 0x42, 0x90, 0x27, 0x4a,
0x40, 0x08, 0xf2, 0x2f, 0x5c, 0x76, 0xae, 0xcf, 0x2d, 0xbf, 0xb1, 0x03, 0xcb, 0xa9, 0xfd, 0x35,
0xcd, 0x55, 0x28, 0x92, 0xe0, 0xdc, 0x69, 0x47, 0x75, 0xab, 0x69, 0x6f, 0xe5, 0x89, 0x96, 0x64,
0x74, 0x65, 0xfa, 0xc5, 0x52, 0x4e, 0x2e, 0x25, 0x0a, 0xbc, 0x06, 0x05, 0x19, 0x6a, 0x71, 0xca,
0xc4, 0x56, 0x7c, 0xe2, 0x7f, 0x2d, 0x28, 0xef, 0xd1, 0x0b, 0x49, 0x23, 0x42, 0x0f, 0xa1, 0xd4,
0xe5, 0xd4, 0xef, 0xd3, 0xb0, 0x2f, 0x41, 0x95, 0xd6, 0x9b, 0x49, 0x08, 0x63, 0xd8, 0xb6, 0xc1,
0x74, 0x7c, 0x1e, 0x8e, 0x49, 0x6c, 0x82, 0x76, 0x60, 0x41, 0xd7, 0x84, 0xe4, 0x50, 0x69, 0x35,
0x67, 0x59, 0xc7, 0x65, 0x23, 0x8c, 0x8d, 0xc1, 0xfa, 0xc7, 0x50, 0x9d, 0x70, 0x2b, 0xb8, 0x9e,
0xb2, 0xb1, 0xc9, 0xc8, 0x29, 0x1b, 0x8b, 0xd8, 0x9d, 0x51, 0x6f, 0xa4, 0xe2, 0x9c, 0x27, 0x4a,
0xd8, 0xc9, 0x7d, 0x68, 0xad, 0xef, 0xc0, 0x62, 0xda, 0xeb, 0x4d, 0x6c, 0xf1, 0x37, 0x80, 0x76,
0x43, 0x46, 0x39, 0x93, 0xf4, 0xf6, 0x58, 0x14, 0xd1, 0x63, 0x36, 0x3f, 0xd3, 0x2a, 0x7b, 0xb9,
0x74, 0xf6, 0x36, 0xa0, 0xec, 0x44, 0xe6, 0xe0, 0xb6, 0xac, 0xcb, 0x44, 0x81, 0xef, 0x03, 0x6a,
0x33, 0x8f, 0x71, 0xa6, 0xfb, 0xf7, 0x0a, 0xff, 0xb8, 0x6b, 0xb8, 0x5c, 0x8f, 0x45, 0x9b, 0x90,
0x17, 0xad, 0x2b, 0xa9, 0x54, 0x5a, 0xaf, 0x27, 0x91, 0x8e, 0xe7, 0x04, 0x91, 0x00, 0xec, 0x1a,
0xa7, 0xba, 0xdd, 0xaf, 0x39, 0xe0, 0x8c, 0x52, 0x36, 0x5b, 0xd9, 0xd9, 0xad, 0xe2, 0x01, 0xa2,
0xb7, 0xfa, 0xc4, 0x9c, 0xf5, 0xb6, 0x5b, 0xe1, 0xaf, 0xb5, 0x56, 0xb4, 0xc4, 0xbe, 0x58, 0x55,
0x36, 0xf2, 0x7b, 0xfe, 0x91, 0x33, 0x3c, 0x84, 0x6f, 0xd1, 0x43, 0x51, 0xdd, 0x6e, 0xda, 0xc2,
0xb7, 0x14, 0xf0, 0x03, 0x28, 0x76, 0x7b, 0x27, 0x6c, 0x40, 0xd1, 0xdb, 0xa2, 0x50, 0xfb, 0xec,
0x82, 0x45, 0xba, 0xcc, 0x97, 0x32, 0xe1, 0x23, 0x66, 0x1d, 0xff, 0x6c, 0x69, 0xf6, 0x73, 0x18,
0x15, 0xe5, 0xde, 0x51, 0x3d, 0x3f, 0x35, 0x71, 0x84, 0x9e, 0xe8, 0x65, 0xd4, 0x81, 0x9a, 0xe3,
0x0f, 0x47, 0xbc, 0xcd, 0xbe, 0x75, 0x7d, 0x97, 0xbb, 0x81, 0x1f, 0xd5, 0x8b, 0xd2, 0x64, 0x2d,
0xbd, 0xf5, 0x04, 0x82, 0x4c, 0x99, 0xe0, 0x1f, 0x2d, 0x58, 0xca, 0x28, 0xaf, 0xe1, 0x95, 0xbb,
0x9a, 0xd7, 0x07, 0xf1, 0xc8, 0xb4, 0x25, 0xb0, 0x31, 0x97, 0xcd, 0xe4, 0x04, 0xfd, 0xcd, 0x82,
0x95, 0x59, 0x80, 0x99, 0x6c, 0x1a, 0x00, 0x4f, 0x43, 0x77, 0x40, 0xc3, 0xf1, 0xe7, 0x6c, 0xac,
0x6f, 0x8f, 0x94, 0x06, 0x7d, 0x09, 0xab, 0x19, 0x5f, 0x9f, 0xf6, 0x54, 0x88, 0x14, 0xa9, 0x7b,
0x73, 0x49, 0x29, 0x1c, 0x99, 0x63, 0x8e, 0xff, 0xb6, 0xe0, 0xee, 0xcc, 0xa5, 0xa4, 0xfa, 0xac,
0x74, 0xa1, 0xdf, 0x87, 0xda, 0x0b, 0x31, 0x18, 0xda, 0x2c, 0xe2, 0xae, 0x4f, 0x05, 0x52, 0x97,
0xe7, 0x94, 0x1e, 0x39, 0x50, 0x92, 0xba, 0x3d, 0x3a, 0xd4, 0x34, 0xdf, 0xb9, 0x86, 0xe6, 0xb6,
0xc1, 0xeb, 0xb9, 0x69, 0x44, 0x41, 0x46, 0xce, 0x71, 0x73, 0x29, 0x48, 0x41, 0x4c, 0xc4, 0x09,
0x83, 0x1b, 0x4d, 0xb5, 0x00, 0x36, 0xcc, 0x24, 0x99, 0x60, 0x72, 0x75, 0x4f, 0x7e, 0x04, 0x90,
0x40, 0x75, 0xbb, 0x5f, 0x51, 0x9f, 0x29, 0x30, 0x7e, 0x02, 0x1b, 0x66, 0xcc, 0xdd, 0x60, 0x43,
0x53, 0x2d, 0xb9, 0xa4, 0x5a, 0x70, 0x07, 0xec, 0xe7, 0xc4, 0x11, 0x57, 0x9d, 0xec, 0x56, 0x93,
0x22, 0x2d, 0x09, 0x93, 0x27, 0x41, 0xc4, 0x8d, 0x89, 0xf8, 0x16, 0xba, 0xa7, 0x41, 0xc8, 0x25,
0xe3, 0x2a, 0x91, 0xdf, 0xd8, 0x81, 0xda, 0x7e, 0xd0, 0x67, 0x5d, 0x4e, 0x79, 0x3c, 0x89, 0xee,
0x49, 0xd7, 0xd2, 0x61, 0xa5, 0x55, 0x4d, 0x0e, 0xf6, 0x9c, 0x38, 0x44, 0x6e, 0x2a, 0x06, 0xbc,
0x30, 0x30, 0x43, 0x49, 0x0a, 0xf8, 0x27, 0x0b, 0xc0, 0xf8, 0x1a, 0x45, 0xd7, 0x7b, 0x79, 0x3f,
0x75, 0xa7, 0x4e, 0x0f, 0xab, 0x78, 0x89, 0xa4, 0x6e, 0xde, 0x2d, 0x33, 0x9b, 0x74, 0xd4, 0x6b,
0x09, 0x5e, 0xe9, 0xf5, 0xf9, 0x29, 0xf6, 0xa0, 0xba, 0xeb, 0x8d, 0x22, 0xce, 0x42, 0x4d, 0x27,
0xe6, 0x6c, 0xa5, 0x38, 0xa3, 0x4d, 0x58, 0x90, 0x94, 0x19, 0xd7, 0x23, 0x20, 0x43, 0xd4, 0xac,
0xca, 0xa7, 0x83, 0xf2, 0xe7, 0xb4, 0xe3, 0x67, 0x9b, 0x51, 0xe0, 0x2e, 0x14, 0xe6, 0xf7, 0x35,
0x82, 0xbc, 0x7c, 0xec, 0xe9, 0x54, 0xc8, 0x77, 0x5e, 0x0d, 0xec, 0x3d, 0x57, 0xd5, 0x8e, 0x4d,
0xc4, 0xa7, 0xd4, 0xd0, 0x0b, 0x59, 0xdb, 0x42, 0x43, 0xc5, 0x35, 0xb7, 0xac, 0x8a, 0x53, 0xcc,
0xe5, 0xdb, 0x5c, 0x48, 0xe6, 0xbd, 0x64, 0xa7, 0xde, 0x4b, 0x5d, 0x58, 0x56, 0x05, 0xf8, 0x7f,
0x3a, 0xfd, 0x25, 0x07, 0xcb, 0x84, 0x45, 0xee, 0x4b, 0xe6, 0xf8, 0x11, 0x0f, 0x47, 0xf1, 0xf0,
0xf8, 0x2c, 0x38, 0x72, 0xda, 0xd2, 0xab, 0x4d, 0x94, 0x60, 0xca, 0x22, 0x37, 0xb7, 0x2c, 0xde,
0x15, 0xcf, 0xf6, 0x20, 0xec, 0x8b, 0x09, 0x12, 0x84, 0x3a, 0xd1, 0x19, 0x60, 0x1a, 0x81, 0xde,
0x83, 0x85, 0x6e, 0x30, 0x0a, 0x7b, 0xf1, 0xf5, 0xb2, 0x9a, 0x80, 0x15, 0x2b, 0xb5, 0x4c, 0x0c,
0x2c, 0x55, 0x46, 0x85, 0xab, 0xcb, 0x08, 0x3d, 0xcc, 0x94, 0x91, 0x7c, 0x50, 0x57, 0x5a, 0x6f,
0x24, 0x06, 0x13, 0xcb, 0x64, 0x12, 0x8d, 0x7f, 0xb0, 0x60, 0x31, 0x4d, 0xe1, 0x95, 0x5a, 0x4b,
0xa5, 0x22, 0x37, 0x33, 0x15, 0xf6, 0xac, 0x54, 0xe4, 0x93, 0x54, 0x24, 0x6f, 0xaf, 0x42, 0xea,
0xed, 0x85, 0x4f, 0x60, 0x6d, 0x2a, 0x3f, 0xbb, 0xc1, 0x60, 0x28, 0x0a, 0xe1, 0xb6, 0x79, 0x5a,
0x81, 0x42, 0x27, 0x0c, 0x75, 0x86, 0xca, 0x44, 0x09, 0xf8, 0x2b, 0xb8, 0xdb, 0x65, 0x3c, 0x95,
0x9e, 0xd4, 0x50, 0x39, 0xf0, 0xfa, 0x73, 0x4e, 0x7e, 0xe0, 0xf5, 0x05, 0x60, 0x9f, 0x9d, 0xcf,
0xd9, 0x70, 0x9f, 0x9d, 0xe3, 0x67, 0x50, 0x3a, 0x0c, 0x86, 0x81, 0x17, 0x1c, 0x8f, 0xd3, 0x7d,
0x6b, 0xbd, 0x7a, 0xdf, 0xe6, 0x32, 0x7d, 0xfb, 0xa8, 0xf6, 0xfb, 0x65, 0xc3, 0xfa, 0xe3, 0xb2,
0x61, 0xfd, 0x79, 0xd9, 0xb0, 0x7e, 0xfd, 0xab, 0xf1, 0xda, 0x51, 0x51, 0xfe, 0x52, 0x3e, 0xf8,
0x2f, 0x00, 0x00, 0xff, 0xff, 0x59, 0x94, 0x30, 0x6d, 0x63, 0x0e, 0x00, 0x00,
}

View file

@ -145,6 +145,12 @@ message Field {
int64 Max = 4;
}
message CreateViewMessage {
string Index = 1;
string Frame = 2;
string View = 3;
}
message DeleteViewMessage {
string Index = 1;
string Frame = 2;

View file

@ -408,6 +408,15 @@ func (s *Server) ReceiveMessage(pb proto.Message) error {
if err != nil {
return err
}
case *internal.CreateViewMessage:
f := s.Holder.Frame(obj.Index, obj.Frame)
if f == nil {
return fmt.Errorf("Local Frame not found: %s", obj.Frame)
}
_, err := f.CreateViewIfNotExistsBase(obj.View)
if err != nil {
return err
}
case *internal.DeleteViewMessage:
f := s.Holder.Frame(obj.Index, obj.Frame)
if f == nil {

View file

@ -270,10 +270,11 @@ func TestMain_SetColumnAttrsWithColumnOption(t *testing.T) {
// Ensure program can set bits on one cluster and then restore to a second cluster.
func TestMain_FrameRestore(t *testing.T) {
mains1 := test.NewMainArrayWithCluster(2)
m0 := mains1[0]
m10 := mains1[0]
m11 := mains1[1]
// Create frames.
client := m0.Client()
client := m10.Client()
if err := client.CreateIndex(context.Background(), "i", pilosa.IndexOptions{}); err != nil && err != pilosa.ErrIndexExists {
t.Fatal("create index:", err)
}
@ -282,7 +283,7 @@ func TestMain_FrameRestore(t *testing.T) {
}
// Write data on first cluster.
if _, err := m0.Query("i", "", `
if _, err := m10.Query("i", "", `
SetBit(rowID=1, frame="f", columnID=100)
SetBit(rowID=1, frame="f", columnID=1000)
SetBit(rowID=1, frame="f", columnID=100000)
@ -295,7 +296,7 @@ func TestMain_FrameRestore(t *testing.T) {
}
// Query row on first cluster.
if res, err := m0.Query("i", "", `Bitmap(rowID=1, frame="f")`); err != nil {
if res, err := m10.Query("i", "", `Bitmap(rowID=1, frame="f")`); err != nil {
t.Fatal("bitmap query:", err)
} else if res != `{"results":[{"attrs":{},"bits":[100,1000,100000,200000,400000,600000,800000]}]}`+"\n" {
t.Fatalf("unexpected result: %s", res)
@ -303,26 +304,37 @@ func TestMain_FrameRestore(t *testing.T) {
// Start second cluster.
mains2 := test.NewMainArrayWithCluster(2)
m2 := mains2[0]
defer m2.Close()
m20 := mains2[0]
defer m20.Close()
m21 := mains2[1]
defer m21.Close()
// Import from first cluster.
client, err := pilosa.NewInternalHTTPClient(m2.Server.URI.HostPort(), pilosa.GetHTTPClient(nil))
client20, err := pilosa.NewInternalHTTPClient(m20.Server.URI.HostPort(), pilosa.GetHTTPClient(nil))
if err != nil {
t.Fatal("new client:", err)
}
if err := m2.Client().CreateIndex(context.Background(), "i", pilosa.IndexOptions{}); err != nil && err != pilosa.ErrIndexExists {
client21, err := pilosa.NewInternalHTTPClient(m21.Server.URI.HostPort(), pilosa.GetHTTPClient(nil))
if err != nil {
t.Fatal("new client:", err)
}
if err := m20.Client().CreateIndex(context.Background(), "i", pilosa.IndexOptions{}); err != nil && err != pilosa.ErrIndexExists {
t.Fatal("create new index:", err)
}
if err := m2.Client().CreateFrame(context.Background(), "i", "f", pilosa.FrameOptions{}); err != nil {
if err := m20.Client().CreateFrame(context.Background(), "i", "f", pilosa.FrameOptions{}); err != nil {
t.Fatal("create new frame:", err)
}
if err := client.RestoreFrame(context.Background(), m0.Server.URI.HostPort(), "i", "f"); err != nil {
if err := client20.RestoreFrame(context.Background(), m10.Server.URI.HostPort(), "i", "f"); err != nil {
t.Fatal("restore frame:", err)
}
if err := client21.RestoreFrame(context.Background(), m11.Server.URI.HostPort(), "i", "f"); err != nil {
t.Fatal("restore frame:", err)
}
// Query row on second cluster.
if res, err := m2.Query("i", "", `Bitmap(rowID=1, frame="f")`); err != nil {
if res, err := m20.Query("i", "", `Bitmap(rowID=1, frame="f")`); err != nil {
t.Fatal("another bitmap query:", err)
} else if res != `{"results":[{"attrs":{},"bits":[100,1000,100000,200000,400000,600000,800000]}]}`+"\n" {
t.Fatalf("2unexpected result: %s", res)