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 {
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)
chErr := make(chan error)
@@ -68,11 +72,11 @@ func testNodeRun(t *testing.T, enableLease bool) {
close(chErr)
}()
nw := makeWatch(t, nodes, node.n.Name)
nw := makeWatch(t, nodes, testNodeCopy.Name)
defer nw.Stop()
nr := nw.ResultChan()
lw := makeWatch(t, leases, node.n.Name)
lw := makeWatch(t, leases, testNodeCopy.Name)
defer lw.Stop()
lr := lw.ResultChan()
@@ -105,7 +109,8 @@ func testNodeRun(t *testing.T, enableLease bool) {
leaseUpdates++
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 {
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
n := node.n.DeepCopy()
n, err := nodes.Get(testNode.Name, metav1.GetOptions{})
assert.NilError(t, err)
newCondition := corev1.NodeCondition{
Type: corev1.NodeConditionType("UPDATED"),
LastTransitionTime: metav1.Now().Rfc3339Copy(),
}
n.Status.Conditions = append(n.Status.Conditions, newCondition)
nw = makeWatch(t, nodes, node.n.Name)
nw = makeWatch(t, nodes, testNodeCopy.Name)
defer nw.Stop()
nr = nw.ResultChan()