package analysis
import (
"testing"
osgraph "github.com/openshift/origin/pkg/api/graph"
osgraphtest "github.com/openshift/origin/pkg/api/graph/test"
kubeedges "github.com/openshift/origin/pkg/api/kubegraph"
)
func TestDuelingRC(t *testing.T) {
g, _, err := osgraphtest.BuildGraph("../../../api/graph/test/dueling-rcs.yaml")
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
kubeedges.AddAllManagedByControllerPodEdges(g)
markers := FindDuelingReplicationControllers(g, osgraph.DefaultNamer)
if e, a := 2, len(markers); e != a {
t.Errorf("expected %v, got %v", e, a)
}
expectedRC1 := g.Find(osgraph.UniqueName("ReplicationController|/rc-1"))
expectedRC2 := g.Find(osgraph.UniqueName("ReplicationController|/rc-2"))
found1 := false
found2 := false
for i := 0; i < 2; i++ {
actualPod := osgraph.GetTopLevelContainerNode(g, markers[i].RelatedNodes[0])
expectedPod := g.Find(osgraph.UniqueName("Pod|/conflicted-pod"))
if e, a := expectedPod.ID(), actualPod.ID(); e != a {
t.Errorf("expected %v, got %v", e, a)
}
actualOtherRC := osgraph.GetTopLevelContainerNode(g, markers[i].RelatedNodes[1])
actualRC := markers[i].Node
if e, a := expectedRC1.ID(), actualRC.ID(); e == a {
found1 = true
expectedOtherRC := expectedRC2
if e, a := expectedOtherRC.ID(), actualOtherRC.ID(); e != a {
t.Errorf("expected %v, got %v", e, a)
}
}
if e, a := expectedRC2.ID(), actualRC.ID(); e == a {
found2 = true
expectedOtherRC := expectedRC1
if e, a := expectedOtherRC.ID(), actualOtherRC.ID(); e != a {
t.Errorf("expected %v, got %v", e, a)
}
}
}
if !found1 {
t.Errorf("expected %v, got %v", expectedRC1, markers)
}
if !found2 {
t.Errorf("expected %v, got %v", expectedRC2, markers)
}
}