Fix node create after delete

node.ResourceVersion must not be set when creating a node.
This issue prevents vk from resolving issues after the vk node instance
has been deleted (for whatever reason).
This commit is contained in:
Brian Goff
2019-04-03 15:17:33 -07:00
parent af06b005b2
commit 99c07d487e
6 changed files with 127 additions and 5 deletions

51
test/e2e/node_test.go Normal file
View File

@@ -0,0 +1,51 @@
// +build e2e
package e2e
import (
"testing"
"time"
"gotest.tools/assert"
watchapi "k8s.io/apimachinery/pkg/watch"
)
// TestNodeCreateAfterDelete makes sure that a node is automatically recreated
// if it is deleted while VK is running.
func TestNodeCreateAfterDelete(t *testing.T) {
chErr := make(chan error, 1)
chDone := make(chan struct{})
defer close(chDone)
go func() {
var deleted bool
wait := func(e watchapi.Event) (bool, error) {
select {
case <-chDone:
return true, nil
default:
}
if deleted {
return f.WaitUntilNodeAdded(e)
}
if e.Type == watchapi.Deleted {
deleted = true
}
return false, nil
}
chErr <- f.WaitUntilNodeCondition(wait)
}()
assert.NilError(t, f.DeleteNode())
timer := time.NewTimer(60 * time.Second)
defer timer.Stop()
select {
case <-timer.C:
t.Fatal("timeout waiting for node to be recreated")
case err := <-chErr:
assert.NilError(t, err)
}
}