Commit 5d998940 authored by Matt Holt's avatar Matt Holt Committed by GitHub

Merge pull request #1165 from aishraj/master

Have milliseconds as the latency log time unit
parents 20a54d0e 733f622f
...@@ -286,11 +286,22 @@ func (r *replacer) getSubstitution(key string) string { ...@@ -286,11 +286,22 @@ func (r *replacer) getSubstitution(key string) string {
return r.emptyValue return r.emptyValue
} }
return roundDuration(time.Since(r.responseRecorder.start)).String() return roundDuration(time.Since(r.responseRecorder.start)).String()
case "{latency_ms}":
if r.responseRecorder == nil {
return r.emptyValue
}
elapsedDuration := time.Since(r.responseRecorder.start)
return strconv.FormatInt(convertToMilliseconds(elapsedDuration), 10)
} }
return r.emptyValue return r.emptyValue
} }
//convertToMilliseconds returns the number of milliseconds in the given duration
func convertToMilliseconds(d time.Duration) int64 {
return d.Nanoseconds() / 1e6
}
// Set sets key to value in the r.customReplacements map. // Set sets key to value in the r.customReplacements map.
func (r *replacer) Set(key, value string) { func (r *replacer) Set(key, value string) {
r.customReplacements["{"+key+"}"] = value r.customReplacements["{"+key+"}"] = value
......
...@@ -150,3 +150,21 @@ func TestRound(t *testing.T) { ...@@ -150,3 +150,21 @@ func TestRound(t *testing.T) {
} }
} }
} }
func TestMillisecondConverstion(t *testing.T) {
var testCases = map[time.Duration]int64{
2 * time.Second: 2000,
9039492 * time.Nanosecond: 9,
1000 * time.Microsecond: 1,
127 * time.Nanosecond: 0,
0 * time.Millisecond: 0,
255 * time.Millisecond: 255,
}
for dur, expected := range testCases {
numMillisecond := convertToMilliseconds(dur)
if numMillisecond != expected {
t.Errorf("Expected %v. Got %v", expected, numMillisecond)
}
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment