|
@@ -3,6 +3,7 @@ package leaves
|
|
|
import (
|
|
|
"bytes"
|
|
|
"testing"
|
|
|
+ "time"
|
|
|
|
|
|
"github.com/gogo/protobuf/proto"
|
|
|
"github.com/stretchr/testify/assert"
|
|
@@ -18,6 +19,7 @@ import (
|
|
|
|
|
|
func fixtureDevs() *DevsAnalysis {
|
|
|
d := DevsAnalysis{}
|
|
|
+ d.tickSize = 24 * time.Hour
|
|
|
d.Initialize(test.Repository)
|
|
|
people := [...]string{"one@srcd", "two@srcd"}
|
|
|
d.reversedPeopleDict = people[:]
|
|
@@ -67,13 +69,17 @@ func TestDevsConfigure(t *testing.T) {
|
|
|
devs := DevsAnalysis{}
|
|
|
facts := map[string]interface{}{}
|
|
|
facts[ConfigDevsConsiderEmptyCommits] = true
|
|
|
- devs.Configure(facts)
|
|
|
- assert.Equal(t, devs.ConsiderEmptyCommits, true)
|
|
|
+ facts[items.FactTickSize] = 3 * time.Hour
|
|
|
+ assert.NoError(t, devs.Configure(facts))
|
|
|
+ assert.True(t, devs.ConsiderEmptyCommits)
|
|
|
+ assert.Equal(t, 3*time.Hour, devs.tickSize)
|
|
|
}
|
|
|
|
|
|
func TestDevsInitialize(t *testing.T) {
|
|
|
d := fixtureDevs()
|
|
|
assert.NotNil(t, d.ticks)
|
|
|
+ d = &DevsAnalysis{}
|
|
|
+ assert.Error(t, d.Initialize(test.Repository))
|
|
|
}
|
|
|
|
|
|
func TestDevsConsumeFinalize(t *testing.T) {
|
|
@@ -279,6 +285,7 @@ func TestDevsFinalize(t *testing.T) {
|
|
|
x := devs.Finalize().(DevsResult)
|
|
|
assert.Equal(t, x.Ticks, devs.ticks)
|
|
|
assert.Equal(t, x.reversedPeopleDict, devs.reversedPeopleDict)
|
|
|
+ assert.Equal(t, 24*time.Hour, devs.tickSize)
|
|
|
}
|
|
|
|
|
|
func TestDevsFork(t *testing.T) {
|
|
@@ -310,6 +317,7 @@ func TestDevsSerialize(t *testing.T) {
|
|
|
people:
|
|
|
- "one@srcd"
|
|
|
- "two@srcd"
|
|
|
+ tick_size: 86400
|
|
|
`, buffer.String())
|
|
|
|
|
|
buffer = &bytes.Buffer{}
|
|
@@ -318,6 +326,7 @@ func TestDevsSerialize(t *testing.T) {
|
|
|
msg := pb.DevsAnalysisResults{}
|
|
|
assert.Nil(t, proto.Unmarshal(buffer.Bytes(), &msg))
|
|
|
assert.Equal(t, msg.DevIndex, devs.reversedPeopleDict)
|
|
|
+ assert.Equal(t, int64(24*time.Hour), msg.TickSize)
|
|
|
assert.Len(t, msg.Ticks, 2)
|
|
|
assert.Len(t, msg.Ticks[1].Devs, 2)
|
|
|
assert.Equal(t, msg.Ticks[1].Devs[0], &pb.DevTick{
|
|
@@ -360,6 +369,7 @@ func TestDevsMergeResults(t *testing.T) {
|
|
|
r1 := DevsResult{
|
|
|
Ticks: map[int]map[int]*DevTick{},
|
|
|
reversedPeopleDict: people1[:],
|
|
|
+ tickSize: 24 * time.Hour,
|
|
|
}
|
|
|
r1.Ticks[1] = map[int]*DevTick{}
|
|
|
r1.Ticks[1][0] = &DevTick{10, ls(20, 30, 40), map[string]items.LineStats{"Go": ls(12, 13, 14)}}
|
|
@@ -373,6 +383,7 @@ func TestDevsMergeResults(t *testing.T) {
|
|
|
r2 := DevsResult{
|
|
|
Ticks: map[int]map[int]*DevTick{},
|
|
|
reversedPeopleDict: people2[:],
|
|
|
+ tickSize: 22 * time.Hour,
|
|
|
}
|
|
|
r2.Ticks[1] = map[int]*DevTick{}
|
|
|
r2.Ticks[1][0] = &DevTick{10, ls(20, 30, 40), map[string]items.LineStats{"Go": ls(12, 13, 14)}}
|
|
@@ -387,7 +398,10 @@ func TestDevsMergeResults(t *testing.T) {
|
|
|
100, ls(200, 300, 400), map[string]items.LineStats{"Go": ls(62, 63, 64)}}
|
|
|
|
|
|
devs := fixtureDevs()
|
|
|
- rm := devs.MergeResults(r1, r2, nil, nil).(DevsResult)
|
|
|
+ c1 := core.CommonAnalysisResult{BeginTime: 1556224895}
|
|
|
+ assert.IsType(t, assert.AnError, devs.MergeResults(r1, r2, &c1, &c1))
|
|
|
+ r2.tickSize = r1.tickSize
|
|
|
+ rm := devs.MergeResults(r1, r2, &c1, &c1).(DevsResult)
|
|
|
peoplerm := [...]string{"1@srcd", "2@srcd", "3@srcd"}
|
|
|
assert.Equal(t, rm.reversedPeopleDict, peoplerm[:])
|
|
|
assert.Len(t, rm.Ticks, 4)
|
|
@@ -408,4 +422,29 @@ func TestDevsMergeResults(t *testing.T) {
|
|
|
identity.AuthorMissing: {
|
|
|
100 * 2, ls(200*2, 300*2, 400*2), map[string]items.LineStats{"Go": ls(94, 96, 98)}},
|
|
|
})
|
|
|
+
|
|
|
+ c2 := core.CommonAnalysisResult{BeginTime: 1556224895 + 24*3600}
|
|
|
+ rm = devs.MergeResults(r1, r2, &c1, &c2).(DevsResult)
|
|
|
+ assert.Len(t, rm.Ticks, 5)
|
|
|
+ assert.Equal(t, rm.Ticks[1], map[int]*DevTick{
|
|
|
+ 0: {10, ls(20, 30, 40), map[string]items.LineStats{"Go": ls(12, 13, 14)}},
|
|
|
+ 1: {1, ls(2, 3, 4), map[string]items.LineStats{"Go": ls(22, 23, 24)}},
|
|
|
+ })
|
|
|
+ assert.Equal(t, rm.Ticks[2], map[int]*DevTick{
|
|
|
+ 2: {10, ls(20, 30, 40), map[string]items.LineStats{"Go": ls(12, 13, 14)}},
|
|
|
+ 0: {1, ls(2, 3, 4), map[string]items.LineStats{"Go": ls(22, 23, 24)}},
|
|
|
+ })
|
|
|
+ assert.Equal(t, rm.Ticks[3], map[int]*DevTick{
|
|
|
+ 2: {11, ls(21, 31, 41), map[string]items.LineStats{"Go": ls(32, 33, 34)}},
|
|
|
+ identity.AuthorMissing: {100, ls(200, 300, 400), map[string]items.LineStats{"Go": ls(42, 43, 44)}},
|
|
|
+ })
|
|
|
+ assert.Equal(t, rm.Ticks[10], map[int]*DevTick{
|
|
|
+ 0: {11, ls(21, 31, 41), map[string]items.LineStats{}},
|
|
|
+ identity.AuthorMissing: {100, ls(200, 300, 400), map[string]items.LineStats{"Go": ls(32, 33, 34)}},
|
|
|
+ })
|
|
|
+ assert.Equal(t, rm.Ticks[11], map[int]*DevTick{
|
|
|
+ 1: {10, ls(20, 30, 40), map[string]items.LineStats{"Go": ls(42, 43, 44)}},
|
|
|
+ 2: {11, ls(21, 31, 41), map[string]items.LineStats{"Go": ls(52, 53, 54)}},
|
|
|
+ identity.AuthorMissing: {100, ls(200, 300, 400), map[string]items.LineStats{"Go": ls(62, 63, 64)}},
|
|
|
+ })
|
|
|
}
|