devtron-labs / silver-surfer

Kubernetes objects api-version compatibility checker and provides migration path for K8s objects and prepare it for cluster upgrades
https://devtron.ai/
Apache License 2.0
356 stars 37 forks source link

Tests fail against local Kubernetes clusters #38

Open skoenig opened 8 months ago

skoenig commented 8 months ago

I tried to run the tests locally against minikube (minikube version: v1.31.2) and kind (kind v0.20.0 go1.20.4 linux/amd64) clusters using go version go1.21.6 linux/amd64. but I got the following errors with both:

$ make test
go vet
go test -race -v -cover ./...
?       github.com/devtron-labs/silver-surfer   [no test files]
?       github.com/devtron-labs/silver-surfer/pkg/log   [no test files]
=== RUN   TestValidateCluster
=== RUN   TestValidateCluster/check_cluster
    kubedd_test.go:45: ValidateCluster() error = <nil>, wantErr true
--- FAIL: TestValidateCluster (28.02s)
    --- FAIL: TestValidateCluster/check_cluster (27.98s)
FAIL
coverage: 32.4% of statements
FAIL    github.com/devtron-labs/silver-surfer/kubedd    28.095s
=== RUN   TestCluster_ServerVersion
=== RUN   TestCluster_ServerVersion/cluster_version
    Cluster_test.go:31: ServerVersion() got = 1.29, want 
--- FAIL: TestCluster_ServerVersion (0.06s)
    --- FAIL: TestCluster_ServerVersion/cluster_version (0.06s)
=== RUN   TestDownloadFile
=== RUN   TestDownloadFile/Positive_-_Test_deployment
=== RUN   TestDownloadFile/Negative_-_Test_deployment
=== RUN   TestDownloadFile/Positive_-_Test_Service
=== RUN   TestDownloadFile/Negative_-_Test_Service
=== RUN   TestDownloadFile/Positive_-_Test_Service#01
=== RUN   TestDownloadFile/Positive_-_Test_deployment_extension,_handled_via_apps/v1
    K8sSchemaParser_test.go:339: DownloadFile() error = <nil>, wantErr true
=== RUN   TestDownloadFile/Positive_-_Test_deployment_extension
    K8sSchemaParser_test.go:339: DownloadFile() error = <nil>, wantErr true
=== RUN   TestDownloadFile/Positive_-_Test_configmap
=== RUN   TestDownloadFile/Positive_-_Test_secret
=== RUN   TestDownloadFile/Positive_-_Test_secret_stringdata
--- FAIL: TestDownloadFile (193.01s)
    --- PASS: TestDownloadFile/Positive_-_Test_deployment (21.53s)
    --- PASS: TestDownloadFile/Negative_-_Test_deployment (18.52s)
    --- PASS: TestDownloadFile/Positive_-_Test_Service (16.74s)
    --- PASS: TestDownloadFile/Negative_-_Test_Service (18.15s)
    --- PASS: TestDownloadFile/Positive_-_Test_Service#01 (16.62s)
    --- FAIL: TestDownloadFile/Positive_-_Test_deployment_extension,_handled_via_apps/v1 (17.26s)
    --- FAIL: TestDownloadFile/Positive_-_Test_deployment_extension (19.10s)
    --- PASS: TestDownloadFile/Positive_-_Test_configmap (21.89s)
    --- PASS: TestDownloadFile/Positive_-_Test_secret (21.10s)
    --- PASS: TestDownloadFile/Positive_-_Test_secret_stringdata (22.08s)
=== RUN   Test_compareVersion
=== RUN   Test_compareVersion/compare_deployment
=== RUN   Test_compareVersion/compare_deployment#01
=== RUN   Test_compareVersion/compare_APIService
=== RUN   Test_compareVersion/compare_deployment#02
=== RUN   Test_compareVersion/compare_deployment#03
=== RUN   Test_compareVersion/compare_deployment#04
=== RUN   Test_compareVersion/compare_deployment#05
--- PASS: Test_compareVersion (0.00s)
    --- PASS: Test_compareVersion/compare_deployment (0.00s)
    --- PASS: Test_compareVersion/compare_deployment#01 (0.00s)
    --- PASS: Test_compareVersion/compare_APIService (0.00s)
    --- PASS: Test_compareVersion/compare_deployment#02 (0.00s)
    --- PASS: Test_compareVersion/compare_deployment#03 (0.00s)
    --- PASS: Test_compareVersion/compare_deployment#04 (0.00s)
    --- PASS: Test_compareVersion/compare_deployment#05 (0.00s)
