Skip to content

Commit

Permalink
Added logger metrics test.
Browse files Browse the repository at this point in the history
  • Loading branch information
danalex97 committed Jun 20, 2018
1 parent a9d0532 commit d2d4e9f
Show file tree
Hide file tree
Showing 3 changed files with 150 additions and 27 deletions.
14 changes: 6 additions & 8 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,12 @@ type Conf struct {
ChokerStrategy string
}

/**
* Usage:
* c := NewConf().
* WithParams(func(c *Conf) {
* c.OutPeers = 5
* c.MinNodes = 10
* })
*/
// Usage:
// c := NewConf().
// WithParams(func(c *Conf) {
// c.OutPeers = 5
// c.MinNodes = 10
// })
func (c *Conf) WithParams(f func (c *Conf)) *Conf {
f(c)
return c
Expand Down
42 changes: 23 additions & 19 deletions log/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ import (

var Log *Logger = NewLogger()

var print = fmt.Print
var printf = fmt.Printf
var println = fmt.Println

const (
GetRedundancy = iota
GetTime = iota
Expand Down Expand Up @@ -191,7 +195,7 @@ func (l *Logger) getLogged() {
defer f.Close()
f.Write(b)

fmt.Printf("Logfile %s written.\n", l.logfile)
printf("Logfile %s written.\n", l.logfile)
}
}
}
Expand All @@ -204,7 +208,7 @@ func (l *Logger) getRedundancy() {
times += ctr
}
redundancy := float64(times) / float64(pieces)
fmt.Println("Redundancy:", redundancy)
println("Redundancy:", redundancy)
}

func (l *Logger) getTraffic() {
Expand All @@ -215,15 +219,15 @@ func (l *Logger) getTraffic() {
peers += 1
}
traffic := float64(total) / float64(peers)
fmt.Println("Traffic:", traffic)
println("Traffic:", traffic)
}

func (l *Logger) getTime() {
times := toSlice(l.times)

fmt.Println("Average time:", getAverage(times))
fmt.Println("50th percentile:", getPercentile(50.0, times))
fmt.Println("90th percentile:", getPercentile(90.0, times))
println("Average time:", getAverage(times))
println("50th percentile:", getPercentile(50.0, times))
println("90th percentile:", getPercentile(90.0, times))
}

