err = proto.Unmarshal(buffer[0:n], envelope) if err != nil { panic(err) } var eventId = envelope.GetEventType().String() tracker := eventTracker{eventType: eventId} switch envelope.GetEventType() { case events.Envelope_HttpStart: tracker.name = envelope.GetHttpStart().GetPeerType().String() case events.Envelope_HttpStop: tracker.name = envelope.GetHttpStop().GetPeerType().String() case events.Envelope_Heartbeat: tracker.name = envelope.GetHeartbeat().GetControlMessageIdentifier().String() case events.Envelope_ValueMetric: tracker.name = envelope.GetValueMetric().GetName() case events.Envelope_CounterEvent: tracker.name = envelope.GetCounterEvent().GetName() default: panic("Unexpected message type") } if envelope.GetOrigin() != strings.Join(origin, "/") { panic("origin not as expected") } func() { lock.Lock()
Origin: proto.String("tst"), Identifier: factories.NewControlUUID(id), Timestamp: proto.Int64(time.Now().UnixNano()), ControlType: control.ControlMessage_HeartbeatRequest.Enum(), } heartbeatResponder.Respond(heartbeatRequest) Expect(wrappedEmitter.GetMessages()).To(HaveLen(1)) hbBytes := wrappedEmitter.GetMessages()[0] var heartbeat events.Envelope err := proto.Unmarshal(hbBytes, &heartbeat) Expect(err).NotTo(HaveOccurred()) heartbeatUuid := heartbeatRequest.GetIdentifier().String() Expect(heartbeat.GetHeartbeat().ControlMessageIdentifier.String()).To(Equal(heartbeatUuid)) }) It("logs an error when heartbeat emission fails", func() { wrappedEmitter.ReturnError = errors.New("fake error") logWriter := new(bytes.Buffer) log.SetOutput(logWriter) id, _ := uuid.NewV4() heartbeatRequest := &control.ControlMessage{ Origin: proto.String("tst"), Identifier: factories.NewControlUUID(id), Timestamp: proto.Int64(time.Now().UnixNano()), ControlType: control.ControlMessage_HeartbeatRequest.Enum(),