Skip to content

Commit

Permalink
add test
Browse files Browse the repository at this point in the history
Signed-off-by: Mikhail Scherba <mikhail.scherba@flant.com>
  • Loading branch information
miklezzzz committed Jul 2, 2024
1 parent c1b1d11 commit 87e644a
Show file tree
Hide file tree
Showing 2 changed files with 153 additions and 5 deletions.
48 changes: 48 additions & 0 deletions pkg/module_manager/models/modules/values_storage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,54 @@ xxx: yyy
`, st.GetValues(false).AsString("yaml"))
}

func TestApplyNewStaticValues(t *testing.T) {
cfg := `
type: object
default: {}
additionalProperties: false
properties:
xxx:
type: string
highAvailability:
type: boolean
`

vcfg := `
x-extend:
schema: config-values.yaml
type: object
default: {}
properties:
internal:
type: object
default: {}
properties:
fooBar:
type: string
default: baz
`
initial := utils.Values{
"xxx": "yyy",
}

st, err := NewValuesStorage("global", initial, []byte(cfg), []byte(vcfg))
require.NoError(t, err)

newStatic := utils.Values{
"xxx": "zzz",
}

err = st.applyNewStaticValues(newStatic)
require.NoError(t, err)

v := st.GetValues(false)
assert.YAMLEq(t, `
internal:
fooBar: baz
xxx: zzz
`, v.AsString("yaml"))
}

func TestPatchValues(t *testing.T) {
cb, vb, err := utils.ReadOpenAPIFiles("./testdata/global/openapi")
require.NoError(t, err)
Expand Down
110 changes: 105 additions & 5 deletions pkg/module_manager/scheduler/scheduler_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"path/filepath"
"testing"

"github.com/dominikbraun/graph"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

Expand All @@ -15,6 +16,7 @@ import (
"github.com/flant/addon-operator/pkg/module_manager/scheduler/extenders/kube_config"
"github.com/flant/addon-operator/pkg/module_manager/scheduler/extenders/script_enabled"
"github.com/flant/addon-operator/pkg/module_manager/scheduler/extenders/static"
"github.com/flant/addon-operator/pkg/module_manager/scheduler/node"
node_mock "github.com/flant/addon-operator/pkg/module_manager/scheduler/node/mock"
)

Expand Down Expand Up @@ -173,21 +175,119 @@ certManagerEnabled: true
}

func TestAddModuleVertex(t *testing.T) {
var nodePtr *node.Node
s := NewScheduler(context.TODO())
basicModule := &node_mock.MockModule{
// no root
assert.Equal(t, nodePtr, s.root)
basicModuleIngress := &node_mock.MockModule{
Name: "ingress-nginx",
Order: 402,
}

err := s.AddModuleVertex(basicModule)
err := s.AddModuleVertex(basicModuleIngress)
assert.NoError(t, err)

vertex, err := s.dag.Vertex(basicModule.GetName())
// new module vertex is in place
vertexIngress, err := s.dag.Vertex(basicModuleIngress.GetName())
assert.NoError(t, err)
assert.Equal(t, false, vertexIngress.GetState())

_, err = s.dag.Vertex(vertex.GetWeight().String())
weightVertexIngress, err := s.dag.Vertex(vertexIngress.GetWeight().String())
assert.NoError(t, err)
assert.Equal(t, false, vertex.GetState())

assert.Equal(t, weightVertexIngress, s.root)

_, err = s.dag.Edge(vertexIngress.GetWeight().String(), basicModuleIngress.GetName())
assert.NoError(t, err)

// new vertex with a lower order number - new root
basicModuleAPE := &node_mock.MockModule{
Name: "admission-policy-engine",
Order: 42,
}

err = s.AddModuleVertex(basicModuleAPE)
assert.NoError(t, err)

vertexAPE, err := s.dag.Vertex(basicModuleAPE.GetName())
assert.NoError(t, err)
assert.Equal(t, false, vertexAPE.GetState())

weightVertexAPE, err := s.dag.Vertex(vertexAPE.GetWeight().String())
assert.NoError(t, err)
assert.Equal(t, weightVertexAPE, s.root)

_, err = s.dag.Edge(vertexAPE.GetWeight().String(), basicModuleAPE.GetName())
assert.NoError(t, err)

_, err = s.dag.Edge(vertexAPE.GetWeight().String(), vertexIngress.GetWeight().String())
assert.NoError(t, err)

_, err = s.dag.Edge(vertexIngress.GetWeight().String(), basicModuleIngress.GetName())
assert.NoError(t, err)

// new vertex with a higher order number
basicModuleDNS := &node_mock.MockModule{
Name: "node-local-dns",
Order: 510,
}

err = s.AddModuleVertex(basicModuleDNS)
assert.NoError(t, err)

vertexDNS, err := s.dag.Vertex(basicModuleDNS.GetName())
assert.NoError(t, err)

weightVertexDNS, err := s.dag.Vertex(vertexDNS.GetWeight().String())
assert.NoError(t, err)
assert.Equal(t, weightVertexAPE, s.root)

_, err = s.dag.Edge(vertexIngress.GetWeight().String(), weightVertexDNS.GetWeight().String())
assert.NoError(t, err)

_, err = s.dag.Edge(weightVertexDNS.GetWeight().String(), basicModuleDNS.GetName())
assert.NoError(t, err)

// new vertex with the same order number
basicModuleChrony := &node_mock.MockModule{
Name: "chrony",
Order: 402,
}

err = s.AddModuleVertex(basicModuleChrony)
assert.NoError(t, err)

_, err = s.dag.Vertex(basicModuleChrony.GetName())
assert.NoError(t, err)

_, err = s.dag.Edge(vertexIngress.GetWeight().String(), basicModuleChrony.GetName())
assert.NoError(t, err)

// new vertex between two existing vertices

basicModuleFoo := &node_mock.MockModule{
Name: "foo",
Order: 300,
}

err = s.AddModuleVertex(basicModuleFoo)
assert.NoError(t, err)

weightVertexFoo, err := s.dag.Vertex(basicModuleFoo.GetName())
assert.NoError(t, err)

_, err = s.dag.Edge(weightVertexFoo.GetWeight().String(), basicModuleFoo.GetName())
assert.NoError(t, err)

_, err = s.dag.Edge(weightVertexAPE.GetWeight().String(), weightVertexFoo.GetWeight().String())
assert.NoError(t, err)

_, err = s.dag.Edge(weightVertexFoo.GetWeight().String(), weightVertexIngress.GetWeight().String())
assert.NoError(t, err)

_, err = s.dag.Edge(weightVertexAPE.GetWeight().String(), weightVertexIngress.GetWeight().String())
assert.Error(t, err)
assert.Equal(t, graph.ErrEdgeNotFound, err)
}

func TestRecalculateGraph(t *testing.T) {
Expand Down

0 comments on commit 87e644a

Please sign in to comment.