func (l *Logger) getLeaderTimes() ([]int, []int) {
Expand Down Expand Up @@ -251,34 +255,34 @@ func (l *Logger) getLeaderTimes() ([]int, []int) {
func (l *Logger) getTimeLeader() {
leaderTimes, followerTimes := l.getLeaderTimes()

fmt.Println("Leader 50th percentile:", getPercentile(50.0, leaderTimes))
fmt.Println("Leader 90th percentile:", getPercentile(90.0, leaderTimes))
fmt.Println("Follower 50th percentile:", getPercentile(50.0, followerTimes))
fmt.Println("Follower 90th percentile:", getPercentile(90.0, followerTimes))
println("Leader 50th percentile:", getPercentile(50.0, leaderTimes))
println("Leader 90th percentile:", getPercentile(90.0, leaderTimes))
println("Follower 50th percentile:", getPercentile(50.0, followerTimes))
println("Follower 90th percentile:", getPercentile(90.0, followerTimes))
}

func (l *Logger) getLeaderCDF() {
leaderTimes, followerTimes := l.getLeaderTimes()

fmt.Print("Leader time CDF: [")
print("Leader time CDF: [")
for _, t := range normalize(leaderTimes) {
fmt.Print(t, ",")
print(t, ",")
}
fmt.Println("]")
println("]")

fmt.Print("Follower time CDF: [")
print("Follower time CDF: [")
for _, t := range normalize(followerTimes) {
fmt.Print(t, ",")
print(t, ",")
}
fmt.Println("]")
println("]")
}

func (l *Logger) getTimeCDF() {
fmt.Print("Time CDF: [")
print("Time CDF: [")
for _, t := range normalize(toSlice(l.times)) {
fmt.Print(t, ",")
print(t, ",")
}
fmt.Println("]")
println("]")
}

/* Runner. */
Expand Down
121 changes: 121 additions & 0 deletions log/logger_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
package log

import (
"testing"
"fmt"
)

func initTest(out chan<- string) {
printf = func(format string, args ...interface {}) (int, error) {
out <- fmt.Sprintf(format, args)
return 0, nil
}
println = func(args ...interface {}) (int, error) {
out <- fmt.Sprint(args)
return 0, nil
}
print = println
}

func assertEqual(t *testing.T, a interface{}, b interface{}) {
if a != b {
t.Fatalf("%s != %s", a, b)
}
}

func TestLoggerGetsCorrectMetricsBitTorrent(t *testing.T) {
l := NewLogger()

out := make(chan string, 1000)
initTest(out)

l.LogCompleted(Completed{"1.1", 1000})
l.LogCompleted(Completed{"1.2", 2000})
l.LogCompleted(Completed{"2.1", 3000})
l.LogCompleted(Completed{"2.2", 4000})
l.LogCompleted(Completed{"2.3", 4000})

l.LogTransfer(Transfer{"1.1", "1.2", 1})
l.LogTransfer(Transfer{"1.1", "2.1", 1})
l.LogTransfer(Transfer{"1.1", "2.2", 1})
l.LogTransfer(Transfer{"1.1", "2.3", 1})

l.Query(GetRedundancy)
l.Query(GetTime)
l.Query(GetTraffic)
l.Query(GetTimeCDF)

l.Query(Stop)

assertEqual(t, <-out, "[Redundancy: 3]")
assertEqual(t, <-out, "[Average time: 1800]")
assertEqual(t, <-out, "[50th percentile: 2000]")
assertEqual(t, <-out, "[90th percentile: 3000]")
assertEqual(t, <-out, "[Traffic: 4]")

<-out
assertEqual(t, (<-out), "[0 ,]")
assertEqual(t, (<-out), "[1000 ,]")
assertEqual(t, (<-out), "[2000 ,]")
assertEqual(t, (<-out), "[3000 ,]")
assertEqual(t, (<-out), "[3000 ,]")
}

func TestLoggerGetsCorrectMetricsCacheTorrent(t *testing.T) {
l := NewLogger()

out := make(chan string, 1000)
initTest(out)

l.LogLeader(Leader{"1.1"})
l.LogLeader(Leader{"2.1"})

l.LogCompleted(Completed{"1.1", 1000})
l.LogCompleted(Completed{"1.2", 2000})
l.LogCompleted(Completed{"2.1", 3000})
l.LogCompleted(Completed{"2.2", 4000})
l.LogCompleted(Completed{"2.3", 4000})

l.LogTransfer(Transfer{"1.1", "1.2", 1})
l.LogTransfer(Transfer{"1.1", "2.1", 1})
l.LogTransfer(Transfer{"1.1", "2.2", 1})
l.LogTransfer(Transfer{"1.1", "2.3", 1})

l.Query(GetRedundancy)
l.Query(GetTime)
l.Query(GetTraffic)
l.Query(GetTimeCDF)
l.Query(GetTimeLeader)
l.Query(GetLeaderCDF)

l.Query(Stop)

assertEqual(t, <-out, "[Redundancy: 3]")
assertEqual(t, <-out, "[Average time: 1800]")
assertEqual(t, <-out, "[50th percentile: 2000]")
assertEqual(t, <-out, "[90th percentile: 3000]")
assertEqual(t, <-out, "[Traffic: 4]")

<-out
assertEqual(t, (<-out), "[0 ,]")
assertEqual(t, (<-out), "[1000 ,]")
assertEqual(t, (<-out), "[2000 ,]")
assertEqual(t, (<-out), "[3000 ,]")
assertEqual(t, (<-out), "[3000 ,]")
<-out
assertEqual(t, (<-out), "[Leader 50th percentile: 2000]")
assertEqual(t, (<-out), "[Leader 90th percentile: 2000]")
assertEqual(t, (<-out), "[Follower 50th percentile: 3000]")
assertEqual(t, (<-out), "[Follower 90th percentile: 3000]")

<-out
assertEqual(t, (<-out), "[0 ,]")
assertEqual(t, (<-out), "[2000 ,]")
<-out

<-out
assertEqual(t, (<-out), "[0 ,]")
assertEqual(t, (<-out), "[1000 ,]")
assertEqual(t, (<-out), "[3000 ,]")
<-out
}

0 comments on commit d2d4e9f

Please sign in to comment.