Skip to content
Snippets Groups Projects
Commit 03a74fb8 authored by Yann Garcia's avatar Yann Garcia
Browse files

Add IoT subscriptions

parent 2ff16e0f
No related branches found
No related tags found
No related merge requests found
......@@ -35,7 +35,7 @@ spec:
ports:
- containerPort: {{ .Values.deployment.port }}
protocol: {{ .Values.deployment.protocol }}
- containerPort: 33122
- containerPort: 31122
protocol: TCP
env:
{{- range $key, $value := .Values.image.env }}
......
......@@ -21,8 +21,8 @@ spec:
nodePort: {{ .Values.service.nodePort }}
{{- end }}
- name: onem2m
port: 33122
targetPort: 33122
port: 31122
targetPort: 31122
{{- if .Values.prometheus.monitor.enabled}}
- name: metrics
port: {{ .Values.prometheus.monitor.port }}
......
......@@ -52,12 +52,12 @@ ingress:
- path: /{{.SandboxName}}/{{.MepName}}/sens
port: 80
- path: /{{.SandboxName}}/{{.MepName}}/onem2m
port: 33122
port: 31122
{{- else }}
- path: /{{.SandboxName}}/sens
port: 80
- path: /{{.SandboxName}}/onem2m
port: 33122
port: 31122
{{- end }}
annotations:
kubernetes.io/ingress.class: nginx
......
......@@ -22,6 +22,6 @@ RUN chmod +x /entrypoint.sh
RUN dpkg --configure -a
EXPOSE 33122/tcp
EXPOSE 31122/tcp
ENTRYPOINT ["/entrypoint.sh"]
......@@ -65,9 +65,9 @@ type SbiCfg struct {
Port int
HostId string
Name string
DiscoveryNotify func()
StatusNotify func()
DataNotify func()
DiscoveryNotify func(map[string]interface{})
StatusNotify func(map[string]interface{})
DataNotify func(map[string]interface{})
ScenarioNameCb func(string)
CleanUpCb func()
}
......@@ -89,9 +89,9 @@ type SssSbi struct {
port int
hostId string
name string
discoveryNotify func()
statusNotify func()
dataNotify func()
discoveryNotify func(map[string]interface{})
statusNotify func(map[string]interface{})
dataNotify func(map[string]interface{})
updateScenarioNameCB func(string)
cleanUpCB func()
mutex sync.Mutex
......
......@@ -1767,17 +1767,17 @@ func sendExpiryNotification(notifyUrl string, notification ExpiryNotification) {
* @param {struct} notification contains notification body of type SensorDiscoveryEventNotification
* @see ETSI GS MEC 046 V3.1.1 (2024-04) Clause 7
*/
func discoveryNotify() {
func discoveryNotify(map[string]interface{}) {
log.Debug(">>> sendTestNotification: discoveryNotify")
}
func statusNotify() {
func statusNotify(map[string]interface{}) {
log.Debug(">>> sendTestNotification: statusNotify")
}
func dataNotify() {
func dataNotify(map[string]interface{}) {
log.Debug(">>> sendTestNotification: dataNotify")
}
......
package sssmgr
type SssMgrBindingProtocol interface {
init(tm *SssMgr) (err error)
init(tm *SssMgr, notify func(map[string]interface{})) (err error)
send(p_ctx SssMgrBindingProtocolContext) (err error, resp interface{})
//(p_op string, p_type string, p_to string, p_from string, p_ri string, p_rev []string, p_bodyMap map[string]map[string]interface{}) (err error, resp map[string]map[string]interface{})
notify(p_resp string) (err error)
uninit() (err error)
}
......
......@@ -17,6 +17,7 @@ import (
)
type SssMgrHttp struct {
notify func(map[string]interface{})
}
const (
......@@ -29,19 +30,21 @@ func NewSssMgrHttp() (http_mgr *SssMgrHttp) {
return new(SssMgrHttp)
}
func (http_mgr *SssMgrHttp) init(tm *SssMgr) (err error) {
func (http_mgr *SssMgrHttp) init(tm *SssMgr, notify func(map[string]interface{})) (err error) {
log.Info(">>> init")
// log.Info("Init: Starting OneM2M Notification server")
// go func() {
// http.HandleFunc("/", tm.handleRoot)
// err := http.ListenAndServe(":33122", nil)
// if err != nil {
// log.Error(err.Error())
// return
// }
// log.Info("<<< Init: Terminating OneM2M Notification server")
// }()
http_mgr.notify = notify
go func() {
log.Info("Init: Starting OneM2M Notification server")
http.HandleFunc("/", http_mgr.handleRoot)
err := http.ListenAndServe(":31122", nil)
if err != nil {
log.Error(err.Error())
return
}
log.Info("<<< Init: Terminating OneM2M Notification server")
}()
return nil
}
......@@ -51,15 +54,49 @@ func (http_mgr *SssMgrHttp) handleRoot(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
// get & validate query param values for sensorIdentifier
// Get URL
u, _ := url.Parse(r.URL.String())
log.Info("url: ", u.RequestURI())
if r.Method == "POST" { // Notification
// Extract body
bodyBytes, _ := ioutil.ReadAll(r.Body)
log.Info("subscriptionsPost: bodyBytes: ", string(bodyBytes))
var body map[string]map[string]interface{}
err := json.Unmarshal(bodyBytes, &body)
if err != nil {
log.Error(err.Error())
w.WriteHeader(http.StatusInternalServerError)
fmt.Fprint(w, err.Error())
return
}
log.Info("handleRoot: body: ", body)
//map[m2m:sgn:map[nev:map[net:3 rep:map[m2m:cnt:map[cbs:0 cni:0 ct:20250327T111057,824274 et:20300326T111032,133324 lt:20250327T111057,824274 mbs:10000 mni:10 pi:C7feaadbb0400 ri:cnt8465776292050557472 rn:test st:0 ty:3]]] sur:/laboai-acme-ic-cse/sub3916638126520907910]]
if _, ok := body["m2m:sgn"]; !ok {
err := errors.New("Only m2m:sgn is expected")
log.Error(err.Error())
w.WriteHeader(http.StatusBadRequest)
fmt.Fprint(w, err.Error())
return
}
// Call callback
m := body["m2m:sgn"]
log.Info("handleRoot: m: ", m)
if http_mgr.notify != nil {
http_mgr.notify(m)
}
} else {
log.Warn("handleRoot: Unsupported method", r.Method)
w.WriteHeader(http.StatusNotImplemented)
return
}
w.WriteHeader(http.StatusOK)
}
func (http_mgr *SssMgrHttp) uninit() (err error) {
log.Info(">>> uninit")
return nil
}
......@@ -130,12 +167,6 @@ func (http_mgr *SssMgrHttp) send(p_ctx SssMgrBindingProtocolContext) (err error,
return nil, resp
}
func (http_mgr *SssMgrHttp) notify(p_resp string) (err error) {
log.Info(">>> notify")
return nil
}
func sendRequest(method string, url string, headers http.Header, body io.Reader, vars map[string]string, query map[string]string, code int) ([]byte, error) {
//log.Debug(">>> sendRequest: url: ", url)
//log.Debug(">>> sendRequest: headers: ", headers)
......
......@@ -13,14 +13,13 @@ import (
)
type SssMgrMqtt struct {
running bool
opts *mqtt.ClientOptions
client mqtt.Client
sent_topic string
onem2m_notify func(p_topic string, p_payload []byte)
running bool
opts *mqtt.ClientOptions
client mqtt.Client
sent_topic string
}
var _onem2m_notify func(p_topic string, p_payload []byte)
var _notify func(map[string]interface{}) = nil
var _sync_response *sync.WaitGroup = nil // Used to synchronize the response
var _responses map[uint16]mqtt.Message
......@@ -28,8 +27,8 @@ var _responses map[uint16]mqtt.Message
func onMessageReceived(client mqtt.Client, msg mqtt.Message) {
go func() {
log.Info("onMessageReceived: Received message: ", msg.Payload(), " on topic ", msg.Topic())
// if _onem2m_notify != nil {
// _onem2m_notify(msg.Topic(), msg.Payload())
// if _notify != nil {
// ...
// } else {
// log.Info("onMessageReceived: null pointer for the callbacl")
// }
......@@ -39,11 +38,11 @@ func onMessageReceived(client mqtt.Client, msg mqtt.Message) {
func onMessageReceivedReq(client mqtt.Client, msg mqtt.Message) {
go func() {
log.Info("onMessageReceivedReq: Received message: ", string(msg.Payload()), " on topic ", msg.Topic())
if _onem2m_notify != nil {
_onem2m_notify(msg.Topic(), msg.Payload())
} else {
log.Info("onMessageReceivedReq: null pointer for the callbacl")
}
// if _notify != nil {
// ...
// } else {
// log.Info("onMessageReceivedReq: null pointer for the callbacl")
// }
}()
}
......@@ -68,11 +67,13 @@ func NewSssMgrMqtt() (broker_mqtt *SssMgrMqtt) {
return new(SssMgrMqtt)
}
func (broker_mqtt *SssMgrMqtt) init(tm *SssMgr) (err error) {
func (broker_mqtt *SssMgrMqtt) init(tm *SssMgr, notify func(map[string]interface{})) (err error) {
log.Info(">>> init")
broker_mqtt.running = false
_notify = notify
broker_mqtt.opts = mqtt.NewClientOptions()
broker_mqtt.opts.SetDefaultPublishHandler(onMessageReceived)
broker_mqtt.opts.SetClientID("AdvantEDGE.meep-vis-traffic-mgr")
......@@ -109,11 +110,6 @@ func (broker_mqtt *SssMgrMqtt) init(tm *SssMgr) (err error) {
}
token.Wait()
_onem2m_notify = broker_mqtt.onem2m_notify
if _onem2m_notify == nil {
log.Error("init: _onem2m_notify is nil")
}
_sync_response = new(sync.WaitGroup) // Used to synchronize the response
_responses = make(map[uint16]mqtt.Message, 0)
......@@ -248,9 +244,3 @@ func (broker_mqtt *SssMgrMqtt) send(p_ctx SssMgrBindingProtocolContext) (err err
return nil, nil
}
func (broker_mqtt *SssMgrMqtt) notify(p_resp string) (err error) {
log.Info(">>> notify")
return nil
}
......@@ -17,11 +17,8 @@
package sssmgr
import (
"bytes"
"encoding/json"
"errors"
"fmt"
"net/http"
"reflect"
"strconv"
"strings"
......@@ -45,9 +42,9 @@ type SssMgr struct {
mutex sync.Mutex
wg sync.WaitGroup
refreshTicker *time.Ticker
sss_discovery_notify func()
sss_status_notify func()
sss_data_notify func()
sss_discovery_notify func(map[string]interface{})
sss_status_notify func(map[string]interface{})
sss_data_notify func(map[string]interface{})
}
type IotPlatformInfo struct {
......@@ -91,8 +88,10 @@ var profilingTimers map[string]time.Time
var protocol SssMgrBindingProtocol
var subscriptionListPerSubId map[string]SensorDiscoveryInfo
// NewSssMgr - Creates and initializes a new SSS Traffic Manager
func NewSssMgr(name string, namespace string, bindingProtocol string, host string, port int, hostId string, cse_name string, sss_discovery_notify func(), sss_status_notify func(), sss_data_notify func()) (tm *SssMgr, err error) {
func NewSssMgr(name string, namespace string, bindingProtocol string, host string, port int, hostId string, cse_name string, sss_discovery_notify func(map[string]interface{}), sss_status_notify func(map[string]interface{}), sss_data_notify func(map[string]interface{})) (tm *SssMgr, err error) {
if name == "" {
err = errors.New("Missing connector name")
return nil, err
......@@ -143,7 +142,7 @@ func NewSssMgr(name string, namespace string, bindingProtocol string, host strin
return nil, err
}
err = protocol.init(tm)
err = protocol.init(tm, tm.notify)
if err != nil {
log.Error(err.Error())
return nil, err
......@@ -174,7 +173,7 @@ func (tm *SssMgr) init() {
sensorsMap = make(map[string]SensorDiscoveryInfo, 0)
sensorsPerPlatformMap = make(map[string][]string, 0)
tm.refreshTicker = nil
subscriptionListPerSubId = make(map[string]SensorDiscoveryInfo, 0)
}
// DeleteSssMgr -
......@@ -185,6 +184,11 @@ func (tm *SssMgr) DeleteSssMgr() (err error) {
protocol.uninit()
protocol = nil
}
sensorsMap = nil
sensorsPerPlatformMap = nil
subscriptionListPerSubId = nil
return nil
}
......@@ -684,56 +688,92 @@ func (tm *SssMgr) OneM2M_get(path string, iotPlatformId string) (sensorResp Sens
return sensorResp, nil
}
func (tm *SssMgr) oneM2M_subscribe(sensor SensorDiscoveryInfo, requestedIotPlatformId string, type_ string) (subscription string, err error) {
// FIXME FSCOM: requestedIotPlatformId should be useless
// Build the headers
var headers = http.Header{}
headers["Accept"] = []string{headerAccept}
headers["X-M2M-Origin"] = []string{"C" + requestedIotPlatformId} // FIXME FSCOM How to get it
headers["X-M2M-RI"] = []string{uuid.New().String()}
headers["X-M2M-RVI"] = []string{"4"}
s := headerContentType + ";ty=23"
headers["Content-Type"] = []string{s}
// Build the url and the body
var url string
func (tm *SssMgr) OneM2M_subscribe(iotPlatformId string, path string) (subscription string, err error) {
if profiling {
profilingTimers["OneM2M_subscribe"] = time.Now()
}
log.Info(">>> OneM2M_subscribe: path: ", path)
log.Info(">>> OneM2M_subscribe: iotPlatformId: ", iotPlatformId)
if path == "" || iotPlatformId == "" {
err = errors.New("OneM2M_subscribe: Invalid parameters")
log.Error("OneM2M_subscribe: ", err.Error())
return "", err
}
tm.wg.Wait()
log.Info("OneM2M_subscribe: After Synchro")
// 1. Get the list of the AE
// Build the context
var ctx = SssMgrBindingProtocolContext{
host: registeredIotPlatformsMap[iotPlatformId].Address,
port: registeredIotPlatformsMap[iotPlatformId].Port,
name: registeredIotPlatformsMap[iotPlatformId].Name,
to: path,
from: registeredIotPlatformsMap[iotPlatformId].IotPlatformId,
op: 1, // SUBSCRIBE
ty: 23,
rqi: uuid.New().String(),
rvi: []string{"4"}, // FIXME FSCOM How to get it
code: 200,
}
var bodyMap = map[string]map[string]interface{}{}
bodyMap["m2m:sub"] = make(map[string]interface{}, 0)
net := make(map[string][4]int)
net["net"] = [4]int{1, 2, 3, 4}
net := make(map[string][]int)
net["net"] = []int{2, 3, 4}
bodyMap["m2m:sub"]["enc"] = net
bodyMap["m2m:sub"]["nu"] = "" // FIXME The URI of the listener
bodyMap["m2m:sub"]["rn"] = sensor.SensorIdentifier
url = "http://" + registeredIotPlatformsMap[requestedIotPlatformId].Address + ":" + strconv.Itoa(int(registeredIotPlatformsMap[requestedIotPlatformId].Port)) + "/" + registeredIotPlatformsMap[requestedIotPlatformId].Name
log.Debug("oneM2M_subscribe: url=", url)
log.Debug("oneM2M_subscribe: bodyMap=", bodyMap)
body, err := json.Marshal(bodyMap)
bodyMap["m2m:sub"]["nu"] = []string{"http://172.29.10.52:31122/"} // FIXME FSCOM The URI of the listener
bodyMap["m2m:sub"]["rn"] = uuid.New().String()
ctx.body = bodyMap
err, resp := protocol.send(ctx)
if err != nil {
log.Error("oneM2M_subscribe: ", err.Error())
log.Error("OneM2M_subscribe: ", err.Error())
return "", err
}
log.Debug("oneM2M_subscribe: Request body: ", string(body))
// Send the request
response, err := sendRequest("POST", url, headers, bytes.NewBuffer(body), nil, nil, 201)
if err != nil {
log.Error("oneM2M_subscribe: ", err.Error())
log.Debug("OneM2M_subscribe: resp: ", resp)
log.Debug("OneM2M_subscribe: TypeOf(resp): ", reflect.TypeOf(resp))
if _, ok := resp.(map[string]interface{}); !ok {
log.Error("OneM2M_create: Interface not available")
return "", err
}
if _, ok := resp.(map[string]interface{})["m2m:sub"].(map[string]interface{})["ri"]; !ok {
err = errors.New("Subsciption identifier not present")
log.Error("OneM2M_subscribe: ", err.Error())
return "", err
}
log.Debug("oneM2M_subscribe: response: ", string(response))
var d map[string]map[string]interface{}
err = json.Unmarshal(response, &d)
subId := resp.(map[string]interface{})["m2m:sub"].(map[string]interface{})["ri"].(string)
log.Debug("OneM2M_subscribe: subId: ", subId)
// Add additional entries
var v = SensorDiscoveryInfo{
SensorIdentifier: subId,
SensorType: "SUB",
IotPlatformId: iotPlatformId,
}
v, err = tm.oneM2M_deserialize(v, resp.(map[string]interface{}))
if err != nil {
log.Error("oneM2M_subscribe: ", err.Error())
log.Error("OneM2M_subscribe: ", err.Error())
return "", err
}
log.Debug("oneM2M_subscribe: d: ", d)
log.Debug("OneM2M_cOneM2M_subscribereate: sensvorResp: ", v)
subscriptionListPerSubId[subId] = v
//map[m2m:sub:map[ct:20250327T065259,502192 enc:map[net:[1 2 3 4]] et:20300326T065259,314830 lt:20250327T065259,502192 nct:1 nu:[http://172.29.10.52:31122] pi:C7feaadbb0400 ri:sub415201783625924167 rn:e31e93f4-8514-4c83-8854-364eee1ad305 ty:23]]
err = errors.New("oneM2M_subscribe: To be implemented")
return "", err /*nil*/
if profiling {
now := time.Now()
log.Debug("OneM2M_subscribe: ", now.Sub(profilingTimers["OneM2M_subscribe"]))
}
return subId, nil
}
func (tm *SssMgr) OneM2M_Delete(sensor SensorDiscoveryInfo) (err error) {
// FIXME FSCOM: requestedIotPlatformId should be useless
if profiling {
profilingTimers["OneM2M_Delete"] = time.Now()
......@@ -783,16 +823,134 @@ func (tm *SssMgr) OneM2M_Delete(sensor SensorDiscoveryInfo) (err error) {
return nil
}
func (tm *SssMgr) oneM2M_subscribe_discovery_event(requestedIotPlatformId string) (err error) {
func (tm *SssMgr) OneM2M_DeleteSub(subId string) (err error) {
if profiling {
profilingTimers["OneM2M_DeleteSub"] = time.Now()
}
log.Info(">>> OneM2M_DeleteSub: sensor=", subId)
if subId == "" {
err = errors.New("subId fiels shall be set")
log.Error("OneM2M_DeleteSub: ", err.Error())
return err
}
if _, ok := subscriptionListPerSubId[subId]; !ok {
err = errors.New("Unkmown subscription identifier")
log.Error("OneM2M_DeleteSub: ", err.Error())
return err
}
tm.wg.Wait()
log.Info("OneM2M_DeleteSub: After Synchro")
// Send it and get the result
var ctx = SssMgrBindingProtocolContext{
host: registeredIotPlatformsMap[subscriptionListPerSubId[subId].IotPlatformId].Address,
port: registeredIotPlatformsMap[subscriptionListPerSubId[subId].IotPlatformId].Port,
name: registeredIotPlatformsMap[subscriptionListPerSubId[subId].IotPlatformId].Name,
to: subscriptionListPerSubId[subId].SensorIdentifier,
from: subscriptionListPerSubId[subId].IotPlatformId,
op: 4, // DELETE
ty: -1,
rqi: uuid.New().String(),
rvi: []string{"4"}, // FIXME FSCOM How to get it
code: 200,
}
err, _ = protocol.send(ctx)
if err != nil {
log.Error("OneM2M_DeleteSub: ", err.Error())
return err
}
delete(subscriptionListPerSubId, subId)
log.Info("OneM2M_DeleteSub: New subscriptionListPerSubId: ", subscriptionListPerSubId)
if profiling {
now := time.Now()
log.Debug("OneM2M_DeleteSub: ", now.Sub(profilingTimers["OneM2M_DeleteSub"]))
}
return nil
}
func (tm *SssMgr) oneM2M_deserialize(sensor SensorDiscoveryInfo, response map[string]interface{}) (sensorResp SensorDiscoveryInfo, err error) {
sensorResp = sensor // Same data structure
func (tm *SssMgr) notify(sub map[string]interface{}) {
log.Debug(">>> notify: sub: ", sub)
// Sanity checks
if _, ok := sub["nev"]; !ok {
log.Warn("notify: nev entry is missing")
return
}
if _, ok := sub["nev"].(map[string]interface{}); !ok {
log.Warn("notify: nev entry has unexpected type")
return
}
if _, ok := sub["nev"].(map[string]interface{}); !ok {
log.Warn("notify: nev entry has unexpected type")
return
}
if _, ok := sub["sur"]; !ok {
log.Warn("notify: sur entry is missing")
return
}
// Process subscription
s := strings.Split(sub["sur"].(string), "/")
log.Debug("notify: s: ", s)
log.Debug("notify: CSE-ID: ", s[1])
log.Debug("notify: subURL: ", strings.Join(s[2:], "/"))
rep := sub["nev"].(map[string]interface{})
log.Debug("notify: rep: ", rep["rep"].(map[string]interface{}))
if _, ok := rep["rep"]; !ok {
log.Warn("notify: rep entry is missing")
return
}
if _, ok := rep["rep"].(map[string]interface{}); !ok {
log.Warn("notify: rep entry has unexpected type")
return
}
r := rep["rep"].(map[string]interface{})
log.Debug("notify: r: ", r)
// FIXME FSCOM How to mange the 3 levels of subscriptions???
if v, ok := r["m2m:ae"]; ok { // Discovery notification
log.Debug("notify: AE level")
if tm.sss_discovery_notify != nil {
go func() {
tm.sss_discovery_notify(v.(map[string]interface{}))
}()
}
return
} else if v, ok := r["m2m:cnt"]; ok { // Status notification
log.Debug("notify: CNT level")
if tm.sss_status_notify != nil {
go func() {
tm.sss_status_notify(v.(map[string]interface{}))
}()
}
return
} else if v, ok := r["m2m:cin"]; ok { // Data notification
if tm.sss_data_notify != nil {
go func() {
tm.sss_data_notify(v.(map[string]interface{}))
}()
}
log.Debug("notify: CIN level")
return
} else {
log.Debug("notify: Unexpected level")
return
}
}
func (tm *SssMgr) oneM2M_deserialize(sensor SensorDiscoveryInfo, response map[string]interface{}) (sensorResp SensorDiscoveryInfo, err error) {
log.Debug(">>> oneM2M_deserialize: response: ", response)
sensorResp = sensor // Same data structure
for i, m := range response {
log.Debug("==> ", i, " value is ", m)
if _, ok := m.(map[string]interface{}); !ok {
......@@ -864,19 +1022,35 @@ func (tm *SssMgr) oneM2M_deserialize(sensor SensorDiscoveryInfo, response map[st
CharacteristicValue: strings.Join(item, ","),
})
} else if item, ok := v.([]int64); ok {
log.Error("oneM2M_deserialize: Failed to convert list of int64 into string: ", item)
log.Warn("oneM2M_deserialize: Failed to convert list of int64 into string: ", item)
} else if item, ok := v.(map[string]interface{}); ok {
v, err := json.Marshal(item)
if err == nil {
sensorResp.SensorCharacteristicList = append(
sensorResp.SensorCharacteristicList,
SensorCharacteristic{
CharacteristicName: k,
CharacteristicValue: string(v),
})
} else {
log.Warn("oneM2M_deserialize: ", err.Error())
}
} else if item, ok := v.([]interface{}); ok {
log.Debug("oneM2M_deserialize: Got []interface {} for ", k)
log.Debug("oneM2M_deserialize: ValueOf ", reflect.ValueOf(item))
s := SensorCharacteristic{
CharacteristicName: k,
v, err := json.Marshal(item)
if err == nil {
sensorResp.SensorCharacteristicList = append(
sensorResp.SensorCharacteristicList,
SensorCharacteristic{
CharacteristicName: k,
CharacteristicValue: string(v),
})
} else {
log.Warn("oneM2M_deserialize: ", err.Error())
}
var buf bytes.Buffer
fmt.Fprintf(&buf, "%T", item)
s.CharacteristicValue = buf.String()
sensorResp.SensorCharacteristicList = append(sensorResp.SensorCharacteristicList, s)
} else {
log.Error("oneM2M_deserialize: Failed to process: ", k)
log.Warn("oneM2M_deserialize: Failed to process: ", k)
}
}
} // End of 'for' loop
......
......@@ -20,6 +20,7 @@ import (
"fmt"
"reflect"
"testing"
"time"
log "github.com/InterDigitalInc/AdvantEDGE/go-packages/meep-logger"
)
......@@ -27,420 +28,479 @@ import (
const tmName = "meep-iot"
const tmNamespace = "sandboxtest"
func TestNewSssMgr(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// func TestNewSssMgr(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// Invalid Connector
fmt.Println("Invalid SSS Asset Manager")
tm, err := NewSssMgr("", tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err == nil || tm != nil {
t.Fatalf("Service name not set")
}
tm, err = NewSssMgr(tmName, tmNamespace, "", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err == nil || tm != nil {
t.Fatalf("Binding protocol not set")
}
tm, err = NewSssMgr(tmName, tmNamespace, "MQTT", "", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err == nil || tm != nil {
t.Fatalf("Host not set")
}
tm, err = NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "", "laboai-acme-ic-cse", nil, nil, nil)
if err == nil || tm != nil {
t.Fatalf("Host id not set")
}
tm, err = NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "", nil, nil, nil)
if err == nil || tm != nil {
t.Fatalf("CSE name not set")
}
// // Invalid Connector
// fmt.Println("Invalid SSS Asset Manager")
// tm, err := NewSssMgr("", tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err == nil || tm != nil {
// t.Fatalf("Service name not set")
// }
// tm, err = NewSssMgr(tmName, tmNamespace, "", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err == nil || tm != nil {
// t.Fatalf("Binding protocol not set")
// }
// tm, err = NewSssMgr(tmName, tmNamespace, "MQTT", "", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err == nil || tm != nil {
// t.Fatalf("Host not set")
// }
// tm, err = NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "", "laboai-acme-ic-cse", nil, nil, nil)
// if err == nil || tm != nil {
// t.Fatalf("Host id not set")
// }
// tm, err = NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "", nil, nil, nil)
// if err == nil || tm != nil {
// t.Fatalf("CSE name not set")
// }
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err = NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err = NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
fmt.Println("Create valid SSS Asset Manager")
tm, err = NewSssMgr(tmName, tmNamespace, "REST_HTTP", "172.29.10.56", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// fmt.Println("Create valid SSS Asset Manager")
// tm, err = NewSssMgr(tmName, tmNamespace, "REST_HTTP", "172.29.10.56", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
}
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
func TestPopulateDevicesPerIotPlatformsHttp(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "lab-oai.etsi.org", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// func TestPopulateDevicesPerIotPlatformsHttp(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "lab-oai.etsi.org", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
err = tm.populateDevicesPerIotPlatforms()
if err != nil {
t.Fatalf(err.Error())
}
// err = tm.populateDevicesPerIotPlatforms()
// if err != nil {
// t.Fatalf(err.Error())
// }
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
}
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
func TestSensorDiscoveryInfoAllHttp(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "", 0, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// func TestSensorDiscoveryInfoAllHttp(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "", 0, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
sensors, err := tm.SensorDiscoveryInfoAll()
if err != nil {
t.Fatalf(err.Error())
}
fmt.Println("len=", len(sensors))
fmt.Println("sensors", sensors)
// sensors, err := tm.SensorDiscoveryInfoAll()
// if err != nil {
// t.Fatalf(err.Error())
// }
// fmt.Println("len=", len(sensors))
// fmt.Println("sensors", sensors)
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
}
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
func TestGetSensorHttp(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// func TestGetSensorHttp(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "lab-oai.etsi.org", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "lab-oai.etsi.org", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
sensors, err := tm.SensorDiscoveryInfoAll()
if err != nil {
t.Fatalf(err.Error())
}
// sensors, err := tm.SensorDiscoveryInfoAll()
// if err != nil {
// t.Fatalf(err.Error())
// }
for _, v := range sensors {
fmt.Println("v", v)
fmt.Println("TypeOf(v)", reflect.TypeOf(v))
// for _, v := range sensors {
// fmt.Println("v", v)
// fmt.Println("TypeOf(v)", reflect.TypeOf(v))
sensor, err := tm.GetSensor(v.SensorIdentifier)
if !validate_sensor_discovery_info(v, sensor) {
t.Fatalf(err.Error())
}
}
// sensor, err := tm.GetSensor(v.SensorIdentifier)
// if !validate_sensor_discovery_info(v, sensor) {
// t.Fatalf(err.Error())
// }
// }
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
}
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
func TestOneM2M_createAEHttp(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// func TestOneM2M_createAEHttp(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "lab-oai.etsi.org", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "lab-oai.etsi.org", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
var sensor = SensorDiscoveryInfo{
SensorIdentifier: "12345",
SensorType: "AE",
SensorPosition: nil,
IotPlatformId: "7feaadbb0400",
}
new_sensor, err := tm.OneM2M_create(sensor, "")
if err != nil {
t.Fatalf("Failed to create new sensor")
}
// var sensor = SensorDiscoveryInfo{
// SensorIdentifier: "12345",
// SensorType: "AE",
// SensorPosition: nil,
// IotPlatformId: "7feaadbb0400",
// }
// new_sensor, err := tm.OneM2M_create(sensor, "")
// if err != nil {
// t.Fatalf("Failed to create new sensor")
// }
// Verify content
if !validate_sensor_ae(sensor, new_sensor) {
t.Fatalf("Failed to validate AE content")
}
// // Verify content
// if !validate_sensor_ae(sensor, new_sensor) {
// t.Fatalf("Failed to validate AE content")
// }
_ = tm.OneM2M_Delete(new_sensor)
// _ = tm.OneM2M_Delete(new_sensor)
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
}
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
func TestOneM2M_createAE_CNTHttp(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// func TestOneM2M_createAE_CNTHttp(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "lab-oai.etsi.org", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "lab-oai.etsi.org", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
var sensor_ae = SensorDiscoveryInfo{
SensorIdentifier: "CMyAE",
SensorType: "AE",
SensorPosition: nil,
IotPlatformId: "7feaadbb0400",
}
new_sensor_ae, err := tm.OneM2M_create(sensor_ae, "")
if err != nil {
t.Fatalf("Failed to create new AE sensor")
}
// var sensor_ae = SensorDiscoveryInfo{
// SensorIdentifier: "CMyAE",
// SensorType: "AE",
// SensorPosition: nil,
// IotPlatformId: "7feaadbb0400",
// }
// new_sensor_ae, err := tm.OneM2M_create(sensor_ae, "")
// if err != nil {
// t.Fatalf("Failed to create new AE sensor")
// }
// Verify content
if !validate_sensor_ae(sensor_ae, new_sensor_ae) {
t.Fatalf("Failed to validate AE content")
}
// // Verify content
// if !validate_sensor_ae(sensor_ae, new_sensor_ae) {
// t.Fatalf("Failed to validate AE content")
// }
var sensor_cnt = SensorDiscoveryInfo{
SensorIdentifier: "CMyCNT",
SensorType: "CNT",
SensorPosition: nil,
IotPlatformId: "7feaadbb0400",
}
// sensor_cnt.SensorCharacteristicList = make([]SensorCharacteristic, 1)
// sensor_cnt.SensorCharacteristicList[0] = SensorCharacteristic{CharacteristicName: "con", CharacteristicValue: "OFF"}
sensorPath := new_sensor_ae.SensorIdentifier
new_sensor_cnt, err := tm.OneM2M_create(sensor_cnt, sensorPath)
if err != nil {
t.Fatalf("Failed to create new CNT sensor")
}
// var sensor_cnt = SensorDiscoveryInfo{
// SensorIdentifier: "CMyCNT",
// SensorType: "CNT",
// SensorPosition: nil,
// IotPlatformId: "7feaadbb0400",
// }
// // sensor_cnt.SensorCharacteristicList = make([]SensorCharacteristic, 1)
// // sensor_cnt.SensorCharacteristicList[0] = SensorCharacteristic{CharacteristicName: "con", CharacteristicValue: "OFF"}
// sensorPath := new_sensor_ae.SensorIdentifier
// new_sensor_cnt, err := tm.OneM2M_create(sensor_cnt, sensorPath)
// if err != nil {
// t.Fatalf("Failed to create new CNT sensor")
// }
// Verify content
if !validate_sensor_cnt(sensor_cnt, new_sensor_cnt) {
t.Fatalf("Failed to validate AE content")
}
// // Verify content
// if !validate_sensor_cnt(sensor_cnt, new_sensor_cnt) {
// t.Fatalf("Failed to validate AE content")
// }
err = tm.OneM2M_Delete(new_sensor_cnt)
if err != nil {
t.Fatalf("Failed to create new sensor")
}
err = tm.OneM2M_Delete(new_sensor_ae)
if err != nil {
t.Fatalf("Failed to create new sensor")
}
// err = tm.OneM2M_Delete(new_sensor_cnt)
// if err != nil {
// t.Fatalf("Failed to create new sensor")
// }
// err = tm.OneM2M_Delete(new_sensor_ae)
// if err != nil {
// t.Fatalf("Failed to create new sensor")
// }
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
}
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
func TestOneM2M_createAE_CNT_CNIHttp(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// func TestOneM2M_createAE_CNT_CNIHttp(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "lab-oai.etsi.org", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "lab-oai.etsi.org", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
var sensor_ae = SensorDiscoveryInfo{
SensorIdentifier: "CMyAE",
SensorType: "AE",
SensorPosition: nil,
IotPlatformId: "7feaadbb0400",
}
new_sensor_ae, err := tm.OneM2M_create(sensor_ae, "")
if err != nil {
t.Fatalf("Failed to create new AE sensor")
}
// var sensor_ae = SensorDiscoveryInfo{
// SensorIdentifier: "CMyAE",
// SensorType: "AE",
// SensorPosition: nil,
// IotPlatformId: "7feaadbb0400",
// }
// new_sensor_ae, err := tm.OneM2M_create(sensor_ae, "")
// if err != nil {
// t.Fatalf("Failed to create new AE sensor")
// }
// Verify content
if !validate_sensor_ae(sensor_ae, new_sensor_ae) {
t.Fatalf("Failed to validate AE content")
}
// // Verify content
// if !validate_sensor_ae(sensor_ae, new_sensor_ae) {
// t.Fatalf("Failed to validate AE content")
// }
var sensor_cnt = SensorDiscoveryInfo{
SensorIdentifier: "CMyCNT",
SensorType: "CNT",
SensorPosition: nil,
IotPlatformId: "7feaadbb0400",
}
sensorPath := new_sensor_ae.SensorIdentifier
new_sensor_cnt, err := tm.OneM2M_create(sensor_cnt, sensorPath)
if err != nil {
t.Fatalf("Failed to create new CNT sensor")
}
// var sensor_cnt = SensorDiscoveryInfo{
// SensorIdentifier: "CMyCNT",
// SensorType: "CNT",
// SensorPosition: nil,
// IotPlatformId: "7feaadbb0400",
// }
// sensorPath := new_sensor_ae.SensorIdentifier
// new_sensor_cnt, err := tm.OneM2M_create(sensor_cnt, sensorPath)
// if err != nil {
// t.Fatalf("Failed to create new CNT sensor")
// }
// Verify content
if !validate_sensor_cnt(sensor_cnt, new_sensor_cnt) {
t.Fatalf("Failed to validate CNT content")
}
// // Verify content
// if !validate_sensor_cnt(sensor_cnt, new_sensor_cnt) {
// t.Fatalf("Failed to validate CNT content")
// }
var sensor_cin = SensorDiscoveryInfo{
SensorIdentifier: "CMyCNI",
SensorType: "CIN",
SensorPosition: nil,
IotPlatformId: "7feaadbb0400",
}
sensor_cin.SensorCharacteristicList = make([]SensorCharacteristic, 1)
sensor_cin.SensorCharacteristicList[0] = SensorCharacteristic{CharacteristicName: "con", CharacteristicValue: "OFF"}
sensorPath = new_sensor_cnt.SensorIdentifier
new_sensor_cin, err := tm.OneM2M_create(sensor_cin, sensorPath)
if err != nil {
t.Fatalf("Failed to create new sensor")
}
// var sensor_cin = SensorDiscoveryInfo{
// SensorIdentifier: "CMyCNI",
// SensorType: "CIN",
// SensorPosition: nil,
// IotPlatformId: "7feaadbb0400",
// }
// sensor_cin.SensorCharacteristicList = make([]SensorCharacteristic, 1)
// sensor_cin.SensorCharacteristicList[0] = SensorCharacteristic{CharacteristicName: "con", CharacteristicValue: "OFF"}
// sensorPath = new_sensor_cnt.SensorIdentifier
// new_sensor_cin, err := tm.OneM2M_create(sensor_cin, sensorPath)
// if err != nil {
// t.Fatalf("Failed to create new sensor")
// }
// Verify content
if !validate_sensor_cin(sensor_cin, new_sensor_cin) {
t.Fatalf("Failed to validate CIN content")
}
// // Verify content
// if !validate_sensor_cin(sensor_cin, new_sensor_cin) {
// t.Fatalf("Failed to validate CIN content")
// }
err = tm.OneM2M_Delete(new_sensor_cin)
if err != nil {
t.Fatalf("Failed to create new sensor")
}
err = tm.OneM2M_Delete(new_sensor_cnt)
if err != nil {
t.Fatalf("Failed to create new sensor")
}
err = tm.OneM2M_Delete(new_sensor_ae)
if err != nil {
t.Fatalf("Failed to create new sensor")
}
// err = tm.OneM2M_Delete(new_sensor_cin)
// if err != nil {
// t.Fatalf("Failed to create new sensor")
// }
// err = tm.OneM2M_Delete(new_sensor_cnt)
// if err != nil {
// t.Fatalf("Failed to create new sensor")
// }
// err = tm.OneM2M_Delete(new_sensor_ae)
// if err != nil {
// t.Fatalf("Failed to create new sensor")
// }
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
}
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
func TestOneM2M_deleteHttp(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// func TestOneM2M_deleteHttp(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "lab-oai.etsi.org", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "lab-oai.etsi.org", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
var new_sensor = SensorDiscoveryInfo{
SensorIdentifier: "12345",
SensorType: "AE",
SensorPosition: nil,
IotPlatformId: "7feaadbb0400",
}
sensor, err := oneM2M_create(tm, new_sensor, "")
if err != nil {
t.Fatalf("Failed to create new sensor: " + err.Error())
}
// var new_sensor = SensorDiscoveryInfo{
// SensorIdentifier: "12345",
// SensorType: "AE",
// SensorPosition: nil,
// IotPlatformId: "7feaadbb0400",
// }
// sensor, err := oneM2M_create(tm, new_sensor, "")
// if err != nil {
// t.Fatalf("Failed to create new sensor: " + err.Error())
// }
err = tm.OneM2M_Delete(sensor)
if err != nil {
t.Fatalf("Failed to create new sensor: " + err.Error())
}
// err = tm.OneM2M_Delete(sensor)
// if err != nil {
// t.Fatalf("Failed to create new sensor: " + err.Error())
// }
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
}
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
// func TestOneM2M_getHttp(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "lab-oai.etsi.org", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
// sensors, received_sensors, err := oneM2M_createAE_CNT_CIN(tm)
// if err != nil {
// t.Fatalf("Failed to create sensors")
// }
// // Verify content
// if len(sensors) != 3 || len(received_sensors) != 3 {
// t.Fatalf("Failed to create sensors")
// }
// // Get one sensor
// sensorResp, err := tm.OneM2M_get(received_sensors["CNT"].SensorIdentifier, received_sensors["CNT"].IotPlatformId)
// if err != nil {
// t.Fatalf("Failed to discover CNT sensor")
// }
// // Verify content
// if !validate_sensor_cnt(received_sensors["CNT"], sensorResp) {
// t.Fatalf("Failed to validate CNT content")
// }
// sensorResp, err = tm.OneM2M_get(received_sensors["CIN"].SensorIdentifier, received_sensors["CIN"].IotPlatformId)
// if err != nil {
// t.Fatalf("Failed to discover CNT sensor")
// }
// // Verify content
// if !validate_sensor_cin(received_sensors["CIN"], sensorResp) {
// t.Fatalf("Failed to validate CIN content")
// }
func TestOneM2M_getHttp(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// _ = tm.OneM2M_Delete(received_sensors["CIN"])
// _ = tm.OneM2M_Delete(received_sensors["CNT"])
// _ = tm.OneM2M_Delete(received_sensors["AE"])
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "lab-oai.etsi.org", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
sensors, received_sensors, err := oneM2M_createAE_CNT_CIN(tm)
if err != nil {
t.Fatalf("Failed to create sensors")
}
// func TestOneM2M_discoveryHttp(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// Verify content
if len(sensors) != 3 || len(received_sensors) != 3 {
t.Fatalf("Failed to create sensors")
}
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "lab-oai.etsi.org", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
// Get one sensor
sensorResp, err := tm.OneM2M_get(received_sensors["CNT"].SensorIdentifier, received_sensors["CNT"].IotPlatformId)
if err != nil {
t.Fatalf("Failed to discover CNT sensor")
}
// Verify content
if !validate_sensor_cnt(received_sensors["CNT"], sensorResp) {
t.Fatalf("Failed to validate CNT content")
}
// _, received_sensors, err := oneM2M_createAE_CNT_CIN(tm)
// if err != nil {
// t.Fatalf("Failed to create sensors")
// }
sensorResp, err = tm.OneM2M_get(received_sensors["CIN"].SensorIdentifier, received_sensors["CIN"].IotPlatformId)
if err != nil {
t.Fatalf("Failed to discover CNT sensor")
}
// Verify content
if !validate_sensor_cin(received_sensors["CIN"], sensorResp) {
t.Fatalf("Failed to validate CIN content")
}
// // Verify content
// if len(received_sensors) != 3 {
// t.Fatalf("Failed to create sensors")
// }
_ = tm.OneM2M_Delete(received_sensors["CIN"])
_ = tm.OneM2M_Delete(received_sensors["CNT"])
_ = tm.OneM2M_Delete(received_sensors["AE"])
// // Discover CNTs
// sensorList, err := tm.OneM2M_discovery(received_sensors["CNT"].SensorType, received_sensors["CNT"].IotPlatformId)
// if err != nil {
// t.Fatalf("Failed to discover CNT sensor")
// }
// if len(sensorList) != 1 {
// t.Fatalf("Wrong discover result")
// }
// // Verify content
// if !validate_sensor_cnt(received_sensors["CNT"], sensorList[0]) {
// t.Fatalf("Failed to validate CNT content")
// }
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
}
// // Discover AEs
// sensorList, err = tm.OneM2M_discovery(received_sensors["AE"].SensorType, received_sensors["AE"].IotPlatformId)
// if err != nil {
// t.Fatalf("Failed to discover AE sensor")
// }
// if len(sensorList) != 1 {
// t.Fatalf("Wrong discover result")
// }
// // Verify content
// if !validate_sensor_ae(received_sensors["AE"], sensorList[0]) {
// t.Fatalf("Failed to validate AE content")
// }
// _ = tm.OneM2M_Delete(received_sensors["CIN"])
// _ = tm.OneM2M_Delete(received_sensors["CNT"])
// _ = tm.OneM2M_Delete(received_sensors["AE"])
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
func TestOneM2M_discoveryHttp(t *testing.T) {
func TestOneM2M_subscribeHttp(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "lab-oai.etsi.org", 31110, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
tm, err := NewSssMgr(tmName, tmNamespace, "REST_HTTP", "lab-oai.etsi.org", 31110, "7feaadbb0400", "laboai-acme-ic-cse", discoveryNotify, statusNotify, dataNotify)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
......@@ -450,36 +510,32 @@ func TestOneM2M_discoveryHttp(t *testing.T) {
t.Fatalf("Failed to create sensors")
}
// Verify content
if len(received_sensors) != 3 {
t.Fatalf("Failed to create sensors")
}
// Discover CNTs
sensorList, err := tm.OneM2M_discovery(received_sensors["CNT"].SensorType, received_sensors["CNT"].IotPlatformId)
subscriptionMap := make(map[string]interface{})
subId, err := tm.OneM2M_subscribe(received_sensors["AE"].IotPlatformId, received_sensors["AE"].SensorIdentifier)
if err != nil {
t.Fatalf("Failed to discover CNT sensor")
}
if len(sensorList) != 1 {
t.Fatalf("Wrong discover result")
}
// Verify content
if !validate_sensor_cnt(received_sensors["CNT"], sensorList[0]) {
t.Fatalf("Failed to validate CNT content")
t.Fatalf("Failed to subscribe")
}
fmt.Println("subId=" + subId)
subscriptionMap[subId] = received_sensors["AE"]
// Discover AEs
sensorList, err = tm.OneM2M_discovery(received_sensors["AE"].SensorType, received_sensors["AE"].IotPlatformId)
subId, err = tm.OneM2M_subscribe(received_sensors["CNT"].IotPlatformId, received_sensors["CNT"].SensorIdentifier)
if err != nil {
t.Fatalf("Failed to discover AE sensor")
}
if len(sensorList) != 1 {
t.Fatalf("Wrong discover result")
}
// Verify content
if !validate_sensor_ae(received_sensors["AE"], sensorList[0]) {
t.Fatalf("Failed to validate AE content")
t.Fatalf("Failed to subscribe")
}
fmt.Println("subId=" + subId)
subscriptionMap[subId] = received_sensors["CNT"]
fmt.Println("len(subscriptionMap)=" + fmt.Sprint(len(subscriptionMap)))
fmt.Println("You have 120 seconds to trigger subscriptions")
time.Sleep(time.Duration(120) * time.Second)
for k := range subscriptionMap {
err = tm.OneM2M_DeleteSub(k)
if err != nil {
t.Fatalf("Failed to cancel subscription")
}
} // End of 'for' statement
_ = tm.OneM2M_Delete(received_sensors["CIN"])
_ = tm.OneM2M_Delete(received_sensors["CNT"])
......@@ -493,423 +549,423 @@ func TestOneM2M_discoveryHttp(t *testing.T) {
tm = nil
}
func TestPopulateDevicesPerIotPlatformsMqtt(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
err = tm.populateDevicesPerIotPlatforms()
if err != nil {
t.Fatalf(err.Error())
}
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
}
// func TestPopulateDevicesPerIotPlatformsMqtt(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
// err = tm.populateDevicesPerIotPlatforms()
// if err != nil {
// t.Fatalf(err.Error())
// }
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
func TestSensorDiscoveryInfoAllMqtt(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// func TestSensorDiscoveryInfoAllMqtt(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
err = tm.populateDevicesPerIotPlatforms()
if err != nil {
t.Fatalf(err.Error())
}
// err = tm.populateDevicesPerIotPlatforms()
// if err != nil {
// t.Fatalf(err.Error())
// }
sensors, err := tm.SensorDiscoveryInfoAll()
if err != nil {
t.Fatalf(err.Error())
}
fmt.Println("sensors: ", sensors)
// sensors, err := tm.SensorDiscoveryInfoAll()
// if err != nil {
// t.Fatalf(err.Error())
// }
// fmt.Println("sensors: ", sensors)
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
}
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// }
func TestGetSensorMqtt(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// func TestGetSensorMqtt(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
sensors, err := tm.SensorDiscoveryInfoAll()
if err != nil {
t.Fatalf(err.Error())
}
// sensors, err := tm.SensorDiscoveryInfoAll()
// if err != nil {
// t.Fatalf(err.Error())
// }
for _, v := range sensors {
fmt.Println("v", v)
fmt.Println("TypeOf(v)", reflect.TypeOf(v))
// for _, v := range sensors {
// fmt.Println("v", v)
// fmt.Println("TypeOf(v)", reflect.TypeOf(v))
sensor, err := tm.GetSensor(v.SensorIdentifier)
if !validate_sensor_discovery_info(v, sensor) {
t.Fatalf(err.Error())
}
}
// sensor, err := tm.GetSensor(v.SensorIdentifier)
// if !validate_sensor_discovery_info(v, sensor) {
// t.Fatalf(err.Error())
// }
// }
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
}
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
func TestOneM2M_createAEMQTT(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// func TestOneM2M_createAEMQTT(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
var sensor = SensorDiscoveryInfo{
SensorIdentifier: "12345",
SensorType: "AE",
SensorPosition: nil,
IotPlatformId: "7feaadbb0400",
}
new_sensor, err := tm.OneM2M_create(sensor, "")
if err != nil {
t.Fatalf("Failed to create new sensor")
}
// var sensor = SensorDiscoveryInfo{
// SensorIdentifier: "12345",
// SensorType: "AE",
// SensorPosition: nil,
// IotPlatformId: "7feaadbb0400",
// }
// new_sensor, err := tm.OneM2M_create(sensor, "")
// if err != nil {
// t.Fatalf("Failed to create new sensor")
// }
// Verify content
if !validate_sensor_ae(sensor, new_sensor) {
t.Fatalf("Failed to validate AE content")
}
// // Verify content
// if !validate_sensor_ae(sensor, new_sensor) {
// t.Fatalf("Failed to validate AE content")
// }
_ = tm.OneM2M_Delete(new_sensor)
// _ = tm.OneM2M_Delete(new_sensor)
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
}
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
func TestOneM2M_createAE_CNTMQTT(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// func TestOneM2M_createAE_CNTMQTT(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
var sensor_ae = SensorDiscoveryInfo{
SensorIdentifier: "CMyAE",
SensorType: "AE",
SensorPosition: nil,
IotPlatformId: "7feaadbb0400",
}
new_sensor_ae, err := tm.OneM2M_create(sensor_ae, "")
if err != nil {
t.Fatalf("Failed to create new AE sensor")
}
// var sensor_ae = SensorDiscoveryInfo{
// SensorIdentifier: "CMyAE",
// SensorType: "AE",
// SensorPosition: nil,
// IotPlatformId: "7feaadbb0400",
// }
// new_sensor_ae, err := tm.OneM2M_create(sensor_ae, "")
// if err != nil {
// t.Fatalf("Failed to create new AE sensor")
// }
// Verify content
if !validate_sensor_ae(sensor_ae, new_sensor_ae) {
t.Fatalf("Failed to validate AE content")
}
// // Verify content
// if !validate_sensor_ae(sensor_ae, new_sensor_ae) {
// t.Fatalf("Failed to validate AE content")
// }
var sensor_cnt = SensorDiscoveryInfo{
SensorIdentifier: "CMyCNT",
SensorType: "CNT",
SensorPosition: nil,
IotPlatformId: "7feaadbb0400",
}
// sensor_cnt.SensorCharacteristicList = make([]SensorCharacteristic, 1)
// sensor_cnt.SensorCharacteristicList[0] = SensorCharacteristic{CharacteristicName: "con", CharacteristicValue: "OFF"}
sensorPath := new_sensor_ae.SensorIdentifier
new_sensor_cnt, err := tm.OneM2M_create(sensor_cnt, sensorPath)
if err != nil {
t.Fatalf("Failed to create new sensor")
}
// var sensor_cnt = SensorDiscoveryInfo{
// SensorIdentifier: "CMyCNT",
// SensorType: "CNT",
// SensorPosition: nil,
// IotPlatformId: "7feaadbb0400",
// }
// // sensor_cnt.SensorCharacteristicList = make([]SensorCharacteristic, 1)
// // sensor_cnt.SensorCharacteristicList[0] = SensorCharacteristic{CharacteristicName: "con", CharacteristicValue: "OFF"}
// sensorPath := new_sensor_ae.SensorIdentifier
// new_sensor_cnt, err := tm.OneM2M_create(sensor_cnt, sensorPath)
// if err != nil {
// t.Fatalf("Failed to create new sensor")
// }
// Verify content
if !validate_sensor_cnt(sensor_cnt, new_sensor_cnt) {
t.Fatalf("Failed to validate CNT content")
}
// // Verify content
// if !validate_sensor_cnt(sensor_cnt, new_sensor_cnt) {
// t.Fatalf("Failed to validate CNT content")
// }
err = tm.OneM2M_Delete(new_sensor_cnt)
if err != nil {
t.Fatalf("Failed to create new sensor")
}
err = tm.OneM2M_Delete(new_sensor_ae)
if err != nil {
t.Fatalf("Failed to create new sensor")
}
// err = tm.OneM2M_Delete(new_sensor_cnt)
// if err != nil {
// t.Fatalf("Failed to create new sensor")
// }
// err = tm.OneM2M_Delete(new_sensor_ae)
// if err != nil {
// t.Fatalf("Failed to create new sensor")
// }
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
}
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
func TestOneM2M_createAE_CNT_CNIMQTT(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// func TestOneM2M_createAE_CNT_CNIMQTT(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
var sensor_ae = SensorDiscoveryInfo{
SensorIdentifier: "CMyAE",
SensorType: "AE",
SensorPosition: nil,
IotPlatformId: "7feaadbb0400",
}
new_sensor_ae, err := tm.OneM2M_create(sensor_ae, "")
if err != nil {
t.Fatalf("Failed to create new AE sensor")
}
// var sensor_ae = SensorDiscoveryInfo{
// SensorIdentifier: "CMyAE",
// SensorType: "AE",
// SensorPosition: nil,
// IotPlatformId: "7feaadbb0400",
// }
// new_sensor_ae, err := tm.OneM2M_create(sensor_ae, "")
// if err != nil {
// t.Fatalf("Failed to create new AE sensor")
// }
// Verify content
if !validate_sensor_ae(sensor_ae, new_sensor_ae) {
t.Fatalf("Failed to validate AE content")
}
// // Verify content
// if !validate_sensor_ae(sensor_ae, new_sensor_ae) {
// t.Fatalf("Failed to validate AE content")
// }
var sensor_cnt = SensorDiscoveryInfo{
SensorIdentifier: "CMyCNT",
SensorType: "CNT",
SensorPosition: nil,
IotPlatformId: "7feaadbb0400",
}
sensorPath := new_sensor_ae.SensorIdentifier
new_sensor_cnt, err := tm.OneM2M_create(sensor_cnt, sensorPath)
if err != nil {
t.Fatalf("Failed to create new sensor")
}
// var sensor_cnt = SensorDiscoveryInfo{
// SensorIdentifier: "CMyCNT",
// SensorType: "CNT",
// SensorPosition: nil,
// IotPlatformId: "7feaadbb0400",
// }
// sensorPath := new_sensor_ae.SensorIdentifier
// new_sensor_cnt, err := tm.OneM2M_create(sensor_cnt, sensorPath)
// if err != nil {
// t.Fatalf("Failed to create new sensor")
// }
// Verify content
if !validate_sensor_cnt(sensor_cnt, new_sensor_cnt) {
t.Fatalf("Failed to validate CNT content")
}
// // Verify content
// if !validate_sensor_cnt(sensor_cnt, new_sensor_cnt) {
// t.Fatalf("Failed to validate CNT content")
// }
var sensor_cin = SensorDiscoveryInfo{
SensorIdentifier: "CMyCNI",
SensorType: "CIN",
SensorPosition: nil,
IotPlatformId: "7feaadbb0400",
}
sensor_cin.SensorCharacteristicList = make([]SensorCharacteristic, 1)
sensor_cin.SensorCharacteristicList[0] = SensorCharacteristic{CharacteristicName: "con", CharacteristicValue: "OFF"}
sensorPath = new_sensor_cnt.SensorIdentifier
new_sensor_cin, err := tm.OneM2M_create(sensor_cin, sensorPath)
if err != nil {
t.Fatalf("Failed to create new sensor")
}
if new_sensor_cin.SensorType != sensor_cin.SensorType {
t.Fatalf("received_sensor.SensorType != SensorType")
}
if new_sensor_cin.IotPlatformId != sensor_cin.IotPlatformId {
t.Fatalf("received_sensor.IotPlatformId != IotPlatformId")
}
if len(new_sensor_cin.SensorCharacteristicList) == 0 {
t.Fatalf("received_sensor.SensorCharacteristicList shall not be empty")
}
// var sensor_cin = SensorDiscoveryInfo{
// SensorIdentifier: "CMyCNI",
// SensorType: "CIN",
// SensorPosition: nil,
// IotPlatformId: "7feaadbb0400",
// }
// sensor_cin.SensorCharacteristicList = make([]SensorCharacteristic, 1)
// sensor_cin.SensorCharacteristicList[0] = SensorCharacteristic{CharacteristicName: "con", CharacteristicValue: "OFF"}
// sensorPath = new_sensor_cnt.SensorIdentifier
// new_sensor_cin, err := tm.OneM2M_create(sensor_cin, sensorPath)
// if err != nil {
// t.Fatalf("Failed to create new sensor")
// }
// if new_sensor_cin.SensorType != sensor_cin.SensorType {
// t.Fatalf("received_sensor.SensorType != SensorType")
// }
// if new_sensor_cin.IotPlatformId != sensor_cin.IotPlatformId {
// t.Fatalf("received_sensor.IotPlatformId != IotPlatformId")
// }
// if len(new_sensor_cin.SensorCharacteristicList) == 0 {
// t.Fatalf("received_sensor.SensorCharacteristicList shall not be empty")
// }
err = tm.OneM2M_Delete(new_sensor_cin)
if err != nil {
t.Fatalf("Failed to create new sensor")
}
err = tm.OneM2M_Delete(new_sensor_cnt)
if err != nil {
t.Fatalf("Failed to create new sensor")
}
err = tm.OneM2M_Delete(new_sensor_ae)
if err != nil {
t.Fatalf("Failed to create new sensor")
}
// err = tm.OneM2M_Delete(new_sensor_cin)
// if err != nil {
// t.Fatalf("Failed to create new sensor")
// }
// err = tm.OneM2M_Delete(new_sensor_cnt)
// if err != nil {
// t.Fatalf("Failed to create new sensor")
// }
// err = tm.OneM2M_Delete(new_sensor_ae)
// if err != nil {
// t.Fatalf("Failed to create new sensor")
// }
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
}
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
func TestOneM2M_deleteMQTT(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// func TestOneM2M_deleteMQTT(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
var new_sensor = SensorDiscoveryInfo{
SensorIdentifier: "12345",
SensorType: "AE",
SensorPosition: nil,
IotPlatformId: "7feaadbb0400",
}
sensor, err := oneM2M_create(tm, new_sensor, "")
if err != nil {
t.Fatalf("Failed to create new sensor: " + err.Error())
}
// var new_sensor = SensorDiscoveryInfo{
// SensorIdentifier: "12345",
// SensorType: "AE",
// SensorPosition: nil,
// IotPlatformId: "7feaadbb0400",
// }
// sensor, err := oneM2M_create(tm, new_sensor, "")
// if err != nil {
// t.Fatalf("Failed to create new sensor: " + err.Error())
// }
err = tm.OneM2M_Delete(sensor)
if err != nil {
t.Fatalf("Failed to create new sensor: " + err.Error())
}
// err = tm.OneM2M_Delete(sensor)
// if err != nil {
// t.Fatalf("Failed to create new sensor: " + err.Error())
// }
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
}
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
func TestOneM2M_getMQTT(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// func TestOneM2M_getMQTT(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
sensors, received_sensors, err := oneM2M_createAE_CNT_CIN(tm)
if err != nil {
t.Fatalf("Failed to create sensors")
}
// sensors, received_sensors, err := oneM2M_createAE_CNT_CIN(tm)
// if err != nil {
// t.Fatalf("Failed to create sensors")
// }
// Verify content
if len(sensors) != 3 || len(received_sensors) != 3 {
t.Fatalf("Failed to create sensors")
}
// // Verify content
// if len(sensors) != 3 || len(received_sensors) != 3 {
// t.Fatalf("Failed to create sensors")
// }
// Get one sensor
sensorResp, err := tm.OneM2M_get(received_sensors["CNT"].SensorIdentifier, received_sensors["CNT"].IotPlatformId)
if err != nil {
t.Fatalf("Failed to discover CNT sensor")
}
// Verify content
if !validate_sensor_cnt(received_sensors["CNT"], sensorResp) {
t.Fatalf("Failed to validate CNT content")
}
// // Get one sensor
// sensorResp, err := tm.OneM2M_get(received_sensors["CNT"].SensorIdentifier, received_sensors["CNT"].IotPlatformId)
// if err != nil {
// t.Fatalf("Failed to discover CNT sensor")
// }
// // Verify content
// if !validate_sensor_cnt(received_sensors["CNT"], sensorResp) {
// t.Fatalf("Failed to validate CNT content")
// }
sensorResp, err = tm.OneM2M_get(received_sensors["CIN"].SensorIdentifier, received_sensors["CIN"].IotPlatformId)
if err != nil {
t.Fatalf("Failed to discover CNT sensor")
}
// Verify content
if !validate_sensor_cin(received_sensors["CIN"], sensorResp) {
t.Fatalf("Failed to validate CIN content")
}
// sensorResp, err = tm.OneM2M_get(received_sensors["CIN"].SensorIdentifier, received_sensors["CIN"].IotPlatformId)
// if err != nil {
// t.Fatalf("Failed to discover CNT sensor")
// }
// // Verify content
// if !validate_sensor_cin(received_sensors["CIN"], sensorResp) {
// t.Fatalf("Failed to validate CIN content")
// }
_ = tm.OneM2M_Delete(received_sensors["CIN"])
_ = tm.OneM2M_Delete(received_sensors["CNT"])
_ = tm.OneM2M_Delete(received_sensors["AE"])
// _ = tm.OneM2M_Delete(received_sensors["CIN"])
// _ = tm.OneM2M_Delete(received_sensors["CNT"])
// _ = tm.OneM2M_Delete(received_sensors["AE"])
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
}
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
func TestOneM2M_discoveryMQTT(t *testing.T) {
fmt.Println("--- ", t.Name())
log.MeepTextLogInit(t.Name())
// func TestOneM2M_discoveryMQTT(t *testing.T) {
// fmt.Println("--- ", t.Name())
// log.MeepTextLogInit(t.Name())
// Valid Connector
fmt.Println("Create valid SSS Asset Manager")
tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
if err != nil || tm == nil {
t.Fatalf("Failed to create SSS Asset Manager")
}
// // Valid Connector
// fmt.Println("Create valid SSS Asset Manager")
// tm, err := NewSssMgr(tmName, tmNamespace, "MQTT", "172.29.10.56", 1883, "7feaadbb0400", "laboai-acme-ic-cse", nil, nil, nil)
// if err != nil || tm == nil {
// t.Fatalf("Failed to create SSS Asset Manager")
// }
_, received_sensors, err := oneM2M_createAE_CNT_CIN(tm)
if err != nil {
t.Fatalf("Failed to create sensors")
}
// _, received_sensors, err := oneM2M_createAE_CNT_CIN(tm)
// if err != nil {
// t.Fatalf("Failed to create sensors")
// }
// Verify content
if len(received_sensors) != 3 {
t.Fatalf("Failed to create sensors")
}
// // Verify content
// if len(received_sensors) != 3 {
// t.Fatalf("Failed to create sensors")
// }
// Discover CNTs
sensorList, err := tm.OneM2M_discovery(received_sensors["CNT"].SensorType, received_sensors["CNT"].IotPlatformId)
if err != nil {
t.Fatalf("Failed to discover CNT sensor")
}
if len(sensorList) != 1 {
t.Fatalf("Wrong discover result")
}
// Verify content
if !validate_sensor_cnt(received_sensors["CNT"], sensorList[0]) {
t.Fatalf("Failed to validate CNT content")
}
// // Discover CNTs
// sensorList, err := tm.OneM2M_discovery(received_sensors["CNT"].SensorType, received_sensors["CNT"].IotPlatformId)
// if err != nil {
// t.Fatalf("Failed to discover CNT sensor")
// }
// if len(sensorList) != 1 {
// t.Fatalf("Wrong discover result")
// }
// // Verify content
// if !validate_sensor_cnt(received_sensors["CNT"], sensorList[0]) {
// t.Fatalf("Failed to validate CNT content")
// }
// Discover AEs
sensorList, err = tm.OneM2M_discovery(received_sensors["AE"].SensorType, received_sensors["AE"].IotPlatformId)
if err != nil {
t.Fatalf("Failed to discover AE sensor")
}
if len(sensorList) != 1 {
t.Fatalf("Wrong discover result")
}
// Verify content
if !validate_sensor_ae(received_sensors["AE"], sensorList[0]) {
t.Fatalf("Failed to validate AE content")
}
// // Discover AEs
// sensorList, err = tm.OneM2M_discovery(received_sensors["AE"].SensorType, received_sensors["AE"].IotPlatformId)
// if err != nil {
// t.Fatalf("Failed to discover AE sensor")
// }
// if len(sensorList) != 1 {
// t.Fatalf("Wrong discover result")
// }
// // Verify content
// if !validate_sensor_ae(received_sensors["AE"], sensorList[0]) {
// t.Fatalf("Failed to validate AE content")
// }
_ = tm.OneM2M_Delete(received_sensors["CIN"])
_ = tm.OneM2M_Delete(received_sensors["CNT"])
_ = tm.OneM2M_Delete(received_sensors["AE"])
// _ = tm.OneM2M_Delete(received_sensors["CIN"])
// _ = tm.OneM2M_Delete(received_sensors["CNT"])
// _ = tm.OneM2M_Delete(received_sensors["AE"])
// Cleanup
err = tm.DeleteSssMgr()
if err != nil {
t.Fatalf("Failed to cleanup SSS Asset Manager")
}
tm = nil
}
// // Cleanup
// err = tm.DeleteSssMgr()
// if err != nil {
// t.Fatalf("Failed to cleanup SSS Asset Manager")
// }
// tm = nil
// }
// func TestVaidateOneM2MNotificationServer(t *testing.T) {
// fmt.Println("--- ", t.Name())
......@@ -923,7 +979,7 @@ func TestOneM2M_discoveryMQTT(t *testing.T) {
// }
// tm.init()
// fmt.Println("Waiting for 2 minutes to do curl request: curl -v http://mec-platform.etsi.org:33122/sbxykqjr17/mep1/sens/v1 ")
// fmt.Println("Waiting for 2 minutes to do curl request: curl -v http://mec-platform.etsi.org:31122/sbxykqjr17/mep1/sens/v1 ")
// // Cleanup
// err = tm.DeleteSssMgr()
......@@ -1150,3 +1206,18 @@ func validate_sensor_cin(expected_sensor SensorDiscoveryInfo, received_sensor Se
return true
}
func discoveryNotify(map[string]interface{}) {
log.Debug(">>> discoveryNotify")
}
func statusNotify(map[string]interface{}) {
log.Debug(">>> statusNotify")
}
func dataNotify(map[string]interface{}) {
log.Debug(">>> dataNotify")
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment