github.com/jingruilea/kubeedge@v1.2.0-beta.0.0.20200410162146-4bb8902b3879/tests/e2e/utils/test_setup.go (about)

     1  /*
     2  Copyright 2019 The KubeEdge Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8     http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  package utils
    18  
    19  import (
    20  	"fmt"
    21  	"io/ioutil"
    22  	"os"
    23  	"os/exec"
    24  	"strings"
    25  	"time"
    26  
    27  	"sigs.k8s.io/yaml"
    28  
    29  	cloudcore "github.com/kubeedge/kubeedge/pkg/apis/componentconfig/cloudcore/v1alpha1"
    30  	edgecore "github.com/kubeedge/kubeedge/pkg/apis/componentconfig/edgecore/v1alpha1"
    31  	edgesite "github.com/kubeedge/kubeedge/pkg/apis/componentconfig/edgesite/v1alpha1"
    32  	"github.com/kubeedge/kubeedge/tests/e2e/constants"
    33  )
    34  
    35  //GenerateCerts - Generates Cerificates for Edge and Cloud nodes copy to respective folders
    36  func GenerateCerts() error {
    37  	cmd := exec.Command("bash", "-x", "scripts/generate_cert.sh")
    38  	if err := PrintCombinedOutput(cmd); err != nil {
    39  		return err
    40  	}
    41  	return nil
    42  }
    43  
    44  func StartCloudCore() error {
    45  	catConfigCmd := exec.Command("sh", "-c", constants.CatCloudCoreConfigFile)
    46  	Infof("===========> Executing: %s\n", strings.Join(catConfigCmd.Args, " "))
    47  	bytes, _ := catConfigCmd.CombinedOutput()
    48  	Infof("cloudcore, config:\n %v", string(bytes))
    49  
    50  	//Run ./cloudcore binary
    51  	cmd := exec.Command("sh", "-c", constants.RunCloudcore)
    52  	if err := PrintCombinedOutput(cmd); err != nil {
    53  		Errorf("start cloudcore error %v", err)
    54  		return err
    55  	}
    56  	//Expect(err).Should(BeNil())
    57  	time.Sleep(5 * time.Second)
    58  
    59  	checkcmd := exec.Command("sh", "-c", constants.CheckCloudcore)
    60  	if err := PrintCombinedOutput(checkcmd); err != nil {
    61  		catcmd := exec.Command("sh", "-c", constants.CatCloudcoreLog)
    62  		Infof("===========> Executing: %s\n", strings.Join(catcmd.Args, " "))
    63  		lbytes, _ := catcmd.CombinedOutput()
    64  		Errorf("cloudcore, log:\n %v", string(lbytes))
    65  		Errorf("cloudcore start error %v", err)
    66  		os.Exit(1)
    67  	}
    68  	return nil
    69  }
    70  
    71  func StartEdgeCore() error {
    72  	catConfig := exec.Command("sh", "-c", constants.CatEdgeCoreConfigFile)
    73  	Infof("===========> Executing: %s\n", strings.Join(catConfig.Args, " "))
    74  	cbytes, _ := catConfig.CombinedOutput()
    75  	Infof("edgecore config :\n %v", string(cbytes))
    76  
    77  	//Run ./edgecore after node registration
    78  	cmd := exec.Command("sh", "-c", constants.RunEdgecore)
    79  	if err := PrintCombinedOutput(cmd); err != nil {
    80  		Errorf("start edgecore error %v", err)
    81  		return err
    82  	}
    83  	//Expect(err).Should(BeNil())
    84  	time.Sleep(5 * time.Second)
    85  
    86  	checkcmd := exec.Command("sh", "-c", constants.CheckEdgecore)
    87  	if err := PrintCombinedOutput(checkcmd); err != nil {
    88  		catcmd := exec.Command("sh", "-c", constants.CatEdgecoreLog)
    89  		Infof("===========> Executing: %s\n", strings.Join(catcmd.Args, " "))
    90  		bytes, _ := catcmd.CombinedOutput()
    91  		Errorf("edgecore log:\n %v", string(bytes))
    92  		Errorf("edgecore start error %v", err)
    93  		os.Exit(1)
    94  	}
    95  	return nil
    96  }
    97  
    98  func StartEdgeSite() error {
    99  	catConfig := exec.Command("sh", "-c", constants.CatEdgeSiteConfigFile)
   100  	Infof("===========> Executing: %s\n", strings.Join(catConfig.Args, " "))
   101  	cbytes, _ := catConfig.CombinedOutput()
   102  	Infof("edgesite config:\n%v", string(cbytes))
   103  
   104  	//Run ./edgecore after node registration
   105  	cmd := exec.Command("sh", "-c", constants.RunEdgeSite)
   106  	if err := PrintCombinedOutput(cmd); err != nil {
   107  		Infof("start edgesite error %v", err)
   108  		return err
   109  	}
   110  	//Expect(err).Should(BeNil())
   111  	time.Sleep(5 * time.Second)
   112  
   113  	checkcmd := exec.Command("sh", "-c", constants.CheckEdgesite)
   114  	if err := PrintCombinedOutput(checkcmd); err != nil {
   115  		catcmd := exec.Command("sh", "-c", constants.CatEdgeSiteLog)
   116  		Infof("===========> Executing: %s\n", strings.Join(catcmd.Args, " "))
   117  		bytes, _ := catcmd.CombinedOutput()
   118  		Errorf("edgesite log:\n %v", string(bytes))
   119  		Errorf("edgesite start error %v", err)
   120  		os.Exit(1)
   121  	}
   122  	return nil
   123  }
   124  
   125  func DeploySetup(ctx *TestContext, nodeName, setupType string) error {
   126  	// TODO change as constants or delete this function @kadisi
   127  	switch setupType {
   128  	case "deployment":
   129  		createCloudCoreConfigFile(ctx.Cfg.KubeConfigPath)
   130  		createEdgeCoreConfigFile(nodeName)
   131  	case "edgesite":
   132  		createEdgeSiteConfigFile(ctx.Cfg.K8SMasterForKubeEdge, nodeName)
   133  	}
   134  	//Expect(err).Should(BeNil())
   135  	time.Sleep(1 * time.Second)
   136  	return nil
   137  }
   138  
   139  func CleanUp(setupType string) error {
   140  	fmt.Println("**********************************", setupType)
   141  	cmd := exec.Command("bash", "-x", "scripts/cleanup.sh", setupType)
   142  	if err := PrintCombinedOutput(cmd); err != nil {
   143  		return err
   144  	}
   145  	time.Sleep(2 * time.Second)
   146  	return nil
   147  }
   148  
   149  func createCloudCoreConfigFile(kubeConfigPath string) {
   150  	c := cloudcore.NewDefaultCloudCoreConfig()
   151  	c.KubeAPIConfig.KubeConfig = kubeConfigPath
   152  	c.KubeAPIConfig.Master = ""
   153  	// TODO change ca file path @kadisi
   154  	c.Modules.CloudHub.TLSCAFile = "/tmp/cloudcore/rootCA.crt"
   155  	c.Modules.CloudHub.TLSCertFile = "/tmp/cloudcore/kubeedge.crt"
   156  	c.Modules.CloudHub.TLSPrivateKeyFile = "/tmp/cloudcore/kubeedge.key"
   157  
   158  	data, err := yaml.Marshal(c)
   159  	if err != nil {
   160  		fmt.Printf("Marshal cloudcore config to yaml error %v\n", err)
   161  		os.Exit(1)
   162  	}
   163  	if err := ioutil.WriteFile(constants.CloudCoreConfigFile, data, os.ModePerm); err != nil {
   164  		fmt.Printf("Create cloudcore config file %v error %v\n", constants.CloudCoreConfigFile, err)
   165  		os.Exit(1)
   166  	}
   167  }
   168  
   169  func createEdgeCoreConfigFile(nodeName string) {
   170  	c := edgecore.NewDefaultEdgeCoreConfig()
   171  	// TODO change ca file path @kadisi
   172  	c.Modules.EdgeHub.TLSCAFile = "/tmp/edgecore/rootCA.crt"
   173  	c.Modules.EdgeHub.TLSCertFile = "/tmp/edgecore/kubeedge.crt"
   174  	c.Modules.EdgeHub.TLSPrivateKeyFile = "/tmp/edgecore/kubeedge.key"
   175  	c.Modules.Edged.HostnameOverride = nodeName
   176  	c.DataBase.DataSource = "/tmp/edgecore/edgecore.db"
   177  	c.Modules.EventBus.MqttMode = edgecore.MqttModeInternal
   178  
   179  	data, err := yaml.Marshal(c)
   180  	if err != nil {
   181  		fmt.Printf("Marshal edgecore config to yaml error %v\n", err)
   182  		os.Exit(1)
   183  	}
   184  	if err := ioutil.WriteFile(constants.EdgeCoreConfigFile, data, os.ModePerm); err != nil {
   185  		fmt.Printf("Create edgecore config file %v error %v\n", constants.EdgeCoreConfigFile, err)
   186  		os.Exit(1)
   187  	}
   188  }
   189  
   190  func createEdgeSiteConfigFile(kubeMaster, nodeName string) {
   191  	c := edgesite.NewDefaultEdgeSiteConfig()
   192  	// TODO change ca file path @kadisi
   193  	c.Modules.Edged.HostnameOverride = nodeName
   194  	c.KubeAPIConfig.Master = kubeMaster
   195  	c.KubeAPIConfig.KubeConfig = ""
   196  	c.DataBase.DataSource = "/tmp/edgesite/edgesite.db"
   197  
   198  	data, err := yaml.Marshal(c)
   199  	if err != nil {
   200  		fmt.Printf("Marshal edgesite config to yaml error %v\n", err)
   201  		os.Exit(1)
   202  	}
   203  	if err := ioutil.WriteFile(constants.EdgeSiteConfigFile, data, os.ModePerm); err != nil {
   204  		fmt.Printf("Create edgesite config file %v error %v\n", constants.EdgeSiteConfigFile, err)
   205  		os.Exit(1)
   206  	}
   207  }