Revert "Revert "update code""

This reverts commit 8506cd5023.
This commit is contained in:
Cadey Ratio 2017-01-25 12:35:49 -08:00
parent 1b3112b6c8
commit 6398e2a01f
2 changed files with 32 additions and 27 deletions

49
main.go
View File

@ -25,6 +25,10 @@ const dateFormat = "2006-01-02T15:04:05.999999Z07:00"
const outDateFormat = "2006-01-02T15:04:05"
const outDateFormatNoSeconds = "2006-01-02T15:04"
var (
seenHosts []string
)
func ParseLogLine(line []byte) (*LogLine, error) {
sl := bytes.Split(line, []byte(" "))
@ -108,7 +112,8 @@ func main() {
_, ltm, _ := lastTime.Clock()
if llm != ltm {
processBuckets(ab)
processBuckets(lastTime, ab)
ab = map[string]*Bucket{}
lastTime = lastTime.Add(time.Minute)
@ -129,31 +134,41 @@ func main() {
ab[ll.Host] = b
}
processBuckets(ab)
}
// sees if the minute and hour field of a == the minute and hour field of b
func cmpTime(a, b time.Time) bool {
_, am, _ := a.Clock()
_, bm, _ := b.Clock()
return am == bm
processBuckets(lastTime, ab)
}
func toMS(dur time.Duration) int64 {
return dur.Nanoseconds() / 1000000
}
func processBuckets(set map[string]*Bucket) {
hosts := []string{}
for host, _ := range set {
hosts = append(hosts, host)
func contains(host string) bool {
for _, val := range seenHosts {
if val == host {
return true
}
}
sort.Sort(sort.StringSlice(hosts))
return false
}
func processBuckets(lt time.Time, set map[string]*Bucket) {
log.Printf("printing buckets for %s", lt.Format(outDateFormatNoSeconds))
for host, _ := range set {
if !contains(host) {
seenHosts = append(seenHosts, host)
}
}
sort.Sort(sort.StringSlice(seenHosts))
for _, host := range seenHosts {
bucket, ok := set[host]
if !ok {
fmt.Printf("%s,%s,0,0,0,0\n", lt.Format(outDateFormat), host)
return
}
for _, host := range hosts {
bucket := set[host]
var longest time.Duration
var shortest time.Duration
var total time.Duration

View File

@ -2,7 +2,6 @@ package main
import (
"testing"
"time"
"github.com/kr/pretty"
)
@ -26,12 +25,3 @@ func TestParseLogLine(t *testing.T) {
t.Fatal("invalid host")
}
}
func TestCmpTime(t *testing.T) {
now := time.Date(2016, time.January, 1, 13, 37, 0, 0, time.UTC)
then := now.Add(5 * time.Minute)
if cmpTime(then, now) {
t.Fatal("cmpTime error")
}
}