mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-11 17:12:51 +00:00
Add test covering pod disruption budget treatment.
This commit is contained in:
127
api/krusty/poddisruptionbudget_test.go
Normal file
127
api/krusty/poddisruptionbudget_test.go
Normal file
@@ -0,0 +1,127 @@
|
||||
// Copyright 2020 The Kubernetes Authors.
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
package krusty_test
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
|
||||
)
|
||||
|
||||
func TestPodDisruptionBudgetBasics(t *testing.T) {
|
||||
th := kusttest_test.MakeHarness(t)
|
||||
th.WriteF("pdbLiteral.yaml", `
|
||||
apiVersion: policy/v1beta1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: pdbLiteral
|
||||
spec:
|
||||
maxUnavailable: 90
|
||||
`)
|
||||
th.WriteF("pdbPercentage.yaml", `
|
||||
apiVersion: policy/v1beta1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: pdbPercentage
|
||||
spec:
|
||||
maxUnavailable: 90%
|
||||
`)
|
||||
th.WriteK(".", `
|
||||
resources:
|
||||
- pdbLiteral.yaml
|
||||
- pdbPercentage.yaml
|
||||
`)
|
||||
m := th.Run(".", th.MakeDefaultOptions())
|
||||
// In a PodDisruptionBudget, the fields maxUnavailable
|
||||
// minAvailable are mutually exclusive, and both can hold
|
||||
// either an integer, i.e. 10, or string that has to be
|
||||
// an int followed by a percent sign, e.g. 10%.
|
||||
th.AssertActualEqualsExpected(m, `
|
||||
apiVersion: policy/v1beta1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: pdbLiteral
|
||||
spec:
|
||||
maxUnavailable: 90
|
||||
---
|
||||
apiVersion: policy/v1beta1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: pdbPercentage
|
||||
spec:
|
||||
maxUnavailable: 90%
|
||||
`)
|
||||
}
|
||||
|
||||
func TestPodDisruptionBudgetMerging(t *testing.T) {
|
||||
th := kusttest_test.MakeHarness(t)
|
||||
opts := th.MakeDefaultOptions()
|
||||
th.WriteF("pdb-patch.yaml", `
|
||||
apiVersion: policy/v1beta1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: generic-pdb
|
||||
spec:
|
||||
maxUnavailable: 1
|
||||
`)
|
||||
th.WriteF("my_file.yaml", `
|
||||
apiVersion: policy/v1beta1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: championships-api
|
||||
labels:
|
||||
faceit-pdb: default
|
||||
spec:
|
||||
maxUnavailable: 100%
|
||||
---
|
||||
apiVersion: policy/v1beta1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
name: championships-api-2
|
||||
labels:
|
||||
faceit-pdb: default
|
||||
spec:
|
||||
maxUnavailable: 100%
|
||||
`)
|
||||
th.WriteK(".", `
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
patches:
|
||||
- path: pdb-patch.yaml
|
||||
target:
|
||||
kind: PodDisruptionBudget
|
||||
labelSelector: faceit-pdb=default
|
||||
|
||||
resources:
|
||||
- my_file.yaml
|
||||
`)
|
||||
m := th.Run(".", opts)
|
||||
expFmt := `
|
||||
apiVersion: policy/v1beta1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
labels:
|
||||
faceit-pdb: default
|
||||
name: championships-api
|
||||
spec:
|
||||
maxUnavailable: %s
|
||||
---
|
||||
apiVersion: policy/v1beta1
|
||||
kind: PodDisruptionBudget
|
||||
metadata:
|
||||
labels:
|
||||
faceit-pdb: default
|
||||
name: championships-api-2
|
||||
spec:
|
||||
maxUnavailable: %s
|
||||
`
|
||||
// In a PodDisruptionBudget, the fields maxUnavailable
|
||||
// minAvailable are mutually exclusive, and both can hold
|
||||
// either an integer, i.e. 10, or string that has to be
|
||||
// an int followed by a percent sign, e.g. 10%.
|
||||
th.AssertActualEqualsExpected(m, opts.IfApiMachineryElseKyaml(
|
||||
fmt.Sprintf(expFmt, `"1"`, `"1"`),
|
||||
fmt.Sprintf(expFmt, `1`, `1`)))
|
||||
}
|
||||
Reference in New Issue
Block a user