Преглед на файлове

Fix common result merging

Signed-off-by: Vadim Markovtsev <vadim@sourced.tech>
Vadim Markovtsev преди 6 години
родител
ревизия
fc3dceb6d2
променени са 4 файла, в които са добавени 22 реда и са изтрити 2 реда
  1. 1 1
      cmd/hercules/combine.go
  2. 10 0
      internal/core/pipeline.go
  3. 10 0
      internal/core/pipeline_test.go
  4. 1 1
      leaves/burndown.go

+ 1 - 1
cmd/hercules/combine.go

@@ -50,7 +50,7 @@ var combineCmd = &cobra.Command{
 		}
 		mergedMessage := pb.AnalysisResults{
 			Header: &pb.Metadata{
-				Version:    2,
+				Version:    int32(hercules.BinaryVersion),
 				Hash:       hercules.BinaryGitHash,
 				Repository: strings.Join(repos, " & "),
 			},

+ 10 - 0
internal/core/pipeline.go

@@ -176,6 +176,16 @@ type CommonAnalysisResult struct {
 	RunTimePerItem map[string]float64
 }
 
+// Copy produces a deep clone of the object.
+func (car CommonAnalysisResult) Copy() CommonAnalysisResult {
+	result := car
+	result.RunTimePerItem = map[string]float64{}
+	for key, val := range car.RunTimePerItem {
+		result.RunTimePerItem[key] = val
+	}
+	return result
+}
+
 // BeginTimeAsTime converts the UNIX timestamp of the beginning to Go time.
 func (car *CommonAnalysisResult) BeginTimeAsTime() time.Time {
 	return time.Unix(car.BeginTime, 0)

+ 10 - 0
internal/core/pipeline_test.go

@@ -542,6 +542,16 @@ C 1 af9ddc0db70f09f3f27b4b98e415592a7485171c
 `, stream.String())
 }
 
+func TestCommonAnalysisResultCopy(t *testing.T) {
+	c1 := CommonAnalysisResult{
+		BeginTime: 1513620635, EndTime: 1513720635, CommitsNumber: 1, RunTime: 100,
+		RunTimePerItem: map[string]float64{"one": 1, "two": 2}}
+	c2 := c1.Copy()
+	assert.Equal(t, c1, c2)
+	c2.RunTimePerItem["one"] = 100500
+	assert.Equal(t, c1.RunTimePerItem["one"], float64(1))
+}
+
 func TestCommonAnalysisResultMerge(t *testing.T) {
 	c1 := CommonAnalysisResult{
 		BeginTime: 1513620635, EndTime: 1513720635, CommitsNumber: 1, RunTime: 100,

+ 1 - 1
leaves/burndown.go

@@ -714,7 +714,7 @@ func (analyser *BurndownAnalysis) MergeResults(
 // least of (sampling1, sampling2) and (granularity1, granularity2).
 func mergeMatrices(m1, m2 DenseHistory, granularity1, sampling1, granularity2, sampling2 int,
 	c1, c2 *core.CommonAnalysisResult) DenseHistory {
-	commonMerged := *c1
+	commonMerged := c1.Copy()
 	commonMerged.Merge(c2)
 
 	var granularity, sampling int