From fceb08726bfa8399892bd94585fe8f49dbc65b95 Mon Sep 17 00:00:00 2001 From: Akshay Gupta Date: Fri, 31 Jan 2020 12:24:39 +0530 Subject: [PATCH 1/3] * integration tests for functions and secrets added Signed-off-by: Akshay Gupta --- example/main.go | 8 +- go_faas_integration_test.go | 150 ++++++++++++++++++++++++++++++++++++ go_faas_test.go | 18 ++++- 3 files changed, 168 insertions(+), 8 deletions(-) create mode 100644 go_faas_integration_test.go diff --git a/example/main.go b/example/main.go index be76eb5..02cbd09 100644 --- a/example/main.go +++ b/example/main.go @@ -18,10 +18,10 @@ func main() { return } - _, err = cli.GetSystemFunctions() - if err != nil { - golog.Error("Error from system functions: ", err) - } + //_, err = cli.GetSystemFunctions() + //if err != nil { + // golog.Error("Error from system functions: ", err) + //} data := &faas.FunctionDefintion{ Service: "nodeinfo", diff --git a/go_faas_integration_test.go b/go_faas_integration_test.go new file mode 100644 index 0000000..d4c9546 --- /dev/null +++ b/go_faas_integration_test.go @@ -0,0 +1,150 @@ +// +build integration + +package go_faas + +import "github.com/stretchr/testify/assert" + +func (suite *GoFaasTestSuite) TestFunctionsCRUD() { + funcName := "integration_testnodeinfo" + + // get functions + resp, err := suite.cli.GetSystemFunctions() + if err != nil { + suite.T().Fatalf("GetSystemFunctions/Error: %v", err) + } + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 200, resp.StatusCode) + + // create a func + def := &FunctionDefintion{ + Service: funcName, + Network: "func_functions", + Image: "functions/nodeinfo:latest", + EnvProcess: "node main.js", + Constraints: []string{ + "node.platform.os == linux", + }, + Labels: map[string]string{ + "labelkey": "labelval", + }, + Annotations: Annotations{ + Topics: "awesome-kafka-topic", + Foo: "some", + }, + RegistryAuth: "dXNlcjpwYXNzd29yZA==", + Limits: Limits{ + Memory: "128M", + CPU: "0.01", + }, + Requests: Requests{ + Memory: "128M", + CPU: "0.01", + }, + ReadOnlyRootFilesystem: true, + } + resp, err = suite.cli.CreateSystemFunctions(def) + if err != nil { + suite.T().Fatalf("CreateSystemFunctions/Error: %v", err) + } + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 202, resp.StatusCode) + + // get function summary + resp, err = suite.cli.GetFunctionSummary(funcName) + if err != nil { + suite.T().Fatalf("CreateSystemFunctions/Error: %v", err) + } + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 200, resp.StatusCode) + + // update the func + update := &FunctionDefintion{ + Service: funcName, + Image: "functions/nodeinfo:latest", + Limits: Limits{ + Memory: "130M", + CPU: "0.01", + }, + } + resp, err = suite.cli.UpdateSystemFunctions(update) + if err != nil { + suite.T().Fatalf("UpdateSystemFunctions/Error: %v", err) + } + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 202, resp.StatusCode) + + // scale up the func + resp, err = suite.cli.ScaleFunction(&ScaleFunctionBodyOpts{ + Service: funcName, + Replicas: 3, + }) + if err != nil { + suite.T().Fatalf("ScaleFunction/Up/Error: %v", err) + } + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 202, resp.StatusCode) + + // scale down the func + resp, err = suite.cli.ScaleFunction(&ScaleFunctionBodyOpts{ + Service: funcName, + Replicas: 1, + }) + if err != nil { + suite.T().Fatalf("ScaleFunction/Down/Error: %v", err) + } + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 202, resp.StatusCode) + + // delete the func + resp, err = suite.cli.DeleteSystemFunction(&DeleteFunctionBodyOpts{FunctionName: funcName}) + if err != nil { + suite.T().Fatalf("DeleteSystemFunction/Error: %v", err) + } + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 202, resp.StatusCode) +} + +func (suite *GoFaasTestSuite) TestSecretsCRUD() { + secretName := "integration_test_secret" + secretVal := "integration_test_secret_val" + + //get secrets list + resp, err := suite.cli.GetSecrets() + if err != nil { + suite.T().Errorf("GetSecrets/Error: %v", err) + } + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), resp.StatusCode, 200) + + // create new secret + resp, err = suite.cli.CreateNewSecret(&SecretBodyOpts{ + Name: secretName, + Value: secretVal, + }) + if err != nil { + suite.T().Fatalf("CreateNewSecret/Error: %v", err) + } + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 201, resp.StatusCode) + + // update the secret if not a swarm cluster + if suite.cli.ClusterType != "swarm" { + resp, err = suite.cli.UpdateSecret(&SecretBodyOpts{ + Name: secretName, + Value: "updated_integration_test_secret_val", + }) + if err != nil { + suite.T().Fatalf("UpdateSecret/Error: %v", err) + } + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 200, resp.StatusCode) + } + + // delete the secret + resp, err = suite.cli.DeleteSecret(&SecretNameBodyOpts{Name: secretName}) + if err != nil { + suite.T().Fatalf("DeleteSecret/Error: %v", err) + } + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 200, resp.StatusCode) +} diff --git a/go_faas_test.go b/go_faas_test.go index 612f7cd..8c201c8 100644 --- a/go_faas_test.go +++ b/go_faas_test.go @@ -766,15 +766,21 @@ func (suite *GoFaasTestSuite) TestGetHealthz() { } func (suite *GoFaasTestSuite) TearDownSuite() { + // teardown functions _, err := suite.cli.DeleteSystemFunction(&DeleteFunctionBodyOpts{FunctionName: "nodeinfo123456"}) if err != nil { suite.T().Logf("error occurred while tearing down nodeinfo1235: %v", err) - _, err = suite.cli.DeleteSystemFunction(&DeleteFunctionBodyOpts{FunctionName: "yetanothernodeinfo"}) - if err != nil { - suite.T().Logf("error occurred while tearing down yetanothernodeinfo: %v", err) - } + } + _, err = suite.cli.DeleteSystemFunction(&DeleteFunctionBodyOpts{FunctionName: "yetanothernodeinfo"}) + if err != nil { + suite.T().Logf("error occurred while tearing down yetanothernodeinfo: %v", err) + } + _, err = suite.cli.DeleteSystemFunction(&DeleteFunctionBodyOpts{FunctionName: "integration_testnodeinfo"}) + if err != nil { + suite.T().Logf("error occurred while tearing down integration_testnodeinfo: %v", err) } + // teardown secrets _, err = suite.cli.DeleteSecret(&SecretNameBodyOpts{Name: "secretkey101"}) if err != nil { suite.T().Logf("Error tearing down secretkey101 : %v", err) @@ -787,5 +793,9 @@ func (suite *GoFaasTestSuite) TearDownSuite() { if err != nil { suite.T().Logf("Error tearing down secretkey101 : %v", err) } + _, err = suite.cli.DeleteSecret(&SecretNameBodyOpts{Name: "integration_test_secret"}) + if err != nil { + suite.T().Logf("Error tearing down secretkey101 : %v", err) + } } From ed462ee24fe55c86cbb12294038387244f63b909 Mon Sep 17 00:00:00 2001 From: Akshay Gupta Date: Fri, 31 Jan 2020 16:35:12 +0530 Subject: [PATCH 2/3] * file name changed Signed-off-by: Akshay Gupta --- helpers.go => byte_utils.go | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename helpers.go => byte_utils.go (100%) diff --git a/helpers.go b/byte_utils.go similarity index 100% rename from helpers.go rename to byte_utils.go From fc30006e501bbaaaa3cdf672d3da0b3e2b92f801 Mon Sep 17 00:00:00 2001 From: Akshay Gupta Date: Fri, 7 Feb 2020 13:46:30 +0530 Subject: [PATCH 3/3] * Removed error handling & added t.Run() in integration tests Signed-off-by: Akshay Gupta --- go_faas_integration_test.go | 134 +++++++++++++++++------------------- 1 file changed, 63 insertions(+), 71 deletions(-) diff --git a/go_faas_integration_test.go b/go_faas_integration_test.go index d4c9546..9b6ec3f 100644 --- a/go_faas_integration_test.go +++ b/go_faas_integration_test.go @@ -2,18 +2,20 @@ package go_faas -import "github.com/stretchr/testify/assert" +import ( + "github.com/stretchr/testify/assert" + "testing" +) func (suite *GoFaasTestSuite) TestFunctionsCRUD() { funcName := "integration_testnodeinfo" // get functions - resp, err := suite.cli.GetSystemFunctions() - if err != nil { - suite.T().Fatalf("GetSystemFunctions/Error: %v", err) - } - assert.Equal(suite.T(), nil, err) - assert.Equal(suite.T(), 200, resp.StatusCode) + suite.T().Run("IntTests/TestFunctionsCRUD/GetSystemFunctions", func(t *testing.T) { + resp, err := suite.cli.GetSystemFunctions() + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 200, resp.StatusCode) + }) // create a func def := &FunctionDefintion{ @@ -42,20 +44,18 @@ func (suite *GoFaasTestSuite) TestFunctionsCRUD() { }, ReadOnlyRootFilesystem: true, } - resp, err = suite.cli.CreateSystemFunctions(def) - if err != nil { - suite.T().Fatalf("CreateSystemFunctions/Error: %v", err) - } - assert.Equal(suite.T(), nil, err) - assert.Equal(suite.T(), 202, resp.StatusCode) + suite.T().Run("IntTests/TestFunctionsCRUD/CreateSystemFunctions", func(t *testing.T) { + resp, err = suite.cli.CreateSystemFunctions(def) + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 202, resp.StatusCode) + }) // get function summary - resp, err = suite.cli.GetFunctionSummary(funcName) - if err != nil { - suite.T().Fatalf("CreateSystemFunctions/Error: %v", err) - } - assert.Equal(suite.T(), nil, err) - assert.Equal(suite.T(), 200, resp.StatusCode) + suite.T().Run("IntTests/TestFunctionsCRUD/GetFunctionSummary", func(t *testing.T) { + resp, err = suite.cli.GetFunctionSummary(funcName) + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 200, resp.StatusCode) + }) // update the func update := &FunctionDefintion{ @@ -66,42 +66,38 @@ func (suite *GoFaasTestSuite) TestFunctionsCRUD() { CPU: "0.01", }, } - resp, err = suite.cli.UpdateSystemFunctions(update) - if err != nil { - suite.T().Fatalf("UpdateSystemFunctions/Error: %v", err) - } - assert.Equal(suite.T(), nil, err) - assert.Equal(suite.T(), 202, resp.StatusCode) + suite.T().Run("IntTests/TestFunctionsCRUD/UpdateSystemFunctions", func(t *testing.T) { + resp, err = suite.cli.UpdateSystemFunctions(update) + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 202, resp.StatusCode) + }) // scale up the func - resp, err = suite.cli.ScaleFunction(&ScaleFunctionBodyOpts{ - Service: funcName, - Replicas: 3, + suite.T().Run("IntTests/TestFunctionsCRUD/ScaleFunction/Up", func(t *testing.T) { + resp, err = suite.cli.ScaleFunction(&ScaleFunctionBodyOpts{ + Service: funcName, + Replicas: 3, + }) + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 202, resp.StatusCode) }) - if err != nil { - suite.T().Fatalf("ScaleFunction/Up/Error: %v", err) - } - assert.Equal(suite.T(), nil, err) - assert.Equal(suite.T(), 202, resp.StatusCode) // scale down the func - resp, err = suite.cli.ScaleFunction(&ScaleFunctionBodyOpts{ - Service: funcName, - Replicas: 1, + suite.T().Run("IntTests/TestFunctionsCRUD/ScaleFunction/Down", func(t *testing.T) { + resp, err = suite.cli.ScaleFunction(&ScaleFunctionBodyOpts{ + Service: funcName, + Replicas: 1, + }) + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 202, resp.StatusCode) }) - if err != nil { - suite.T().Fatalf("ScaleFunction/Down/Error: %v", err) - } - assert.Equal(suite.T(), nil, err) - assert.Equal(suite.T(), 202, resp.StatusCode) // delete the func - resp, err = suite.cli.DeleteSystemFunction(&DeleteFunctionBodyOpts{FunctionName: funcName}) - if err != nil { - suite.T().Fatalf("DeleteSystemFunction/Error: %v", err) - } - assert.Equal(suite.T(), nil, err) - assert.Equal(suite.T(), 202, resp.StatusCode) + suite.T().Run("IntTests/TestFunctionsCRUD/DeleteSystemFunction", func(t *testing.T) { + resp, err = suite.cli.DeleteSystemFunction(&DeleteFunctionBodyOpts{FunctionName: funcName}) + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 202, resp.StatusCode) + }) } func (suite *GoFaasTestSuite) TestSecretsCRUD() { @@ -109,42 +105,38 @@ func (suite *GoFaasTestSuite) TestSecretsCRUD() { secretVal := "integration_test_secret_val" //get secrets list - resp, err := suite.cli.GetSecrets() - if err != nil { - suite.T().Errorf("GetSecrets/Error: %v", err) - } - assert.Equal(suite.T(), nil, err) - assert.Equal(suite.T(), resp.StatusCode, 200) + suite.T().Run("IntTests/TestSecretsCRUD/GetSecrets", func(t *testing.T) { + resp, err := suite.cli.GetSecrets() + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), resp.StatusCode, 200) + }) // create new secret - resp, err = suite.cli.CreateNewSecret(&SecretBodyOpts{ - Name: secretName, - Value: secretVal, + suite.T().Run("IntTests/TestSecretsCRUD/CreateNewSecret", func(t *testing.T) { + resp, err = suite.cli.CreateNewSecret(&SecretBodyOpts{ + Name: secretName, + Value: secretVal, + }) }) - if err != nil { - suite.T().Fatalf("CreateNewSecret/Error: %v", err) - } assert.Equal(suite.T(), nil, err) assert.Equal(suite.T(), 201, resp.StatusCode) // update the secret if not a swarm cluster if suite.cli.ClusterType != "swarm" { - resp, err = suite.cli.UpdateSecret(&SecretBodyOpts{ - Name: secretName, - Value: "updated_integration_test_secret_val", + suite.T().Run("IntTests/TestSecretsCRUD/UpdateSecret", func(t *testing.T) { + resp, err = suite.cli.UpdateSecret(&SecretBodyOpts{ + Name: secretName, + Value: "updated_integration_test_secret_val", + }) }) - if err != nil { - suite.T().Fatalf("UpdateSecret/Error: %v", err) - } assert.Equal(suite.T(), nil, err) assert.Equal(suite.T(), 200, resp.StatusCode) } // delete the secret - resp, err = suite.cli.DeleteSecret(&SecretNameBodyOpts{Name: secretName}) - if err != nil { - suite.T().Fatalf("DeleteSecret/Error: %v", err) - } - assert.Equal(suite.T(), nil, err) - assert.Equal(suite.T(), 200, resp.StatusCode) + suite.T().Run("IntTests/TestSecretsCRUD/DeleteSecret", func(t *testing.T) { + resp, err = suite.cli.DeleteSecret(&SecretNameBodyOpts{Name: secretName}) + assert.Equal(suite.T(), nil, err) + assert.Equal(suite.T(), 200, resp.StatusCode) + }) }