=== RUN   Test_jsonOutputManager_put
=== RUN   Test_jsonOutputManager_put/empty_input
    Output_test.go:120: 
            Error Trace:    /home/skoenig/workspace/silver-surfer/pkg/Output_test.go:120
            Error:          Not equal: 
                            expected: "[\n\t{\n\t\t\"filename\": \"\",\n\t\t\"kind\": \"\",\n\t\t\"status\": \"skipped\",\n\t\t\"errors\": []\n\t}\n]\n"
                            actual  : "[\n\t{\n\t\t\"FileName\": \"\",\n\t\t\"Kind\": \"\",\n\t\t\"APIVersion\": \"\",\n\t\t\"ResourceName\": \"\",\n\t\t\"ResourceNamespace\": \"\",\n\t\t\"Deleted\": false,\n\t\t\"Deprecated\": false,\n\t\t\"LatestAPIVersion\": \"\",\n\t\t\"IsVersionSupported\": 0,\n\t\t\"ErrorsForOriginal\": null,\n\t\t\"ErrorsForLatest\": null,\n\t\t\"DeprecationForOriginal\": null,\n\t\t\"DeprecationForLatest\": null\n\t}\n]\n"

                            Diff:
                            --- Expected
                            +++ Actual
                            @@ -2,6 +2,15 @@
                                {
                            -       "filename": "",
                            -       "kind": "",
                            -       "status": "skipped",
                            -       "errors": []
                            +       "FileName": "",
                            +       "Kind": "",
                            +       "APIVersion": "",
                            +       "ResourceName": "",
                            +       "ResourceNamespace": "",
                            +       "Deleted": false,
                            +       "Deprecated": false,
                            +       "LatestAPIVersion": "",
                            +       "IsVersionSupported": 0,
                            +       "ErrorsForOriginal": null,
                            +       "ErrorsForLatest": null,
                            +       "DeprecationForOriginal": null,
                            +       "DeprecationForLatest": null
                                }
            Test:           Test_jsonOutputManager_put/empty_input
=== RUN   Test_jsonOutputManager_put/file_with_no_errors
    Output_test.go:120: 
            Error Trace:    /home/skoenig/workspace/silver-surfer/pkg/Output_test.go:120
            Error:          Not equal: 
                            expected: "[\n\t{\n\t\t\"filename\": \"deployment.yaml\",\n\t\t\"kind\": \"deployment\",\n\t\t\"status\": \"valid\",\n\t\t\"errors\": []\n\t}\n]\n"
                            actual  : "[\n\t{\n\t\t\"FileName\": \"deployment.yaml\",\n\t\t\"Kind\": \"deployment\",\n\t\t\"APIVersion\": \"\",\n\t\t\"ResourceName\": \"\",\n\t\t\"ResourceNamespace\": \"\",\n\t\t\"Deleted\": false,\n\t\t\"Deprecated\": false,\n\t\t\"LatestAPIVersion\": \"\",\n\t\t\"IsVersionSupported\": 0,\n\t\t\"ErrorsForOriginal\": null,\n\t\t\"ErrorsForLatest\": null,\n\t\t\"DeprecationForOriginal\": null,\n\t\t\"DeprecationForLatest\": null\n\t}\n]\n"

                            Diff:
                            --- Expected
                            +++ Actual
                            @@ -2,6 +2,15 @@
                                {
                            -       "filename": "deployment.yaml",
                            -       "kind": "deployment",
                            -       "status": "valid",
                            -       "errors": []
                            +       "FileName": "deployment.yaml",
                            +       "Kind": "deployment",
                            +       "APIVersion": "",
                            +       "ResourceName": "",
                            +       "ResourceNamespace": "",
                            +       "Deleted": false,
                            +       "Deprecated": false,
                            +       "LatestAPIVersion": "",
                            +       "IsVersionSupported": 0,
                            +       "ErrorsForOriginal": null,
                            +       "ErrorsForLatest": null,
                            +       "DeprecationForOriginal": null,
                            +       "DeprecationForLatest": null
                                }
            Test:           Test_jsonOutputManager_put/file_with_no_errors
