ORAN
Learn More →
The RIC platform provides set of functions that the xApps can use to accomplish their tasks. Hello World xApp is envisioned to provide xApp developers, examples of implementing these sets of functions.
1. First we have to pull Hello World xApp repository from github by using this command.
sudo -i
git clone "https://gerrit.o-ran-sc.org/r/ric-app/hw" -b master
Learn More →
2. After that, we have to build the dockerfile by using this command.
cd hw
docker build -t nexus3.o-ran-sc.org:10002/o-ran-sc/ric-app-hw:1.0.6 .
Learn More →
3. Then we can continue to the onboarding part by following these commands below and change the ip according to your own kong ip address result.
sudo kubectl get service -A | grep 32080
echo '{"config-file.json_url": "https://gerrit.o-ran-sc.org/r/gitweb?p=ric-app/hw.git;a=blob_plain;f=init/config-file.json;hb=refs/heads/master" }' > onboard.hw.url
curl --location --request POST "http://10.97.87.206:32080/onboard/api/v1/onboard/download" --header 'Content-Type: application/json' --data-binary "@./onboard.hw.url"
Learn More →
Learn More →
4. If status is created already we can continue to deploy HW xApp by using.
curl --location --request POST "http://10.97.87.206:32080/appmgr/ric/v1/xapps" --header 'Content-Type: application/json' --data-raw '{"xappName": "hwxapp"}' -v
Learn More →
5. To make sure our pod is deployed already we can take a look if there any ricxapp-hwxapp pod deployed by using
kubectl get pods -n ricxapp
Learn More →
Hello World xApp DB test is separated into two parts, the first one is to check if RNIB is working or not, and the second test is to check if SDL is working or not.
Learn More →
For the first test the main job is to set gnblist to RNIB, there are two ids that will be used named as test1 and test2
Learn More →
After HW xApp set some data, it will try to retrieve the data by using get gnblist and will print every gnb id stored on the RNIB side. If test1 and test2 are printed in means that RNIB is working fine.
Learn More →
For the second test it will try to set a data to Redis through SDL. HW xApp will set abc as a key and as e the value.
Learn More →
Learn More →
And after that HW xApp will try to get the value of abc key from Redis through SDL. If the result is equal to e it means SDL is working fine.
Learn More →
1. First we have to pull Hello World xApp repository from github by using this command.
sudo -i
git clone "https://gerrit.o-ran-sc.org/r/ric-app/hw" -b master\
Learn More →
2. After that, we have to rename Dockerfile to another name and Dockerfile-Unit-Test To Dockerfile
cd hw
mv Dockerfile Docker1
mv Dockerfile-Unit-Tests Dockerfile
docker build --no-cache -t hw-xapp-test .
Learn More →
3. Make sure that we can see the image we made before by using.
docker images
Learn More →
4. After that, we have to run the docker image we made by using this command.
docker run --net host -it --rm -v "/root/hw/init:/opt/ric/config" --name "HW-xAPP" hw-xapp-test:latest
5. After we run the image a test should ran and if the test result is ok it will show RUN and then OK
Learn More →
In Hello World xApp unit test, they try to test E2AP Class 1 Procedure and Class 2 Procedure. All the procedure on E2AP could be seen on the image below.
Learn More →
Based on Hello World xApp Unit test for E2AP they ran several tests to check the functionality of E2AP. It is separated to several tests, the related test code could be seen on the image below.
First it will try to make a dummy xApp first using the flow below.
test_cntrl.h
On this test they try to check E2AP class 1 elementary procedure called as RIC control request. This test has 1 test case named as :
ControlMessage
RIC control request made, and the value for every message will be set for every variable to match the actual RIC control request message standard from E2AP.
test_e2ap.h
On this test they try to check E2AP class 1 elementary procedures called as RIC Control, RIC Subscription Delete, and RIC Subscription. This test has 13 test cases named as :
ControlAcknowledgementEncode
RIC control acknowledgement file made and then it is written into controlack1.per with encoding function. Variable used is the same as the actual E2AP Control Acknowledgement Message.
ControlAcknowledgementDecode
This test is made to decode the previous ControlAcknowledgementEncode message by reading the controlack1.per file
ControlFailureEncode
RIC control failure file made and then it is written into controlfail1.per with encoding function. Variable used is the same as the actual E2AP Control Failure Message.
ControlFailureDecode
This test is made to decode the previous ControlFailureEncode message by reading the controlfail1.per file
SubscriptionDeleteRequest
RIC delete request made in this function. Variable used is the same as the actual E2AP Subscription Delete Request.
SubDelResponseEncode
RIC subscription delete response file made and then it is written into subdelresponse1.per with encoding function. Variable used is the same as the actual E2AP Subscription Delete Response.
SubDelResponseDecode
This test is made to decode the previous SubDelResponseEncode message by reading the subdelresponse1.per file
SubDelFailureEncode
RIC subscription delete response file made and then it is written into subdelfailure2.per with encoding function. Variable used is the same as the actual E2AP Subscription Delete Failure.
SubDelFailureDecode
This test is made to decode the previous SubDelFailureEncode message by reading the subdelfailure2.per file
SubResponseEncode
RIC subscription delete response file made and then it is written into subresponse1.per with encoding function. Variable used is the same as the actual E2AP Subscription Response.
SubResponseDecode
This test is made to decode the previous SubResponseEncode message by reading the subresponse1.per file
SubFailureEncode
RIC subscription delete response file made and then it is written into subfailure1.per with encoding function. Variable used is the same as the actual E2AP Subscription Failure.
SubFailureDecode
This test is made to decode the previous SubFailureEncode message by reading the subfailure1.per file
test_indc.h
On this test they try to check E2AP class 1 and class 2 elementary procedures called as RIC Indication and RIC Subscription. This test has 2 test cases named as :
IndicationMessageEncode
RIC indication file made and then it is written into indication1.per with encoding function. Variable used is the same as the actual E2AP Indication Message.
IndicationMessageDecode
This test is made to decode the previous IndicationMessageEncode message by reading the indication1.per file
test_subs.h
On this test they try to check E2AP class 1 elementary procedures called as RIC Subscription.
xApp Creation
E2AP Control Acknowledgement Encode
E2AP Control Acknowledgement Decode
E2AP Control Failure Encode
E2AP Control Failure Decode
E2AP Subscription Delete Request
E2AP Subscription Delete Response Encode
E2AP Subscription Delete Response Decode
E2AP Subscription Delete Failure Encode
E2AP Subscription Delete Failure Decode
E2AP Subscription Response Encode
E2AP Subscription Response Decode
Complete Log
Xapp Name is: hwxapp
{"ts":1632483588312,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":"Xapp Name set to hwxapp from environment varia ble"}
{"ts":1632483588312,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":"Xapp ID set to hwxapp from environment variabl e"}
{"ts":1632483588312,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":"Ports set to 4560 from environment variable"}
1632483588 8/RMR [INFO] ric message routing library on SI95/g mv=3 flg=00 (84423e6 4.4.6 built: Dec 4 2020)
{"ts":1632483588314,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":">>> waiting for RMR, file= ../src/xapp-utils/x app_rmr.cc, line=59"}
{"ts":1632483589315,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":"RMR Context is Ready, file= ../src/xapp-utils/ xapp_rmr.cc, line=63"}
Note: Google Test filter = E2AP*
[==========] Running 13 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 13 tests from E2AP
[ RUN ] E2AP.ControlAcknowledgementEncode
<E2AP-PDU>
<successfulOutcome>
<procedureCode>4</procedureCode>
<criticality><reject/></criticality>
<value>
<RICcontrolAcknowledge>
<protocolIEs>
<RICcontrolAcknowledge-IEs>
<id>29</id>
<criticality><reject/></criticality>
<value>
<RICrequestID>
<ricRequestorID>1</ricRequestorID>
<ricInstanceID>1</ricInstanceID>
</RICrequestID>
</value>
</RICcontrolAcknowledge-IEs>
<RICcontrolAcknowledge-IEs>
<id>5</id>
<criticality><reject/></criticality>
<value>
<RANfunctionID>1</RANfunctionID>
</value>
</RICcontrolAcknowledge-IEs>
<RICcontrolAcknowledge-IEs>
<id>24</id>
<criticality><reject/></criticality>
<value>
<RICcontrolStatus><rejected/></RICcontrolStatus>
</value>
</RICcontrolAcknowledge-IEs>
<RICcontrolAcknowledge-IEs>
<id>20</id>
<criticality><reject/></criticality>
<value>
<RICcallProcessID>43 61 6C 6C 50 72 6F 63 65 73 73 49 44</RICcallProcessID>
</value>
</RICcontrolAcknowledge-IEs>
<RICcontrolAcknowledge-IEs>
<id>20</id>
<criticality><reject/></criticality>
<value>
<RICcontrolOutcome>43 6F 6E 74 72 6F 6C 4F 75 74 63 6F 6D 65</RICcontrolOutcome>
</value>
</RICcontrolAcknowledge-IEs>
</protocolIEs>
</RICcontrolAcknowledge>
</value>
</successfulOutcome>
</E2AP-PDU>
1632483589 8/RMR [INFO] sends: ts=1632483589 src=ric:38000 target=service-ricplt-e2term-rmr-alpha.ricplt:38000 open=0 succ=0 fail=0 (hard=0 soft=0)
1632483589 8/RMR [INFO] sends: ts=1632483589 src=ric:38000 target=service-ricplt-a1mediator-rmr.ricplt:4562 open=0 su cc=0 fail=0 (hard=0 soft=0)
{"ts":1632483591317,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing E2AP Control Response object memory"}
{"ts":1632483591317,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed E2AP Control Response object memory"}
[ OK ] E2AP.ControlAcknowledgementEncode (2002 ms)
[ RUN ] E2AP.ControlAcknowledgementDecode
e2ap buffer size: 64
{"ts":1632483591317,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":"Successfully decoded: RIC Control Ack Message" }
{"ts":1632483591317,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing E2AP Control Response object memory"}
{"ts":1632483591317,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed E2AP Control Response object memory"}
[ OK ] E2AP.ControlAcknowledgementDecode (0 ms)
[ RUN ] E2AP.ControlFailureEncode
<E2AP-PDU>
<unsuccessfulOutcome>
<procedureCode>4</procedureCode>
<criticality><reject/></criticality>
<value>
<RICcontrolFailure>
<protocolIEs>
<RICcontrolFailure-IEs>
<id>29</id>
<criticality><reject/></criticality>
<value>
<RICrequestID>
<ricRequestorID>1</ricRequestorID>
<ricInstanceID>1</ricInstanceID>
</RICrequestID>
</value>
</RICcontrolFailure-IEs>
<RICcontrolFailure-IEs>
<id>5</id>
<criticality><reject/></criticality>
<value>
<RANfunctionID>1</RANfunctionID>
</value>
</RICcontrolFailure-IEs>
<RICcontrolFailure-IEs>
<id>1</id>
<criticality><ignore/></criticality>
<value>
<Cause>
<ricRequest><action-not-supported/></ricRequest>
</Cause>
</value>
</RICcontrolFailure-IEs>
<RICcontrolFailure-IEs>
<id>20</id>
<criticality><reject/></criticality>
<value>
<RICcallProcessID>43 61 6C 6C 50 72 6F 63 65 73 73 49 44</RICcallProcessID>
</value>
</RICcontrolFailure-IEs>
<RICcontrolFailure-IEs>
<id>20</id>
<criticality><reject/></criticality>
<value>
<RICcontrolOutcome>43 6F 6E 74 72 6F 6C 4F 75 74 63 6F 6D 65</RICcontrolOutcome>
</value>
</RICcontrolFailure-IEs>
</protocolIEs>
</RICcontrolFailure>
</value>
</unsuccessfulOutcome>
</E2AP-PDU>
{"ts":1632483593318,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing E2AP Control Response object memory"}
{"ts":1632483593318,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed E2AP Control Response object memory"}
[ OK ] E2AP.ControlFailureEncode (2001 ms)
[ RUN ] E2AP.ControlFailureDecode
e2ap buffer size: 65
{"ts":1632483593318,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":"Successfully decoded: RIC Control Ack Message" }
{"ts":1632483593318,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing E2AP Control Response object memory"}
{"ts":1632483593318,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed E2AP Control Response object memory"}
[ OK ] E2AP.ControlFailureDecode (0 ms)
[ RUN ] E2AP.SubscriptionDeleteRequest
<E2AP-PDU>
<initiatingMessage>
<procedureCode>9</procedureCode>
<criticality><reject/></criticality>
<value>
<RICsubscriptionDeleteRequest>
<protocolIEs>
<RICsubscriptionDeleteRequest-IEs>
<id>29</id>
<criticality><reject/></criticality>
<value>
<RICrequestID>
<ricRequestorID>3</ricRequestorID>
<ricInstanceID>1</ricInstanceID>
</RICrequestID>
</value>
</RICsubscriptionDeleteRequest-IEs>
<RICsubscriptionDeleteRequest-IEs>
<id>5</id>
<criticality><reject/></criticality>
<value>
<RANfunctionID>1</RANfunctionID>
</value>
</RICsubscriptionDeleteRequest-IEs>
</protocolIEs>
</RICsubscriptionDeleteRequest>
</value>
</initiatingMessage>
</E2AP-PDU>
{"ts":1632483593318,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing subscription delete request object me mory"}
{"ts":1632483593318,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed subscription delete request object memo ry"}
[ OK ] E2AP.SubscriptionDeleteRequest (0 ms)
[ RUN ] E2AP.SubDelResponseEncode
<E2AP-PDU>
<successfulOutcome>
<procedureCode>9</procedureCode>
<criticality><reject/></criticality>
<value>
<RICsubscriptionDeleteResponse>
<protocolIEs>
<RICsubscriptionDeleteResponse-IEs>
<id>29</id>
<criticality><reject/></criticality>
<value>
<RICrequestID>
<ricRequestorID>1</ricRequestorID>
<ricInstanceID>1</ricInstanceID>
</RICrequestID>
</value>
</RICsubscriptionDeleteResponse-IEs>
<RICsubscriptionDeleteResponse-IEs>
<id>5</id>
<criticality><reject/></criticality>
<value>
<RANfunctionID>1</RANfunctionID>
</value>
</RICsubscriptionDeleteResponse-IEs>
</protocolIEs>
</RICsubscriptionDeleteResponse>
</value>
</successfulOutcome>
</E2AP-PDU>
{"ts":1632483595322,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing subscription delete request object me mory"}
{"ts":1632483595322,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed subscription delete request object memo ry"}
[ OK ] E2AP.SubDelResponseEncode (2004 ms)
[ RUN ] E2AP.SubDelResponseDecode
e2ap buffer size: 22
{"ts":1632483605323,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":"Successfully decoded: RIC Subscription Delete Response"}
{"ts":1632483605323,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing subscription delete request object me mory"}
{"ts":1632483605323,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed subscription delete request object memo ry"}
[ OK ] E2AP.SubDelResponseDecode (10001 ms)
[ RUN ] E2AP.SubDelFailureEncode
<E2AP-PDU>
<unsuccessfulOutcome>
<procedureCode>9</procedureCode>
<criticality><reject/></criticality>
<value>
<RICsubscriptionDeleteFailure>
<protocolIEs>
<RICsubscriptionDeleteFailure-IEs>
<id>29</id>
<criticality><reject/></criticality>
<value>
<RICrequestID>
<ricRequestorID>102</ricRequestorID>
<ricInstanceID>101</ricInstanceID>
</RICrequestID>
</value>
</RICsubscriptionDeleteFailure-IEs>
<RICsubscriptionDeleteFailure-IEs>
<id>5</id>
<criticality><reject/></criticality>
<value>
<RANfunctionID>1</RANfunctionID>
</value>
</RICsubscriptionDeleteFailure-IEs>
<RICsubscriptionDeleteFailure-IEs>
<id>1</id>
<criticality><ignore/></criticality>
<value>
<Cause>
<ricRequest><excessive-actions/></ricRequest>
</Cause>
</value>
</RICsubscriptionDeleteFailure-IEs>
<RICsubscriptionDeleteFailure-IEs>
<id>2</id>
<criticality><ignore/></criticality>
<value>
<CriticalityDiagnostics>
<procedureCode>10</procedureCode>
<triggeringMessage><successful-outcome/></triggeringMessage>
<procedureCriticality><reject/></procedureCriticality>
<ricRequestorID>
<ricRequestorID>0</ricRequestorID>
<ricInstanceID>0</ricInstanceID>
</ricRequestorID>
<iEsCriticalityDiagnostics>
<CriticalityDiagnostics-IE-Item>
<iECriticality><notify/></iECriticality>
<iE-ID>1</iE-ID>
<typeOfError><missing/></typeOfError>
</CriticalityDiagnostics-IE-Item>
<CriticalityDiagnostics-IE-Item>
<iECriticality><ignore/></iECriticality>
<iE-ID>1</iE-ID>
<typeOfError><missing/></typeOfError>
</CriticalityDiagnostics-IE-Item>
</iEsCriticalityDiagnostics>
</CriticalityDiagnostics>
</value>
</RICsubscriptionDeleteFailure-IEs>
</protocolIEs>
</RICsubscriptionDeleteFailure>
</value>
</unsuccessfulOutcome>
</E2AP-PDU>
{"ts":1632483607334,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing subscription delete request object me mory"}
{"ts":1632483607334,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed subscription delete request object memo ry"}
[ OK ] E2AP.SubDelFailureEncode (2011 ms)
[ RUN ] E2AP.SubDelFailureDecode
e2ap buffer size: 47
{"ts":1632483617336,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":"Unsuccessfully decoded: RIC Subscription Delet e Failure"}
Procedure Code: 10
Procedure Criticality: 0
Size OF LIST :2
Typ Error:::1
iEcriticality:::2
ieID:::1
Typ Error:::1
iEcriticality:::1
ieID:::1
{"ts":1632483617336,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing subscription delete request object me mory"}
{"ts":1632483617336,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed subscription delete request object memo ry"}
[ OK ] E2AP.SubDelFailureDecode (10002 ms)
[ RUN ] E2AP.SubResponseEncode
<E2AP-PDU>
<successfulOutcome>
<procedureCode>8</procedureCode>
<criticality><reject/></criticality>
<value>
<RICsubscriptionResponse>
<protocolIEs>
<RICsubscriptionResponse-IEs>
<id>29</id>
<criticality><reject/></criticality>
<value>
<RICrequestID>
<ricRequestorID>1</ricRequestorID>
<ricInstanceID>1</ricInstanceID>
</RICrequestID>
</value>
</RICsubscriptionResponse-IEs>
<RICsubscriptionResponse-IEs>
<id>5</id>
<criticality><reject/></criticality>
<value>
<RANfunctionID>1</RANfunctionID>
</value>
</RICsubscriptionResponse-IEs>
<RICsubscriptionResponse-IEs>
<id>17</id>
<criticality><reject/></criticality>
<value>
<RICaction-Admitted-List>
<ProtocolIE-SingleContainer>
<id>14</id>
<criticality><ignore/></criticality>
<value>
<RICaction-Admitted-Item>
<ricActionID>1</ricActionID>
</RICaction-Admitted-Item>
</value>
</ProtocolIE-SingleContainer>
<ProtocolIE-SingleContainer>
<id>14</id>
<criticality><ignore/></criticality>
<value>
<RICaction-Admitted-Item>
<ricActionID>2</ricActionID>
</RICaction-Admitted-Item>
</value>
</ProtocolIE-SingleContainer>
</RICaction-Admitted-List>
</value>
</RICsubscriptionResponse-IEs>
<RICsubscriptionResponse-IEs>
<id>18</id>
<criticality><reject/></criticality>
<value>
<RICaction-NotAdmitted-List>
<ProtocolIE-SingleContainer>
<id>16</id>
<criticality><ignore/></criticality>
<value>
<RICaction-NotAdmitted-Item>
<ricActionID>2</ricActionID>
<cause>
<ricRequest><duplicate-action/></ricRequest>
</cause>
</RICaction-NotAdmitted-Item>
</value>
</ProtocolIE-SingleContainer>
<ProtocolIE-SingleContainer>
<id>16</id>
<criticality><ignore/></criticality>
<value>
<RICaction-NotAdmitted-Item>
<ricActionID>2</ricActionID>
<cause>
<ricRequest><action-not-supported/></ricRequest>
</cause>
</RICaction-NotAdmitted-Item>
</value>
</ProtocolIE-SingleContainer>
</RICaction-NotAdmitted-List>
</value>
</RICsubscriptionResponse-IEs>
</protocolIEs>
</RICsubscriptionResponse>
</value>
</successfulOutcome>
</E2AP-PDU>
{"ts":1632483617336,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed Subscription Response Object memory"}
[ OK ] E2AP.SubResponseEncode (0 ms)
[ RUN ] E2AP.SubResponseDecode
1632483620 8/RMR [INFO] sends: ts=1632483620 src=ric:38000 target=service-ricplt-e2term-rmr-alpha.ricplt:38000 open=0 succ=0 fail=0 (hard=0 soft=0)
1632483620 8/RMR [INFO] sends: ts=1632483620 src=ric:38000 target=service-ricplt-a1mediator-rmr.ricplt:4562 open=0 su cc=0 fail=0 (hard=0 soft=0)
subresponse2.per: No such file or directory
XaPP terminated via signal -1
root@ric:~/hw# docker run --net host -it --rm -v "/root/hw/init:/opt/ric/config" --name "HW-xAPP" hw-xapp-test:latest
Xapp Name is: hwxapp
{"ts":1632483756957,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":"Xapp Name set to hwxapp from environment variable"}
{"ts":1632483756957,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":"Xapp ID set to hwxapp from environment variable"}
{"ts":1632483756957,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":"Ports set to 4560 from environment variable"}
1632483756 8/RMR [INFO] ric message routing library on SI95/g mv=3 flg=00 (84423e6 4.4.6 built: Dec 4 2020)
{"ts":1632483756958,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":">>> waiting for RMR, file= ../src/xapp-utils/xapp_rmr.cc, line=59"}
{"ts":1632483757961,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":"RMR Context is Ready, file= ../src/xapp-utils/xapp_rmr.cc, line=63"}
1632483757 8/RMR [INFO] sends: ts=1632483757 src=ric:38000 target=service-ricplt-e2term-rmr-alpha.ricplt:38000 open=0 succ=0 fail=0 (hard=0 soft=0)
1632483757 8/RMR [INFO] sends: ts=1632483757 src=ric:38000 target=service-ricplt-a1mediator-rmr.ricplt:4562 open=0 succ=0 fail=0 (hard=0 soft=0)
Note: Google Test filter = E2AP*
[==========] Running 13 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 13 tests from E2AP
[ RUN ] E2AP.ControlAcknowledgementEncode
<E2AP-PDU>
<successfulOutcome>
<procedureCode>4</procedureCode>
<criticality><reject/></criticality>
<value>
<RICcontrolAcknowledge>
<protocolIEs>
<RICcontrolAcknowledge-IEs>
<id>29</id>
<criticality><reject/></criticality>
<value>
<RICrequestID>
<ricRequestorID>1</ricRequestorID>
<ricInstanceID>1</ricInstanceID>
</RICrequestID>
</value>
</RICcontrolAcknowledge-IEs>
<RICcontrolAcknowledge-IEs>
<id>5</id>
<criticality><reject/></criticality>
<value>
<RANfunctionID>1</RANfunctionID>
</value>
</RICcontrolAcknowledge-IEs>
<RICcontrolAcknowledge-IEs>
<id>24</id>
<criticality><reject/></criticality>
<value>
<RICcontrolStatus><rejected/></RICcontrolStatus>
</value>
</RICcontrolAcknowledge-IEs>
<RICcontrolAcknowledge-IEs>
<id>20</id>
<criticality><reject/></criticality>
<value>
<RICcallProcessID>43 61 6C 6C 50 72 6F 63 65 73 73 49 44</RICcallProcessID>
</value>
</RICcontrolAcknowledge-IEs>
<RICcontrolAcknowledge-IEs>
<id>20</id>
<criticality><reject/></criticality>
<value>
<RICcontrolOutcome>43 6F 6E 74 72 6F 6C 4F 75 74 63 6F 6D 65</RICcontrolOutcome>
</value>
</RICcontrolAcknowledge-IEs>
</protocolIEs>
</RICcontrolAcknowledge>
</value>
</successfulOutcome>
</E2AP-PDU>
{"ts":1632483759961,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing E2AP Control Response object memory"}
{"ts":1632483759961,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed E2AP Control Response object memory"}
[ OK ] E2AP.ControlAcknowledgementEncode (2000 ms)
[ RUN ] E2AP.ControlAcknowledgementDecode
e2ap buffer size: 64
{"ts":1632483759961,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":"Successfully decoded: RIC Control Ack Message"}
{"ts":1632483759961,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing E2AP Control Response object memory"}
{"ts":1632483759961,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed E2AP Control Response object memory"}
[ OK ] E2AP.ControlAcknowledgementDecode (0 ms)
[ RUN ] E2AP.ControlFailureEncode
<E2AP-PDU>
<unsuccessfulOutcome>
<procedureCode>4</procedureCode>
<criticality><reject/></criticality>
<value>
<RICcontrolFailure>
<protocolIEs>
<RICcontrolFailure-IEs>
<id>29</id>
<criticality><reject/></criticality>
<value>
<RICrequestID>
<ricRequestorID>1</ricRequestorID>
<ricInstanceID>1</ricInstanceID>
</RICrequestID>
</value>
</RICcontrolFailure-IEs>
<RICcontrolFailure-IEs>
<id>5</id>
<criticality><reject/></criticality>
<value>
<RANfunctionID>1</RANfunctionID>
</value>
</RICcontrolFailure-IEs>
<RICcontrolFailure-IEs>
<id>1</id>
<criticality><ignore/></criticality>
<value>
<Cause>
<ricRequest><action-not-supported/></ricRequest>
</Cause>
</value>
</RICcontrolFailure-IEs>
<RICcontrolFailure-IEs>
<id>20</id>
<criticality><reject/></criticality>
<value>
<RICcallProcessID>43 61 6C 6C 50 72 6F 63 65 73 73 49 44</RICcallProcessID>
</value>
</RICcontrolFailure-IEs>
<RICcontrolFailure-IEs>
<id>20</id>
<criticality><reject/></criticality>
<value>
<RICcontrolOutcome>43 6F 6E 74 72 6F 6C 4F 75 74 63 6F 6D 65</RICcontrolOutcome>
</value>
</RICcontrolFailure-IEs>
</protocolIEs>
</RICcontrolFailure>
</value>
</unsuccessfulOutcome>
</E2AP-PDU>
{"ts":1632483761962,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing E2AP Control Response object memory"}
{"ts":1632483761962,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed E2AP Control Response object memory"}
[ OK ] E2AP.ControlFailureEncode (2001 ms)
[ RUN ] E2AP.ControlFailureDecode
e2ap buffer size: 65
{"ts":1632483761962,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":"Successfully decoded: RIC Control Ack Message"}
{"ts":1632483761962,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing E2AP Control Response object memory"}
{"ts":1632483761962,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed E2AP Control Response object memory"}
[ OK ] E2AP.ControlFailureDecode (0 ms)
[ RUN ] E2AP.SubscriptionDeleteRequest
<E2AP-PDU>
<initiatingMessage>
<procedureCode>9</procedureCode>
<criticality><reject/></criticality>
<value>
<RICsubscriptionDeleteRequest>
<protocolIEs>
<RICsubscriptionDeleteRequest-IEs>
<id>29</id>
<criticality><reject/></criticality>
<value>
<RICrequestID>
<ricRequestorID>3</ricRequestorID>
<ricInstanceID>1</ricInstanceID>
</RICrequestID>
</value>
</RICsubscriptionDeleteRequest-IEs>
<RICsubscriptionDeleteRequest-IEs>
<id>5</id>
<criticality><reject/></criticality>
<value>
<RANfunctionID>1</RANfunctionID>
</value>
</RICsubscriptionDeleteRequest-IEs>
</protocolIEs>
</RICsubscriptionDeleteRequest>
</value>
</initiatingMessage>
</E2AP-PDU>
{"ts":1632483761962,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing subscription delete request object memory"}
{"ts":1632483761962,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed subscription delete request object memory"}
[ OK ] E2AP.SubscriptionDeleteRequest (0 ms)
[ RUN ] E2AP.SubDelResponseEncode
<E2AP-PDU>
<successfulOutcome>
<procedureCode>9</procedureCode>
<criticality><reject/></criticality>
<value>
<RICsubscriptionDeleteResponse>
<protocolIEs>
<RICsubscriptionDeleteResponse-IEs>
<id>29</id>
<criticality><reject/></criticality>
<value>
<RICrequestID>
<ricRequestorID>1</ricRequestorID>
<ricInstanceID>1</ricInstanceID>
</RICrequestID>
</value>
</RICsubscriptionDeleteResponse-IEs>
<RICsubscriptionDeleteResponse-IEs>
<id>5</id>
<criticality><reject/></criticality>
<value>
<RANfunctionID>1</RANfunctionID>
</value>
</RICsubscriptionDeleteResponse-IEs>
</protocolIEs>
</RICsubscriptionDeleteResponse>
</value>
</successfulOutcome>
</E2AP-PDU>
{"ts":1632483763963,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing subscription delete request object memory"}
{"ts":1632483763963,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed subscription delete request object memory"}
[ OK ] E2AP.SubDelResponseEncode (2001 ms)
[ RUN ] E2AP.SubDelResponseDecode
e2ap buffer size: 22
{"ts":1632483773964,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":"Successfully decoded: RIC Subscription Delete Response"}
{"ts":1632483773964,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing subscription delete request object memory"}
{"ts":1632483773964,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed subscription delete request object memory"}
[ OK ] E2AP.SubDelResponseDecode (10001 ms)
[ RUN ] E2AP.SubDelFailureEncode
<E2AP-PDU>
<unsuccessfulOutcome>
<procedureCode>9</procedureCode>
<criticality><reject/></criticality>
<value>
<RICsubscriptionDeleteFailure>
<protocolIEs>
<RICsubscriptionDeleteFailure-IEs>
<id>29</id>
<criticality><reject/></criticality>
<value>
<RICrequestID>
<ricRequestorID>102</ricRequestorID>
<ricInstanceID>101</ricInstanceID>
</RICrequestID>
</value>
</RICsubscriptionDeleteFailure-IEs>
<RICsubscriptionDeleteFailure-IEs>
<id>5</id>
<criticality><reject/></criticality>
<value>
<RANfunctionID>1</RANfunctionID>
</value>
</RICsubscriptionDeleteFailure-IEs>
<RICsubscriptionDeleteFailure-IEs>
<id>1</id>
<criticality><ignore/></criticality>
<value>
<Cause>
<ricRequest><excessive-actions/></ricRequest>
</Cause>
</value>
</RICsubscriptionDeleteFailure-IEs>
<RICsubscriptionDeleteFailure-IEs>
<id>2</id>
<criticality><ignore/></criticality>
<value>
<CriticalityDiagnostics>
<procedureCode>10</procedureCode>
<triggeringMessage><successful-outcome/></triggeringMessage>
<procedureCriticality><reject/></procedureCriticality>
<ricRequestorID>
<ricRequestorID>0</ricRequestorID>
<ricInstanceID>0</ricInstanceID>
</ricRequestorID>
<iEsCriticalityDiagnostics>
<CriticalityDiagnostics-IE-Item>
<iECriticality><notify/></iECriticality>
<iE-ID>1</iE-ID>
<typeOfError><missing/></typeOfError>
</CriticalityDiagnostics-IE-Item>
<CriticalityDiagnostics-IE-Item>
<iECriticality><ignore/></iECriticality>
<iE-ID>1</iE-ID>
<typeOfError><missing/></typeOfError>
</CriticalityDiagnostics-IE-Item>
</iEsCriticalityDiagnostics>
</CriticalityDiagnostics>
</value>
</RICsubscriptionDeleteFailure-IEs>
</protocolIEs>
</RICsubscriptionDeleteFailure>
</value>
</unsuccessfulOutcome>
</E2AP-PDU>
{"ts":1632483775969,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing subscription delete request object memory"}
{"ts":1632483775969,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed subscription delete request object memory"}
[ OK ] E2AP.SubDelFailureEncode (2005 ms)
[ RUN ] E2AP.SubDelFailureDecode
e2ap buffer size: 47
{"ts":1632483785970,"crit":"INFO","id":"hw_unit_tests","mdc":{},"msg":"Unsuccessfully decoded: RIC Subscription Delete Failure"}
Procedure Code: 10
Procedure Criticality: 0
Size OF LIST :2
Typ Error:::1
iEcriticality:::2
ieID:::1
Typ Error:::1
iEcriticality:::1
ieID:::1
{"ts":1632483785970,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freeing subscription delete request object memory"}
{"ts":1632483785970,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed subscription delete request object memory"}
[ OK ] E2AP.SubDelFailureDecode (10001 ms)
[ RUN ] E2AP.SubResponseEncode
<E2AP-PDU>
<successfulOutcome>
<procedureCode>8</procedureCode>
<criticality><reject/></criticality>
<value>
<RICsubscriptionResponse>
<protocolIEs>
<RICsubscriptionResponse-IEs>
<id>29</id>
<criticality><reject/></criticality>
<value>
<RICrequestID>
<ricRequestorID>1</ricRequestorID>
<ricInstanceID>1</ricInstanceID>
</RICrequestID>
</value>
</RICsubscriptionResponse-IEs>
<RICsubscriptionResponse-IEs>
<id>5</id>
<criticality><reject/></criticality>
<value>
<RANfunctionID>1</RANfunctionID>
</value>
</RICsubscriptionResponse-IEs>
<RICsubscriptionResponse-IEs>
<id>17</id>
<criticality><reject/></criticality>
<value>
<RICaction-Admitted-List>
<ProtocolIE-SingleContainer>
<id>14</id>
<criticality><ignore/></criticality>
<value>
<RICaction-Admitted-Item>
<ricActionID>1</ricActionID>
</RICaction-Admitted-Item>
</value>
</ProtocolIE-SingleContainer>
<ProtocolIE-SingleContainer>
<id>14</id>
<criticality><ignore/></criticality>
<value>
<RICaction-Admitted-Item>
<ricActionID>2</ricActionID>
</RICaction-Admitted-Item>
</value>
</ProtocolIE-SingleContainer>
</RICaction-Admitted-List>
</value>
</RICsubscriptionResponse-IEs>
<RICsubscriptionResponse-IEs>
<id>18</id>
<criticality><reject/></criticality>
<value>
<RICaction-NotAdmitted-List>
<ProtocolIE-SingleContainer>
<id>16</id>
<criticality><ignore/></criticality>
<value>
<RICaction-NotAdmitted-Item>
<ricActionID>2</ricActionID>
<cause>
<ricRequest><duplicate-action/></ricRequest>
</cause>
</RICaction-NotAdmitted-Item>
</value>
</ProtocolIE-SingleContainer>
<ProtocolIE-SingleContainer>
<id>16</id>
<criticality><ignore/></criticality>
<value>
<RICaction-NotAdmitted-Item>
<ricActionID>2</ricActionID>
<cause>
<ricRequest><action-not-supported/></ricRequest>
</cause>
</RICaction-NotAdmitted-Item>
</value>
</ProtocolIE-SingleContainer>
</RICaction-NotAdmitted-List>
</value>
</RICsubscriptionResponse-IEs>
</protocolIEs>
</RICsubscriptionResponse>
</value>
</successfulOutcome>
</E2AP-PDU>
{"ts":1632483785971,"crit":"DEBUG","id":"hw_unit_tests","mdc":{},"msg":"Freed Subscription Response Object memory"}
[ OK ] E2AP.SubResponseEncode (1 ms)
[ RUN ] E2AP.SubResponseDecode
1632483788 8/RMR [INFO] sends: ts=1632483788 src=ric:38000 target=service-ricplt-e2term-rmr-alpha.ricplt:38000 open=0 succ=0 fail=0 (hard=0 soft=0)
1632483788 8/RMR [INFO] sends: ts=1632483788 src=ric:38000 target=service-ricplt-a1mediator-rmr.ricplt:4562 open=0 succ=0 fail=0 (hard=0 soft=0)
:::success Currently a student in Department Of Electronics and Computer Engineering, NTUST with a demonstrated history of working in the higher education industry. Graduated from Computer Engineering Program, Universitas Indonesia with Second Highest GPA in Computer Engineering Program, Universitas Indonesia (GPA 3.86/4.00). Skilled in C, Python, IoT, O-RAN Near-RT RIC, and Machine Learning. Now focusing on O-RAN Near-RT RIC and Machine Learning application in audio field for Master's Degree at BMW Lab, NTUST. ::: Personal Information :::success Name : Muhammad Fadli Email : muhammadfadli27@gmail.com
Oct 5, 2021:notebook_with_decorative_cover: Table Of Contents :::info [x] General Explanation [x] Elementary Procedures [x] Near-RT RIC Functional Procedures [x] Global Procedures [x] References :::
Jul 19, 2021:notebook_with_decorative_cover: Table Of Contents :::info [x] General Explanation [x] Functions [x] Status Code and Error Handling [x] Enumerations ::: :notebook_with_decorative_cover: Main Page
Apr 21, 2021:notebook_with_decorative_cover: Studying Plan [x] O-RAN Introduction (04/11) [x] Enabling Interoperability & Adherence to O-RAN Fronthaul Interface (04/12) [x] Overview of O-RAN Fronthaul Interface (04/12) :notebook_with_decorative_cover: Introduction Why We Need O-RAN?
Apr 12, 2021or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up