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 outDateFormat = "2006-01-02T15:04:05"
const outDateFormatNoSeconds = "2006-01-02T15:04" const outDateFormatNoSeconds = "2006-01-02T15:04"
var (
seenHosts []string
)
func ParseLogLine(line []byte) (*LogLine, error) { func ParseLogLine(line []byte) (*LogLine, error) {
sl := bytes.Split(line, []byte(" ")) sl := bytes.Split(line, []byte(" "))
@ -108,7 +112,8 @@ func main() {
_, ltm, _ := lastTime.Clock() _, ltm, _ := lastTime.Clock()
if llm != ltm { if llm != ltm {
processBuckets(ab)
processBuckets(lastTime, ab)
ab = map[string]*Bucket{} ab = map[string]*Bucket{}
lastTime = lastTime.Add(time.Minute) lastTime = lastTime.Add(time.Minute)
@ -129,31 +134,41 @@ func main() {
ab[ll.Host] = b ab[ll.Host] = b
} }
processBuckets(ab) processBuckets(lastTime, 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
} }
func toMS(dur time.Duration) int64 { func toMS(dur time.Duration) int64 {
return dur.Nanoseconds() / 1000000 return dur.Nanoseconds() / 1000000
} }
func processBuckets(set map[string]*Bucket) { func contains(host string) bool {
hosts := []string{} for _, val := range seenHosts {
for host, _ := range set { if val == host {
hosts = append(hosts, 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 longest time.Duration
var shortest time.Duration var shortest time.Duration
var total time.Duration var total time.Duration

View File

@ -2,7 +2,6 @@ package main
import ( import (
"testing" "testing"
"time"
"github.com/kr/pretty" "github.com/kr/pretty"
) )
@ -26,12 +25,3 @@ func TestParseLogLine(t *testing.T) {
t.Fatal("invalid host") 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")
}
}