mirror of
https://github.com/weaveworks/scope.git
synced 2026-02-14 18:09:59 +00:00
Merge pull request #3859 from weaveworks/fix-merge-active
fix: merging active controls on host
This commit is contained in:
@@ -218,6 +218,12 @@ func (n Node) Merge(other Node) Node {
|
||||
panic("Cannot merge nodes with different topology types: " + topology + " != " + other.Topology)
|
||||
}
|
||||
|
||||
// Special case to merge controls from two different probes.
|
||||
// Do this first, then the value we want will be picked as newest by n.Latest.Merge().
|
||||
if topology == Host {
|
||||
n = n.MergeActiveControls(other)
|
||||
}
|
||||
|
||||
newNode := Node{
|
||||
ID: id,
|
||||
Topology: topology,
|
||||
@@ -229,11 +235,6 @@ func (n Node) Merge(other Node) Node {
|
||||
Children: n.Children.Merge(other.Children),
|
||||
}
|
||||
|
||||
// Special case to merge controls from two different probes.
|
||||
if topology == Host {
|
||||
newNode = newNode.MergeActiveControls(other)
|
||||
}
|
||||
|
||||
return newNode
|
||||
}
|
||||
|
||||
|
||||
@@ -182,24 +182,24 @@ func TestCounters(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestActiveControls(t *testing.T) {
|
||||
func TestMergeActiveControls(t *testing.T) {
|
||||
mtime.NowForce(time.Now())
|
||||
defer mtime.NowReset()
|
||||
|
||||
controls1 := []string{"bar", "foo"}
|
||||
node1 := report.MakeNode("node1").WithLatestActiveControls(controls1...)
|
||||
node1 := report.MakeNode("node1").WithTopology(report.Host).WithLatestActiveControls(controls1...)
|
||||
assert.Equal(t, controls1, node1.ActiveControls())
|
||||
assert.Equal(t, controls1, sorted(node1.MergeActiveControls(node1).ActiveControls()))
|
||||
assert.Equal(t, controls1, sorted(node1.Merge(node1).ActiveControls()))
|
||||
|
||||
node2 := report.MakeNode("node2")
|
||||
assert.Equal(t, controls1, node1.MergeActiveControls(node2).ActiveControls())
|
||||
assert.Equal(t, controls1, node2.MergeActiveControls(node1).ActiveControls())
|
||||
node2 := report.MakeNode("node2") // has no active controls
|
||||
assert.Equal(t, controls1, node1.Merge(node2).ActiveControls())
|
||||
assert.Equal(t, controls1, node2.Merge(node1).ActiveControls())
|
||||
|
||||
controls2 := []string{"bar", "bor"}
|
||||
controls3 := []string{"bar", "bor", "foo"}
|
||||
node3 := report.MakeNode("node1").WithLatestActiveControls(controls2...)
|
||||
assert.Equal(t, controls3, sorted(node1.MergeActiveControls(node3).ActiveControls()))
|
||||
assert.Equal(t, controls3, sorted(node3.MergeActiveControls(node1).ActiveControls()))
|
||||
assert.Equal(t, controls3, sorted(node1.Merge(node3).ActiveControls()))
|
||||
assert.Equal(t, controls3, sorted(node3.Merge(node1).ActiveControls()))
|
||||
}
|
||||
|
||||
func sorted(s []string) []string {
|
||||
|
||||
Reference in New Issue
Block a user