mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-03 02:00:43 +00:00
Merge pull request #2965 from weaveworks/2959-lowcost-noop-upgrade
make report upgrading fast when it's a no-op
This commit is contained in:
@@ -67,6 +67,20 @@ func BenchmarkReportMerge(b *testing.B) {
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkReportUpgrade(b *testing.B) {
|
||||
reports, err := readReportFiles(*benchReportPath)
|
||||
if err != nil {
|
||||
b.Fatal(err)
|
||||
}
|
||||
r := NewSmartMerger().Merge(reports)
|
||||
|
||||
b.ResetTimer()
|
||||
|
||||
for i := 0; i < b.N; i++ {
|
||||
r.Upgrade()
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkTopologyList(b *testing.B) {
|
||||
benchmarkRender(b, func(report report.Report) {
|
||||
request := &http.Request{
|
||||
|
||||
@@ -341,6 +341,18 @@ func (r Report) Validate() error {
|
||||
//
|
||||
// This for now creates node's LatestControls from Controls.
|
||||
func (r Report) Upgrade() Report {
|
||||
needUpgrade := false
|
||||
r.WalkTopologies(func(topology *Topology) {
|
||||
for _, node := range topology.Nodes {
|
||||
if node.LatestControls.Size() == 0 && len(node.Controls.Controls) > 0 {
|
||||
needUpgrade = true
|
||||
}
|
||||
}
|
||||
})
|
||||
if !needUpgrade {
|
||||
return r
|
||||
}
|
||||
|
||||
cp := r.Copy()
|
||||
ncd := NodeControlData{
|
||||
Dead: false,
|
||||
|
||||
Reference in New Issue
Block a user