=== RUN   Test_jsonOutputManager_put/file_with_errors
    Output_test.go:120: 
            Error Trace:    /home/skoenig/workspace/silver-surfer/pkg/Output_test.go:120
            Error:          Not equal: 
                            expected: "[\n\t{\n\t\t\"filename\": \"service.yaml\",\n\t\t\"kind\": \"service\",\n\t\t\"status\": \"invalid\",\n\t\t\"errors\": [\n\t\t\t\"error: i am a error\",\n\t\t\t\"error: i am another error\"\n\t\t]\n\t}\n]\n"
                            actual  : "[\n\t{\n\t\t\"FileName\": \"service.yaml\",\n\t\t\"Kind\": \"service\",\n\t\t\"APIVersion\": \"\",\n\t\t\"ResourceName\": \"\",\n\t\t\"ResourceNamespace\": \"\",\n\t\t\"Deleted\": false,\n\t\t\"Deprecated\": false,\n\t\t\"LatestAPIVersion\": \"\",\n\t\t\"IsVersionSupported\": 0,\n\t\t\"ErrorsForOriginal\": null,\n\t\t\"ErrorsForLatest\": null,\n\t\t\"DeprecationForOriginal\": null,\n\t\t\"DeprecationForLatest\": null\n\t}\n]\n"

                            Diff:
                            --- Expected
                            +++ Actual
                            @@ -2,9 +2,15 @@
                                {
                            -       "filename": "service.yaml",
                            -       "kind": "service",
                            -       "status": "invalid",
                            -       "errors": [
                            -           "error: i am a error",
                            -           "error: i am another error"
                            -       ]
                            +       "FileName": "service.yaml",
                            +       "Kind": "service",
                            +       "APIVersion": "",
                            +       "ResourceName": "",
                            +       "ResourceNamespace": "",
                            +       "Deleted": false,
                            +       "Deprecated": false,
                            +       "LatestAPIVersion": "",
                            +       "IsVersionSupported": 0,
                            +       "ErrorsForOriginal": null,
                            +       "ErrorsForLatest": null,
                            +       "DeprecationForOriginal": null,
                            +       "DeprecationForLatest": null
                                }
            Test:           Test_jsonOutputManager_put/file_with_errors
--- FAIL: Test_jsonOutputManager_put (0.01s)
    --- FAIL: Test_jsonOutputManager_put/empty_input (0.01s)
    --- FAIL: Test_jsonOutputManager_put/file_with_no_errors (0.00s)
    --- FAIL: Test_jsonOutputManager_put/file_with_errors (0.00s)
=== RUN   Test_tapOutputManager_put
=== RUN   Test_tapOutputManager_put/file_with_no_errors
=== RUN   Test_tapOutputManager_put/file_with_errors
=== RUN   Test_tapOutputManager_put/file_with_no_errors_because_of_a_skip
--- PASS: Test_tapOutputManager_put (0.00s)
    --- PASS: Test_tapOutputManager_put/file_with_no_errors (0.00s)
    --- PASS: Test_tapOutputManager_put/file_with_errors (0.00s)
    --- PASS: Test_tapOutputManager_put/file_with_no_errors_because_of_a_skip (0.00s)
=== RUN   TestRegexMatch
=== RUN   TestRegexMatch/ends_with_match
|   foo|     b|
|   foo| bn|
1 issue(s): fix issues before migration
=== RUN   TestRegexMatch/starts_with_match
|   foo|     b|
|   foo| bn|
1 issue(s): fix issues before migration
=== RUN   TestRegexMatch/has_match
|   foo|     b|
|   foo| bn|
1 issue(s): fix issues before migration
--- PASS: TestRegexMatch (0.00s)
    --- PASS: TestRegexMatch/ends_with_match (0.00s)
    --- PASS: TestRegexMatch/starts_with_match (0.00s)
    --- PASS: TestRegexMatch/has_match (0.00s)
FAIL
coverage: 43.1% of statements
FAIL    github.com/devtron-labs/silver-surfer/pkg       193.173s
FAIL
make: *** [Makefile:53: test] Error 1

Could we document more detailed instructions for local testing and possibly also provide test data under 'fixtures'? This would make it easier for new contributors to contribute to this project.