forked from quic-go/quic-go
Merge pull request #2486 from lucas-clemente/fix-qlog-test-time-decoding
fix decoding of timestamps and durations in qlog tests
This commit is contained in:
@@ -10,6 +10,8 @@ import (
|
|||||||
"github.com/francoispqt/gojay"
|
"github.com/francoispqt/gojay"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func milliseconds(dur time.Duration) float64 { return float64(dur.Nanoseconds()) / 1e6 }
|
||||||
|
|
||||||
var eventFields = [4]string{"relative_time", "category", "event", "data"}
|
var eventFields = [4]string{"relative_time", "category", "event", "data"}
|
||||||
|
|
||||||
type events []event
|
type events []event
|
||||||
@@ -39,7 +41,7 @@ var _ gojay.MarshalerJSONArray = event{}
|
|||||||
|
|
||||||
func (e event) IsNil() bool { return false }
|
func (e event) IsNil() bool { return false }
|
||||||
func (e event) MarshalJSONArray(enc *gojay.Encoder) {
|
func (e event) MarshalJSONArray(enc *gojay.Encoder) {
|
||||||
enc.Float64(float64(e.RelativeTime.Nanoseconds()) / 1e6)
|
enc.Float64(milliseconds(e.RelativeTime))
|
||||||
enc.String(e.Category().String())
|
enc.String(e.Category().String())
|
||||||
enc.String(e.Name())
|
enc.String(e.Name())
|
||||||
enc.Object(e.eventDetails)
|
enc.Object(e.eventDetails)
|
||||||
@@ -180,8 +182,6 @@ func (e eventPacketDropped) MarshalJSONObject(enc *gojay.Encoder) {
|
|||||||
enc.StringKey("trigger", e.Trigger.String())
|
enc.StringKey("trigger", e.Trigger.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
func milliseconds(dur time.Duration) float64 { return float64(dur.Nanoseconds()) / 1e6 }
|
|
||||||
|
|
||||||
type metrics struct {
|
type metrics struct {
|
||||||
MinRTT time.Duration
|
MinRTT time.Duration
|
||||||
SmoothedRTT time.Duration
|
SmoothedRTT time.Duration
|
||||||
|
|||||||
@@ -76,6 +76,9 @@ var _ = Describe("Tracer", func() {
|
|||||||
commonFields := trace["common_fields"].(map[string]interface{})
|
commonFields := trace["common_fields"].(map[string]interface{})
|
||||||
Expect(commonFields).To(HaveKeyWithValue("ODCID", "deadbeef"))
|
Expect(commonFields).To(HaveKeyWithValue("ODCID", "deadbeef"))
|
||||||
Expect(commonFields).To(HaveKeyWithValue("group_id", "deadbeef"))
|
Expect(commonFields).To(HaveKeyWithValue("group_id", "deadbeef"))
|
||||||
|
Expect(commonFields).To(HaveKey("reference_time"))
|
||||||
|
referenceTime := time.Unix(0, int64(commonFields["reference_time"].(float64)*1e6))
|
||||||
|
Expect(referenceTime).To(BeTemporally("~", time.Now(), 10*time.Millisecond))
|
||||||
Expect(trace).To(HaveKey("event_fields"))
|
Expect(trace).To(HaveKey("event_fields"))
|
||||||
for i, ef := range trace["event_fields"].([]interface{}) {
|
for i, ef := range trace["event_fields"].([]interface{}) {
|
||||||
Expect(ef.(string)).To(Equal(eventFields[i]))
|
Expect(ef.(string)).To(Equal(eventFields[i]))
|
||||||
@@ -108,12 +111,16 @@ var _ = Describe("Tracer", func() {
|
|||||||
traces := m["traces"].([]interface{})
|
traces := m["traces"].([]interface{})
|
||||||
Expect(traces).To(HaveLen(1))
|
Expect(traces).To(HaveLen(1))
|
||||||
trace := traces[0].(map[string]interface{})
|
trace := traces[0].(map[string]interface{})
|
||||||
|
Expect(trace).To(HaveKey("common_fields"))
|
||||||
|
commonFields := trace["common_fields"].(map[string]interface{})
|
||||||
|
Expect(commonFields).To(HaveKey("reference_time"))
|
||||||
|
referenceTime := time.Unix(0, int64(commonFields["reference_time"].(float64)*1e6))
|
||||||
Expect(trace).To(HaveKey("events"))
|
Expect(trace).To(HaveKey("events"))
|
||||||
for _, e := range trace["events"].([]interface{}) {
|
for _, e := range trace["events"].([]interface{}) {
|
||||||
ev := e.([]interface{})
|
ev := e.([]interface{})
|
||||||
Expect(ev).To(HaveLen(4))
|
Expect(ev).To(HaveLen(4))
|
||||||
entries = append(entries, entry{
|
entries = append(entries, entry{
|
||||||
Time: time.Now().Add(time.Duration(ev[0].(float64)) * time.Millisecond),
|
Time: referenceTime.Add(time.Duration(ev[0].(float64)*1e6) * time.Nanosecond),
|
||||||
Category: ev[1].(string),
|
Category: ev[1].(string),
|
||||||
Name: ev[2].(string),
|
Name: ev[2].(string),
|
||||||
Event: ev[3].(map[string]interface{}),
|
Event: ev[3].(map[string]interface{}),
|
||||||
@@ -499,8 +506,8 @@ var _ = Describe("Tracer", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("records when the timer is set", func() {
|
It("records when the timer is set", func() {
|
||||||
t := time.Now().Add(1337 * time.Millisecond)
|
timeout := time.Now().Add(137 * time.Millisecond)
|
||||||
tracer.SetLossTimer(TimerTypePTO, protocol.EncryptionHandshake, t)
|
tracer.SetLossTimer(TimerTypePTO, protocol.EncryptionHandshake, timeout)
|
||||||
entry := exportAndParseSingle()
|
entry := exportAndParseSingle()
|
||||||
Expect(entry.Time).To(BeTemporally("~", time.Now(), 10*time.Millisecond))
|
Expect(entry.Time).To(BeTemporally("~", time.Now(), 10*time.Millisecond))
|
||||||
Expect(entry.Category).To(Equal("recovery"))
|
Expect(entry.Category).To(Equal("recovery"))
|
||||||
@@ -511,8 +518,8 @@ var _ = Describe("Tracer", func() {
|
|||||||
Expect(ev).To(HaveKeyWithValue("timer_type", "pto"))
|
Expect(ev).To(HaveKeyWithValue("timer_type", "pto"))
|
||||||
Expect(ev).To(HaveKeyWithValue("packet_number_space", "handshake"))
|
Expect(ev).To(HaveKeyWithValue("packet_number_space", "handshake"))
|
||||||
Expect(ev).To(HaveKey("delta"))
|
Expect(ev).To(HaveKey("delta"))
|
||||||
delta := time.Duration(ev["delta"].(float64)) * time.Millisecond
|
delta := time.Duration(ev["delta"].(float64)*1e6) * time.Nanosecond
|
||||||
Expect(entry.Time.Add(delta)).To(BeTemporally("~", t, 2*time.Millisecond))
|
Expect(entry.Time.Add(delta)).To(BeTemporally("~", timeout, 10*time.Microsecond))
|
||||||
})
|
})
|
||||||
|
|
||||||
It("records when the loss timer expires", func() {
|
It("records when the loss timer expires", func() {
|
||||||
|
|||||||
Reference in New Issue
Block a user