Skip to content

Commit cb51448

Browse files
authored
add upgrade test for daemonset (#1064)
1 parent 7cc826c commit cb51448

File tree

1 file changed

+123
-0
lines changed

1 file changed

+123
-0
lines changed

kubernetes/resource_kubernetes_daemonset_test.go

Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,81 @@ func TestAccKubernetesDaemonSet_with_tolerations_unset_toleration_seconds(t *tes
263263
})
264264
}
265265

266+
func TestAccKubernetesDaemonSet_regression(t *testing.T) {
267+
var conf1, conf2 appsv1.DaemonSet
268+
name := fmt.Sprintf("tf-acc-test-%s", acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))
269+
270+
resource.Test(t, resource.TestCase{
271+
PreCheck: func() { testAccPreCheck(t) },
272+
IDRefreshName: "kubernetes_daemonset.test",
273+
IDRefreshIgnore: []string{"metadata.0.resource_version"},
274+
ExternalProviders: testAccExternalProviders,
275+
CheckDestroy: testAccCheckKubernetesDaemonSetDestroy,
276+
Steps: []resource.TestStep{
277+
{
278+
Config: requiredProviders() + testAccKubernetesDaemonSetConfig_regression("kubernetes-released", name),
279+
Check: resource.ComposeAggregateTestCheckFunc(
280+
testAccCheckKubernetesDaemonSetExists("kubernetes_daemonset.test", &conf1),
281+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "metadata.0.annotations.%", "2"),
282+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "metadata.0.annotations.TestAnnotationOne", "one"),
283+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "metadata.0.annotations.TestAnnotationTwo", "two"),
284+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "metadata.0.labels.%", "3"),
285+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "metadata.0.labels.TestLabelOne", "one"),
286+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "metadata.0.labels.TestLabelTwo", "two"),
287+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "metadata.0.labels.TestLabelThree", "three"),
288+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "metadata.0.name", name),
289+
resource.TestCheckResourceAttrSet("kubernetes_daemonset.test", "metadata.0.generation"),
290+
resource.TestCheckResourceAttrSet("kubernetes_daemonset.test", "metadata.0.resource_version"),
291+
resource.TestCheckResourceAttrSet("kubernetes_daemonset.test", "metadata.0.self_link"),
292+
resource.TestCheckResourceAttrSet("kubernetes_daemonset.test", "metadata.0.uid"),
293+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "spec.0.template.0.spec.0.container.0.image", "nginx:1.7.8"),
294+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "spec.0.template.0.spec.0.container.0.name", "tf-acc-test"),
295+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "spec.0.strategy.0.type", "RollingUpdate"),
296+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "spec.0.strategy.0.rolling_update.0.max_unavailable", "1"),
297+
),
298+
},
299+
{
300+
Config: requiredProviders() + testAccKubernetesDaemonSetConfig_regression("kubernetes-local", name),
301+
Check: resource.ComposeAggregateTestCheckFunc(
302+
testAccCheckKubernetesDaemonSetExists("kubernetes_daemonset.test", &conf2),
303+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "metadata.0.annotations.%", "2"),
304+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "metadata.0.annotations.TestAnnotationOne", "one"),
305+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "metadata.0.annotations.TestAnnotationTwo", "two"),
306+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "metadata.0.labels.%", "3"),
307+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "metadata.0.labels.TestLabelOne", "one"),
308+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "metadata.0.labels.TestLabelTwo", "two"),
309+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "metadata.0.labels.TestLabelThree", "three"),
310+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "metadata.0.name", name),
311+
resource.TestCheckResourceAttrSet("kubernetes_daemonset.test", "metadata.0.generation"),
312+
resource.TestCheckResourceAttrSet("kubernetes_daemonset.test", "metadata.0.resource_version"),
313+
resource.TestCheckResourceAttrSet("kubernetes_daemonset.test", "metadata.0.self_link"),
314+
resource.TestCheckResourceAttrSet("kubernetes_daemonset.test", "metadata.0.uid"),
315+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "spec.0.template.0.spec.0.container.0.image", "nginx:1.7.8"),
316+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "spec.0.template.0.spec.0.container.0.name", "tf-acc-test"),
317+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "spec.0.strategy.0.type", "RollingUpdate"),
318+
resource.TestCheckResourceAttr("kubernetes_daemonset.test", "spec.0.strategy.0.rolling_update.0.max_unavailable", "1"),
319+
testAccCheckKubernetesDaemonsetForceNew(&conf1, &conf2, false),
320+
),
321+
},
322+
},
323+
})
324+
}
325+
326+
func testAccCheckKubernetesDaemonsetForceNew(old, new *appsv1.DaemonSet, wantNew bool) resource.TestCheckFunc {
327+
return func(s *terraform.State) error {
328+
if wantNew {
329+
if old.ObjectMeta.UID == new.ObjectMeta.UID {
330+
return fmt.Errorf("Expecting new resource for daemonset %s", old.ObjectMeta.UID)
331+
}
332+
} else {
333+
if old.ObjectMeta.UID != new.ObjectMeta.UID {
334+
return fmt.Errorf("Expecting daemonset UIDs to be the same: expected %s got %s", old.ObjectMeta.UID, new.ObjectMeta.UID)
335+
}
336+
}
337+
return nil
338+
}
339+
}
340+
266341
func testAccCheckKubernetesDaemonSetDestroy(s *terraform.State) error {
267342
conn, err := testAccProvider.Meta().(KubeClientsets).MainClientset()
268343

@@ -672,3 +747,51 @@ func testAccKubernetesDaemonSetConfigWithTolerations(rcName, imageName string, t
672747
}
673748
`, rcName, operator, valueString, tolerationDuration, imageName)
674749
}
750+
751+
func testAccKubernetesDaemonSetConfig_regression(provider, name string) string {
752+
return fmt.Sprintf(`resource "kubernetes_daemonset" "test" {
753+
provider = %s
754+
metadata {
755+
annotations = {
756+
TestAnnotationOne = "one"
757+
TestAnnotationTwo = "two"
758+
}
759+
760+
labels = {
761+
TestLabelOne = "one"
762+
TestLabelTwo = "two"
763+
TestLabelThree = "three"
764+
}
765+
766+
name = "%s"
767+
}
768+
769+
spec {
770+
selector {
771+
match_labels = {
772+
TestLabelOne = "one"
773+
TestLabelTwo = "two"
774+
TestLabelThree = "three"
775+
}
776+
}
777+
778+
template {
779+
metadata {
780+
labels = {
781+
TestLabelOne = "one"
782+
TestLabelTwo = "two"
783+
TestLabelThree = "three"
784+
}
785+
}
786+
787+
spec {
788+
container {
789+
image = "nginx:1.7.8"
790+
name = "tf-acc-test"
791+
}
792+
}
793+
}
794+
}
795+
}
796+
`, provider, name)
797+
}

0 commit comments

Comments
 (0)