Loading go-apps/meep-iot/sbi/iot-sbi.go +6 −0 Original line number Diff line number Diff line Loading @@ -581,6 +581,12 @@ func convertDeviceInfoToIotMgr(dev DeviceInfo) (device tm.DeviceInfo) { ClientCertificate: dev.ClientCertificate, Enabled: dev.Enabled, } if len(dev.DeviceMetadata) != 0 { device.DeviceMetadata = make([]tm.KeyValuePair, len(dev.DeviceMetadata)) for i, k := range dev.DeviceMetadata { device.DeviceMetadata[i] = tm.KeyValuePair{Key: k.Key, Value: k.Value} } // End of 'for' statement } // FIXME FSCOM Add missing fileds (pointers & arrays) //log.Debug("convertDeviceInfoToIotMgr: device: ", device) Loading go-apps/meep-iot/server/meep-iot.go +20 −18 Original line number Diff line number Diff line Loading @@ -1238,25 +1238,21 @@ func convertDeviceInfosFromSbi_with_filter(devicesList []sbi.DeviceInfo, filter } else if filter[1] == "requestedUserTransportId" { process_it = item.RequestedUserTransportId == filter[2] } // FIXME FSCOM Add support of deviceMetadata & requestedMecTrafficRule } else if filter[0] == "neq" { if filter[1] == "gpsi" { process_it = item.Gpsi != filter[2] } else if filter[1] == "Msisdn" { process_it = item.Gpsi != filter[2] } else if filter[1] == "deviceId" { process_it = item.DeviceId != filter[2] } else if filter[1] == "requestedIotPlatformId" { process_it = item.RequestedIotPlatformId != filter[2] } else if filter[1] == "requestedUserTransportId" { process_it = item.RequestedUserTransportId != filter[2] } // FIXME FSCOM Add support of deviceMetadata & requestedMecTrafficRule } if process_it { var device = DeviceInfo{ DeviceAuthenticationInfo: item.DeviceAuthenticationInfo, Gpsi: item.Gpsi, Pei: item.Pei, Supi: item.Supi, Msisdn: item.Msisdn, Imei: item.Imei, Imsi: item.Imsi, Iccid: item.Iccid, DeviceId: item.DeviceId, RequestedIotPlatformId: item.RequestedIotPlatformId, RequestedUserTransportId: item.RequestedUserTransportId, ClientCertificate: item.ClientCertificate, Enabled: item.Enabled, } // FIXME FSCOM Add missing fileds (pointers & arrays) devices = append(devices, device) devices = append(devices, convertDeviceInfoFromSbi(item)) } else { log.Debug("convertDeviceInfosFromSbi_with_filter: skip ", item) } Loading @@ -1282,8 +1278,14 @@ func convertDeviceInfoToSbi(dev DeviceInfo) (device sbi.DeviceInfo) { ClientCertificate: dev.ClientCertificate, Enabled: dev.Enabled, } if len(dev.DeviceMetadata) != 0 { device.DeviceMetadata = make([]sbi.KeyValuePair, len(dev.DeviceMetadata)) for i, k := range dev.DeviceMetadata { device.DeviceMetadata[i] = sbi.KeyValuePair{Key: k.Key, Value: k.Value} } // End of 'for' statement } // FIXME FSCOM Add missing fileds (pointers & arrays) //log.Debug("convertDeviceInfosFromSbi: devices: ", devices) //log.Debug("convertDeviceInfoToSbi: devices: ", devices) return device } go-apps/meep-iot/server/meep-iot_test.go +84 −11 Original line number Diff line number Diff line Loading @@ -25,13 +25,10 @@ import ( "net/http" "net/http/httptest" "os" //"strconv" "strings" "testing" "time" //meepiotmgr "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-iot-mgr" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" // met "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metrics" mod "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model" Loading Loading @@ -1184,9 +1181,21 @@ func TestRegistereddevicesPOST(t *testing.T) { /****************************** * request body section ******************************/ requestedIotPlatformId := iotPlatformInfo.IotPlatformId deviceMetadata := make([]KeyValuePair, 2) deviceMetadata[0] = KeyValuePair{ Key: "Key1", Value: "Value1", } deviceMetadata[1] = KeyValuePair{ Key: "Key2", Value: "Value2", } var device = DeviceInfo{ RequestedIotPlatformId: expected_requestedIotPlatformId, DeviceId: expected_requestedIotPlatformId, DeviceMetadata: deviceMetadata, RequestedIotPlatformId: requestedIotPlatformId, DeviceId: requestedIotPlatformId, Imsi: "12345", Enabled: true, } fmt.Println("Create a device: ", device) Loading Loading @@ -1375,9 +1384,9 @@ func TestRegistereddevicesGET_withFiltering(t *testing.T) { t.Fatalf("unexpected error: %v", err) } // Filter on RequestedUserTransportId and its complement // Filter on DeviceId and its complement queryParam := make(map[string]string) queryParam["filter"] = "(eq," + expected_devices[2].RequestedUserTransportId + ", requestedUserTransportId)" queryParam["filter"] = "(eq,deviceId," + expected_devices[1].DeviceId + ")" // Only DeviceId 1 rr, err := sendRequest(http.MethodGet, "/registered_devices", nil, nil, queryParam, nil, http.StatusOK, RegistereddevicesGET) if err != nil { t.Fatalf(err.Error()) Loading @@ -1389,10 +1398,72 @@ func TestRegistereddevicesGET_withFiltering(t *testing.T) { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if len(resp) != 1 { if len(resp) != 1 { // Only DeviceId 1 t.Errorf("Response length mismatch") } if !validate_device_info(resp[0], expected_devices[1]) { t.Errorf("Response mismatch") } queryParam["filter"] = "(neq,deviceId," + expected_devices[1].DeviceId + ")" // DeviceId 1 is excluded rr, err = sendRequest(http.MethodGet, "/registered_devices", nil, nil, queryParam, nil, http.StatusOK, RegistereddevicesGET) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: rr: ", rr) resp = nil err = json.Unmarshal([]byte(rr), &resp) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if len(resp) != 2 { t.Errorf("Response length mismatch") } if !validate_device_info(resp[0], expected_devices[0]) && !validate_device_info(resp[0], expected_devices[2]) { // DeviceId 1 is excluded t.Errorf("Response mismatch") } if !validate_device_info(resp[1], expected_devices[0]) && !validate_device_info(resp[1], expected_devices[2]) { // DeviceId 1 is excluded t.Errorf("Response mismatch") } // Filter on RequestedUserTransportId and its complement queryParam["filter"] = "(eq,requestedUserTransportId," + expected_devices[2].RequestedUserTransportId + ")" // Only DeviceId 2 rr, err = sendRequest(http.MethodGet, "/registered_devices", nil, nil, queryParam, nil, http.StatusOK, RegistereddevicesGET) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: rr: ", rr) resp = nil err = json.Unmarshal([]byte(rr), &resp) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if len(resp) != 1 { // Only DeviceId 2 t.Errorf("Response length mismatch") } if !validate_device_info(resp[0], expected_device[2]) { if !validate_device_info(resp[0], expected_devices[2]) { t.Errorf("Response mismatch") } queryParam["filter"] = "(neq,requestedUserTransportId," + expected_devices[2].RequestedUserTransportId + ")" // DeviceId 2 is excluded rr, err = sendRequest(http.MethodGet, "/registered_devices", nil, nil, queryParam, nil, http.StatusOK, RegistereddevicesGET) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: rr: ", rr) resp = nil err = json.Unmarshal([]byte(rr), &resp) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if len(resp) != 2 { t.Errorf("Response length mismatch") } if !validate_device_info(resp[0], expected_devices[0]) && !validate_device_info(resp[0], expected_devices[1]) { // DeviceId 2 is excluded t.Errorf("Response mismatch") } if !validate_device_info(resp[1], expected_devices[0]) && !validate_device_info(resp[1], expected_devices[1]) { // DeviceId 2 is excluded t.Errorf("Response mismatch") } Loading @@ -1400,7 +1471,6 @@ func TestRegistereddevicesGET_withFiltering(t *testing.T) { /****************************** * back to initial state section ******************************/ _ = delete_device(expected_device.DeviceId) _ = delete_registered_iot_platforms(iotPlatformInfo.IotPlatformId) terminateScenario() } Loading Loading @@ -1626,7 +1696,7 @@ func create_device(iotPlatformInfo IotPlatformInfo) (device DeviceInfo, err erro return device, nil } func create_set_device(iotPlatformInfo IotPlatformInfo) (devices []DeviceInfo, err error) { func create_set_of_devices(iotPlatformInfo IotPlatformInfo) (devices []DeviceInfo, err error) { requestedIotPlatformId := iotPlatformInfo.IotPlatformId deviceMetadata := make([]KeyValuePair, 2) deviceMetadata[0] = KeyValuePair{ Loading Loading @@ -1696,6 +1766,9 @@ func delete_device(deviceId string) (err error) { } func validate_device_info(expected_device DeviceInfo, received_deviceResp DeviceInfo) bool { fmt.Println(">>> validate_device_info: expected_device: ", expected_device) fmt.Println(">>> validate_device_info: received_deviceResp: ", received_deviceResp) if expected_device.DeviceId != received_deviceResp.DeviceId { fmt.Println("received_deviceResp.DeviceId != DeviceId") return false Loading go-apps/meep-sss/api/swagger.yaml +1 −1 Original line number Diff line number Diff line Loading @@ -1025,7 +1025,7 @@ paths: $ref: '#/components/schemas/ProblemDetails' put: tags: - managementn - management summary: The PUT method is used to update the value of the characteristics that can be set on a sensor or on a group of sensors description: "This method shall support the URI query parameters, request and\ Loading go-packages/meep-iot-mgr/iot-mgr.go +0 −7 Original line number Diff line number Diff line Loading @@ -88,13 +88,6 @@ type ImplSpecificInfo struct { DownlinkTopics []string } // ETSI GS MEC 046 V3.1.1 (2024-04) Clause 6.2.1 Type: SensorDiscoveryInfo type SensorCharacteristic struct { CharacteristicName string CharacteristicValue string CharacteristicUnitOfMeasure *string } type TrafficRuleDescriptor struct { TrafficRuleId string FilterType string Loading Loading
go-apps/meep-iot/sbi/iot-sbi.go +6 −0 Original line number Diff line number Diff line Loading @@ -581,6 +581,12 @@ func convertDeviceInfoToIotMgr(dev DeviceInfo) (device tm.DeviceInfo) { ClientCertificate: dev.ClientCertificate, Enabled: dev.Enabled, } if len(dev.DeviceMetadata) != 0 { device.DeviceMetadata = make([]tm.KeyValuePair, len(dev.DeviceMetadata)) for i, k := range dev.DeviceMetadata { device.DeviceMetadata[i] = tm.KeyValuePair{Key: k.Key, Value: k.Value} } // End of 'for' statement } // FIXME FSCOM Add missing fileds (pointers & arrays) //log.Debug("convertDeviceInfoToIotMgr: device: ", device) Loading
go-apps/meep-iot/server/meep-iot.go +20 −18 Original line number Diff line number Diff line Loading @@ -1238,25 +1238,21 @@ func convertDeviceInfosFromSbi_with_filter(devicesList []sbi.DeviceInfo, filter } else if filter[1] == "requestedUserTransportId" { process_it = item.RequestedUserTransportId == filter[2] } // FIXME FSCOM Add support of deviceMetadata & requestedMecTrafficRule } else if filter[0] == "neq" { if filter[1] == "gpsi" { process_it = item.Gpsi != filter[2] } else if filter[1] == "Msisdn" { process_it = item.Gpsi != filter[2] } else if filter[1] == "deviceId" { process_it = item.DeviceId != filter[2] } else if filter[1] == "requestedIotPlatformId" { process_it = item.RequestedIotPlatformId != filter[2] } else if filter[1] == "requestedUserTransportId" { process_it = item.RequestedUserTransportId != filter[2] } // FIXME FSCOM Add support of deviceMetadata & requestedMecTrafficRule } if process_it { var device = DeviceInfo{ DeviceAuthenticationInfo: item.DeviceAuthenticationInfo, Gpsi: item.Gpsi, Pei: item.Pei, Supi: item.Supi, Msisdn: item.Msisdn, Imei: item.Imei, Imsi: item.Imsi, Iccid: item.Iccid, DeviceId: item.DeviceId, RequestedIotPlatformId: item.RequestedIotPlatformId, RequestedUserTransportId: item.RequestedUserTransportId, ClientCertificate: item.ClientCertificate, Enabled: item.Enabled, } // FIXME FSCOM Add missing fileds (pointers & arrays) devices = append(devices, device) devices = append(devices, convertDeviceInfoFromSbi(item)) } else { log.Debug("convertDeviceInfosFromSbi_with_filter: skip ", item) } Loading @@ -1282,8 +1278,14 @@ func convertDeviceInfoToSbi(dev DeviceInfo) (device sbi.DeviceInfo) { ClientCertificate: dev.ClientCertificate, Enabled: dev.Enabled, } if len(dev.DeviceMetadata) != 0 { device.DeviceMetadata = make([]sbi.KeyValuePair, len(dev.DeviceMetadata)) for i, k := range dev.DeviceMetadata { device.DeviceMetadata[i] = sbi.KeyValuePair{Key: k.Key, Value: k.Value} } // End of 'for' statement } // FIXME FSCOM Add missing fileds (pointers & arrays) //log.Debug("convertDeviceInfosFromSbi: devices: ", devices) //log.Debug("convertDeviceInfoToSbi: devices: ", devices) return device }
go-apps/meep-iot/server/meep-iot_test.go +84 −11 Original line number Diff line number Diff line Loading @@ -25,13 +25,10 @@ import ( "net/http" "net/http/httptest" "os" //"strconv" "strings" "testing" "time" //meepiotmgr "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-iot-mgr" log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger" // met "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-metrics" mod "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-model" Loading Loading @@ -1184,9 +1181,21 @@ func TestRegistereddevicesPOST(t *testing.T) { /****************************** * request body section ******************************/ requestedIotPlatformId := iotPlatformInfo.IotPlatformId deviceMetadata := make([]KeyValuePair, 2) deviceMetadata[0] = KeyValuePair{ Key: "Key1", Value: "Value1", } deviceMetadata[1] = KeyValuePair{ Key: "Key2", Value: "Value2", } var device = DeviceInfo{ RequestedIotPlatformId: expected_requestedIotPlatformId, DeviceId: expected_requestedIotPlatformId, DeviceMetadata: deviceMetadata, RequestedIotPlatformId: requestedIotPlatformId, DeviceId: requestedIotPlatformId, Imsi: "12345", Enabled: true, } fmt.Println("Create a device: ", device) Loading Loading @@ -1375,9 +1384,9 @@ func TestRegistereddevicesGET_withFiltering(t *testing.T) { t.Fatalf("unexpected error: %v", err) } // Filter on RequestedUserTransportId and its complement // Filter on DeviceId and its complement queryParam := make(map[string]string) queryParam["filter"] = "(eq," + expected_devices[2].RequestedUserTransportId + ", requestedUserTransportId)" queryParam["filter"] = "(eq,deviceId," + expected_devices[1].DeviceId + ")" // Only DeviceId 1 rr, err := sendRequest(http.MethodGet, "/registered_devices", nil, nil, queryParam, nil, http.StatusOK, RegistereddevicesGET) if err != nil { t.Fatalf(err.Error()) Loading @@ -1389,10 +1398,72 @@ func TestRegistereddevicesGET_withFiltering(t *testing.T) { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if len(resp) != 1 { if len(resp) != 1 { // Only DeviceId 1 t.Errorf("Response length mismatch") } if !validate_device_info(resp[0], expected_devices[1]) { t.Errorf("Response mismatch") } queryParam["filter"] = "(neq,deviceId," + expected_devices[1].DeviceId + ")" // DeviceId 1 is excluded rr, err = sendRequest(http.MethodGet, "/registered_devices", nil, nil, queryParam, nil, http.StatusOK, RegistereddevicesGET) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: rr: ", rr) resp = nil err = json.Unmarshal([]byte(rr), &resp) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if len(resp) != 2 { t.Errorf("Response length mismatch") } if !validate_device_info(resp[0], expected_devices[0]) && !validate_device_info(resp[0], expected_devices[2]) { // DeviceId 1 is excluded t.Errorf("Response mismatch") } if !validate_device_info(resp[1], expected_devices[0]) && !validate_device_info(resp[1], expected_devices[2]) { // DeviceId 1 is excluded t.Errorf("Response mismatch") } // Filter on RequestedUserTransportId and its complement queryParam["filter"] = "(eq,requestedUserTransportId," + expected_devices[2].RequestedUserTransportId + ")" // Only DeviceId 2 rr, err = sendRequest(http.MethodGet, "/registered_devices", nil, nil, queryParam, nil, http.StatusOK, RegistereddevicesGET) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: rr: ", rr) resp = nil err = json.Unmarshal([]byte(rr), &resp) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if len(resp) != 1 { // Only DeviceId 2 t.Errorf("Response length mismatch") } if !validate_device_info(resp[0], expected_device[2]) { if !validate_device_info(resp[0], expected_devices[2]) { t.Errorf("Response mismatch") } queryParam["filter"] = "(neq,requestedUserTransportId," + expected_devices[2].RequestedUserTransportId + ")" // DeviceId 2 is excluded rr, err = sendRequest(http.MethodGet, "/registered_devices", nil, nil, queryParam, nil, http.StatusOK, RegistereddevicesGET) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: rr: ", rr) resp = nil err = json.Unmarshal([]byte(rr), &resp) if err != nil { t.Fatalf(err.Error()) } fmt.Println("Respone: resp: ", resp) if len(resp) != 2 { t.Errorf("Response length mismatch") } if !validate_device_info(resp[0], expected_devices[0]) && !validate_device_info(resp[0], expected_devices[1]) { // DeviceId 2 is excluded t.Errorf("Response mismatch") } if !validate_device_info(resp[1], expected_devices[0]) && !validate_device_info(resp[1], expected_devices[1]) { // DeviceId 2 is excluded t.Errorf("Response mismatch") } Loading @@ -1400,7 +1471,6 @@ func TestRegistereddevicesGET_withFiltering(t *testing.T) { /****************************** * back to initial state section ******************************/ _ = delete_device(expected_device.DeviceId) _ = delete_registered_iot_platforms(iotPlatformInfo.IotPlatformId) terminateScenario() } Loading Loading @@ -1626,7 +1696,7 @@ func create_device(iotPlatformInfo IotPlatformInfo) (device DeviceInfo, err erro return device, nil } func create_set_device(iotPlatformInfo IotPlatformInfo) (devices []DeviceInfo, err error) { func create_set_of_devices(iotPlatformInfo IotPlatformInfo) (devices []DeviceInfo, err error) { requestedIotPlatformId := iotPlatformInfo.IotPlatformId deviceMetadata := make([]KeyValuePair, 2) deviceMetadata[0] = KeyValuePair{ Loading Loading @@ -1696,6 +1766,9 @@ func delete_device(deviceId string) (err error) { } func validate_device_info(expected_device DeviceInfo, received_deviceResp DeviceInfo) bool { fmt.Println(">>> validate_device_info: expected_device: ", expected_device) fmt.Println(">>> validate_device_info: received_deviceResp: ", received_deviceResp) if expected_device.DeviceId != received_deviceResp.DeviceId { fmt.Println("received_deviceResp.DeviceId != DeviceId") return false Loading
go-apps/meep-sss/api/swagger.yaml +1 −1 Original line number Diff line number Diff line Loading @@ -1025,7 +1025,7 @@ paths: $ref: '#/components/schemas/ProblemDetails' put: tags: - managementn - management summary: The PUT method is used to update the value of the characteristics that can be set on a sensor or on a group of sensors description: "This method shall support the URI query parameters, request and\ Loading
go-packages/meep-iot-mgr/iot-mgr.go +0 −7 Original line number Diff line number Diff line Loading @@ -88,13 +88,6 @@ type ImplSpecificInfo struct { DownlinkTopics []string } // ETSI GS MEC 046 V3.1.1 (2024-04) Clause 6.2.1 Type: SensorDiscoveryInfo type SensorCharacteristic struct { CharacteristicName string CharacteristicValue string CharacteristicUnitOfMeasure *string } type TrafficRuleDescriptor struct { TrafficRuleId string FilterType string Loading