Skip to content

Commit

Permalink
Merge pull request #14 from hellofresh/tests/add-watch-k8s
Browse files Browse the repository at this point in the history
Replace sleep with watch
  • Loading branch information
diegomarangoni authored Sep 22, 2020
2 parents d834611 + 844ea63 commit 7459ab9
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 3 deletions.
30 changes: 30 additions & 0 deletions pkg/controller/test_helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,11 @@ import (

coreV1 "k8s.io/api/core/v1"
metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/watch"
typeV1 "k8s.io/client-go/kubernetes/typed/core/v1"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
watchtools "k8s.io/client-go/tools/watch"

apisLoadTestV1 "github.com/hellofresh/kangal/pkg/kubernetes/apis/loadtest/v1"
clientSetV "github.com/hellofresh/kangal/pkg/kubernetes/generated/clientset/versioned"
Expand Down Expand Up @@ -65,6 +67,34 @@ func readFile(filename string) (string, error) {
return str, nil
}

func waitLoadtestFunc(event watch.Event) (bool, error) {
switch event.Type {
case watch.Added:
return true, nil
case watch.Modified:
return true, nil
default:
return false, nil
}
}

// WaitLoadtest waits until Loadtest resources exists
func WaitLoadtest(clientSet clientSetV.Clientset, loadtestName string) error {
ctx, cancel := context.WithTimeout(context.Background(), KubeTimeout)
defer cancel()

watchObj, err := clientSet.KangalV1().LoadTests().Watch(ctx, metaV1.ListOptions{
FieldSelector: fmt.Sprintf("metadata.name=%s", loadtestName),
})
if err != nil {
return err
}

_, err = watchtools.UntilWithoutRetry(ctx, watchObj, waitLoadtestFunc)

return err
}

// DeleteLoadTest deletes a load test CR
func DeleteLoadTest(clientSet clientSetV.Clientset, loadtestName string, testname string) error {
fmt.Printf("Deleting object %v for the test %v \n", loadtestName, testname)
Expand Down
7 changes: 4 additions & 3 deletions pkg/proxy/proxy_integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,17 +51,18 @@ func TestIntegrationCreateLoadtestFormPostAllFiles(t *testing.T) {

resp, err := http.Post(fmt.Sprintf("http://localhost:%d/load-test", HTTPPort), request.contentType, request.body)
require.NoError(t, err, "Could not create POST request")
//added sleep to wait for kangal controller to create a CR from post
time.Sleep(1 * time.Second)

require.Equal(t, http.StatusCreated, resp.StatusCode)

createdLoadTestName := parseBody(resp)

t.Cleanup(func() {
err := testhelper.DeleteLoadTest(clientSet, createdLoadTestName, t.Name())
assert.NoError(t, err)
})

err = testhelper.WaitLoadtest(clientSet, createdLoadTestName)
require.NoError(t, err)

data, err := testhelper.GetLoadtestTestdata(clientSet, createdLoadTestName)
require.NoError(t, err)
assert.Equal(t, testdataString, data)
Expand Down

0 comments on commit 7459ab9

Please sign in to comment.