summaryrefslogtreecommitdiff
path: root/tests/e2e/utils/common.go
diff options
context:
space:
mode:
Diffstat (limited to 'tests/e2e/utils/common.go')
-rw-r--r--tests/e2e/utils/common.go250
1 files changed, 95 insertions, 155 deletions
diff --git a/tests/e2e/utils/common.go b/tests/e2e/utils/common.go
index b806efaf9..1b389c686 100644
--- a/tests/e2e/utils/common.go
+++ b/tests/e2e/utils/common.go
@@ -33,11 +33,13 @@ import (
v1 "k8s.io/api/core/v1"
apierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+ "k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/wait"
clientset "k8s.io/client-go/kubernetes"
"k8s.io/klog/v2"
"github.com/kubeedge/kubeedge/pkg/apis/devices/v1alpha2"
+ edgeclientset "github.com/kubeedge/kubeedge/pkg/client/clientset/versioned"
"github.com/kubeedge/kubeedge/tests/e2e/constants"
)
@@ -55,11 +57,6 @@ const (
Customized = "customized"
)
-var (
- ProtocolQuic bool
- ProtocolWebsocket bool
-)
-
var TokenClient Token
var ClientOpts *MQTT.ClientOptions
var Client MQTT.Client
@@ -210,105 +207,62 @@ func DeleteDeployment(c clientset.Interface, ns, name string) error {
return err
}
-// HandleDeviceModel to handle app deployment/delete using pod spec.
-func HandleDeviceModel(operation string, apiserver string, UID string, protocolType string) (bool, int) {
- var req *http.Request
- var err error
- var body io.Reader
-
- tr := &http.Transport{
- TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
- }
- client := &http.Client{
- Transport: tr,
- }
-
+// HandleDeviceModel to handle DeviceModel operation to apiserver.
+func HandleDeviceModel(c edgeclientset.Interface, operation string, UID string, protocolType string) error {
switch operation {
case http.MethodPost:
body := newDeviceModelObject(protocolType, false)
- respBytes, err := json.Marshal(body)
- if err != nil {
- Fatalf("Marshalling body failed: %v", err)
- }
- req, err = http.NewRequest(http.MethodPost, apiserver, bytes.NewBuffer(respBytes))
- req.Header.Set("Content-Type", "application/json")
- case "PATCH":
+ _, err := c.DevicesV1alpha2().DeviceModels("default").Create(context.TODO(), body, metav1.CreateOptions{})
+ return err
+
+ case http.MethodPatch:
body := newDeviceModelObject(protocolType, true)
- respBytes, err := json.Marshal(body)
+ reqBytes, err := json.Marshal(body)
if err != nil {
Fatalf("Marshalling body failed: %v", err)
}
- req, err = http.NewRequest(http.MethodPatch, apiserver+UID, bytes.NewBuffer(respBytes))
- req.Header.Set("Content-Type", "application/merge-patch+json")
+
+ _, err = c.DevicesV1alpha2().DeviceModels("default").Patch(context.TODO(), UID, types.MergePatchType, reqBytes, metav1.PatchOptions{})
+ return err
+
case http.MethodDelete:
- req, err = http.NewRequest(http.MethodDelete, apiserver+UID, body)
- req.Header.Set("Content-Type", "application/json")
- }
- if err != nil {
- // handle error
- Fatalf("Frame HTTP request failed: %v", err)
- return false, 0
- }
- t := time.Now()
- resp, err := client.Do(req)
- if err != nil {
- // handle error
- Fatalf("HTTP request is failed :%v", err)
- return false, 0
+ err := c.DevicesV1alpha2().DeviceModels("default").Delete(context.TODO(), UID, metav1.DeleteOptions{})
+ if err != nil && apierrors.IsNotFound(err) {
+ return nil
+ }
+ return err
}
- defer resp.Body.Close()
- Infof("%s %s %v in %v", req.Method, req.URL, resp.Status, time.Since(t))
- return true, resp.StatusCode
+
+ return nil
}
// HandleDeviceInstance to handle app deployment/delete using pod spec.
-func HandleDeviceInstance(operation string, apiserver string, nodeSelector string, UID string, protocolType string) (bool, int) {
- var req *http.Request
- var err error
- var body io.Reader
-
- tr := &http.Transport{
- TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
- }
- client := &http.Client{
- Transport: tr,
- }
+func HandleDeviceInstance(c edgeclientset.Interface, operation string, nodeSelector string, UID string, protocolType string) error {
switch operation {
case http.MethodPost:
body := newDeviceInstanceObject(nodeSelector, protocolType, false)
- respBytes, err := json.Marshal(body)
- if err != nil {
- Fatalf("Marshalling body failed: %v", err)
- }
- req, err = http.NewRequest(http.MethodPost, apiserver, bytes.NewBuffer(respBytes))
- req.Header.Set("Content-Type", "application/json")
- case "PATCH":
+ _, err := c.DevicesV1alpha2().Devices("default").Create(context.TODO(), body, metav1.CreateOptions{})
+ return err
+
+ case http.MethodPatch:
body := newDeviceInstanceObject(nodeSelector, protocolType, true)
- respBytes, err := json.Marshal(body)
+ reqBytes, err := json.Marshal(body)
if err != nil {
Fatalf("Marshalling body failed: %v", err)
}
- req, err = http.NewRequest(http.MethodPatch, apiserver+UID, bytes.NewBuffer(respBytes))
- req.Header.Set("Content-Type", "application/merge-patch+json")
+
+ _, err = c.DevicesV1alpha2().Devices("default").Patch(context.TODO(), UID, types.MergePatchType, reqBytes, metav1.PatchOptions{})
+ return err
+
case http.MethodDelete:
- req, err = http.NewRequest(http.MethodDelete, apiserver+UID, body)
- req.Header.Set("Content-Type", "application/json")
- }
- if err != nil {
- // handle error
- Fatalf("Frame HTTP request failed: %v", err)
- return false, 0
- }
- t := time.Now()
- resp, err := client.Do(req)
- if err != nil {
- // handle error
- Fatalf("HTTP request is failed :%v", err)
- return false, 0
+ err := c.DevicesV1alpha2().Devices("default").Delete(context.TODO(), UID, metav1.DeleteOptions{})
+ if err != nil && apierrors.IsNotFound(err) {
+ return nil
+ }
+ return err
}
- defer resp.Body.Close()
- Infof("%s %s %v in %v", req.Method, req.URL, resp.Status, time.Since(t))
- return true, resp.StatusCode
+
+ return nil
}
// newDeviceInstanceObject creates a new device instance object
@@ -373,93 +327,78 @@ func newDeviceModelObject(protocolType string, updated bool) *v1alpha2.DeviceMod
return &deviceModel
}
-// GetDeviceModel to get the deviceModel list and verify whether the contents of the device model matches with what is expected
-func GetDeviceModel(list *v1alpha2.DeviceModelList, getDeviceModelAPI string, expectedDeviceModel *v1alpha2.DeviceModel) ([]v1alpha2.DeviceModel, error) {
- resp, err := SendHTTPRequest(http.MethodGet, getDeviceModelAPI)
- if err != nil {
- Fatalf("Send HTTP Request failed: %v", err)
- return nil, err
- }
- defer resp.Body.Close()
- contents, err := io.ReadAll(resp.Body)
+func ListDeviceModel(c edgeclientset.Interface, ns string) ([]v1alpha2.DeviceModel, error) {
+ deviceModelList, err := c.DevicesV1alpha2().DeviceModels(ns).List(context.TODO(), metav1.ListOptions{})
if err != nil {
- Fatalf("HTTP Response reading has failed: %v", err)
return nil, err
}
- err = json.Unmarshal(contents, &list)
+ return deviceModelList.Items, nil
+}
+
+func ListDevice(c edgeclientset.Interface, ns string) ([]v1alpha2.Device, error) {
+ deviceList, err := c.DevicesV1alpha2().Devices(ns).List(context.TODO(), metav1.ListOptions{})
if err != nil {
- Fatalf("Unmarshal HTTP Response has failed: %v", err)
return nil, err
}
- if expectedDeviceModel != nil {
- modelExists := false
- for _, deviceModel := range list.Items {
- if expectedDeviceModel.ObjectMeta.Name == deviceModel.ObjectMeta.Name {
- modelExists = true
- if !reflect.DeepEqual(expectedDeviceModel.TypeMeta, deviceModel.TypeMeta) ||
- expectedDeviceModel.ObjectMeta.Namespace != deviceModel.ObjectMeta.Namespace ||
- !reflect.DeepEqual(expectedDeviceModel.Spec, deviceModel.Spec) {
- return nil, fmt.Errorf("the device model is not matching with what was expected")
- }
+ return deviceList.Items, nil
+}
+
+// CheckDeviceModelExists verify whether the contents of the device model matches with what is expected
+func CheckDeviceModelExists(deviceModels []v1alpha2.DeviceModel, expectedDeviceModel *v1alpha2.DeviceModel) error {
+ modelExists := false
+ for _, deviceModel := range deviceModels {
+ if expectedDeviceModel.ObjectMeta.Name == deviceModel.ObjectMeta.Name {
+ modelExists = true
+ if !reflect.DeepEqual(expectedDeviceModel.TypeMeta, deviceModel.TypeMeta) ||
+ expectedDeviceModel.ObjectMeta.Namespace != deviceModel.ObjectMeta.Namespace ||
+ !reflect.DeepEqual(expectedDeviceModel.Spec, deviceModel.Spec) {
+ return fmt.Errorf("the device model is not matching with what was expected")
}
+ break
}
- if !modelExists {
- return nil, fmt.Errorf("the requested device model is not found")
- }
}
- return list.Items, nil
+ if !modelExists {
+ return fmt.Errorf("the requested device model is not found")
+ }
+
+ return nil
}
-// GetDevice to get the device list
-func GetDevice(list *v1alpha2.DeviceList, getDeviceAPI string, expectedDevice *v1alpha2.Device) ([]v1alpha2.Device, error) {
- resp, err := SendHTTPRequest(http.MethodGet, getDeviceAPI)
- if err != nil {
- Fatalf("Send HTTP Request failed: %v", err)
- return nil, err
- }
- defer resp.Body.Close()
- contents, err := io.ReadAll(resp.Body)
- if err != nil {
- Fatalf("HTTP Response reading has failed: %v", err)
- return nil, err
- }
- err = json.Unmarshal(contents, &list)
- if err != nil {
- Fatalf("Unmarshal HTTP Response has failed: %v", err)
- return nil, err
- }
- if expectedDevice != nil {
- deviceExists := false
- for _, device := range list.Items {
- if expectedDevice.ObjectMeta.Name == device.ObjectMeta.Name {
- deviceExists = true
- if !reflect.DeepEqual(expectedDevice.TypeMeta, device.TypeMeta) ||
- expectedDevice.ObjectMeta.Namespace != device.ObjectMeta.Namespace ||
- !reflect.DeepEqual(expectedDevice.ObjectMeta.Labels, device.ObjectMeta.Labels) ||
- !reflect.DeepEqual(expectedDevice.Spec, device.Spec) {
- return nil, fmt.Errorf("the device is not matching with what was expected")
- }
- twinExists := false
- for _, expectedTwin := range expectedDevice.Status.Twins {
- for _, twin := range device.Status.Twins {
- if expectedTwin.PropertyName == twin.PropertyName {
- twinExists = true
- if !reflect.DeepEqual(expectedTwin.Desired, twin.Desired) {
- return nil, fmt.Errorf("Status twin " + twin.PropertyName + " not as expected")
- }
+func CheckDeviceExists(deviceList []v1alpha2.Device, expectedDevice *v1alpha2.Device) error {
+ deviceExists := false
+ for _, device := range deviceList {
+ if expectedDevice.ObjectMeta.Name == device.ObjectMeta.Name {
+ deviceExists = true
+ if !reflect.DeepEqual(expectedDevice.TypeMeta, device.TypeMeta) ||
+ expectedDevice.ObjectMeta.Namespace != device.ObjectMeta.Namespace ||
+ !reflect.DeepEqual(expectedDevice.ObjectMeta.Labels, device.ObjectMeta.Labels) ||
+ !reflect.DeepEqual(expectedDevice.Spec, device.Spec) {
+ return fmt.Errorf("the device is not matching with what was expected")
+ }
+ twinExists := false
+ for _, expectedTwin := range expectedDevice.Status.Twins {
+ for _, twin := range device.Status.Twins {
+ if expectedTwin.PropertyName == twin.PropertyName {
+ twinExists = true
+ if !reflect.DeepEqual(expectedTwin.Desired, twin.Desired) {
+ return fmt.Errorf("Status twin " + twin.PropertyName + " not as expected")
}
+ break
}
}
- if !twinExists {
- return nil, fmt.Errorf("status twin(s) not found")
- }
}
+ if !twinExists {
+ return fmt.Errorf("status twin(s) not found")
+ }
+ break
}
- if !deviceExists {
- return nil, fmt.Errorf("the requested device is not found")
- }
}
- return list.Items, nil
+
+ if !deviceExists {
+ return fmt.Errorf("the requested device is not found")
+ }
+
+ return nil
}
// MqttClientInit create mqtt client config
@@ -547,13 +486,14 @@ func OnTwinMessageReceived(client MQTT.Client, message MQTT.Message) {
func CompareConfigMaps(configMap, expectedConfigMap v1.ConfigMap) bool {
Infof("expectedConfigMap.Data: %v", expectedConfigMap.Data)
Infof("configMap.Data %v", configMap.Data)
- if !reflect.DeepEqual(expectedConfigMap.TypeMeta, configMap.TypeMeta) || expectedConfigMap.ObjectMeta.Namespace != configMap.ObjectMeta.Namespace || !reflect.DeepEqual(expectedConfigMap.Data, configMap.Data) {
+
+ if expectedConfigMap.ObjectMeta.Namespace != configMap.ObjectMeta.Namespace || !reflect.DeepEqual(expectedConfigMap.Data, configMap.Data) {
return false
}
return true
}
-// CompareConfigMaps is used to compare 2 device profile in config maps
+// CompareDeviceProfileInConfigMaps is used to compare 2 device profile in config maps
func CompareDeviceProfileInConfigMaps(configMap, expectedConfigMap v1.ConfigMap) bool {
deviceProfile := configMap.Data["deviceProfile.json"]
ExpectedDeviceProfile := expectedConfigMap.Data["deviceProfile.json"]