...

Source file src/github.com/chaos-mesh/chaos-mesh/test/e2e/chaos/sidecar/template_config.go

Documentation: github.com/chaos-mesh/chaos-mesh/test/e2e/chaos/sidecar

     1  // Copyright 2020 Chaos Mesh Authors.
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //     http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // See the License for the specific language governing permissions and
    12  // limitations under the License.
    13  
    14  package sidecar
    15  
    16  import (
    17  	"context"
    18  	"time"
    19  
    20  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    21  	"k8s.io/apimachinery/pkg/labels"
    22  	"k8s.io/apimachinery/pkg/util/wait"
    23  	"k8s.io/client-go/kubernetes"
    24  	"k8s.io/kubernetes/test/e2e/framework"
    25  	"sigs.k8s.io/controller-runtime/pkg/client"
    26  
    27  	"github.com/chaos-mesh/chaos-mesh/test/pkg/fixture"
    28  )
    29  
    30  func TestcaseInvalidConfigMapKey(
    31  	ns string,
    32  	cmNamespace string,
    33  	cmName string,
    34  	kubeCli kubernetes.Interface,
    35  	cli client.Client,
    36  ) {
    37  
    38  	ctx, cancel := context.WithCancel(context.Background())
    39  	err := createTemplateConfig(ctx, cli, cmName,
    40  		map[string]string{
    41  			"chaos-pd.yaml": `name: chaosfs-pd
    42  selector:
    43    labelSelectors:
    44      "app.kubernetes.io/component": "pd"`})
    45  	framework.ExpectNoError(err, "failed to create template config")
    46  
    47  	listOptions := metav1.ListOptions{
    48  		LabelSelector: labels.SelectorFromSet(map[string]string{
    49  			"app.kubernetes.io/component": "controller-manager",
    50  		}).String(),
    51  	}
    52  	pods, err := kubeCli.CoreV1().Pods(cmNamespace).List(listOptions)
    53  	framework.ExpectNoError(err, "get chaos mesh controller pods error")
    54  
    55  	err = wait.Poll(time.Second, 10*time.Second, func() (done bool, err error) {
    56  		newPods, err := kubeCli.CoreV1().Pods(cmNamespace).List(listOptions)
    57  		framework.ExpectNoError(err, "get chaos mesh controller pods error")
    58  		if !fixture.HaveSameUIDs(pods.Items, newPods.Items) {
    59  			return true, nil
    60  		}
    61  		if newPods.Items[0].Status.ContainerStatuses[0].RestartCount > 0 {
    62  			return true, nil
    63  		}
    64  		return false, nil
    65  	})
    66  	framework.ExpectError(err, "wait chaos mesh not dies")
    67  	framework.ExpectEqual(err.Error(), wait.ErrWaitTimeout.Error())
    68  
    69  	cancel()
    70  }
    71  
    72  func TestcaseInvalidConfiguration(
    73  	ns string,
    74  	cmNamespace string,
    75  	cmName string,
    76  	kubeCli kubernetes.Interface,
    77  	cli client.Client,
    78  ) {
    79  
    80  	ctx, cancel := context.WithCancel(context.Background())
    81  	defer cancel()
    82  	err := createTemplateConfig(ctx, cli, cmName,
    83  		map[string]string{
    84  			"data": `name: chaosfs-pd
    85  selector:
    86    labelSelectors:
    87      "app.kubernetes.io/component": "pd"`})
    88  	framework.ExpectNoError(err, "failed to create template config")
    89  
    90  	listOptions := metav1.ListOptions{
    91  		LabelSelector: labels.SelectorFromSet(map[string]string{
    92  			"app.kubernetes.io/component": "controller-manager",
    93  		}).String(),
    94  	}
    95  	pods, err := kubeCli.CoreV1().Pods(cmNamespace).List(listOptions)
    96  	framework.ExpectNoError(err, "get chaos mesh controller pods error")
    97  
    98  	err = wait.Poll(time.Second, 10*time.Second, func() (done bool, err error) {
    99  		newPods, err := kubeCli.CoreV1().Pods(cmNamespace).List(listOptions)
   100  		framework.ExpectNoError(err, "get chaos mesh controller pods error")
   101  		if !fixture.HaveSameUIDs(pods.Items, newPods.Items) {
   102  			return true, nil
   103  		}
   104  		if newPods.Items[0].Status.ContainerStatuses[0].RestartCount > 0 {
   105  			return true, nil
   106  		}
   107  		return false, nil
   108  	})
   109  	framework.ExpectError(err, "wait chaos mesh not dies")
   110  	framework.ExpectEqual(err.Error(), wait.ErrWaitTimeout.Error())
   111  }
   112