mirror of
https://github.com/kubesphere/kubekey.git
synced 2025-12-26 01:22:51 +00:00
Signed-off-by: joyceliu <joyceliu@yunify.com> Co-authored-by: joyceliu <joyceliu@yunify.com>
134 lines
2.8 KiB
Go
134 lines
2.8 KiB
Go
package executor
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"k8s.io/utils/ptr"
|
|
|
|
kkprojectv1 "github.com/kubesphere/kubekey/api/project/v1"
|
|
)
|
|
|
|
func TestBlockExecutor_DealRunOnce(t *testing.T) {
|
|
testcases := []struct {
|
|
name string
|
|
runOnce bool
|
|
except []string
|
|
}{
|
|
{
|
|
name: "runonce is false",
|
|
runOnce: false,
|
|
except: []string{"node1", "node2", "node3"},
|
|
},
|
|
{
|
|
name: "runonce is true",
|
|
runOnce: true,
|
|
except: []string{"node1"},
|
|
},
|
|
}
|
|
|
|
for _, tc := range testcases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
assert.ElementsMatch(t, blockExecutor{
|
|
hosts: []string{"node1", "node2", "node3"},
|
|
}.dealRunOnce(tc.runOnce), tc.except)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestBlockExecutor_DealIgnoreErrors(t *testing.T) {
|
|
testcases := []struct {
|
|
name string
|
|
ignoreErrors *bool
|
|
except *bool
|
|
}{
|
|
{
|
|
name: "ignoreErrors is empty",
|
|
ignoreErrors: nil,
|
|
except: ptr.To(true),
|
|
},
|
|
{
|
|
name: "ignoreErrors is true",
|
|
ignoreErrors: ptr.To(true),
|
|
except: ptr.To(true),
|
|
},
|
|
{
|
|
name: "ignoreErrors is false",
|
|
ignoreErrors: ptr.To(false),
|
|
except: ptr.To(false),
|
|
},
|
|
}
|
|
|
|
for _, tc := range testcases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
assert.Equal(t, blockExecutor{
|
|
ignoreErrors: ptr.To(true),
|
|
}.dealIgnoreErrors(tc.ignoreErrors), tc.except)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestBlockExecutor_DealTags(t *testing.T) {
|
|
testcases := []struct {
|
|
name string
|
|
tags kkprojectv1.Taggable
|
|
except kkprojectv1.Taggable
|
|
}{
|
|
{
|
|
name: "single tags",
|
|
tags: kkprojectv1.Taggable{Tags: []string{"c"}},
|
|
except: kkprojectv1.Taggable{Tags: []string{"a", "b", "c"}},
|
|
},
|
|
{
|
|
name: "mutil tags",
|
|
tags: kkprojectv1.Taggable{Tags: []string{"c", "d"}},
|
|
except: kkprojectv1.Taggable{Tags: []string{"a", "b", "c", "d"}},
|
|
},
|
|
{
|
|
name: "repeat tags",
|
|
tags: kkprojectv1.Taggable{Tags: []string{"b", "c"}},
|
|
except: kkprojectv1.Taggable{Tags: []string{"a", "b", "c"}},
|
|
},
|
|
}
|
|
|
|
for _, tc := range testcases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
assert.ElementsMatch(t, blockExecutor{
|
|
tags: kkprojectv1.Taggable{Tags: []string{"a", "b"}},
|
|
}.dealTags(tc.tags).Tags, tc.except.Tags)
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestBlockExecutor_DealWhen(t *testing.T) {
|
|
testcases := []struct {
|
|
name string
|
|
when []string
|
|
except []string
|
|
}{
|
|
{
|
|
name: "single when",
|
|
when: []string{"c"},
|
|
except: []string{"a", "b", "c"},
|
|
},
|
|
{
|
|
name: "mutil when",
|
|
when: []string{"c", "d"},
|
|
except: []string{"a", "b", "c", "d"},
|
|
},
|
|
{
|
|
name: "repeat when",
|
|
when: []string{"b", "c"},
|
|
except: []string{"a", "b", "c"},
|
|
},
|
|
}
|
|
|
|
for _, tc := range testcases {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
assert.ElementsMatch(t, blockExecutor{
|
|
when: []string{"a", "b"},
|
|
}.dealWhen(kkprojectv1.When{Data: tc.when}), tc.except)
|
|
})
|
|
}
|
|
}
|