Fix race conditions in node_test

This commit is contained in:
Sargun Dhillon
2019-08-07 15:00:01 -07:00
parent 42656aae2f
commit 5ac33e4b0a

View File

@@ -54,7 +54,11 @@ func testNodeRun(t *testing.T, enableLease bool) {
if enableLease { if enableLease {
opts = append(opts, WithNodeEnableLeaseV1Beta1(leases, nil)) opts = append(opts, WithNodeEnableLeaseV1Beta1(leases, nil))
} }
node, err := NewNodeController(testP, testNode(t), nodes, opts...) testNode := testNode(t)
// We have to refer to testNodeCopy during the course of the test. testNode is modified by the node controller
// so it will trigger the race detector.
testNodeCopy := testNode.DeepCopy()
node, err := NewNodeController(testP, testNode, nodes, opts...)
assert.NilError(t, err) assert.NilError(t, err)
chErr := make(chan error) chErr := make(chan error)
@@ -68,11 +72,11 @@ func testNodeRun(t *testing.T, enableLease bool) {
close(chErr) close(chErr)
}() }()
nw := makeWatch(t, nodes, node.n.Name) nw := makeWatch(t, nodes, testNodeCopy.Name)
defer nw.Stop() defer nw.Stop()
nr := nw.ResultChan() nr := nw.ResultChan()
lw := makeWatch(t, leases, node.n.Name) lw := makeWatch(t, leases, testNodeCopy.Name)
defer lw.Stop() defer lw.Stop()
lr := lw.ResultChan() lr := lw.ResultChan()
@@ -105,7 +109,8 @@ func testNodeRun(t *testing.T, enableLease bool) {
leaseUpdates++ leaseUpdates++
assert.Assert(t, cmp.Equal(l.Spec.HolderIdentity != nil, true)) assert.Assert(t, cmp.Equal(l.Spec.HolderIdentity != nil, true))
assert.Check(t, cmp.Equal(*l.Spec.HolderIdentity, node.n.Name)) assert.NilError(t, err)
assert.Check(t, cmp.Equal(*l.Spec.HolderIdentity, testNodeCopy.Name))
if lBefore != nil { if lBefore != nil {
assert.Check(t, before(lBefore.Spec.RenewTime.Time, l.Spec.RenewTime.Time)) assert.Check(t, before(lBefore.Spec.RenewTime.Time, l.Spec.RenewTime.Time))
} }
@@ -125,14 +130,15 @@ func testNodeRun(t *testing.T, enableLease bool) {
} }
// trigger an async node status update // trigger an async node status update
n := node.n.DeepCopy() n, err := nodes.Get(testNode.Name, metav1.GetOptions{})
assert.NilError(t, err)
newCondition := corev1.NodeCondition{ newCondition := corev1.NodeCondition{
Type: corev1.NodeConditionType("UPDATED"), Type: corev1.NodeConditionType("UPDATED"),
LastTransitionTime: metav1.Now().Rfc3339Copy(), LastTransitionTime: metav1.Now().Rfc3339Copy(),
} }
n.Status.Conditions = append(n.Status.Conditions, newCondition) n.Status.Conditions = append(n.Status.Conditions, newCondition)
nw = makeWatch(t, nodes, node.n.Name) nw = makeWatch(t, nodes, testNodeCopy.Name)
defer nw.Stop() defer nw.Stop()
nr = nw.ResultChan() nr = nw.ResultChan()