X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=test%2Frco%2Frco.go;fp=test%2Frco%2Frco.go;h=5f740f26512b97a789c1bf0653e96d32076b59ff;hb=fbc56f981b7bd3387f7326401ceccbf31893a2ed;hp=5109530ad78c77b8ee73fc5a61f56076818fed62;hpb=303e57cbddf5d0d5e77e2bf7ec60643fcf525419;p=ric-plt%2Fsubmgr.git diff --git a/test/rco/rco.go b/test/rco/rco.go index 5109530..5f740f2 100644 --- a/test/rco/rco.go +++ b/test/rco/rco.go @@ -20,30 +20,89 @@ package main import ( - "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" + "encoding/hex" + "errors" submgr "gerrit.o-ran-sc.org/r/ric-plt/submgr/pkg/control" + "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" + "github.com/spf13/viper" "time" "os" ) type Rco struct { + submgr.E2ap +} + +var c chan submgr.RmrDatagram = make(chan submgr.RmrDatagram, 1) + +var RAWDATA string +var SEEDSN uint16 + +func init() { + viper.AutomaticEnv() + viper.SetEnvPrefix("rco") + viper.AllowEmptyEnv(true) + RAWDATA = viper.GetString("rawdata") + if RAWDATA == "" { + RAWDATA = "000003ea7e000500aaaaccccea6300020000ea81000e00045465737400ea6b0003000100" + } + xapp.Logger.Info("Initial RAW DATA: %v", RAWDATA) + SEEDSN = uint16(viper.GetInt("seed_sn")) + if SEEDSN == 0 || SEEDSN > 65535 { + SEEDSN = 12345 + } + xapp.Logger.Info("Initial SEQUENCE NUMBER: %v", SEEDSN) } -var c chan submgr.RmrDatagram = make(chan submgr.RmrDatagram, 1) +func (r *Rco) GeneratePayload(sub_id uint16) (payload []byte, err error) { + skeleton, err := hex.DecodeString(RAWDATA) + if err != nil { + return make([]byte, 0), errors.New("Unable to decode data provided in RCO_RAWDATA environment variable") + } + payload, err = r.SetSubscriptionRequestSequenceNumber(skeleton, sub_id) + return +} -func (m Rco) Consume(mtype, sub_id int, len int, payload []byte) (err error) { +func (r Rco) Consume(mtype, sub_id int, len int, payload []byte) (err error) { + payload_seq_num, err := r.GetSubscriptionResponseSequenceNumber(payload) + if err != nil { + xapp.Logger.Error("Unable to get Subscription Sequence Number from Payload due to: " + err.Error()) + } + xapp.Logger.Info("Message Received: RMR SUBSCRIPTION_ID: %v | PAYLOAD SEQUENCE_NUMBER: %v", sub_id, payload_seq_num) return } -func (r *Rco) send(datagram submgr.RmrDatagram) { - xapp.Rmr.Send(datagram.MessageType, datagram.SubscriptionId, len(datagram.Payload), datagram.Payload) +func (r *Rco) SendSubscriptionRequests() (err error) { + message, err := r.GeneratePayload(SEEDSN) + if err != nil { + xapp.Logger.Debug(err.Error()) + return + } + for { + time.Sleep(2 * time.Second) + c <- submgr.RmrDatagram{12010, SEEDSN, message} + } + return } func (r *Rco) Run() { for { - message := <- c - xapp.Logger.Info("RCO Message - Type=%v SubID=%v", message.MessageType, message.SubscriptionId) - r.send(message) + message := <-c + payload_seq_num, err := r.GetSubscriptionRequestSequenceNumber(message.Payload) + if err != nil { + xapp.Logger.Debug("Unable to get Subscription Sequence Number from Payload due to: " + err.Error()) + } + xapp.Logger.Info("Sending Message: TYPE: %v | RMR SUBSCRIPTION_ID: %v | PAYLOAD SEQUENCE_NUMBER: %v)", message.MessageType, message.SubscriptionId, payload_seq_num) + xapp.Rmr.Send(message.MessageType, int(message.SubscriptionId), len(message.Payload), message.Payload) + } +} + +func (r *Rco) sendInvalidTestMessages(){ + for { + time.Sleep(7 * time.Second) + c <- submgr.RmrDatagram{10000, 0, make([]byte, 1)} + time.Sleep(7 * time.Second) + c <- submgr.RmrDatagram{12010, 0, make([]byte, 1)} } } @@ -51,21 +110,9 @@ func main() { rco := Rco{} go xapp.Rmr.Start(rco) go rco.Run() - asn1 := submgr.Asn1{} - message, err := asn1.Encode(submgr.RmrPayload{8, 1111, "RCO: Subscription Request"}) + go rco.sendInvalidTestMessages() + err := rco.SendSubscriptionRequests() if err != nil { - xapp.Logger.Debug(err.Error()) os.Exit(1) } - doSubscribe := true - for { - time.Sleep(2 * time.Second) - if doSubscribe { - c <- submgr.RmrDatagram{12010, 9999, message} - doSubscribe = false - } else { - c <- submgr.RmrDatagram{10000, 9999, make([]byte,0)} - doSubscribe = true - } - } -} \ No newline at end of file +}