예제 #1
0
// tests that a Getter's Get method is only called once with two
// outstanding callers.  This is the proto variant.
func TestGetDupSuppressProto(t *testing.T) {
	once.Do(testSetup)
	// Start two getters. The first should block (waiting reading
	// from stringc) and the second should latch on to the first
	// one.
	resc := make(chan *testpb.TestMessage, 2)
	for i := 0; i < 2; i++ {
		go func() {
			tm := new(testpb.TestMessage)
			if err := protoGroup.Get(dummyCtx, fromChan, ProtoSink(tm)); err != nil {
				tm.Name = proto.String("ERROR:" + err.Error())
			}
			resc <- tm
		}()
	}

	// Wait a bit so both goroutines get merged together via
	// singleflight.
	// TODO(bradfitz): decide whether there are any non-offensive
	// debug/test hooks that could be added to singleflight to
	// make a sleep here unnecessary.
	time.Sleep(250 * time.Millisecond)

	// Unblock the first getter, which should unblock the second
	// as well.
	stringc <- "Fluffy"
	want := &testpb.TestMessage{
		Name: proto.String("ECHO:Fluffy"),
		City: proto.String("SOME-CITY"),
	}
	for i := 0; i < 2; i++ {
		select {
		case v := <-resc:
			if !reflect.DeepEqual(v, want) {
				t.Errorf(" Got: %v\nWant: %v", proto.CompactTextString(v), proto.CompactTextString(want))
			}
		case <-time.After(5 * time.Second):
			t.Errorf("timeout waiting on getter #%d of 2", i+1)
		}
	}
}
예제 #2
0
파일: protobuf.go 프로젝트: yunabe/codelab
func main() {
	p := Person{
		Name: proto.String("Taro Yamada"),
		Age:  proto.Int32(8),
	}

	pet := Pet{Name: proto.String("Mike")}
	p.Pet = append(p.Pet, &pet)
	fmt.Println("-- p.String()  --")
	fmt.Println(p.String())
	fmt.Println("-- MarshalText --")
	fmt.Print(PrintToString(&p)) // not compact

	fmt.Println("-- Marshal --")
	m, _ := proto.Marshal(&p)
	fmt.Println(m)

	fmt.Println("-- CompactTextString --")
	fmt.Println(proto.CompactTextString(&p))
}
예제 #3
0
파일: msg.pb.go 프로젝트: dcjones/doozer
func (this *request) String() string { return proto.CompactTextString(this) }
예제 #4
0
func (m *URLFetchResponse) String() string { return proto.CompactTextString(m) }
예제 #5
0
func (m *URLFetchServiceError) String() string { return proto.CompactTextString(m) }
예제 #6
0
func (m *MgxBidRequest) String() string { return proto.CompactTextString(m) }
예제 #7
0
func (m *RenewDelegationTokenRequestProto) String() string { return proto.CompactTextString(m) }
예제 #8
0
func (m *TokenProto) String() string { return proto.CompactTextString(m) }
예제 #9
0
파일: mesos.pb.go 프로젝트: nekto0n/gomes
func (m *Attribute) String() string { return proto.CompactTextString(m) }
예제 #10
0
파일: mesos.pb.go 프로젝트: nekto0n/gomes
func (m *Value_Text) String() string { return proto.CompactTextString(m) }
예제 #11
0
파일: mesos.pb.go 프로젝트: nekto0n/gomes
func (m *SlaveInfo) String() string { return proto.CompactTextString(m) }
예제 #12
0
파일: mesos.pb.go 프로젝트: nekto0n/gomes
func (m *MasterInfo) String() string { return proto.CompactTextString(m) }
예제 #13
0
파일: mesos.pb.go 프로젝트: nekto0n/gomes
func (m *ExecutorInfo) String() string { return proto.CompactTextString(m) }
예제 #14
0
파일: mesos.pb.go 프로젝트: nekto0n/gomes
func (m *CommandInfo_URI) String() string { return proto.CompactTextString(m) }
예제 #15
0
파일: mesos.pb.go 프로젝트: nekto0n/gomes
func (m *FrameworkInfo) String() string { return proto.CompactTextString(m) }
예제 #16
0
파일: state.pb.go 프로젝트: hardiku/gozer
func (m *Entry) String() string { return proto.CompactTextString(m) }
예제 #17
0
파일: state.pb.go 프로젝트: hardiku/gozer
func (m *Operation) String() string { return proto.CompactTextString(m) }
예제 #18
0
파일: mesos.pb.go 프로젝트: nekto0n/gomes
func (m *Resource) String() string { return proto.CompactTextString(m) }
예제 #19
0
func (m *GetDelegationTokenResponseProto) String() string { return proto.CompactTextString(m) }
예제 #20
0
파일: mesos.pb.go 프로젝트: nekto0n/gomes
func (m *ResourceStatistics) String() string { return proto.CompactTextString(m) }
예제 #21
0
func (m *MgxBidRequest_AdSlotUnion) String() string { return proto.CompactTextString(m) }
func (this *VoiceModeControl) String() string { return proto.CompactTextString(this) }
예제 #23
0
func (this *SumMessage) String() string { return proto.CompactTextString(this) }
func (this *SubChannelControlInfo) String() string { return proto.CompactTextString(this) }
예제 #25
0
func (m *URLFetchRequest) String() string { return proto.CompactTextString(m) }
func (this *ChannelSimpleInfo) String() string { return proto.CompactTextString(this) }
예제 #27
0
func (m *Forward) String() string { return proto.CompactTextString(m) }
func (this *FontStyleInfo) String() string { return proto.CompactTextString(this) }
예제 #29
0
파일: msg.pb.go 프로젝트: dcjones/doozer
func (this *response) String() string { return proto.CompactTextString(this) }
func (this *MicQueueOptions) String() string { return proto.CompactTextString(this) }