mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-13 12:40:28 +00:00
Compare commits
811 Commits
Multi_TDD_
...
old-push-p
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dee52d4efc | ||
|
|
2349c7d1ad | ||
|
|
e44377f7cb | ||
|
|
7fabd9c65e | ||
|
|
469d58f989 | ||
|
|
1691c607cc | ||
|
|
fd6cf5aaf7 | ||
|
|
4c9c26a307 | ||
|
|
b86f157c6d | ||
|
|
5043f6e282 | ||
|
|
99d2ad8e1a | ||
|
|
b5ac09de34 | ||
|
|
7a7aaf5d83 | ||
|
|
2d675bc3e8 | ||
|
|
e2e57a050d | ||
|
|
ab89324b1e | ||
|
|
5d05078f4e | ||
|
|
3cfc10ddaa | ||
|
|
d6d7064c0b | ||
|
|
fde10b9203 | ||
|
|
327baf2938 | ||
|
|
b01810a858 | ||
|
|
b3d04c1bbf | ||
|
|
1a9df52cf3 | ||
|
|
35f7225fb4 | ||
|
|
fe9c0fba2f | ||
|
|
e7eb1b1c3b | ||
|
|
605dfa0142 | ||
|
|
d00ac2031c | ||
|
|
29d8e3ce3a | ||
|
|
44d427bf7b | ||
|
|
d2073d924e | ||
|
|
94258b0fb9 | ||
|
|
125210fa1e | ||
|
|
e01957e890 | ||
|
|
e63232576e | ||
|
|
303e724845 | ||
|
|
ea171c75c0 | ||
|
|
8d6b6676c5 | ||
|
|
31bad32b57 | ||
|
|
4e7e8a6fa0 | ||
|
|
32b2ad259d | ||
|
|
ba0b63fe2f | ||
|
|
25430e9b25 | ||
|
|
ec6469d088 | ||
|
|
9b7d3351a1 | ||
|
|
798a62271c | ||
|
|
ca217f8f5b | ||
|
|
9b59ba6326 | ||
|
|
0b684732ee | ||
|
|
e1879c07bc | ||
|
|
8eb9e3d902 | ||
|
|
70dd524e2b | ||
|
|
d8bba3124f | ||
|
|
6dcd3ae8c4 | ||
|
|
bdc6df8c42 | ||
|
|
419a14a813 | ||
|
|
69a84825fb | ||
|
|
3393ca948b | ||
|
|
e42b2c0389 | ||
|
|
f3033533bb | ||
|
|
db1f2649ee | ||
|
|
6053e22684 | ||
|
|
3afbf8e39a | ||
|
|
9890896b9c | ||
|
|
dad8edb448 | ||
|
|
bc950aaaec | ||
|
|
ab1564aa1c | ||
|
|
f99552419e | ||
|
|
44d0c88863 | ||
|
|
150a00bd23 | ||
|
|
5a49dd9afa | ||
|
|
ea123a2ac0 | ||
|
|
ee4b193877 | ||
|
|
dbe5c5ee61 | ||
|
|
5764422342 | ||
|
|
9102e10747 | ||
|
|
01ec929ddb | ||
|
|
db098651b0 | ||
|
|
2991370169 | ||
|
|
cda82edf78 | ||
|
|
98a8e5dca3 | ||
|
|
aeb562756a | ||
|
|
ec40b34b1d | ||
|
|
9126e3dda8 | ||
|
|
d97249d2cf | ||
|
|
9924d9d77f | ||
|
|
450346c7dc | ||
|
|
fa7040f3c5 | ||
|
|
574c4df949 | ||
|
|
aab4698fcf | ||
|
|
cbcc552643 | ||
|
|
6b3529b29b | ||
|
|
af9f422a84 | ||
|
|
67da31a8b6 | ||
|
|
140efe0ec0 | ||
|
|
fdd2994620 | ||
|
|
468ba05441 | ||
|
|
72f7d0409c | ||
|
|
47833b1aeb | ||
|
|
0265607a95 | ||
|
|
8e9f6385cc | ||
|
|
0ef6153bb9 | ||
|
|
d055cc0004 | ||
|
|
01ae8fbb38 | ||
|
|
dc5df35fe1 | ||
|
|
1a04ebaa02 | ||
|
|
532aa1a904 | ||
|
|
42539b0bec | ||
|
|
94050d5ec1 | ||
|
|
1793e7e56d | ||
|
|
d04a83ea93 | ||
|
|
8172da04c8 | ||
|
|
97dfa90cf2 | ||
|
|
c93dcc0484 | ||
|
|
732555ddc3 | ||
|
|
24c01d8fda | ||
|
|
4684666430 | ||
|
|
8bffd1666d | ||
|
|
49688f8478 | ||
|
|
0883904891 | ||
|
|
a3b753d8cb | ||
|
|
46a1d2a621 | ||
|
|
85f194b5c7 | ||
|
|
7e18293c70 | ||
|
|
574363c515 | ||
|
|
68b29301b0 | ||
|
|
922e810a82 | ||
|
|
957073325e | ||
|
|
adc88d3d87 | ||
|
|
020662f95a | ||
|
|
baf02b8d1e | ||
|
|
031622b1a3 | ||
|
|
370062c04c | ||
|
|
fad450cbe3 | ||
|
|
1960516554 | ||
|
|
c49ed17c57 | ||
|
|
7293741a99 | ||
|
|
d9648ae6b2 | ||
|
|
4b859a2eb8 | ||
|
|
867a06b302 | ||
|
|
382de78c66 | ||
|
|
9e6435758a | ||
|
|
b17b44dffb | ||
|
|
ede6775ac3 | ||
|
|
0eb409f114 | ||
|
|
bac4f798f9 | ||
|
|
50f8f3de58 | ||
|
|
4f12a25ebd | ||
|
|
e662721310 | ||
|
|
fc4310cda7 | ||
|
|
4039473a70 | ||
|
|
8ab7f1dd68 | ||
|
|
cfb6ed4d82 | ||
|
|
6a8edaf317 | ||
|
|
68b07d542c | ||
|
|
2ec8fefbe8 | ||
|
|
21de8666d3 | ||
|
|
736c0fd37f | ||
|
|
2fa341ba59 | ||
|
|
6529863af2 | ||
|
|
94d59d5153 | ||
|
|
33fa06d0a5 | ||
|
|
ba70d91ba4 | ||
|
|
e5297febe4 | ||
|
|
1c8e4c364e | ||
|
|
c87b390501 | ||
|
|
2039a4f25b | ||
|
|
94e6cdb2bf | ||
|
|
bbd6f35a6f | ||
|
|
5effa74067 | ||
|
|
909fd5a9ec | ||
|
|
24ff0e294e | ||
|
|
25fdc1d23d | ||
|
|
0a8e1b49d0 | ||
|
|
c31d250d28 | ||
|
|
aa9183c218 | ||
|
|
871078a64d | ||
|
|
d1a272be1b | ||
|
|
6ef44ee3ae | ||
|
|
00523c2b2f | ||
|
|
30feb7e493 | ||
|
|
51ae5e2c05 | ||
|
|
6af674be59 | ||
|
|
7c788be9e0 | ||
|
|
14b7311bd8 | ||
|
|
aa8cf7c41a | ||
|
|
b1609e0534 | ||
|
|
e806315963 | ||
|
|
3d2b32ac1e | ||
|
|
a59a69d5e5 | ||
|
|
6435ed309c | ||
|
|
2b76e88823 | ||
|
|
5e547c617c | ||
|
|
35f5fdf960 | ||
|
|
dfe16d985a | ||
|
|
ad7bd05f9a | ||
|
|
fb554dc6c9 | ||
|
|
6e7ea5ce8d | ||
|
|
dafaea7dda | ||
|
|
9726a47fbb | ||
|
|
e586efb29d | ||
|
|
b22891d403 | ||
|
|
d47eb536b0 | ||
|
|
3e44aba1ea | ||
|
|
d8696f703c | ||
|
|
a57098ec02 | ||
|
|
9a4d1e920d | ||
|
|
ca2d9ec2a1 | ||
|
|
3cdb0d795e | ||
|
|
9c602a7790 | ||
|
|
7dffdcd797 | ||
|
|
3779483b1b | ||
|
|
335fa3fc50 | ||
|
|
386ff01f57 | ||
|
|
88f0e28c76 | ||
|
|
798158cfe1 | ||
|
|
fc9c5084eb | ||
|
|
168582b5a1 | ||
|
|
89d89a7564 | ||
|
|
39e7839f19 | ||
|
|
3a99fb8293 | ||
|
|
2e804f53c0 | ||
|
|
659a81997b | ||
|
|
d0f32d8aad | ||
|
|
ae5702d014 | ||
|
|
ffcf53fc75 | ||
|
|
2da09aba80 | ||
|
|
2c878c10ec | ||
|
|
e2163ba312 | ||
|
|
5bf498fca4 | ||
|
|
4810efdcfd | ||
|
|
9fedbf31dd | ||
|
|
380cf5c603 | ||
|
|
a12460e882 | ||
|
|
5acfa47325 | ||
|
|
983ee2794d | ||
|
|
89aad98093 | ||
|
|
0a5e8b7666 | ||
|
|
f23c1dff00 | ||
|
|
c7c1cb2dbf | ||
|
|
1c58bc2e1a | ||
|
|
9a1381a92e | ||
|
|
cec91a2a22 | ||
|
|
5eef9b3574 | ||
|
|
31b2428db8 | ||
|
|
992e7fa117 | ||
|
|
cb0a888565 | ||
|
|
8094952f6e | ||
|
|
8ae5bb5632 | ||
|
|
167c06bb87 | ||
|
|
7782f4aef0 | ||
|
|
44a0a45460 | ||
|
|
32d9e75dc5 | ||
|
|
6b21dea1ee | ||
|
|
8f549a5433 | ||
|
|
f680babbdd | ||
|
|
cf950dfa86 | ||
|
|
12229ef50e | ||
|
|
a9902d883c | ||
|
|
3fa73e4bdd | ||
|
|
39070f6541 | ||
|
|
70751e04d8 | ||
|
|
848b0f34ee | ||
|
|
9acf60a339 | ||
|
|
5f684d7f05 | ||
|
|
f6dcc19fe5 | ||
|
|
0efaec657a | ||
|
|
d465ed2fbc | ||
|
|
b0b8818549 | ||
|
|
965b7f63b0 | ||
|
|
0e7e66ecd8 | ||
|
|
5223013153 | ||
|
|
bfaa906a1e | ||
|
|
e50978e7de | ||
|
|
3d7ab0ebc6 | ||
|
|
7ddba36279 | ||
|
|
b2eb0f74b6 | ||
|
|
8365630946 | ||
|
|
6da87cf062 | ||
|
|
9d77057775 | ||
|
|
77db7be68e | ||
|
|
ab537c6675 | ||
|
|
b242a483f1 | ||
|
|
bd721c3bdb | ||
|
|
77af1ab97b | ||
|
|
82c0b441e5 | ||
|
|
b8089ba9a6 | ||
|
|
bb766be0c3 | ||
|
|
8e92df78de | ||
|
|
803b0289a6 | ||
|
|
f207ac12be | ||
|
|
00cb43bac3 | ||
|
|
7563937af8 | ||
|
|
e445ba2d1a | ||
|
|
745ea1c1dd | ||
|
|
99c8dd420a | ||
|
|
0316431e27 | ||
|
|
9d81708b49 | ||
|
|
bb9af4c7dc | ||
|
|
ed05c94c3e | ||
|
|
686f1816d0 | ||
|
|
52bd1ad7c6 | ||
|
|
2b44e5252d | ||
|
|
52f077c478 | ||
|
|
f30e354b77 | ||
|
|
d0daf03089 | ||
|
|
59086151e0 | ||
|
|
fbf257f6ba | ||
|
|
5692217c29 | ||
|
|
181ec25a23 | ||
|
|
9c1a8733c1 | ||
|
|
fc5258962f | ||
|
|
46ca521042 | ||
|
|
9e0bcb7fe4 | ||
|
|
48d68f7d90 | ||
|
|
eab8dfa4c4 | ||
|
|
bad93150ff | ||
|
|
4acb9be7c0 | ||
|
|
23a865db77 | ||
|
|
a92ab368f2 | ||
|
|
03c2f6277d | ||
|
|
2cb6fd0890 | ||
|
|
2d6aef5183 | ||
|
|
c78b8dda56 | ||
|
|
95a8767383 | ||
|
|
4c698bce2b | ||
|
|
6fce492177 | ||
|
|
869b78efe2 | ||
|
|
d581c671e9 | ||
|
|
0ed8fb7205 | ||
|
|
2e0186f884 | ||
|
|
032d4fc9ff | ||
|
|
ad5eb8cd14 | ||
|
|
9eeaee450b | ||
|
|
f0f0cf8048 | ||
|
|
4a1c505782 | ||
|
|
fae529b384 | ||
|
|
409fa5d0af | ||
|
|
490620a0d8 | ||
|
|
76aaf60dd1 | ||
|
|
2cb95d5505 | ||
|
|
3926e140e8 | ||
|
|
101f178c3e | ||
|
|
561119a2d6 | ||
|
|
a382a08bd3 | ||
|
|
383eb9f5a1 | ||
|
|
84568102de | ||
|
|
95fe106a40 | ||
|
|
b76eb19471 | ||
|
|
8ac2c87494 | ||
|
|
140ac7d4cd | ||
|
|
c4570bc829 | ||
|
|
cd052951d5 | ||
|
|
3a014e199f | ||
|
|
fe7be3f130 | ||
|
|
44410df598 | ||
|
|
a6fb797477 | ||
|
|
b331ad21f4 | ||
|
|
f7665357fc | ||
|
|
9a0408a5c7 | ||
|
|
4baac21ec6 | ||
|
|
bf2baf2ffe | ||
|
|
ae4cbcfb0c | ||
|
|
c9a40c464e | ||
|
|
b790150e54 | ||
|
|
a6ce2896f7 | ||
|
|
9aeacd3455 | ||
|
|
f28f9e52ac | ||
|
|
6bc486f504 | ||
|
|
3dd0d45907 | ||
|
|
93280a3e75 | ||
|
|
b2a46e3b76 | ||
|
|
19033ca822 | ||
|
|
ead066d630 | ||
|
|
2ff1253321 | ||
|
|
dc91550e2c | ||
|
|
1f7ec847bc | ||
|
|
612bbaeca6 | ||
|
|
2bee8edcab | ||
|
|
2fa80efb52 | ||
|
|
7ccc768805 | ||
|
|
32c238925e | ||
|
|
b12d3a4fc8 | ||
|
|
e77912a5b9 | ||
|
|
0a997ee08e | ||
|
|
ef1c85e099 | ||
|
|
3d2bf72efa | ||
|
|
09675f6544 | ||
|
|
05aa348f80 | ||
|
|
3a18c17d5a | ||
|
|
6b62c4378b | ||
|
|
c1668cd7c0 | ||
|
|
4cb0bd3712 | ||
|
|
98ebd0d71e | ||
|
|
5bde26246f | ||
|
|
cbf8489707 | ||
|
|
e6719d7718 | ||
|
|
e8a083767a | ||
|
|
4cd82e7c47 | ||
|
|
1a2ae185c5 | ||
|
|
38284919b3 | ||
|
|
62cb46fe24 | ||
|
|
9beb1323e4 | ||
|
|
fe866405e7 | ||
|
|
5524b2c706 | ||
|
|
e9b5d84eb4 | ||
|
|
29542595eb | ||
|
|
ccddddc64e | ||
|
|
394431a594 | ||
|
|
f58765d023 | ||
|
|
ec5fdfca5f | ||
|
|
2d163fc747 | ||
|
|
23ed53da41 | ||
|
|
ae2a79e566 | ||
|
|
9dabdde3e8 | ||
|
|
0753615c85 | ||
|
|
9c0614d72e | ||
|
|
580b1a84f1 | ||
|
|
22ba6b751d | ||
|
|
be9b976023 | ||
|
|
04e6828c62 | ||
|
|
373b7d9e37 | ||
|
|
04c8f73616 | ||
|
|
cd8f076979 | ||
|
|
359880fa73 | ||
|
|
9dc0dc5ffe | ||
|
|
4ddb2d3bac | ||
|
|
1e47311259 | ||
|
|
75efcf49b9 | ||
|
|
e1885f65d8 | ||
|
|
83c59b05e9 | ||
|
|
676ba4355c | ||
|
|
021f97cf10 | ||
|
|
910d37dd7a | ||
|
|
26175c5413 | ||
|
|
6475c79453 | ||
|
|
fefdac733d | ||
|
|
fb1e6ee740 | ||
|
|
b14a783e86 | ||
|
|
9a320a16a5 | ||
|
|
4fb936d767 | ||
|
|
73e3178b88 | ||
|
|
78b48a1e59 | ||
|
|
89757758f4 | ||
|
|
148db50990 | ||
|
|
4fc164953b | ||
|
|
fc8ed209a2 | ||
|
|
9f86e33ec2 | ||
|
|
9c72b29f3b | ||
|
|
fcc5be01c3 | ||
|
|
f226879d3c | ||
|
|
d795c72990 | ||
|
|
94581840a0 | ||
|
|
df9e5ccdd2 | ||
|
|
343673b0ea | ||
|
|
680c1a6b20 | ||
|
|
ff0007cd94 | ||
|
|
bfb6e407f2 | ||
|
|
e6b7195122 | ||
|
|
cf497215cd | ||
|
|
8b9891f28e | ||
|
|
5f754729cf | ||
|
|
6ce94be807 | ||
|
|
b8012a9855 | ||
|
|
2e3ee6f57d | ||
|
|
1b9bc4f6d6 | ||
|
|
0480b69c75 | ||
|
|
5467351935 | ||
|
|
2db259984f | ||
|
|
93f595828d | ||
|
|
7f63a7024d | ||
|
|
4fb3cfaf6a | ||
|
|
11855a0bc1 | ||
|
|
e5900e0757 | ||
|
|
141577c88b | ||
|
|
279bd1794a | ||
|
|
f325d02d33 | ||
|
|
514537e63e | ||
|
|
7026763286 | ||
|
|
27ac298515 | ||
|
|
52fcd348a0 | ||
|
|
9a45ecf1f9 | ||
|
|
e72d50bfd6 | ||
|
|
3c5ddf9469 | ||
|
|
bcfe3a6733 | ||
|
|
d5a4272177 | ||
|
|
83f66f2ade | ||
|
|
2c1f32b6e6 | ||
|
|
0a603a1000 | ||
|
|
2dcfabb6de | ||
|
|
b8a86fecfd | ||
|
|
bf69e25676 | ||
|
|
fb0d2714c6 | ||
|
|
f5c7fc3b11 | ||
|
|
21744d883a | ||
|
|
f30b42d877 | ||
|
|
15191452f3 | ||
|
|
541ef60c89 | ||
|
|
073812ca0c | ||
|
|
7264f9e052 | ||
|
|
2ae138d7c0 | ||
|
|
7a86e36ca3 | ||
|
|
0e6b0f3e7a | ||
|
|
9724ff0329 | ||
|
|
432fee1a6e | ||
|
|
fe0d70e8f3 | ||
|
|
6bec8779c6 | ||
|
|
0f76ac5868 | ||
|
|
caa45af197 | ||
|
|
273018ea48 | ||
|
|
5af81bbc9d | ||
|
|
d1e6b9507c | ||
|
|
ca8babd7b6 | ||
|
|
aa47716a27 | ||
|
|
8035cad75a | ||
|
|
3b69bc278a | ||
|
|
6c3675905e | ||
|
|
b1f7cc9025 | ||
|
|
deacf439a4 | ||
|
|
d6f425adc6 | ||
|
|
28489a29ba | ||
|
|
8ea2e77ab2 | ||
|
|
760aee6d29 | ||
|
|
ca54d75f3e | ||
|
|
9e694c228e | ||
|
|
6ba76d6ac1 | ||
|
|
d41a6e0524 | ||
|
|
d8572d5569 | ||
|
|
ee57ae6598 | ||
|
|
199f8c21cb | ||
|
|
70719c3b8f | ||
|
|
94497435e7 | ||
|
|
b6f156cf4a | ||
|
|
0abe8b6493 | ||
|
|
8ddc49e5e8 | ||
|
|
4ac6e1c83d | ||
|
|
53ff69ed04 | ||
|
|
473e7207db | ||
|
|
3b0f4479c4 | ||
|
|
8159abdcd3 | ||
|
|
4033606fff | ||
|
|
6fc8eb0fee | ||
|
|
d35dbe6377 | ||
|
|
df1cb77000 | ||
|
|
32bbd64a97 | ||
|
|
c95c12e874 | ||
|
|
1d6dc56797 | ||
|
|
97afd62522 | ||
|
|
9623f49a2e | ||
|
|
c7d2a108be | ||
|
|
7307bd4ead | ||
|
|
2bdc9de0af | ||
|
|
2c676865dc | ||
|
|
442097e69a | ||
|
|
7e440ae3a9 | ||
|
|
52aff43e2d | ||
|
|
23a2f63830 | ||
|
|
4602feea3b | ||
|
|
79bde47b57 | ||
|
|
34ea6c7a90 | ||
|
|
61a3125d24 | ||
|
|
88bbb5f520 | ||
|
|
2a482e7f49 | ||
|
|
e19b71409f | ||
|
|
5ef1217acc | ||
|
|
da9fe96efc | ||
|
|
707aab3af1 | ||
|
|
327b9a8b70 | ||
|
|
a476e18120 | ||
|
|
edcd0019d2 | ||
|
|
88ca38287f | ||
|
|
1b989c4d15 | ||
|
|
350746f4f6 | ||
|
|
23d792a0bd | ||
|
|
489300f82d | ||
|
|
40783ea351 | ||
|
|
e8bb01579d | ||
|
|
4384ea2b59 | ||
|
|
612e6bbc3d | ||
|
|
e61b977878 | ||
|
|
2908cd51ea | ||
|
|
4d4eb6c8cf | ||
|
|
798ceeeef2 | ||
|
|
d2f8276d14 | ||
|
|
a7273f0da0 | ||
|
|
2de46b9e79 | ||
|
|
4639458f22 | ||
|
|
100d3b3acd | ||
|
|
69962ef9ab | ||
|
|
bbc82731f7 | ||
|
|
9aaa7f100a | ||
|
|
4c658cdd50 | ||
|
|
dbc84d91fc | ||
|
|
b09d241151 | ||
|
|
2b28b735c2 | ||
|
|
5b52752a30 | ||
|
|
4aa9ffc9e6 | ||
|
|
ad3427107a | ||
|
|
dd4eb9f8bc | ||
|
|
5b64f685e4 | ||
|
|
64f55693e3 | ||
|
|
4d51b344a1 | ||
|
|
b20561c451 | ||
|
|
fadd3d0083 | ||
|
|
44dc8f8daa | ||
|
|
4a36f7dd7b | ||
|
|
9c913fa040 | ||
|
|
6312587621 | ||
|
|
4980be04f3 | ||
|
|
b17354b74f | ||
|
|
516b91fc90 | ||
|
|
54cc2e0bb5 | ||
|
|
9fab212441 | ||
|
|
297ef9d139 | ||
|
|
6cfb5b7ace | ||
|
|
37e6e7e944 | ||
|
|
45d4cec2a6 | ||
|
|
ce0f48d2b2 | ||
|
|
a5bf6c7812 | ||
|
|
3405bcf926 | ||
|
|
99643acf2e | ||
|
|
9055fabe9b | ||
|
|
e120f54f30 | ||
|
|
e60f82ccc2 | ||
|
|
3c5edab8f5 | ||
|
|
f4659b2b0c | ||
|
|
0199d861b7 | ||
|
|
321c475176 | ||
|
|
a9718835d4 | ||
|
|
00b62ab6c0 | ||
|
|
517effa586 | ||
|
|
18125459dc | ||
|
|
86bd6de7dd | ||
|
|
4e4a59b5bc | ||
|
|
d58bedaed1 | ||
|
|
9a4e9a2adc | ||
|
|
582e8302c6 | ||
|
|
f94941b5e6 | ||
|
|
165afbd5b5 | ||
|
|
f5f9983173 | ||
|
|
12e1045d2a | ||
|
|
c985a794c7 | ||
|
|
33b19935ff | ||
|
|
830b8a208a | ||
|
|
489824fdcf | ||
|
|
98e9129d69 | ||
|
|
f7917abb28 | ||
|
|
cd5822e927 | ||
|
|
39518b19d5 | ||
|
|
ae60dede8e | ||
|
|
1dfb30b857 | ||
|
|
a29d1eed7f | ||
|
|
6d5a0ab454 | ||
|
|
7aec889cf6 | ||
|
|
f23c91cc5a | ||
|
|
760e0aaae4 | ||
|
|
a1902a03f8 | ||
|
|
6d09f0542b | ||
|
|
8abf975faf | ||
|
|
7db4732ce1 | ||
|
|
c51b2a64fb | ||
|
|
cec6b8925a | ||
|
|
e5afdcdd43 | ||
|
|
9465ae778b | ||
|
|
092047984a | ||
|
|
5b53f4ee0f | ||
|
|
0077d219fb | ||
|
|
a87df90504 | ||
|
|
971ab65fe5 | ||
|
|
13517cd6bc | ||
|
|
0cc278f19b | ||
|
|
b4750d8d81 | ||
|
|
9dd52c9d44 | ||
|
|
ffa5ba400a | ||
|
|
9f8fad86ee | ||
|
|
9b3ab10c20 | ||
|
|
8dc29be02f | ||
|
|
973d13937d | ||
|
|
811721bb72 | ||
|
|
5ae7d6685a | ||
|
|
37f3f0b6a4 | ||
|
|
66bf27bce9 | ||
|
|
6a12784872 | ||
|
|
105368a437 | ||
|
|
6b37d183ce | ||
|
|
a25b209e7f | ||
|
|
7a8b2fe4a9 | ||
|
|
b9fd5a6f75 | ||
|
|
006b68fa3f | ||
|
|
55728a98c1 | ||
|
|
bfd519953b | ||
|
|
37421c3f92 | ||
|
|
f7c2732899 | ||
|
|
75f5215b22 | ||
|
|
f1938acbab | ||
|
|
90fa3d5534 | ||
|
|
4cdf4d61f3 | ||
|
|
be41a4ea60 | ||
|
|
0ce0282238 | ||
|
|
6b01cfb8e2 | ||
|
|
8e4526e221 | ||
|
|
ccba7c875d | ||
|
|
7fc8fe2513 | ||
|
|
a4bb7da1ce | ||
|
|
76f06a9386 | ||
|
|
dac55975b5 | ||
|
|
155d24f9e4 | ||
|
|
7c146154f5 | ||
|
|
ca93e68410 | ||
|
|
26aa7c2e33 | ||
|
|
043da0c440 | ||
|
|
e5fc1ebde6 | ||
|
|
bedcd5a1be | ||
|
|
30e403f4a2 | ||
|
|
ba9d4afbe3 | ||
|
|
02ee2a9726 | ||
|
|
bbe8e16ca5 | ||
|
|
c7f1dcfb51 | ||
|
|
7fe29041c2 | ||
|
|
7bfa8e78fd | ||
|
|
0ccd4ad000 | ||
|
|
9cf0640432 | ||
|
|
e6f0f80c9f | ||
|
|
95442d6075 | ||
|
|
8cf8a44e8e | ||
|
|
a1d660d6df | ||
|
|
15488a18e3 | ||
|
|
333946ed27 | ||
|
|
4622d33e3b | ||
|
|
fc42a2a5f1 | ||
|
|
a1c4c356bd | ||
|
|
4c248a433e | ||
|
|
0147bb2e08 | ||
|
|
04027b9265 | ||
|
|
a100929067 | ||
|
|
56abe6c118 | ||
|
|
245f430ad9 | ||
|
|
075f8330f6 | ||
|
|
4cc1bb5433 | ||
|
|
6c42ea6293 | ||
|
|
ce771a17dc | ||
|
|
41037d57b5 | ||
|
|
b615162630 | ||
|
|
2e7b926827 | ||
|
|
168b172f9a | ||
|
|
60c052a95a | ||
|
|
1b9ba55843 | ||
|
|
1f6d4a6cfe | ||
|
|
c202e9173f | ||
|
|
c0b7ac9a7e | ||
|
|
7ffc403098 | ||
|
|
f261ce9124 | ||
|
|
31274f6c64 | ||
|
|
4a5d924375 | ||
|
|
3fd119ff29 | ||
|
|
92b8453960 | ||
|
|
bfc41d1038 | ||
|
|
1127a9850b | ||
|
|
dd93181951 | ||
|
|
d27d193339 | ||
|
|
e30552c23a | ||
|
|
5686b2a26d | ||
|
|
f6a039f38b | ||
|
|
48ed7fba0d | ||
|
|
a516a632d4 | ||
|
|
8a8b38ae70 | ||
|
|
b215a60a3b | ||
|
|
8d16ff8459 | ||
|
|
2bb632a7fe | ||
|
|
f969eddbe2 | ||
|
|
8820a57547 | ||
|
|
c76a9d43f2 | ||
|
|
d268378f2b | ||
|
|
1465fed81c | ||
|
|
12a1c8a820 | ||
|
|
87a1ff5b37 | ||
|
|
98df398dc3 | ||
|
|
d7ba96f4ee | ||
|
|
6c71775ea1 | ||
|
|
ee9570993d | ||
|
|
7accbd9778 | ||
|
|
850f26fc5c | ||
|
|
9e5c5497ab | ||
|
|
6dfd7cdc71 | ||
|
|
7cfd5a1f21 | ||
|
|
ec326e856e | ||
|
|
e69e787ab0 | ||
|
|
70444f133a | ||
|
|
e3aff6c37b | ||
|
|
e8ae696c8f | ||
|
|
b461fe5e6b | ||
|
|
00e883c563 | ||
|
|
2f05261f6b | ||
|
|
4bca825053 | ||
|
|
819427a6a0 | ||
|
|
e4a704ed61 | ||
|
|
787f4431c3 | ||
|
|
9ce9d79b33 | ||
|
|
f251a41410 | ||
|
|
e7596f9bd5 | ||
|
|
db6710f853 | ||
|
|
c626e55f67 | ||
|
|
b51a144d7d | ||
|
|
8b889d908c | ||
|
|
08dbc5bf08 | ||
|
|
4e8f58b498 | ||
|
|
4455b37548 | ||
|
|
d5a0455560 | ||
|
|
5ac881b7c1 | ||
|
|
ab2b868b75 |
312
CMakeLists.txt
312
CMakeLists.txt
@@ -21,8 +21,9 @@
|
||||
|
||||
# Author: laurent THOMAS, Lionel GAUTHIER
|
||||
|
||||
cmake_minimum_required (VERSION 3.12)
|
||||
cmake_minimum_required (VERSION 3.16)
|
||||
project (OpenAirInterface LANGUAGES C CXX)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
|
||||
#########################################################
|
||||
# Base directories, compatible with legacy OAI building #
|
||||
@@ -30,6 +31,10 @@ project (OpenAirInterface LANGUAGES C CXX)
|
||||
set (OPENAIR_DIR ${CMAKE_SOURCE_DIR})
|
||||
|
||||
include("cmake_targets/macros.cmake")
|
||||
if(NOT DEFINED ENV{CPM_SOURCE_CACHE})
|
||||
set(CPM_SOURCE_CACHE ~/.cache/cpm/)
|
||||
endif()
|
||||
include("cmake_targets/CPM.cmake")
|
||||
|
||||
##############################
|
||||
### CCache: reduce compilation time
|
||||
@@ -84,7 +89,6 @@ set (OPENAIR2_DIR ${OPENAIR_DIR}/openair2)
|
||||
set (OPENAIR3_DIR ${OPENAIR_DIR}/openair3)
|
||||
set (OPENAIR3_DIR ${OPENAIR_DIR}/openair3)
|
||||
set (OPENAIR_CMAKE ${OPENAIR_DIR}/cmake_targets)
|
||||
set (OPENAIR_BIN_DIR ${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY})
|
||||
|
||||
project (OpenAirInterface)
|
||||
|
||||
@@ -180,22 +184,6 @@ add_boolean_option(SANITIZE_ADDRESS False "enable the address sanitizer (ASan)"
|
||||
if (SANITIZE_ADDRESS)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fno-common")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fno-common")
|
||||
# There seems to be some incompatibility with pthread_create and the RT scheduler, which
|
||||
# results in pthread_create hanging.
|
||||
#
|
||||
# When we switch from Ubuntu 16.04 to 18.04, we found that running with the address sanitizer,
|
||||
# the pthread_create function calls were not working. The inital thought was that we were
|
||||
# trying to create a thread that was not-blocking and would eventually crash the machine during
|
||||
# the run. After more debugging, we found that we would never even start the thread. We narrowed
|
||||
# down the first two instances of pthread_create in the gNB and NR UE to be sctp_eNB_task and
|
||||
# one_thread, respectively. We found that adding sleeps, and various other pauses to the threads
|
||||
# had not effect. From there, we found that if we add an abort(); prior to the thread loop, we
|
||||
# do not execute that. This indicated to us that the problem is not likely to be a non-blocking
|
||||
# thread, but perhaps and issue with pthread_create itself. From there we begain to research the
|
||||
# issue on the web. See: https://github.com/google/sanitizers/issues/1125
|
||||
#
|
||||
# Google searching indicates this appears to be a problem since at least 2018. This could be something
|
||||
# wrong in the pthread library, or something subtly wrong in this CMakeLists.txt. Use Ubuntu 20.04 instead.
|
||||
endif ()
|
||||
|
||||
add_boolean_option(SANITIZE_THREAD False "enable the address sanitizer (TSan)" ON)
|
||||
@@ -270,12 +258,6 @@ if(GIT_FOUND)
|
||||
)
|
||||
endif()
|
||||
|
||||
# Below is a hard-coded info
|
||||
set (FIRMWARE_VERSION "No svn information")
|
||||
add_definitions("-DFIRMWARE_VERSION=\"${FIRMWARE_VERSION}\"")
|
||||
add_definitions("-DPACKAGE_VERSION=\"Branch: ${GIT_BRANCH} Abrev. Hash: ${GIT_COMMIT_HASH} Date: ${GIT_COMMIT_DATE}\"")
|
||||
add_definitions("-DPACKAGE_BUGREPORT=\"openair4g-devel@lists.eurecom.fr\"")
|
||||
|
||||
# Debug related options
|
||||
#########################################
|
||||
add_boolean_option(DEBUG_ASN1 False "Enable ASN1 debug logs" OFF)
|
||||
@@ -284,6 +266,7 @@ add_boolean_option(DEBUG_ASN1 False "Enable ASN1 debug logs" OFF)
|
||||
# see common/utils/config.h
|
||||
add_boolean_option(TRACE_ASN1C_ENC_DEC OFF "Enable ASN1 encoder/decoder debug traces via OAI logging system" ON)
|
||||
add_boolean_option(T_TRACER True "Activate the T tracer, a debugging/monitoring framework" ON)
|
||||
add_boolean_option(ENABLE_LTTNG False "Activate the LTTNG tracer, a debugging/monitoring framework" ON)
|
||||
add_boolean_option(UE_AUTOTEST_TRACE False "Activate UE autotest specific logs" ON)
|
||||
add_boolean_option(UE_DEBUG_TRACE False "Activate UE debug trace" ON)
|
||||
add_boolean_option(UE_TIMING_TRACE False "Activate UE timing trace" ON)
|
||||
@@ -310,6 +293,8 @@ set_property(CACHE KPM_VERSION PROPERTY STRINGS "KPM_V2_03" "KPM_V3_00")
|
||||
message(STATUS "Selected KPM Version: ${KPM_VERSION}")
|
||||
|
||||
|
||||
add_boolean_option(ENABLE_IMSCOPE OFF "Enable phy scope based on imgui" ON)
|
||||
|
||||
##################################################
|
||||
# ASN.1 grammar C code generation & dependencies #
|
||||
##################################################
|
||||
@@ -462,7 +447,7 @@ add_library(f1ap
|
||||
${F1AP_DIR}/f1ap_handlers.c
|
||||
${F1AP_DIR}/f1ap_itti_messaging.c)
|
||||
target_include_directories(f1ap PUBLIC F1AP_DIR)
|
||||
target_link_libraries(f1ap PUBLIC asn1_f1ap)
|
||||
target_link_libraries(f1ap PUBLIC asn1_f1ap L2_NR)
|
||||
target_link_libraries(f1ap PRIVATE ngap nr_rrc HASHTABLE)
|
||||
|
||||
# LPP
|
||||
@@ -523,9 +508,6 @@ include_directories ("${OPENAIR_DIR}/radio/COMMON")
|
||||
# ???!!! TO BE DOCUMENTED OPTIONS !!!???
|
||||
##############################################################
|
||||
|
||||
add_boolean_option(OAI_NW_DRIVER_TYPE_ETHERNET False "????" ON)
|
||||
add_boolean_option(OAI_NW_DRIVER_USE_NETLINK True "????" ON)
|
||||
|
||||
add_boolean_option(UE_EXPANSION False "enable UE_EXPANSION with max 256 UE" ON)
|
||||
add_boolean_option(PHY_TX_THREAD False "enable UE_EXPANSION with max 256 UE" ON)
|
||||
add_boolean_option(PRE_SCD_THREAD False "enable UE_EXPANSION with max 256 UE" ON)
|
||||
@@ -562,16 +544,8 @@ add_boolean_option(NAS_UE True "NAS UE INSTANCE (<> NAS_MME)"
|
||||
add_boolean_option(RRC_DEFAULT_RAB_IS_AM True "set the LTE RLC mode to AM for the default bearer, otherwise it is UM." ON)
|
||||
|
||||
# add the binary tree to the search path for include files
|
||||
#######################################################
|
||||
# We will find ConfigOAI.h after generation in target directory
|
||||
include_directories("${OPENAIR_BIN_DIR}")
|
||||
# add directories to find all include files
|
||||
# the internal rule is to use generic names such as defs.h
|
||||
# but to make it uniq name as adding the relative path in the include directtive
|
||||
# example: #include "RRC/LTE/rrc_defs.h"
|
||||
#find_path (include_dirs_all *.h ${OPENAIR_DIR})
|
||||
#find_path (include_dirs_all *.h PATHS /usr/include NO_CMAKE_PATH)
|
||||
#include_directories("${include_dirs_all}")
|
||||
# We will find common/oai_version.h after generation in target directory
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
||||
|
||||
# Legacy exact order
|
||||
|
||||
@@ -649,17 +623,22 @@ add_library(HASHTABLE
|
||||
include_directories(${OPENAIR_DIR}/common/utils/hashtable)
|
||||
|
||||
add_library(UTIL
|
||||
${OPENAIR_DIR}/common/utils/LOG/log.c
|
||||
${OPENAIR_DIR}/common/utils/LOG/vcd_signal_dumper.c
|
||||
${OPENAIR2_DIR}/UTIL/MATH/oml.c
|
||||
${OPENAIR2_DIR}/UTIL/OPT/probe.c
|
||||
${OPENAIR_DIR}/common/utils/threadPool/thread-pool.c
|
||||
${OPENAIR_DIR}/common/utils/utils.c
|
||||
${OPENAIR_DIR}/common/utils/system.c
|
||||
${OPENAIR_DIR}/common/utils/time_meas.c
|
||||
${OPENAIR_DIR}/common/utils/time_stat.c
|
||||
)
|
||||
target_link_libraries(UTIL PUBLIC ${T_LIB} pthread)
|
||||
if (ENABLE_LTTNG)
|
||||
find_package(LTTngUST 2.3.8 EXACT REQUIRED)
|
||||
else()
|
||||
message(STATUS "LTTNG support disabled")
|
||||
endif()
|
||||
|
||||
pkg_check_modules(cap libcap)
|
||||
if (cap_FOUND)
|
||||
# see system.c for more info
|
||||
target_link_libraries(UTIL PRIVATE cap)
|
||||
target_compile_definitions(UTIL PRIVATE HAVE_LIB_CAP)
|
||||
endif()
|
||||
target_link_libraries(UTIL PUBLIC ${T_LIB} pthread LOG thread-pool utils)
|
||||
|
||||
set(SECURITY_SRC
|
||||
${OPENAIR3_DIR}/SECU/secu_defs.c
|
||||
@@ -733,20 +712,14 @@ target_link_libraries(SCHED_NR_UE_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs
|
||||
|
||||
# nFAPI
|
||||
#################################
|
||||
set(NFAPI_COMMON_SRC
|
||||
${NFAPI_DIR}/common/src/debug.c
|
||||
)
|
||||
add_library(NFAPI_COMMON_LIB ${NFAPI_COMMON_SRC})
|
||||
|
||||
include_directories(${NFAPI_DIR}/common/public_inc)
|
||||
|
||||
set(NFAPI_SRC
|
||||
${NFAPI_DIR}/nfapi/src/nfapi.c
|
||||
${NFAPI_DIR}/nfapi/src/nfapi_p4.c
|
||||
${NFAPI_DIR}/nfapi/src/nfapi_p5.c
|
||||
${NFAPI_DIR}/nfapi/src/nfapi_p7.c
|
||||
)
|
||||
add_library(NFAPI_LIB ${NFAPI_SRC})
|
||||
target_link_libraries(NFAPI_LIB PUBLIC nfapi_common)
|
||||
target_link_libraries(NFAPI_LIB PUBLIC nr_fapi_p5)
|
||||
|
||||
include_directories(${NFAPI_DIR}/nfapi/public_inc)
|
||||
include_directories(${NFAPI_DIR}/nfapi/inc)
|
||||
@@ -771,7 +744,10 @@ set(NFAPI_VNF_SRC
|
||||
)
|
||||
add_library(NFAPI_VNF_LIB ${NFAPI_VNF_SRC})
|
||||
target_link_libraries(NFAPI_VNF_LIB PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
||||
|
||||
target_link_libraries(NFAPI_VNF_LIB PRIVATE nr_fapi_p5)
|
||||
if(OAI_AERIAL)
|
||||
target_compile_definitions(NFAPI_VNF_LIB PRIVATE ENABLE_AERIAL)
|
||||
endif()
|
||||
include_directories(${NFAPI_DIR}/vnf/public_inc)
|
||||
include_directories(${NFAPI_DIR}/vnf/inc)
|
||||
|
||||
@@ -801,7 +777,6 @@ set(PHY_POLARSRC
|
||||
${OPENAIR1_DIR}/PHY/CODING/nr_polar_init.c
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_bitwise_operations.c
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_crc_byte.c
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_crc.c
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_decoder.c
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_decoding_tools.c
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrPolar_tools/nr_polar_encoder.c
|
||||
@@ -1031,6 +1006,7 @@ set(PHY_SRC_UE
|
||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_csi_rs.c
|
||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_scrambling.c
|
||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/scrambling_luts.c
|
||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/refsig.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/srs_modulation_nr.c
|
||||
)
|
||||
|
||||
@@ -1056,7 +1032,6 @@ set(PHY_SRC_UE
|
||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_ulsch_demodulation.c
|
||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/ul_ref_seq_nr.c
|
||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_dmrs_rx.c
|
||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold.c
|
||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gen_mod_table.c
|
||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/dmrs_nr.c
|
||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/ptrs_nr.c
|
||||
@@ -1098,7 +1073,6 @@ set(PHY_SRC_UE
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_demodulation.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_ulsch_coding.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_decoding.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_dlsch_llr_computation.c
|
||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_tbs_tools.c
|
||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_prach_common.c
|
||||
${OPENAIR1_DIR}/PHY/NR_TRANSPORT/nr_sch_dmrs.c
|
||||
@@ -1167,9 +1141,14 @@ target_include_directories(PHY_UE PRIVATE ${blas_INCLUDE_DIRS} ${lapacke_INCLUDE
|
||||
add_library(PHY_NR_COMMON ${PHY_NR_SRC_COMMON})
|
||||
|
||||
add_library(PHY_NR ${PHY_NR_SRC})
|
||||
target_link_libraries(PHY_NR nr_phy_common nr_common)
|
||||
|
||||
add_library(PHY_NR_NO_AVX_256 ${PHY_NR_SRC})
|
||||
target_link_libraries(PHY_NR_NO_AVX_256 nr_phy_common nr_common)
|
||||
target_compile_definitions(PHY_NR_NO_AVX_256 PUBLIC USE_128BIT)
|
||||
|
||||
add_library(PHY_NR_UE ${PHY_NR_UE_SRC})
|
||||
target_link_libraries(PHY_NR_UE PRIVATE asn1_nr_rrc_hdrs)
|
||||
target_link_libraries(PHY_NR_UE PRIVATE asn1_nr_rrc_hdrs nr_phy_common nr_common)
|
||||
|
||||
add_library(PHY_RU ${PHY_SRC_RU})
|
||||
target_link_libraries(PHY_RU PRIVATE asn1_lte_rrc_hdrs)
|
||||
@@ -1192,10 +1171,9 @@ set(PHY_MEX_UE
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/simde_operations.c
|
||||
${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c
|
||||
${OPENAIR1_DIR}/PHY/LTE_ESTIMATION/lte_ue_measurements.c
|
||||
${OPENAIR_DIR}/common/utils/LOG/log.c
|
||||
)
|
||||
add_library(PHY_MEX ${PHY_MEX_UE})
|
||||
target_link_libraries(PHY_MEX PRIVATE asn1_lte_rrc_hdrs)
|
||||
target_link_libraries(PHY_MEX PRIVATE asn1_lte_rrc_hdrs UTIL)
|
||||
|
||||
#Layer 2 library
|
||||
#####################
|
||||
@@ -1397,9 +1375,9 @@ set (MAC_NR_SRC_UE
|
||||
${NR_UE_MAC_DIR}/nr_ue_procedures.c
|
||||
${NR_UE_MAC_DIR}/nr_ue_procedures_sl.c
|
||||
${NR_UE_MAC_DIR}/nr_ue_scheduler.c
|
||||
${NR_UE_MAC_DIR}/nr_ue_scheduler_sl.c
|
||||
${NR_UE_MAC_DIR}/nr_ue_dci_configuration.c
|
||||
${NR_UE_MAC_DIR}/nr_ra_procedures.c
|
||||
${NR_UE_MAC_DIR}/nr_ue_power_procedures.c
|
||||
)
|
||||
|
||||
set (ENB_APP_SRC
|
||||
@@ -1448,7 +1426,7 @@ endif()
|
||||
|
||||
|
||||
add_library(MAC_UE_NR ${MAC_NR_SRC_UE})
|
||||
target_link_libraries(MAC_UE_NR PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
||||
target_link_libraries(MAC_UE_NR PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs PUBLIC nr_ue_power_procedures)
|
||||
|
||||
add_library(L2_LTE ${L2_LTE_SRC})
|
||||
target_link_libraries(L2_LTE PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
||||
@@ -1458,6 +1436,7 @@ add_library(L2_NR
|
||||
${MAC_NR_SRC}
|
||||
${GNB_APP_SRC}
|
||||
)
|
||||
target_link_libraries(L2_NR PRIVATE ds alg)
|
||||
|
||||
add_library(e1_if
|
||||
${NR_RRC_DIR}/cucp_cuup_direct.c
|
||||
@@ -1466,7 +1445,10 @@ add_library(e1_if
|
||||
|
||||
target_link_libraries(e1_if PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs asn1_f1ap SECURITY ${OPENSSL_LIBRARIES} e1ap GTPV1U)
|
||||
|
||||
target_link_libraries(L2_NR PRIVATE f1ap x2ap s1ap ngap nr_rrc e1ap nr_rlc)
|
||||
target_link_libraries(L2_NR PRIVATE f1ap x2ap s1ap ngap nr_rrc e1ap nr_rlc nr_common)
|
||||
if(OAI_AERIAL)
|
||||
target_compile_definitions(L2_NR PRIVATE ENABLE_AERIAL)
|
||||
endif()
|
||||
if(E2_AGENT)
|
||||
target_link_libraries(L2_NR PUBLIC e2_agent e2_agent_arg e2_ran_func_du_cucp_cuup)
|
||||
target_compile_definitions(L2_NR PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
|
||||
@@ -1493,15 +1475,11 @@ add_library(L2_UE_LTE_NR
|
||||
)
|
||||
target_link_libraries(L2_UE_LTE_NR PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
|
||||
if (NOT ${NOS1})
|
||||
target_compile_definitions(L2_UE PUBLIC -DPDCP_USE_NETLINK)
|
||||
endif()
|
||||
|
||||
target_link_libraries(L2_UE PRIVATE asn1_lte_rrc_hdrs)
|
||||
|
||||
add_library( NR_L2_UE ${NR_L2_SRC_UE} ${MAC_NR_SRC_UE} )
|
||||
target_link_libraries(NR_L2_UE PRIVATE f1ap nr_rlc)
|
||||
target_link_libraries(NR_L2_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
target_link_libraries(NR_L2_UE PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs nr_common nr_ue_power_procedures)
|
||||
|
||||
add_library(MAC_NR_COMMON
|
||||
${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_mac_common.c
|
||||
@@ -1895,28 +1873,6 @@ set (SIMUSRC
|
||||
add_library(SIMU STATIC ${SIMUSRC} )
|
||||
target_include_directories(SIMU PUBLIC ${OPENAIR1_DIR}/SIMULATION/TOOLS ${OPENAIR1_DIR}/SIMULATION/RF)
|
||||
|
||||
# Qt-based scope
|
||||
add_boolean_option(ENABLE_NRQTSCOPE OFF "Build the Qt-Scope" OFF)
|
||||
if (ENABLE_NRQTSCOPE)
|
||||
find_package(Qt5 REQUIRED COMPONENTS Widgets Charts)
|
||||
message ("Qt5 Widgets and Charts found for nrqtscope")
|
||||
set(QTSCOPE_SOURCE_NR
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/nr_phy_qt_scope.cpp
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c)
|
||||
# Creates rules for calling the Meta-Object Compiler (moc) on the given source files
|
||||
qt5_wrap_cpp(QTSCOPE_SOURCE_NR ${OPENAIR1_DIR}/PHY/TOOLS/nr_phy_qt_scope.h)
|
||||
add_library(nrqtscope MODULE ${QTSCOPE_SOURCE_NR})
|
||||
target_link_libraries(nrqtscope PRIVATE Qt5::Widgets Qt5::Charts)
|
||||
target_link_libraries(nrqtscope PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
endif()
|
||||
|
||||
add_library(SIMU_ETH STATIC
|
||||
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c
|
||||
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/multicast_link.c
|
||||
${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/socket.c
|
||||
)
|
||||
target_link_libraries(SIMU_ETH PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
|
||||
include_directories("${NFAPI_DIR}/nfapi/public_inc")
|
||||
include_directories("${NFAPI_DIR}/common/public_inc")
|
||||
include_directories("${NFAPI_DIR}/pnf/public_inc")
|
||||
@@ -1933,10 +1889,9 @@ set(CMAKE_MODULE_PATH "${OPENAIR_DIR}/cmake_targets/tools/MODULES" "${CMAKE_MODU
|
||||
# add executables for operation
|
||||
#################################
|
||||
add_library(minimal_lib
|
||||
${OPENAIR_DIR}/common/utils/LOG/log.c
|
||||
${OPENAIR_DIR}/common/utils/minimal_stub.c
|
||||
)
|
||||
target_link_libraries(minimal_lib pthread dl ${T_LIB})
|
||||
target_link_libraries(minimal_lib PUBLIC pthread dl ${T_LIB} LOG)
|
||||
|
||||
add_executable(nfapi_test
|
||||
${OPENAIR_DIR}/openair2/NR_PHY_INTERFACE/nfapi_5g_test.c
|
||||
@@ -1966,8 +1921,6 @@ add_executable(lte-softmodem
|
||||
${OPENAIR_DIR}/executables/create_tasks_mbms.c
|
||||
${OPENAIR_DIR}/radio/COMMON/common_lib.c
|
||||
${OPENAIR_DIR}/radio/COMMON/record_player.c
|
||||
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
|
||||
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
|
||||
${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
|
||||
${PHY_INTERFACE_DIR}/queue_t.c
|
||||
${OPENAIR_DIR}/common/utils/lte/ue_power.c
|
||||
@@ -1979,8 +1932,8 @@ add_dependencies(lte-softmodem oai_iqplayer)
|
||||
target_link_libraries(lte-softmodem PRIVATE
|
||||
-Wl,--start-group
|
||||
lte_rrc nr_rrc s1ap m2ap x2ap m3ap GTPV1U SECURITY UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_LIB SCHED_RU_LIB
|
||||
PHY_COMMON PHY PHY_RU L2 L2_LTE NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB MISC_NFAPI_LTE_LIB
|
||||
${NAS_UE_LIB} ITTI SIMU SIMU_ETH shlib_loader
|
||||
PHY_COMMON PHY PHY_RU L2 L2_LTE NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB MISC_NFAPI_LTE_LIB
|
||||
${NAS_UE_LIB} ITTI SIMU shlib_loader
|
||||
-Wl,--end-group z dl)
|
||||
|
||||
target_link_libraries(lte-softmodem PRIVATE pthread m CONFIG_LIB rt sctp)
|
||||
@@ -2024,22 +1977,17 @@ add_executable(lte-uesoftmodem
|
||||
${OPENAIR_DIR}/executables/create_tasks_ue.c
|
||||
${OPENAIR_DIR}/radio/COMMON/common_lib.c
|
||||
${OPENAIR_DIR}/radio/COMMON/record_player.c
|
||||
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
|
||||
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
|
||||
${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
|
||||
${OPENAIR_DIR}/common/utils/lte/ue_power.c
|
||||
${OPENAIR_DIR}/common/utils/lte/prach_utils.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
|
||||
)
|
||||
|
||||
if (NOT ${NOS1})
|
||||
target_compile_definitions(lte-uesoftmodem PRIVATE -DPDCP_USE_NETLINK)
|
||||
endif()
|
||||
target_link_libraries(lte-uesoftmodem PRIVATE
|
||||
-Wl,--start-group
|
||||
lte_rrc nr_rrc s1ap x2ap m2ap m3ap
|
||||
SECURITY UTIL HASHTABLE SCTP_CLIENT MME_APP SCHED_RU_LIB SCHED_UE_LIB PHY_COMMON
|
||||
PHY_UE PHY_RU L2_UE L2_LTE SIMU SIMU_ETH NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB MISC_NFAPI_LTE_LIB
|
||||
PHY_UE PHY_RU L2_UE L2_LTE SIMU NFAPI_LIB NFAPI_PNF_LIB NFAPI_USER_LIB MISC_NFAPI_LTE_LIB
|
||||
${NAS_UE_LIB} ITTI shlib_loader
|
||||
-Wl,--end-group z dl)
|
||||
|
||||
@@ -2064,22 +2012,17 @@ add_executable(nr-softmodem
|
||||
${OPENAIR_DIR}/executables/softmodem-common.c
|
||||
${OPENAIR_DIR}/radio/COMMON/common_lib.c
|
||||
${OPENAIR_DIR}/radio/COMMON/record_player.c
|
||||
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
|
||||
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
|
||||
${OPENAIR_DIR}/common/utils/lte/ue_power.c
|
||||
${OPENAIR_DIR}/common/utils/lte/prach_utils.c
|
||||
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
||||
${PHY_INTERFACE_DIR}/queue_t.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
|
||||
)
|
||||
|
||||
include(${OPENAIR_DIR}/nfapi/CMakeLists.txt)
|
||||
|
||||
target_link_libraries(nr-softmodem PRIVATE
|
||||
-Wl,--start-group
|
||||
UTIL HASHTABLE SCTP_CLIENT SCHED_LIB SCHED_RU_LIB SCHED_NR_LIB PHY_NR PHY PHY_COMMON PHY_NR_COMMON PHY_RU GTPV1U SECURITY
|
||||
ITTI ${NAS_UE_LIB} lte_rrc nr_rrc
|
||||
ngap s1ap L2_LTE_NR L2_NR MAC_NR_COMMON NFAPI_COMMON_LIB NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB SIMU SIMU_ETH
|
||||
ngap s1ap L2_LTE_NR L2_NR MAC_NR_COMMON NFAPI_LIB NFAPI_VNF_LIB NFAPI_PNF_LIB NFAPI_USER_LIB SIMU
|
||||
x2ap f1ap m2ap m3ap e1ap shlib_loader
|
||||
-Wl,--end-group z dl)
|
||||
|
||||
@@ -2087,6 +2030,11 @@ target_link_libraries(nr-softmodem PRIVATE pthread m CONFIG_LIB rt sctp)
|
||||
target_link_libraries(nr-softmodem PRIVATE ${T_LIB})
|
||||
target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
add_boolean_option(OAI_AERIAL OFF "Activate OAI's AERIAL driver" OFF)
|
||||
if (OAI_AERIAL)
|
||||
target_compile_definitions(nr-softmodem PUBLIC ENABLE_AERIAL)
|
||||
target_link_libraries(nr-softmodem PUBLIC aerial_lib)
|
||||
endif()
|
||||
if(E2_AGENT)
|
||||
target_compile_definitions(nr-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION} E2_AGENT)
|
||||
endif()
|
||||
@@ -2105,7 +2053,6 @@ target_link_libraries(nr-softmodem PRIVATE
|
||||
add_executable(nr-cuup
|
||||
executables/nr-cuup.c
|
||||
executables/softmodem-common.c
|
||||
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
|
||||
${NR_RRC_DIR}/rrc_gNB_UE_context.c
|
||||
${OPENAIR2_DIR}/E1AP/e1ap_setup.c
|
||||
${NR_PDCP_SRC}
|
||||
@@ -2114,7 +2061,7 @@ add_executable(nr-cuup
|
||||
|
||||
target_link_libraries(nr-cuup PRIVATE
|
||||
CONFIG_LIB ITTI SCTP_CLIENT
|
||||
GTPV1U e1ap f1ap SIMU_ETH
|
||||
GTPV1U e1ap f1ap
|
||||
z sctp dl pthread shlib_loader ${T_LIB})
|
||||
target_link_libraries(nr-cuup PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
||||
if(E2_AGENT)
|
||||
@@ -2133,23 +2080,20 @@ add_executable(nr-uesoftmodem
|
||||
${OPENAIR_DIR}/executables/softmodem-common.c
|
||||
${OPENAIR_DIR}/radio/COMMON/common_lib.c
|
||||
${OPENAIR_DIR}/radio/COMMON/record_player.c
|
||||
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
|
||||
${OPENAIR2_DIR}/LAYER2/NR_MAC_COMMON/nr_mac_common.c
|
||||
${OPENAIR2_DIR}/RRC/NAS/rb_config.c
|
||||
${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c
|
||||
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/phy_scope_interface.c
|
||||
)
|
||||
|
||||
target_link_libraries(nr-uesoftmodem PRIVATE
|
||||
-Wl,--start-group
|
||||
nr_rrc SECURITY UTIL HASHTABLE SCHED_RU_LIB SCHED_NR_UE_LIB
|
||||
PHY_COMMON PHY_NR_COMMON PHY_NR_UE NR_L2_UE L2_UE_LTE_NR MAC_NR_COMMON NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB
|
||||
PHY_COMMON PHY_NR_COMMON PHY_NR_UE NR_L2_UE L2_UE_LTE_NR MAC_NR_COMMON NFAPI_LIB NFAPI_PNF_LIB
|
||||
NFAPI_USER_LIB MISC_NFAPI_NR_LIB
|
||||
ITTI LIB_5GNAS_GNB LIB_NAS_SIMUE ${NAS_SIM_LIB} SIMU SIMU_ETH shlib_loader
|
||||
ITTI LIB_5GNAS_GNB LIB_NAS_SIMUE ${NAS_SIM_LIB} SIMU shlib_loader
|
||||
-Wl,--end-group z dl)
|
||||
|
||||
target_link_libraries(nr-uesoftmodem PRIVATE pthread m CONFIG_LIB rt)
|
||||
target_link_libraries(nr-uesoftmodem PRIVATE pthread m CONFIG_LIB rt nr_ue_phy_meas)
|
||||
target_link_libraries(nr-uesoftmodem PRIVATE ${T_LIB})
|
||||
target_link_libraries(nr-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
|
||||
@@ -2192,7 +2136,6 @@ target_link_libraries(rftest PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
||||
|
||||
add_executable(polartest
|
||||
${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/polartest.c
|
||||
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
||||
)
|
||||
target_link_libraries(polartest PRIVATE
|
||||
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_COMMON PHY_NR_UE CONFIG_LIB -Wl,--end-group
|
||||
@@ -2201,7 +2144,6 @@ target_link_libraries(polartest PRIVATE
|
||||
|
||||
add_executable(smallblocktest
|
||||
${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/smallblocktest.c
|
||||
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
||||
)
|
||||
|
||||
target_link_libraries(smallblocktest PRIVATE
|
||||
@@ -2227,7 +2169,6 @@ target_link_libraries(ldpctest PRIVATE
|
||||
add_executable(nr_dlschsim
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlschsim.c
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
|
||||
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
||||
)
|
||||
target_link_libraries(nr_dlschsim PRIVATE
|
||||
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group
|
||||
@@ -2238,7 +2179,6 @@ target_link_libraries(nr_dlschsim PRIVATE asn1_nr_rrc_hdrs)
|
||||
add_executable(nr_pbchsim
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/pbchsim.c
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
|
||||
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
||||
)
|
||||
target_link_libraries(nr_pbchsim PRIVATE
|
||||
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group
|
||||
@@ -2249,16 +2189,14 @@ target_link_libraries(nr_pbchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
add_executable(nr_psbchsim
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/psbchsim.c
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
|
||||
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
||||
${OPENAIR_DIR}/executables/softmodem-common.c
|
||||
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
|
||||
${NR_UE_RRC_DIR}/rrc_nsa.c
|
||||
${NFAPI_USER_DIR}/nfapi.c
|
||||
${NFAPI_USER_DIR}/gnb_ind_vars.c
|
||||
${PHY_INTERFACE_DIR}/queue_t.c
|
||||
)
|
||||
target_link_libraries(nr_psbchsim PRIVATE
|
||||
-Wl,--start-group UTIL SIMU SIMU_ETH PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON CONFIG_LIB L2_NR -lz -Wl,--end-group
|
||||
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON CONFIG_LIB L2_NR -lz -Wl,--end-group
|
||||
m pthread ${T_LIB} ITTI dl shlib_loader
|
||||
)
|
||||
target_link_libraries(nr_psbchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
@@ -2267,7 +2205,6 @@ target_link_libraries(nr_psbchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
add_executable(nr_pucchsim
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/pucchsim.c
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
|
||||
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
||||
)
|
||||
target_link_libraries(nr_pucchsim PRIVATE
|
||||
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB MAC_NR_COMMON -Wl,--end-group
|
||||
@@ -2278,24 +2215,21 @@ target_link_libraries(nr_pucchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
add_executable(nr_dlsim
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/dlsim.c
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
|
||||
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
||||
${OPENAIR_DIR}/executables/softmodem-common.c
|
||||
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
|
||||
${NR_UE_RRC_DIR}/rrc_nsa.c
|
||||
${NFAPI_USER_DIR}/nfapi.c
|
||||
${NFAPI_USER_DIR}/gnb_ind_vars.c
|
||||
${PHY_INTERFACE_DIR}/queue_t.c
|
||||
)
|
||||
target_link_libraries(nr_dlsim PRIVATE
|
||||
-Wl,--start-group UTIL SIMU SIMU_ETH PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
|
||||
m pthread ${T_LIB} ITTI dl shlib_loader
|
||||
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
|
||||
m pthread ${T_LIB} ITTI dl shlib_loader nr_ue_phy_meas
|
||||
)
|
||||
target_link_libraries(nr_dlsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
|
||||
add_executable(nr_prachsim
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/prachsim.c
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
|
||||
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
||||
)
|
||||
target_link_libraries(nr_prachsim PRIVATE
|
||||
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_RU PHY_NR_UE MAC_NR_COMMON SCHED_NR_LIB CONFIG_LIB -lz -Wl,--end-group
|
||||
@@ -2305,7 +2239,6 @@ target_link_libraries(nr_prachsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
add_executable(nr_ulschsim
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulschsim.c
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
|
||||
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
||||
${PHY_INTERFACE_DIR}/queue_t.c
|
||||
)
|
||||
target_link_libraries(nr_ulschsim PRIVATE
|
||||
@@ -2317,9 +2250,7 @@ target_link_libraries(nr_ulschsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
add_executable(nr_ulsim
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/ulsim.c
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
|
||||
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
||||
${OPENAIR_DIR}/executables/softmodem-common.c
|
||||
${OPENAIR2_DIR}/RRC/NAS/nas_config.c
|
||||
${NR_UE_RRC_DIR}/rrc_nsa.c
|
||||
${NFAPI_USER_DIR}/nfapi.c
|
||||
${NFAPI_USER_DIR}/gnb_ind_vars.c
|
||||
@@ -2331,8 +2262,8 @@ if (ENABLE_LDPC_T2)
|
||||
endif()
|
||||
|
||||
target_link_libraries(nr_ulsim PRIVATE
|
||||
-Wl,--start-group UTIL SIMU SIMU_ETH PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
|
||||
m pthread ${T_LIB} ITTI dl shlib_loader
|
||||
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
|
||||
m pthread ${T_LIB} ITTI dl shlib_loader nr_ue_phy_meas
|
||||
)
|
||||
target_link_libraries(nr_ulsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
|
||||
@@ -2379,7 +2310,7 @@ endforeach(myExe)
|
||||
#ensure that the T header files are generated before targets depending on them
|
||||
if (${T_TRACER})
|
||||
foreach(i
|
||||
#all "add_executable" definitions (except tests, rb_tool, updatefw)
|
||||
#all "add_executable" definitions (except tests, updatefw)
|
||||
lte-softmodem lte-uesoftmodem nr-softmodem
|
||||
nr-uesoftmodem dlsim dlsim_tm4 dlsim_tm7
|
||||
ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim
|
||||
@@ -2390,98 +2321,18 @@ if (${T_TRACER})
|
||||
params_libconfig oai_usrpdevif oai_bladerfdevif oai_lmssdrdevif oai_iqplayer
|
||||
oai_eth_transpro oai_mobipass coding HASHTABLE UTIL OMG_SUMO
|
||||
SECURITY SCHED_LIB SCHED_NR_LIB SCHED_RU_LIB SCHED_UE_LIB SCHED_NR_UE_LIB default_sched remote_sched RAL
|
||||
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_VNF_LIB NFAPI_USER_LIB
|
||||
NFAPI_LIB NFAPI_PNF_LIB NFAPI_VNF_LIB NFAPI_USER_LIB
|
||||
MISC_NFAPI_LTE_LIB MISC_NFAPI_NR_LIB
|
||||
PHY_COMMON PHY PHY_UE PHY_NR PHY_NR_COMMON PHY_NR_UE PHY_RU PHY_MEX
|
||||
L2 L2_LTE L2_NR L2_LTE_NR L2_UE NR_L2_UE L2_UE_LTE_NR MAC_NR_COMMON MAC_UE_NR ngap
|
||||
CN_UTILS GTPV1U SCTP_CLIENT MME_APP LIB_NAS_UE NB_IoT SIMU SIMU_ETH OPENAIR0_LIB
|
||||
ldpc_orig ldpc_optim ldpc_optim8seg ldpc_t2 ldpc_cl ldpc_cuda ldpc dfts config_internals)
|
||||
CN_UTILS GTPV1U SCTP_CLIENT MME_APP LIB_NAS_UE NB_IoT SIMU OPENAIR0_LIB
|
||||
ldpc_orig ldpc_optim ldpc_optim8seg ldpc_t2 ldpc_cl ldpc_cuda ldpc dfts config_internals nr_common)
|
||||
if (TARGET ${i})
|
||||
add_dependencies(${i} generate_T)
|
||||
endif()
|
||||
endforeach(i)
|
||||
endif (${T_TRACER})
|
||||
|
||||
##################################################
|
||||
# Generated specific cases is not regular code
|
||||
###############################################
|
||||
|
||||
################
|
||||
# Kernel modules
|
||||
###############
|
||||
# Set compiler options for kernel modules
|
||||
# we need to get out cmake to use the regular Linux Kernel process
|
||||
# this is documented as https://www.kernel.org/doc/Documentation/kbuild/modules.txt
|
||||
######################################
|
||||
|
||||
# retrieve the compiler options to send it to gccxml
|
||||
get_directory_property(DirDefs COMPILE_DEFINITIONS )
|
||||
foreach( d ${DirDefs} )
|
||||
set(module_cc_opt "${module_cc_opt} -D${d}")
|
||||
endforeach()
|
||||
get_directory_property( DirDefs INCLUDE_DIRECTORIES )
|
||||
foreach( d ${DirDefs} )
|
||||
set(module_cc_opt "${module_cc_opt} -I${d}")
|
||||
endforeach()
|
||||
|
||||
EXECUTE_PROCESS(COMMAND uname -r
|
||||
OUTPUT_VARIABLE os_release
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
SET(module_build_path /lib/modules/${os_release}/build)
|
||||
|
||||
function(make_driver name dir)
|
||||
file(MAKE_DIRECTORY ${OPENAIR_BIN_DIR}/${name})
|
||||
foreach(f IN ITEMS ${ARGN})
|
||||
list(APPEND src_path_list ${dir}/${f})
|
||||
string(REGEX REPLACE "c *$" "o" obj ${f})
|
||||
set(objs "${objs} ${obj}")
|
||||
endforeach()
|
||||
CONFIGURE_FILE(${OPENAIR_CMAKE}/tools/Kbuild.cmake ${OPENAIR_BIN_DIR}/${name}/Kbuild)
|
||||
add_custom_command(OUTPUT ${name}.ko
|
||||
COMMAND make -C ${module_build_path} M=${OPENAIR_BIN_DIR}/${name}
|
||||
WORKING_DIRECTORY ${OPENAIR_BIN_DIR}/${name}
|
||||
COMMENT "building ${module}.ko"
|
||||
VERBATIM
|
||||
SOURCES ${src_path_list}
|
||||
)
|
||||
add_custom_target(${name} DEPENDS ${name}.ko)
|
||||
endfunction(make_driver name dir src)
|
||||
|
||||
# nashmesh module
|
||||
################
|
||||
list(APPEND nasmesh_src device.c common.c ioctl.c classifier.c tool.c mesh.c)
|
||||
set(module_cc_opt "${module_cc_opt} -DNAS_NETLINK -DPDCP_USE_NETLINK")
|
||||
# legacy Makefile was using NAS_NETLINK flag, but other drivers the hereafter flag
|
||||
# so, this cmake use OAI_NW_DRIVER_USE_NETLINK everywhere
|
||||
if (OAI_NW_DRIVER_USE_NETLINK)
|
||||
list(APPEND nasmesh_src netlink.c)
|
||||
endif()
|
||||
make_driver(nasmesh ${OPENAIR2_DIR}/NETWORK_DRIVER/MESH ${nasmesh_src})
|
||||
|
||||
# user space tool for configuring MESH IP driver
|
||||
################
|
||||
add_executable(rb_tool
|
||||
${OPENAIR2_DIR}/NETWORK_DRIVER/MESH/RB_TOOL/rb_tool.c
|
||||
)
|
||||
target_include_directories(rb_tool PRIVATE ${OPENAIR2_DIR}/NETWORK_DRIVER/MESH/)
|
||||
|
||||
# ???
|
||||
####################
|
||||
list(APPEND oai_nw_drv_src device.c common.c ioctl.c classifier.c tool.c)
|
||||
if(OAI_NW_DRIVER_USE_NETLINK)
|
||||
list(APPEND oai_nw_drv_src netlink.c)
|
||||
endif()
|
||||
make_driver(oai_nw_drv ${OPENAIR2_DIR}/NETWORK_DRIVER/LTE ${oai_nw_drv_src})
|
||||
|
||||
|
||||
# ue_ip: purpose ???
|
||||
###############
|
||||
list(APPEND ue_ip_src device.c common.c)
|
||||
if(OAI_NW_DRIVER_USE_NETLINK)
|
||||
list(APPEND ue_ip_src netlink.c)
|
||||
endif()
|
||||
make_driver(ue_ip ${OPENAIR2_DIR}/NETWORK_DRIVER/UE_IP ${ue_ip_src})
|
||||
|
||||
include(${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_tools/CMakeLists.txt)
|
||||
|
||||
set(ENABLE_TESTS OFF CACHE STRING "Activate build of tests")
|
||||
@@ -2492,10 +2343,33 @@ if(ENABLE_TESTS)
|
||||
# meta-target: each test is supposed to add_dependencies(tests ${NEWTEST})
|
||||
# then, it is possible to build and execute all tests using "ninja tests && ctest"
|
||||
add_custom_target(tests)
|
||||
find_package(GTest)
|
||||
if (NOT GTest_FOUND)
|
||||
message(STATUS "GTest package not found, will download googletest automatically. To prevent that install google test on your system (libgtest-dev)")
|
||||
CPMAddPackage(
|
||||
NAME googletest
|
||||
GITHUB_REPOSITORY google/googletest
|
||||
GIT_TAG release-1.12.1
|
||||
VERSION 1.12.1
|
||||
OPTIONS "INSTALL_GTEST OFF" "gtest_force_shared_crt" "BUILD_GMOCK OFF"
|
||||
)
|
||||
endif()
|
||||
|
||||
find_package(benchmark)
|
||||
if (NOT benchmark_FOUND)
|
||||
message(STATUS "benchmark package not found, will download benchmark automatically. To prevent that install google benchmark on your system (libbenchmark-dev)")
|
||||
CPMAddPackage(
|
||||
NAME benchmark
|
||||
GITHUB_REPOSITORY google/benchmark
|
||||
VERSION 1.9.0
|
||||
OPTIONS "BENCHMARK_ENABLE_TESTING OFF"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
add_subdirectory(common)
|
||||
add_subdirectory(doc)
|
||||
add_subdirectory(nfapi)
|
||||
add_subdirectory(openair1)
|
||||
add_subdirectory(openair2)
|
||||
add_subdirectory(openair3)
|
||||
|
||||
@@ -5,22 +5,26 @@ We want to make contributing to this project as easy and transparent as possible
|
||||
Please refer to the steps described on our website: [How to contribute to OAI](https://www.openairinterface.org/?page_id=112).
|
||||
|
||||
1. Sign and return a Contributor License Agreement to OAI team.
|
||||
2. Register on [Eurecom GitLab Server](https://gitlab.eurecom.fr/users/sign_up) if you do not have any.
|
||||
2. Register on [Eurecom GitLab Server](https://gitlab.eurecom.fr/users/sign_up)
|
||||
if you do not have any.
|
||||
- We recommend that you register with a professional or student email address.
|
||||
- If your email domain (`@domain.com`) is not whitelisted, please contact us (mailto:contact@openairinterface.org).
|
||||
- If your email domain (`@domain.com`) is not whitelisted, please contact us
|
||||
(mailto:contact@openairinterface.org).
|
||||
- Eurecom GitLab does NOT accept public email domains.
|
||||
3. Provide the OAI team with the **username** of this account to (mailto:contact@openairinterface.org) ; we will give you the developer rights on this repository.
|
||||
4. The policies are described in these wiki pages: [OAI Policies](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/oai-policies-home).
|
||||
- PLEASE DO NOT FORK the OAI repository on your own Eurecom GitLab account. It just eats up space on our servers.
|
||||
- You can fork onto another hosting system. But we will NOT accept a merge request from a forked repository.
|
||||
3. Provide the OAI team with the **username** of this account to
|
||||
(mailto:contact@openairinterface.org) ; we will give you the developer
|
||||
rights on this repository.
|
||||
4. The contributing policies are described in the [corresponding documentation
|
||||
page](doc/code-style-contrib.md).
|
||||
- PLEASE DO NOT FORK the OAI repository on your own Eurecom GitLab account.
|
||||
It just eats up space on our servers.
|
||||
- You can fork onto another hosting system. But we will NOT accept a merge
|
||||
request from a forked repository.
|
||||
* This decision was made for the license reasons.
|
||||
* The Continuous Integration will reject your merge request.
|
||||
- All merge requests SHALL have `develop` branch as target branch.
|
||||
|
||||
## Coding Styles ##
|
||||
# License #
|
||||
|
||||
There are described [here](https://gitlab.eurecom.fr/oai/openairinterface5g/wikis/guidelines/guidelines-home).
|
||||
|
||||
## License ##
|
||||
|
||||
By contributing to OpenAirInterface, you agree that your contributions will be licensed under the LICENSE file in the root directory of this source tree.
|
||||
By contributing to OpenAirInterface, you agree that your contributions will be
|
||||
licensed under the license described in the file [`LICENSE`](./LICENSE) in the
|
||||
root directory of this source tree.
|
||||
|
||||
@@ -4,15 +4,6 @@ For more details of the license, refer to [LICENSE](LICENSE) file in the same di
|
||||
|
||||
However, the source code also contains third party software that is acknowledged here for reference.
|
||||
|
||||
## Credits for LFDS user space source code located in folder openair2/UTILS/LFDS/ ##
|
||||
|
||||
See on [liblfds website](https://liblfds.org/) the license section.
|
||||
|
||||
<pre>
|
||||
"There is no license. You are free to use this software in any way, for any purpose. Go forth and create wealth!
|
||||
If however for legal reasons a licence is required, the license of your choice will be granted."
|
||||
</pre>
|
||||
|
||||
## Credits for source code common/utils/collection/queue.h: ##
|
||||
|
||||
The Regents of the University of California: BSD 3-Clause Licence.
|
||||
|
||||
12
README.md
12
README.md
@@ -4,12 +4,12 @@
|
||||
|
||||
<p align="center">
|
||||
<a href="https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-OAI--Public--V1.1-blue" alt="License"></a>
|
||||
<a href="https://releases.ubuntu.com/18.04/"><img src="https://img.shields.io/badge/OS-Ubuntu18-Green" alt="Supported OS Ubuntu 18"></a>
|
||||
<a href="https://releases.ubuntu.com/20.04/"><img src="https://img.shields.io/badge/OS-Ubuntu20-Green" alt="Supported OS Ubuntu 20"></a>
|
||||
<a href="https://releases.ubuntu.com/22.04/"><img src="https://img.shields.io/badge/OS-Ubuntu22-Green" alt="Supported OS Ubuntu 22"></a>
|
||||
<a href="https://releases.ubuntu.com/24.04/"><img src="https://img.shields.io/badge/OS-Ubuntu24-Green" alt="Supported OS Ubuntu 24"></a>
|
||||
<a href="https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux"><img src="https://img.shields.io/badge/OS-RHEL8-Green" alt="Supported OS RHEL8"></a>
|
||||
<a href="https://www.redhat.com/en/technologies/linux-platforms/enterprise-linux"><img src="https://img.shields.io/badge/OS-RHEL9-Green" alt="Supported OS RELH9"></a>
|
||||
<a href="https://getfedora.org/en/workstation/"><img src="https://img.shields.io/badge/OS-Fedore37-Green" alt="Supported OS Fedora 37"></a>
|
||||
<a href="https://getfedora.org/en/workstation/"><img src="https://img.shields.io/badge/OS-Fedore40-Green" alt="Supported OS Fedora 40"></a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
@@ -70,11 +70,11 @@ openairinterface5g
|
||||
├── executables : Top-level executable source files (gNB, eNB, ...)
|
||||
├── maketags : Script to generate emacs tags.
|
||||
├── nfapi : (n)FAPI code for MAC-PHY interface
|
||||
├── openair1 : 3GPP LTE Rel-10/12 PHY layer / 3GPP NR Rel-15 layer. A local Readme file provides more details.
|
||||
├── openair2 : 3GPP LTE Rel-10 RLC/MAC/PDCP/RRC/X2AP + LTE Rel-14 M2AP implementation. Also 3GPP NR Rel-15 RLC/MAC/PDCP/RRC/X2AP.
|
||||
├── openair3 : 3GPP LTE Rel10 for S1AP, NAS GTPV1-U for both ENB and UE.
|
||||
├── openair1 : Layer 1 (3GPP LTE Rel-10/12 PHY, NR Rel-15 PHY)
|
||||
├── openair2 : Layer 2 (3GPP LTE Rel-10 MAC/RLC/PDCP/RRC/X2AP, LTE Rel-14 M2AP, NR Rel-15+ MAC/RLC/PDCP/SDAP/RRC/X2AP/F1AP/E1AP), E2AP
|
||||
├── openair3 : Layer 3 (3GPP LTE Rel-10 S1AP/GTP, NR Rel-15 NGAP/GTP)
|
||||
├── openshift : OpenShift helm charts for some deployment options of OAI
|
||||
├── radio : Drivers for various radios such as USRP, AW2S, RFsim, ...
|
||||
├── radio : Drivers for various radios such as USRP, AW2S, RFsim, 7.2 FHI, ...
|
||||
└── targets : Some configuration files; only historical relevance, and might be deleted in the future
|
||||
```
|
||||
|
||||
|
||||
@@ -585,6 +585,29 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("SA-FHI72-CN5G") {
|
||||
when { expression {do5Gtest} }
|
||||
steps {
|
||||
script {
|
||||
triggerSlaveJob ('RAN-SA-FHI72-CN5G', 'SA-FHI72-CN5G')
|
||||
}
|
||||
}
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
saFHI72Status = finalizeSlaveJob('RAN-SA-FHI72-CN5G')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += saFHI72Status
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("SA-OAIUE-CN5G") {
|
||||
when { expression {do5Gtest} }
|
||||
steps {
|
||||
|
||||
@@ -229,6 +229,10 @@ pipeline {
|
||||
// Zipping all archived log files
|
||||
sh "mkdir test_logs"
|
||||
sh "mv *.log* test_logs || true"
|
||||
// Zip all log files matching cmake_targets/{*.log*,log/*} into test_logs_XXXX.zip
|
||||
if (fileExists('../cmake_targets/log')) {
|
||||
sh "mv ../cmake_targets/log/* test_logs || true"
|
||||
}
|
||||
sh "zip -r -qq test_logs_${env.BUILD_ID}.zip *test_log*/"
|
||||
sh "rm -rf *test_log*/"
|
||||
if (fileExists("test_logs_${env.BUILD_ID}.zip")) {
|
||||
|
||||
@@ -221,6 +221,10 @@ pipeline {
|
||||
// Zipping all archived log files
|
||||
sh "mkdir test_logs"
|
||||
sh "mv *.log* test_logs || true"
|
||||
// Zip all log files matching cmake_targets/{*.log*,log/*} into test_logs_XXXX.zip
|
||||
if (fileExists('../cmake_targets/log')) {
|
||||
sh "mv ../cmake_targets/log/* test_logs || true"
|
||||
}
|
||||
sh "zip -r -qq test_logs_${env.BUILD_ID}.zip *test_log*/"
|
||||
sh "rm -rf *test_log*/"
|
||||
if (fileExists("test_logs_${env.BUILD_ID}.zip")) {
|
||||
|
||||
@@ -76,7 +76,7 @@ pipeline {
|
||||
withCredentials([
|
||||
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.DH_Credentials}", usernameVariable: 'DH_Username', passwordVariable: 'DH_Password']
|
||||
]) {
|
||||
def listOfImages = ["oai-enb", "oai-gnb", "oai-lte-ue", "oai-nr-ue", "oai-nr-cuup"]
|
||||
def listOfImages = ["oai-enb", "oai-gnb", "oai-lte-ue", "oai-nr-ue", "oai-nr-cuup", "oai-gnb-fhi72"]
|
||||
// Logging in on both registries
|
||||
sh "docker login -u ${DH_Username} -p ${DH_Password} > /dev/null 2>&1"
|
||||
sh "docker login -u oaicicd -p oaicicd porcepix.sboai.cs.eurecom.fr > /dev/null 2>&1"
|
||||
|
||||
@@ -304,7 +304,7 @@ pipeline {
|
||||
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.eNB_Credentials}", usernameVariable: 'eNB_Username', passwordVariable: 'eNB_Password']
|
||||
]) {
|
||||
echo '\u2705 \u001B[32mLog Collection (eNB - Run)\u001B[0m'
|
||||
sh "python3 ci-scripts/main.py --mode=LogCollecteNB --eNBIPAddress=${params.eNB_IPAddress} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} --eNBSourceCodePath=${params.eNB_SourceCodePath}"
|
||||
sh "python3 ci-scripts/main.py --mode=LogCollecteNB --eNBIPAddress=${params.eNB_IPAddress} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} --eNBSourceCodePath=${params.eNB_SourceCodePath} --BuildId=${env.BUILD_ID}"
|
||||
|
||||
echo '\u2705 \u001B[32mLog Transfer (eNB - Run)\u001B[0m'
|
||||
sh "sshpass -p \'${eNB_Password}\' scp -o 'StrictHostKeyChecking no' -o 'ConnectTimeout 10' ${eNB_Username}@${params.eNB_IPAddress}:${eNB_SourceCodePath}/cmake_targets/enb.log.zip ./enb.log.${env.BUILD_ID}.zip || true"
|
||||
|
||||
@@ -274,7 +274,7 @@ pipeline {
|
||||
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.eNB_Credentials}", usernameVariable: 'eNB_Username', passwordVariable: 'eNB_Password']
|
||||
]) {
|
||||
echo '\u2705 \u001B[32mLog Collection (eNB - Run)\u001B[0m'
|
||||
sh "python3 ci-scripts/main.py --mode=LogCollecteNB --eNBIPAddress=${params.eNB_IPAddress} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} --eNBSourceCodePath=${params.eNB_SourceCodePath}"
|
||||
sh "python3 ci-scripts/main.py --mode=LogCollecteNB --eNBIPAddress=${params.eNB_IPAddress} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} --eNBSourceCodePath=${params.eNB_SourceCodePath} --BuildId=${env.BUILD_ID}"
|
||||
|
||||
echo '\u2705 \u001B[32mLog Transfer (eNB - Run)\u001B[0m'
|
||||
sh "sshpass -p \'${eNB_Password}\' scp -o 'StrictHostKeyChecking no' -o 'ConnectTimeout 10' ${eNB_Username}@${params.eNB_IPAddress}:${eNB_SourceCodePath}/cmake_targets/enb.log.zip ./enb.log.${env.BUILD_ID}.zip || true"
|
||||
|
||||
@@ -18,6 +18,14 @@ up2:
|
||||
IF: wwan0
|
||||
MTU: 1500
|
||||
|
||||
up2-fhi72:
|
||||
Host: up2
|
||||
AttachScript: sudo /opt/mbim-fhi72/start_quectel_mbim.sh
|
||||
DetachScript: sudo /opt/mbim-fhi72/stop_quectel_mbim.sh
|
||||
NetworkScript: ip a show dev wwan0
|
||||
IF: wwan0
|
||||
MTU: 1500
|
||||
|
||||
sphex_quectel:
|
||||
Host: sphex
|
||||
InitScript: sudo stdbuf -oL /home/oaicicd/quectel-CM/quectel-CM -4 -s oai.ipv4 &> /tmp/quecel-cm.log &
|
||||
@@ -58,9 +66,18 @@ adb_ue_2:
|
||||
|
||||
oc-cn5g:
|
||||
Host: avra
|
||||
Namespace: "oaicicd-core-for-ci-ran"
|
||||
CNPath: "/opt/oai-cn5g-fed-develop-2024-april-00102"
|
||||
NetworkScript: echo "inet 172.21.6.102"
|
||||
RunIperf3Server: False
|
||||
|
||||
oc-cn5g-20897:
|
||||
Host: cacofonix
|
||||
Namespace: "oaicicd-core-for-fhi72"
|
||||
CNPath: "/opt/oai-cn5g-fed-develop-2024-april-20897"
|
||||
NetworkScript: echo "inet 172.21.6.105"
|
||||
RunIperf3Server: False
|
||||
|
||||
matix-cn5g:
|
||||
Host: matix
|
||||
NetworkScript: docker exec prod-trf-gen ip a show dev eth0
|
||||
@@ -99,6 +116,10 @@ amarisoft_ue:
|
||||
Host: amariue
|
||||
InitScript: /root/lteue-linux-2023-10-27/ue/lteue /root/oaicicd/ran_sa_aw2s_asue_2x2/aw2s-multi-00102-2x2.cfg &
|
||||
TermScript: /root/2023-10-27/libs/ws.js -t 10 127.0.0.1:9002 '{"message":"quit"}' || killall -KILL lteue-avx2
|
||||
amarisoft_ue_fhi72:
|
||||
Host: amariue
|
||||
InitScript: /root/lteue-linux-2023-10-27/ue/lteue /root/oaicicd/ran_sa_fhi72_asue_2x2_benetel550/fhi72-multi-20897-2x2.cfg &
|
||||
TermScript: /root/2023-10-27/libs/ws.js -t 10 127.0.0.1:9002 '{"message":"quit"}' || killall -KILL lteue-avx2
|
||||
amarisoft_ue_1:
|
||||
Host: amariue
|
||||
AttachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":1}'
|
||||
@@ -228,13 +249,13 @@ lte_oai_ue_carabe:
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_gnb_nos1:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec rfsim5g-oai-gnb ip a show dev oaitun_enb1
|
||||
CmdPrefix: docker exec rfsim5g-oai-gnb
|
||||
IF: oaitun_enb1
|
||||
|
||||
rfsim5g_ue:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue
|
||||
IF: oaitun_ue1
|
||||
@@ -243,7 +264,7 @@ rfsim5g_ue:
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ue2:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue2 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue2
|
||||
IF: oaitun_ue1
|
||||
@@ -252,7 +273,7 @@ rfsim5g_ue2:
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ue3:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue3 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue3
|
||||
IF: oaitun_ue1
|
||||
@@ -261,7 +282,7 @@ rfsim5g_ue3:
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ue4:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue4 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue4
|
||||
IF: oaitun_ue1
|
||||
@@ -270,7 +291,7 @@ rfsim5g_ue4:
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ue5:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue5 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue5
|
||||
IF: oaitun_ue1
|
||||
@@ -279,7 +300,7 @@ rfsim5g_ue5:
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ue6:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue6 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue6
|
||||
IF: oaitun_ue1
|
||||
@@ -288,7 +309,7 @@ rfsim5g_ue6:
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ue7:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue7 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue7
|
||||
IF: oaitun_ue1
|
||||
@@ -297,7 +318,7 @@ rfsim5g_ue7:
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ue8:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue8 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue8
|
||||
IF: oaitun_ue1
|
||||
@@ -306,7 +327,7 @@ rfsim5g_ue8:
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ue9:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue9 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue9
|
||||
IF: oaitun_ue1
|
||||
@@ -315,7 +336,7 @@ rfsim5g_ue9:
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ue10:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue10 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue10
|
||||
IF: oaitun_ue1
|
||||
@@ -324,12 +345,12 @@ rfsim5g_ue10:
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ext_dn:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec rfsim5g-oai-ext-dn ip a show dev eth0
|
||||
CmdPrefix: docker exec rfsim5g-oai-ext-dn
|
||||
|
||||
rfsim4g_ue:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec rfsim4g-oai-lte-ue0 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim4g-oai-lte-ue0
|
||||
IF: oaitun_ue1
|
||||
@@ -338,30 +359,30 @@ rfsim4g_ue:
|
||||
MTU: 1500
|
||||
|
||||
rfsim4g_ext_dn:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec rfsim4g-trf-gen ip a show dev eth0
|
||||
CmdPrefix: docker exec rfsim4g-trf-gen
|
||||
|
||||
rfsim4g_enb_nos1:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec rfsim4g-oai-enb ip a show dev oaitun_enb1
|
||||
CmdPrefix: docker exec rfsim4g-oai-enb
|
||||
IF: oaitun_enb1
|
||||
|
||||
rfsim4g_enb_fembms:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec rfsim4g-oai-enb ip a show dev oaitun_enm1
|
||||
CmdPrefix: docker exec rfsim4g-oai-enb
|
||||
IF: oaitun_enm1
|
||||
|
||||
rfsim4g_ue_fembms:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec rfsim4g-oai-lte-ue0 ip a show dev oaitun_uem1
|
||||
CmdPrefix: docker exec rfsim4g-oai-lte-ue0
|
||||
IF: oaitun_uem1
|
||||
|
||||
l2sim5g_ue:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
AttachScript: docker start l2sim-oai-nr-ue0
|
||||
DetachScript: docker stop l2sim-oai-nr-ue0
|
||||
NetworkScript: docker exec l2sim-oai-nr-ue0 ip a show dev oaitun_ue1
|
||||
@@ -370,12 +391,12 @@ l2sim5g_ue:
|
||||
MTU: 1500
|
||||
|
||||
l2sim5g_ext_dn:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec l2sim-oai-ext-dn ip a show dev eth0
|
||||
CmdPrefix: docker exec l2sim-oai-ext-dn
|
||||
|
||||
l2sim4g_ue:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
AttachScript: docker start l2sim4g-oai-lte-ue1
|
||||
DetachScript: docker stop l2sim4g-oai-lte-ue1
|
||||
NetworkScript: docker exec l2sim4g-oai-lte-ue1 ip a show dev oaitun_ue1
|
||||
@@ -384,6 +405,6 @@ l2sim4g_ue:
|
||||
MTU: 1500
|
||||
|
||||
l2sim4g_ext_dn:
|
||||
Host: localhost
|
||||
Host: "%%current_host%%"
|
||||
NetworkScript: docker exec l2sim4g-trf-gen ip a show dev eth0
|
||||
CmdPrefix: docker exec l2sim4g-trf-gen
|
||||
|
||||
@@ -41,9 +41,8 @@ import cls_cmd
|
||||
IMAGE_REGISTRY_SERVICE_NAME = "image-registry.openshift-image-registry.svc"
|
||||
NAMESPACE = "oaicicd-ran"
|
||||
OCUrl = "https://api.oai.cs.eurecom.fr:6443"
|
||||
OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/"
|
||||
OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr"
|
||||
CI_OC_RAN_NAMESPACE = "oaicicd-ran"
|
||||
CI_OC_CORE_NAMESPACE = "oaicicd-core-for-ci-ran"
|
||||
CN_IMAGES = ["mysql", "oai-nrf", "oai-amf", "oai-smf", "oai-upf", "oai-ausf", "oai-udm", "oai-udr", "oai-traffic-server"]
|
||||
CN_CONTAINERS = ["", "-c nrf", "-c amf", "-c smf", "-c upf", "-c ausf", "-c udm", "-c udr", ""]
|
||||
|
||||
@@ -52,8 +51,8 @@ def OC_login(cmd, ocUserName, ocPassword, ocProjectName):
|
||||
if ocUserName == '' or ocPassword == '' or ocProjectName == '':
|
||||
HELP.GenericHelp(CONST.Version)
|
||||
sys.exit('Insufficient Parameter: no OC Credentials')
|
||||
if OCRegistry.startswith("http") and not self.OCRegistry.endswith("/"):
|
||||
sys.exit(f'ocRegistry {OCRegistry} should not start with http:// or https:// and end on a slash /')
|
||||
if OCRegistry.startswith("http") or OCRegistry.endswith("/"):
|
||||
sys.exit(f'ocRegistry {OCRegistry} should not start with http:// or https:// and not end on a slash /')
|
||||
ret = cmd.run(f'oc login -u {ocUserName} -p {ocPassword} --server {OCUrl}')
|
||||
if ret.returncode != 0:
|
||||
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
|
||||
@@ -68,10 +67,9 @@ def OC_login(cmd, ocUserName, ocPassword, ocProjectName):
|
||||
def OC_logout(cmd):
|
||||
cmd.run(f'oc logout')
|
||||
|
||||
def OC_deploy_CN(cmd, ocUserName, ocPassword):
|
||||
logging.debug('OC OAI CN5G: Deploying OAI CN5G on Openshift Cluster')
|
||||
path = "/opt/oai-cn5g-fed-develop-2024-april-00102"
|
||||
succeeded = OC_login(cmd, ocUserName, ocPassword, CI_OC_CORE_NAMESPACE)
|
||||
def OC_deploy_CN(cmd, ocUserName, ocPassword, ocNamespace, path):
|
||||
logging.debug(f'OC OAI CN5G: Deploying OAI CN5G on Openshift Cluster: {ocNamespace}')
|
||||
succeeded = OC_login(cmd, ocUserName, ocPassword, ocNamespace)
|
||||
if not succeeded:
|
||||
return False, CONST.OC_LOGIN_FAIL
|
||||
cmd.run('helm uninstall oai5gcn --wait --timeout 60s')
|
||||
@@ -84,10 +82,9 @@ def OC_deploy_CN(cmd, ocUserName, ocPassword):
|
||||
OC_logout(cmd)
|
||||
return True, report
|
||||
|
||||
def OC_undeploy_CN(cmd, ocUserName, ocPassword):
|
||||
logging.debug('OC OAI CN5G: Terminating CN on Openshift Cluster')
|
||||
path = "/opt/oai-cn5g-fed-develop-2024-april-00102"
|
||||
succeeded = OC_login(cmd, ocUserName, ocPassword, CI_OC_CORE_NAMESPACE)
|
||||
def OC_undeploy_CN(cmd, ocUserName, ocPassword, ocNamespace, path):
|
||||
logging.debug(f'OC OAI CN5G: Terminating CN on Openshift Cluster: {ocNamespace}')
|
||||
succeeded = OC_login(cmd, ocUserName, ocPassword, ocNamespace)
|
||||
if not succeeded:
|
||||
return False, CONST.OC_LOGIN_FAIL
|
||||
cmd.run(f'rm -Rf {path}/logs')
|
||||
@@ -121,8 +118,8 @@ class Cluster:
|
||||
self.OCUserName = ""
|
||||
self.OCPassword = ""
|
||||
self.OCProjectName = ""
|
||||
self.OCUrl = "https://api.oai.cs.eurecom.fr:6443"
|
||||
self.OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/"
|
||||
self.OCUrl = OCUrl
|
||||
self.OCRegistry = OCRegistry
|
||||
self.ranRepository = ""
|
||||
self.ranBranch = ""
|
||||
self.ranCommitID = ""
|
||||
@@ -251,6 +248,7 @@ class Cluster:
|
||||
logging.debug(f'Pull OC image {self.imageToPull} to server {self.testSvrId}')
|
||||
self.testCase_id = HTML.testCase_id
|
||||
cmd = cls_cmd.getConnection(self.testSvrId)
|
||||
logging.info(cmd.run('docker --version'))
|
||||
succeeded = OC_login(cmd, self.OCUserName, self.OCPassword, CI_OC_RAN_NAMESPACE)
|
||||
if not succeeded:
|
||||
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
|
||||
@@ -264,7 +262,7 @@ class Cluster:
|
||||
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
|
||||
return False
|
||||
for image in self.imageToPull:
|
||||
imagePrefix = f'{self.OCRegistry}{CI_OC_RAN_NAMESPACE}'
|
||||
imagePrefix = f'{self.OCRegistry}/{CI_OC_RAN_NAMESPACE}'
|
||||
imageTag = cls_containerize.ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||
ret = cmd.run(f'docker pull {imagePrefix}/{imageTag}')
|
||||
if ret.returncode != 0:
|
||||
@@ -294,8 +292,8 @@ class Cluster:
|
||||
if ocUserName == '' or ocPassword == '' or ocProjectName == '':
|
||||
HELP.GenericHelp(CONST.Version)
|
||||
sys.exit('Insufficient Parameter: no OC Credentials')
|
||||
if self.OCRegistry.startswith("http") and not self.OCRegistry.endswith("/"):
|
||||
sys.exit(f'ocRegistry {self.OCRegistry} should not start with http:// or https:// and end on a slash /')
|
||||
if self.OCRegistry.startswith("http") or self.OCRegistry.endswith("/"):
|
||||
sys.exit(f'ocRegistry {self.OCRegistry} should not start with http:// or https:// and not end on a slash /')
|
||||
|
||||
logging.debug(f'Building on cluster triggered from server: {lIpAddr}')
|
||||
self.cmd = cls_cmd.RemoteCmd(lIpAddr)
|
||||
@@ -303,10 +301,7 @@ class Cluster:
|
||||
self.testCase_id = HTML.testCase_id
|
||||
|
||||
# Workaround for some servers, we need to erase completely the workspace
|
||||
if self.forcedWorkspaceCleanup:
|
||||
self.cmd.run(f'rm -Rf {lSourcePath}')
|
||||
cls_containerize.CreateWorkspace(self.cmd, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
|
||||
|
||||
self.cmd.cd(lSourcePath)
|
||||
# to reduce the amount of data send to OpenShift, we
|
||||
# manually delete all generated files in the workspace
|
||||
self.cmd.run(f'rm -rf {lSourcePath}/cmake_targets/ran_build');
|
||||
@@ -462,6 +457,34 @@ class Cluster:
|
||||
self.cmd.run(f'oc logs {nrue_job} &> cmake_targets/log/oai-nr-ue.log')
|
||||
self.cmd.run(f'oc get pods.metrics.k8s.io &>> cmake_targets/log/build-metrics.log', '\$', 10)
|
||||
|
||||
if status:
|
||||
self._recreate_is_tag('ran-build-fhi72', imageTag, 'openshift/ran-build-fhi72-is.yaml')
|
||||
self._recreate_bc('ran-build-fhi72', imageTag, 'openshift/ran-build-fhi72-bc.yaml')
|
||||
self._retag_image_statement('ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.build.fhi72.rhel9')
|
||||
ranbuildfhi72_job = self._start_build('ran-build-fhi72')
|
||||
attemptedImages += ['ran-build-fhi72']
|
||||
|
||||
wait = ranbuildfhi72_job is not None and self._wait_build_end([ranbuildfhi72_job], 1200)
|
||||
if not wait: logging.error('error during build of ranbuildfhi72_job')
|
||||
status = status and wait
|
||||
self.cmd.run(f'oc logs {ranbuildfhi72_job} &> cmake_targets/log/ran-build-fhi72.log')
|
||||
self.cmd.run(f'oc get pods.metrics.k8s.io &>> cmake_targets/log/build-metrics.log', '\$', 10)
|
||||
|
||||
if status:
|
||||
self._recreate_is_tag('oai-gnb-fhi72', imageTag, 'openshift/oai-gnb-fhi72-is.yaml')
|
||||
self._recreate_bc('oai-gnb-fhi72', imageTag, 'openshift/oai-gnb-fhi72-bc.yaml')
|
||||
self._retag_image_statement('ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.gNB.fhi72.rhel9')
|
||||
self._retag_image_statement('ran-build-fhi72', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-build-fhi72', imageTag, 'docker/Dockerfile.gNB.fhi72.rhel9')
|
||||
gnb_fhi72_job = self._start_build('oai-gnb-fhi72')
|
||||
attemptedImages += ['oai-gnb-fhi72']
|
||||
|
||||
wait = gnb_fhi72_job is not None and self._wait_build_end([gnb_fhi72_job], 600)
|
||||
if not wait: logging.error('error during build of gNB-fhi72')
|
||||
status = status and wait
|
||||
# recover logs
|
||||
self.cmd.run(f'oc logs {gnb_fhi72_job} &> cmake_targets/log/oai-gnb-fhi72.log')
|
||||
self.cmd.run(f'oc get pods.metrics.k8s.io &>> cmake_targets/log/build-metrics.log', '\$', 10)
|
||||
|
||||
# split and analyze logs
|
||||
imageSize = {}
|
||||
for image in attemptedImages:
|
||||
|
||||
@@ -58,7 +58,7 @@ import cls_oaicitest
|
||||
# Helper functions used here and in other classes
|
||||
# (e.g., cls_cluster.py)
|
||||
#-----------------------------------------------------------
|
||||
IMAGES = ['oai-enb', 'oai-lte-ru', 'oai-lte-ue', 'oai-gnb', 'oai-nr-cuup', 'oai-gnb-aw2s', 'oai-nr-ue', 'oai-gnb-asan', 'oai-nr-ue-asan', 'oai-nr-cuup-asan', 'oai-gnb-aerial']
|
||||
IMAGES = ['oai-enb', 'oai-lte-ru', 'oai-lte-ue', 'oai-gnb', 'oai-nr-cuup', 'oai-gnb-aw2s', 'oai-nr-ue', 'oai-gnb-asan', 'oai-nr-ue-asan', 'oai-nr-cuup-asan', 'oai-gnb-aerial', 'oai-gnb-fhi72']
|
||||
|
||||
def CreateWorkspace(sshSession, sourcePath, ranRepository, ranCommitID, ranTargetBranch, ranAllowMerge):
|
||||
if ranCommitID == '':
|
||||
@@ -67,7 +67,7 @@ def CreateWorkspace(sshSession, sourcePath, ranRepository, ranCommitID, ranTarge
|
||||
|
||||
sshSession.command(f'rm -rf {sourcePath}', '\$', 10)
|
||||
sshSession.command('mkdir -p ' + sourcePath, '\$', 5)
|
||||
sshSession.command('cd ' + sourcePath, '\$', 5)
|
||||
(sshSession.cd(sourcePath) if isinstance(sshSession, cls_cmd.Cmd) else sshSession.command('cd ' + sourcePath, '\$', 5))
|
||||
# Recent version of git (>2.20?) should handle missing .git extension # without problems
|
||||
if ranTargetBranch == 'null':
|
||||
ranTargetBranch = 'develop'
|
||||
@@ -83,7 +83,9 @@ def CreateWorkspace(sshSession, sourcePath, ranRepository, ranCommitID, ranTarge
|
||||
sshSession.command(f'git checkout -f {ranCommitID}', '\$', 30)
|
||||
if sshSession.getBefore().count(f'HEAD is now at {ranCommitID[:6]}') != 1:
|
||||
sshSession.command('git log --oneline | head -n5', '\$', 5)
|
||||
logging.warning(f'problems during checkout, is at: {sshSession.getBefore()}')
|
||||
logging.error(f'problems during checkout, is at: {sshSession.getBefore()}')
|
||||
self.exitStatus = 1
|
||||
HTML.CreateHtmlTestRowQueue('N/A', 'KO', "could not checkout correctly")
|
||||
else:
|
||||
logging.debug('successful checkout')
|
||||
# if the branch is not develop, then it is a merge request and we need to do
|
||||
@@ -169,6 +171,125 @@ def AnalyzeBuildLogs(buildRoot, images, globalStatus):
|
||||
collectInfo[image] = files
|
||||
return collectInfo
|
||||
|
||||
def GetCredentials(instance):
|
||||
server_id = instance.eNB_serverId[instance.eNB_instance]
|
||||
if server_id == '0':
|
||||
return (instance.eNBIPAddress, instance.eNBUserName, instance.eNBPassword, instance.eNBSourceCodePath)
|
||||
elif server_id == '1':
|
||||
return (instance.eNB1IPAddress, instance.eNB1UserName, instance.eNB1Password, instance.eNB1SourceCodePath)
|
||||
elif server_id == '2':
|
||||
return (instance.eNB2IPAddress, instance.eNB2UserName, instance.eNB2Password, instance.eNB2SourceCodePath)
|
||||
else:
|
||||
raise Exception ("Only supports maximum of 3 servers")
|
||||
|
||||
def GetContainerName(mySSH, svcName):
|
||||
ret = mySSH.run(f"docker compose -f docker-compose.y*ml config --format json {svcName} | jq -r '.services.\"{svcName}\".container_name'")
|
||||
containerName = ret.stdout
|
||||
return containerName
|
||||
|
||||
def GetImageInfo(mySSH, containerName):
|
||||
usedImage = ''
|
||||
ret = mySSH.run('docker inspect --format="{{.Config.Image}}" ' + containerName)
|
||||
usedImage = ret.stdout.strip()
|
||||
logging.debug('Used image is: ' + usedImage)
|
||||
if usedImage:
|
||||
ret = mySSH.run('docker image inspect --format "* Size = {{.Size}} bytes\n* Creation = {{.Created}}\n* Id = {{.Id}}" ' + usedImage)
|
||||
imageInfo = f"Used image is {usedImage}\n{ret.stdout}\n"
|
||||
return imageInfo
|
||||
else:
|
||||
return f"Could not retrieve used image info for {containerName}!\n"
|
||||
|
||||
def GetContainerHealth(mySSH, containerName):
|
||||
if containerName is None:
|
||||
return 0, 0
|
||||
unhealthyNb = 0
|
||||
healthyNb = 0
|
||||
time.sleep(5)
|
||||
for _ in range(3):
|
||||
if containerName != 'db_init':
|
||||
result = mySSH.run(f'docker inspect --format="{{{{.State.Health.Status}}}}" {containerName}')
|
||||
unhealthyNb = result.stdout.count('unhealthy')
|
||||
healthyNb = result.stdout.count('healthy') - unhealthyNb
|
||||
if healthyNb == 1:
|
||||
break
|
||||
else:
|
||||
time.sleep(10)
|
||||
else:
|
||||
unhealthyNb = 0
|
||||
healthyNb = 1
|
||||
break
|
||||
return healthyNb, unhealthyNb
|
||||
|
||||
def ReTagImages(mySSH,IMAGES,ranCommitID,ranBranch,ranAllowMerge,displayedNewTags):
|
||||
mySSH.run('cp docker-compose.y*ml ci-docker-compose.yml', 5)
|
||||
for image in IMAGES:
|
||||
imageTag = ImageTagToUse(image, ranCommitID, ranBranch, ranAllowMerge)
|
||||
if image == 'oai-gnb' or image == 'oai-nr-ue' or image == 'oai-nr-cuup':
|
||||
ret = mySSH.run(f'docker image inspect oai-ci/{imageTag}', reportNonZero=False, silent=False)
|
||||
if ret.returncode != 0:
|
||||
imageTag = imageTag.replace('oai-gnb', 'oai-gnb-asan')
|
||||
imageTag = imageTag.replace('oai-nr-ue', 'oai-nr-ue-asan')
|
||||
imageTag = imageTag.replace('oai-nr-cuup', 'oai-nr-cuup-asan')
|
||||
if not displayedNewTags:
|
||||
logging.debug(f'\u001B[1m Using sanitized version of {image} with {imageTag}\u001B[0m')
|
||||
mySSH.run(f'sed -i -e "s@oaisoftwarealliance/{image}:develop@oai-ci/{imageTag}@" ci-docker-compose.yml',silent=True)
|
||||
|
||||
def DeployServices(mySSH,svcName):
|
||||
allServices = []
|
||||
if svcName == '':
|
||||
logging.warning('No service name given: starting all services in ci-docker-compose.yml!')
|
||||
ret = mySSH.run(f'docker compose -f ci-docker-compose.yml config --services')
|
||||
allServices = ret.stdout.splitlines()
|
||||
deployStatus = mySSH.run(f'docker compose --file ci-docker-compose.yml up -d -- {svcName}', 50)
|
||||
return deployStatus.returncode,allServices
|
||||
|
||||
def CopyinContainerLog(mySSH,lSourcePath,ymlPath,containerName,filename):
|
||||
logPath = f'{os.getcwd()}/../cmake_targets/log/{ymlPath[2]}'
|
||||
os.system(f'mkdir -p {logPath}')
|
||||
mySSH.run(f'docker logs {containerName} > {lSourcePath}/cmake_targets/log/{filename} 2>&1')
|
||||
copyin_res = mySSH.copyin(f'{lSourcePath}/cmake_targets/log/{filename}', os.path.join(logPath, filename))
|
||||
return copyin_res
|
||||
|
||||
def GetRunningServices(mySSH,yamlDir):
|
||||
ret = mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml config --services')
|
||||
allServices = ret.stdout.splitlines()
|
||||
services = []
|
||||
for s in allServices:
|
||||
# outputs the hash if the container is running
|
||||
ret = mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml ps --all --quiet -- {s}')
|
||||
c = ret.stdout
|
||||
logging.debug(f'running service {s} with container id {c}')
|
||||
if ret.stdout != "" and ret.returncode == 0: # something is running for that service
|
||||
services.append((s, c))
|
||||
logging.info(f'stopping services {[s for s, _ in services]}')
|
||||
return services
|
||||
|
||||
def CheckLogs(self,mySSH,ymlPath,service_name,HTML,RAN):
|
||||
logPath = f'{os.getcwd()}/../cmake_targets/log/{ymlPath[2]}'
|
||||
filename = f'{logPath}/{service_name}-{HTML.testCase_id}.log'
|
||||
isFailed = 0
|
||||
if (any(sub in service_name for sub in ['oai_ue','oai-nr-ue','lte_ue'])):
|
||||
logging.debug(f'\u001B[1m Analyzing UE logfile {filename} \u001B[0m')
|
||||
logStatus = cls_oaicitest.OaiCiTest().AnalyzeLogFile_UE(filename, HTML, RAN)
|
||||
if (logStatus < 0):
|
||||
HTML.CreateHtmlTestRow('UE log Analysis', 'KO', logStatus)
|
||||
isFailed = 1
|
||||
else:
|
||||
HTML.CreateHtmlTestRow('UE log Analysis', 'OK', CONST.ALL_PROCESSES_OK)
|
||||
elif service_name == 'nv-cubb':
|
||||
msg = 'Undeploy PNF/Nvidia CUBB'
|
||||
HTML.CreateHtmlTestRow(msg, 'OK', CONST.ALL_PROCESSES_OK)
|
||||
elif (any(sub in service_name for sub in ['enb','rru','rcc','cu','du','gnb'])):
|
||||
logging.debug(f'\u001B[1m Analyzing XnB logfile {filename}\u001B[0m')
|
||||
logStatus = RAN.AnalyzeLogFile_eNB(filename, HTML, self.ran_checkers)
|
||||
if (logStatus < 0):
|
||||
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'KO', logStatus)
|
||||
isFailed = 1
|
||||
else:
|
||||
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK)
|
||||
else:
|
||||
logging.info(f'Skipping to analyze log for service name {service_name}')
|
||||
return isFailed
|
||||
# pyshark livecapture launches 2 processes:
|
||||
# * One using dumpcap -i lIfs -w - (ie redirecting the packets to STDOUT)
|
||||
# * One using tshark -i - -w loFile (ie capturing from STDIN from previous process)
|
||||
@@ -286,7 +407,7 @@ class Containerize():
|
||||
self.host = result.group(0)
|
||||
if self.host == 'Ubuntu':
|
||||
self.cli = 'docker'
|
||||
self.dockerfileprefix = '.ubuntu20'
|
||||
self.dockerfileprefix = '.ubuntu22'
|
||||
self.cliBuildOptions = ''
|
||||
elif self.host == 'Red Hat':
|
||||
self.cli = 'sudo podman'
|
||||
@@ -319,23 +440,17 @@ class Containerize():
|
||||
imageNames.append(('oai-gnb', 'gNB', 'oai-gnb-asan', '--build-arg "BUILD_OPTION=--sanitize"'))
|
||||
imageNames.append(('oai-nr-ue', 'nrUE', 'oai-nr-ue-asan', '--build-arg "BUILD_OPTION=--sanitize"'))
|
||||
imageNames.append(('oai-nr-cuup', 'nr-cuup', 'oai-nr-cuup-asan', '--build-arg "BUILD_OPTION=--sanitize"'))
|
||||
imageNames.append(('ran-build-fhi72', 'build.fhi72', 'ran-build-fhi72', ''))
|
||||
imageNames.append(('oai-gnb', 'gNB.fhi72', 'oai-gnb-fhi72', ''))
|
||||
result = re.search('build_cross_arm64', self.imageKind)
|
||||
if result is not None:
|
||||
self.dockerfileprefix = '.ubuntu20.cross-arm64'
|
||||
self.dockerfileprefix = '.ubuntu22.cross-arm64'
|
||||
|
||||
# Workaround for some servers, we need to erase completely the workspace
|
||||
if self.forcedWorkspaceCleanup:
|
||||
cmd.run(f'sudo -S rm -Rf {lSourcePath}')
|
||||
|
||||
self.testCase_id = HTML.testCase_id
|
||||
|
||||
CreateWorkspace(cmd, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
|
||||
|
||||
cmd.cd(lSourcePath)
|
||||
# if asterix, copy the entitlement and subscription manager configurations
|
||||
if self.host == 'Red Hat':
|
||||
cmd.run('mkdir -p ./etc-pki-entitlement ./rhsm-conf ./rhsm-ca')
|
||||
cmd.run('cp /etc/rhsm/rhsm.conf ./rhsm-conf/')
|
||||
cmd.run('cp /etc/rhsm/ca/redhat-uep.pem ./rhsm-ca/')
|
||||
cmd.run('mkdir -p ./etc-pki-entitlement')
|
||||
cmd.run('cp /etc/pki/entitlement/*.pem ./etc-pki-entitlement/')
|
||||
|
||||
baseImage = 'ran-base'
|
||||
@@ -409,13 +524,15 @@ class Containerize():
|
||||
# target images should use the proper ran-build image
|
||||
if image != 'ran-build' and "-asan" in name:
|
||||
cmd.run(f'sed -i -e "s#ran-build:latest#ran-build-asan:{imageTag}#" docker/Dockerfile.{pattern}{self.dockerfileprefix}')
|
||||
elif "fhi72" in name:
|
||||
cmd.run(f'sed -i -e "s#ran-build-fhi72:latest#ran-build-fhi72:{imageTag}#" docker/Dockerfile.{pattern}{self.dockerfileprefix}')
|
||||
elif image != 'ran-build':
|
||||
cmd.run(f'sed -i -e "s#ran-build:latest#ran-build:{imageTag}#" docker/Dockerfile.{pattern}{self.dockerfileprefix}')
|
||||
if image == 'oai-gnb-aerial':
|
||||
cmd.run('cp -f /opt/nvidia-ipc/nvipc_src.2023.11.28.tar.gz .')
|
||||
cmd.run('cp -f /opt/nvidia-ipc/nvipc_src.2024.05.23.tar.gz .')
|
||||
ret = cmd.run(f'{self.cli} build {self.cliBuildOptions} --target {image} --tag {name}:{imageTag} --file docker/Dockerfile.{pattern}{self.dockerfileprefix} {option} . > cmake_targets/log/{name}.log 2>&1', timeout=1200)
|
||||
if image == 'oai-gnb-aerial':
|
||||
cmd.run('rm -f nvipc_src.2023.11.28.tar.gz')
|
||||
cmd.run('rm -f nvipc_src.2024.05.23.tar.gz')
|
||||
if image == 'ran-build' and ret.returncode == 0:
|
||||
cmd.run(f"docker run --name test-log -d {name}:{imageTag} /bin/true")
|
||||
cmd.run(f"docker cp test-log:/oai-ran/cmake_targets/log/ cmake_targets/log/{name}/")
|
||||
@@ -445,7 +562,7 @@ class Containerize():
|
||||
cmd.run(f"{self.cli} image prune --force")
|
||||
|
||||
# Remove all intermediate build images and clean up
|
||||
cmd.run(f"{self.cli} image rm ran-build:{imageTag} ran-build-asan:{imageTag}")
|
||||
cmd.run(f"{self.cli} image rm ran-build:{imageTag} ran-build-asan:{imageTag} ran-build-fhi72:{imageTag} || true")
|
||||
cmd.run(f"{self.cli} volume prune --force")
|
||||
|
||||
# Remove some cached artifacts to prevent out of diskspace problem
|
||||
@@ -528,7 +645,7 @@ class Containerize():
|
||||
self.ranRepository = 'https://github.com/EpiSci/oai-lte-5g-multi-ue-proxy.git'
|
||||
self.ranAllowMerge = False
|
||||
self.ranTargetBranch = 'master'
|
||||
CreateWorkspace(mySSH, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
|
||||
mySSH.command('cd ' +lSourcePath, '\$', 3)
|
||||
# to prevent accidentally overwriting data that might be used later
|
||||
self.ranCommitID = oldRanCommidID
|
||||
self.ranRepository = oldRanRepository
|
||||
@@ -668,7 +785,7 @@ class Containerize():
|
||||
cmd.run(f'git diff HEAD..origin/develop -- cmake_targets/build_oai cmake_targets/tools/build_helper docker/Dockerfile.base{self.dockerfileprefix} | grep --colour=never -i INDEX')
|
||||
result = re.search('index', cmd.getBefore())
|
||||
if result is not None:
|
||||
baseTag = 'develop'
|
||||
baseTag = 'ci-temp'
|
||||
ret = cmd.run(f"docker image inspect --format=\'Size = {{{{.Size}}}} bytes\' {baseImage}:{baseTag}")
|
||||
if ret.returncode != 0:
|
||||
logging.error(f'No {baseImage} image present, cannot build tests')
|
||||
@@ -677,9 +794,11 @@ class Containerize():
|
||||
return False
|
||||
|
||||
# build ran-unittests image
|
||||
dockerfile = "ci-scripts/docker/Dockerfile.unittest.ubuntu20"
|
||||
dockerfile = "ci-scripts/docker/Dockerfile.unittest.ubuntu22"
|
||||
ret = cmd.run(f'docker build --progress=plain --tag ran-unittests:{baseTag} --file {dockerfile} . &> {lSourcePath}/cmake_targets/log/unittest-build.log')
|
||||
if ret.returncode != 0:
|
||||
build_log_name = f'build_log_{self.testCase_id}'
|
||||
CopyLogsToExecutor(cmd, lSourcePath, build_log_name)
|
||||
logging.error(f'Cannot build unit tests')
|
||||
HTML.CreateHtmlTestRow("Unit test build failed", 'KO', [dockerfile])
|
||||
HTML.CreateHtmlTabFooter(False)
|
||||
@@ -688,8 +807,8 @@ class Containerize():
|
||||
HTML.CreateHtmlTestRowQueue("Build unit tests", 'OK', [dockerfile])
|
||||
|
||||
# it worked, build and execute tests, and close connection
|
||||
ret = cmd.run(f'docker run -a STDOUT --rm ran-unittests:develop ctest --output-on-failure --no-label-summary -j$(nproc)')
|
||||
cmd.run(f'docker rmi ran-unittests:develop')
|
||||
ret = cmd.run(f'docker run -a STDOUT --rm ran-unittests:{baseTag} ctest --output-on-failure --no-label-summary -j$(nproc)')
|
||||
cmd.run(f'docker rmi ran-unittests:{baseTag}')
|
||||
build_log_name = f'build_log_{self.testCase_id}'
|
||||
CopyLogsToExecutor(cmd, lSourcePath, build_log_name)
|
||||
cmd.close()
|
||||
@@ -856,7 +975,7 @@ class Containerize():
|
||||
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
||||
return True
|
||||
|
||||
def DeployObject(self, HTML, EPC):
|
||||
def Create_Workspace(self,HTML):
|
||||
if self.eNB_serverId[self.eNB_instance] == '0':
|
||||
lIpAddr = self.eNBIPAddress
|
||||
lUserName = self.eNBUserName
|
||||
@@ -875,335 +994,76 @@ class Containerize():
|
||||
if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
|
||||
HELP.GenericHelp(CONST.Version)
|
||||
sys.exit('Insufficient Parameter')
|
||||
|
||||
logging.info(f"Running on server {lIpAddr}")
|
||||
sshSession = cls_cmd.getConnection(lIpAddr)
|
||||
|
||||
CreateWorkspace(sshSession, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
|
||||
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
||||
|
||||
def DeployObject(self, HTML, EPC):
|
||||
lIpAddr, lUserName, lPassWord, lSourcePath = GetCredentials(self)
|
||||
if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
|
||||
HELP.GenericHelp(CONST.Version)
|
||||
sys.exit('Insufficient Parameter')
|
||||
logging.debug('\u001B[1m Deploying OAI Object on server: ' + lIpAddr + '\u001B[0m')
|
||||
self.deployKind[self.eNB_instance] = True
|
||||
|
||||
mySSH = SSH.SSHConnection()
|
||||
mySSH.open(lIpAddr, lUserName, lPassWord)
|
||||
|
||||
CreateWorkspace(mySSH, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
|
||||
|
||||
mySSH.command('cd ' + lSourcePath + '/' + self.yamlPath[self.eNB_instance], '\$', 5)
|
||||
mySSH.command('cp docker-compose.y*ml ci-docker-compose.yml', '\$', 5)
|
||||
for image in IMAGES:
|
||||
imageTag = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||
mySSH.command(f'sed -i -e "s#image: {image}:latest#image: oai-ci/{imageTag}#" ci-docker-compose.yml', '\$', 2)
|
||||
|
||||
# Currently support only one
|
||||
svcName = self.services[self.eNB_instance]
|
||||
if svcName == '':
|
||||
logging.warning('no service name given: starting all services in ci-docker-compose.yml!')
|
||||
|
||||
mySSH.command(f'docker compose --file ci-docker-compose.yml up -d -- {svcName}', '\$', 30)
|
||||
|
||||
# Checking Status
|
||||
grep = ''
|
||||
if svcName != '': grep = f' | grep -A3 --color=never {svcName}'
|
||||
mySSH.command(f'docker compose --file ci-docker-compose.yml config {grep}', '\$', 5)
|
||||
result = re.search('container_name: (?P<container_name>[a-zA-Z0-9\-\_]+)', mySSH.getBefore())
|
||||
unhealthyNb = 0
|
||||
healthyNb = 0
|
||||
startingNb = 0
|
||||
containerName = ''
|
||||
usedImage = ''
|
||||
imageInfo = ''
|
||||
if result is not None:
|
||||
containerName = result.group('container_name')
|
||||
time.sleep(5)
|
||||
cnt = 0
|
||||
while (cnt < 3):
|
||||
mySSH.command('docker inspect --format="{{.State.Health.Status}}" ' + containerName, '\$', 5)
|
||||
unhealthyNb = mySSH.getBefore().count('unhealthy')
|
||||
healthyNb = mySSH.getBefore().count('healthy') - unhealthyNb
|
||||
startingNb = mySSH.getBefore().count('starting')
|
||||
if healthyNb == 1:
|
||||
cnt = 10
|
||||
else:
|
||||
time.sleep(10)
|
||||
cnt += 1
|
||||
|
||||
mySSH.command('docker inspect --format="ImageUsed: {{.Config.Image}}" ' + containerName, '\$', 5)
|
||||
for stdoutLine in mySSH.getBefore().split('\n'):
|
||||
if stdoutLine.count('ImageUsed: oai-ci'):
|
||||
usedImage = stdoutLine.replace('ImageUsed: oai-ci', 'oai-ci').strip()
|
||||
logging.debug('Used image is ' + usedImage)
|
||||
if usedImage != '':
|
||||
mySSH.command('docker image inspect --format "* Size = {{.Size}} bytes\n* Creation = {{.Created}}\n* Id = {{.Id}}" ' + usedImage, '\$', 5, silent=True)
|
||||
for stdoutLine in mySSH.getBefore().split('\n'):
|
||||
if re.search('Size = [0-9]', stdoutLine) is not None:
|
||||
imageInfo += stdoutLine.strip() + '\n'
|
||||
if re.search('Creation = [0-9]', stdoutLine) is not None:
|
||||
imageInfo += stdoutLine.strip() + '\n'
|
||||
if re.search('Id = sha256', stdoutLine) is not None:
|
||||
imageInfo += stdoutLine.strip() + '\n'
|
||||
logging.debug(' -- ' + str(healthyNb) + ' healthy container(s)')
|
||||
logging.debug(' -- ' + str(unhealthyNb) + ' unhealthy container(s)')
|
||||
logging.debug(' -- ' + str(startingNb) + ' still starting container(s)')
|
||||
|
||||
self.testCase_id = HTML.testCase_id
|
||||
self.eNB_logFile[self.eNB_instance] = 'enb_' + self.testCase_id + '.log'
|
||||
|
||||
status = False
|
||||
if healthyNb == 1:
|
||||
cnt = 0
|
||||
while (cnt < 20):
|
||||
mySSH.command('docker logs ' + containerName + ' | egrep --text --color=never -i "wait|sync|Starting|ready"', '\$', 30)
|
||||
result = re.search('got sync|Starting E1AP at CU UP|Starting F1AP at CU|Got sync|Waiting for RUs to be configured|cuPHYController initialized|Received CONFIG.response, gNB is ready', mySSH.getBefore())
|
||||
if result is None:
|
||||
time.sleep(6)
|
||||
cnt += 1
|
||||
else:
|
||||
cnt = 100
|
||||
status = True
|
||||
logging.info('\u001B[1m Deploying OAI object Pass\u001B[0m')
|
||||
else:
|
||||
# containers are unhealthy, so we won't start. However, logs are stored at the end
|
||||
# in UndeployObject so we here store the logs of the unhealthy container to report it
|
||||
logfilename = f'{lSourcePath}/cmake_targets/log/{self.eNB_logFile[self.eNB_instance]}'
|
||||
mySSH.command(f'docker logs {containerName} > {logfilename}', '\$', 30)
|
||||
mySSH.copyin(lIpAddr, lUserName, lPassWord, logfilename, '.')
|
||||
mySSH = cls_cmd.getConnection(lIpAddr, f'{lSourcePath}/{self.yamlPath[self.eNB_instance]}')
|
||||
logging.info(f'Current working directory: {lSourcePath}/{self.yamlPath[self.eNB_instance]}')
|
||||
ReTagImages(mySSH,IMAGES,self.ranCommitID, self.ranBranch, self.ranAllowMerge, self.displayedNewTags)
|
||||
deployStatus,allServices = DeployServices(mySSH,self.services[self.eNB_instance])
|
||||
if deployStatus != 0:
|
||||
mySSH.close()
|
||||
self.exitStatus = 1
|
||||
logging.error('Could not deploy')
|
||||
HTML.CreateHtmlTestRow('Could not deploy', 'KO', CONST.ALL_PROCESSES_OK)
|
||||
return
|
||||
services_list = allServices if self.services[self.eNB_instance].split() == [] else self.services[self.eNB_instance].split()
|
||||
status = True
|
||||
imagesInfo=""
|
||||
for svcName in services_list:
|
||||
containerName = GetContainerName(mySSH, svcName)
|
||||
healthyNb,unhealthyNb = GetContainerHealth(mySSH,containerName)
|
||||
self.testCase_id = HTML.testCase_id
|
||||
self.eNB_logFile[self.eNB_instance] = f'{svcName}-{self.testCase_id}.log'
|
||||
if unhealthyNb:
|
||||
logging.warning(f"Deployment Failed: Trying to copy container logs {self.eNB_logFile[self.eNB_instance]}")
|
||||
CopyinContainerLog(mySSH,lSourcePath,self.yamlPath[0].split('/'),containerName,self.eNB_logFile[self.eNB_instance])
|
||||
status = False
|
||||
imagesInfo += (GetImageInfo(mySSH, containerName))
|
||||
mySSH.close()
|
||||
|
||||
message = ''
|
||||
if usedImage != '':
|
||||
message += f'Used Image = {usedImage} :\n'
|
||||
message += imageInfo
|
||||
else:
|
||||
message += 'Could not retrieve used image info!\n'
|
||||
imagesInfo += ("\n")
|
||||
if status:
|
||||
message += '\nHealthy deployment!\n'
|
||||
else:
|
||||
message += '\nUnhealthy deployment! -- Check logs for reason!\n'
|
||||
if status:
|
||||
HTML.CreateHtmlTestRowQueue('N/A', 'OK', [message])
|
||||
imagesInfo += ("Healthy deployment!")
|
||||
HTML.CreateHtmlTestRowQueue('N/A', 'OK', [(imagesInfo)])
|
||||
else:
|
||||
self.exitStatus = 1
|
||||
HTML.CreateHtmlTestRowQueue('N/A', 'KO', [message])
|
||||
|
||||
imagesInfo += ("Unhealthy deployment! -- Check logs for reason!")
|
||||
HTML.CreateHtmlTestRowQueue('N/A', 'KO', [(imagesInfo)])
|
||||
|
||||
def UndeployObject(self, HTML, RAN):
|
||||
if self.eNB_serverId[self.eNB_instance] == '0':
|
||||
lIpAddr = self.eNBIPAddress
|
||||
lUserName = self.eNBUserName
|
||||
lPassWord = self.eNBPassword
|
||||
lSourcePath = self.eNBSourceCodePath
|
||||
elif self.eNB_serverId[self.eNB_instance] == '1':
|
||||
lIpAddr = self.eNB1IPAddress
|
||||
lUserName = self.eNB1UserName
|
||||
lPassWord = self.eNB1Password
|
||||
lSourcePath = self.eNB1SourceCodePath
|
||||
elif self.eNB_serverId[self.eNB_instance] == '2':
|
||||
lIpAddr = self.eNB2IPAddress
|
||||
lUserName = self.eNB2UserName
|
||||
lPassWord = self.eNB2Password
|
||||
lSourcePath = self.eNB2SourceCodePath
|
||||
lIpAddr, lUserName, lPassWord, lSourcePath = GetCredentials(self)
|
||||
if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
|
||||
HELP.GenericHelp(CONST.Version)
|
||||
sys.exit('Insufficient Parameter')
|
||||
logging.debug(f'\u001B[1m Undeploying OAI Object from server: {lIpAddr}\u001B[0m')
|
||||
mySSH = cls_cmd.getConnection(lIpAddr)
|
||||
yamlDir = f'{lSourcePath}/{self.yamlPath[self.eNB_instance]}'
|
||||
mySSH.run(f'cd {yamlDir}')
|
||||
svcName = self.services[self.eNB_instance]
|
||||
forceDown = False
|
||||
if svcName != '':
|
||||
logging.warning(f'service name given, but will stop all services in ci-docker-compose.yml!')
|
||||
svcName = ''
|
||||
|
||||
ret = mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml config --services')
|
||||
if ret.returncode != 0:
|
||||
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'KO', "cannot enumerate running services")
|
||||
self.exitStatus = 1
|
||||
return
|
||||
# first line has command, last line has next command prompt
|
||||
allServices = ret.stdout.splitlines()
|
||||
services = []
|
||||
for s in allServices:
|
||||
# outputs the hash if the container is running
|
||||
ret = mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml ps --all --quiet -- {s}')
|
||||
c = ret.stdout
|
||||
logging.debug(f'running service {s} with container id {c}')
|
||||
if ret.stdout != "" and ret.returncode == 0: # something is running for that service
|
||||
services.append((s, c))
|
||||
logging.info(f'stopping services {[s for s, _ in services]}')
|
||||
|
||||
services = GetRunningServices(mySSH, yamlDir)
|
||||
mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml stop -t3')
|
||||
copyin_res = True
|
||||
for service_name, container_id in services:
|
||||
# head -n -1 suppresses the final "X exited with status code Y"
|
||||
filename = f'{service_name}-{HTML.testCase_id}.log'
|
||||
mySSH.run(f'docker logs {container_id} &> {lSourcePath}/cmake_targets/log/{filename}')
|
||||
copyin_res = mySSH.copyin(f'{lSourcePath}/cmake_targets/log/{filename}', f'{filename}') and copyin_res
|
||||
|
||||
copyin_res = all(CopyinContainerLog(mySSH, lSourcePath, self.yamlPath[0].split('/'), container_id, f'{service_name}-{HTML.testCase_id}.log') for service_name, container_id in services)
|
||||
mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml down -v')
|
||||
|
||||
# Analyzing log file!
|
||||
if not copyin_res:
|
||||
HTML.htmleNBFailureMsg='Could not copy logfile(s) to analyze it!'
|
||||
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ENB_PROCESS_NOLOGFILE_TO_ANALYZE)
|
||||
self.exitStatus = 1
|
||||
# use function for UE log analysis, when oai-nr-ue container is used
|
||||
elif any(service_name == 'oai-nr-ue' or service_name == 'lte_ue0' for service_name, _ in services):
|
||||
self.exitStatus == 0
|
||||
logging.debug(f'Analyzing UE logfile {filename}')
|
||||
logStatus = cls_oaicitest.OaiCiTest().AnalyzeLogFile_UE(f'{filename}', HTML, RAN)
|
||||
if (logStatus < 0):
|
||||
HTML.CreateHtmlTestRow('UE log Analysis', 'KO', logStatus)
|
||||
self.exitStatus = 1
|
||||
else:
|
||||
HTML.CreateHtmlTestRow('UE log Analysis', 'OK', CONST.ALL_PROCESSES_OK)
|
||||
else:
|
||||
for service_name, _ in services:
|
||||
if service_name == 'nv-cubb':
|
||||
msg = 'Undeploy PNF/Nvidia CUBB'
|
||||
HTML.CreateHtmlTestRow(msg, 'OK', CONST.ALL_PROCESSES_OK)
|
||||
else:
|
||||
filename = f'{service_name}-{HTML.testCase_id}.log'
|
||||
logging.debug(f'\u001B[1m Analyzing logfile {filename}\u001B[0m')
|
||||
logStatus = RAN.AnalyzeLogFile_eNB(filename, HTML, self.ran_checkers)
|
||||
if (logStatus < 0):
|
||||
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'KO', logStatus)
|
||||
self.exitStatus = 1
|
||||
else:
|
||||
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK)
|
||||
# all the xNB run logs shall be on the server 0 for logCollecting
|
||||
if self.eNB_serverId[self.eNB_instance] != '0':
|
||||
mySSH.copyout(f'./*.log', f'{lSourcePath}/cmake_targets/', recursive=True)
|
||||
if self.exitStatus == 0:
|
||||
logging.info('\u001B[1m Undeploying OAI Object Pass\u001B[0m')
|
||||
else:
|
||||
logging.error('\u001B[1m Undeploying OAI Object Failed\u001B[0m')
|
||||
log_results = [CheckLogs(self, mySSH, self.yamlPath[0].split('/'), service_name, HTML, RAN) for service_name, _ in services]
|
||||
self.exitStatus = 1 if any(log_results) else 0
|
||||
logging.info('\u001B[1m Undeploying OAI Object Pass\u001B[0m') if self.exitStatus == 0 else logging.error('\u001B[1m Undeploying OAI Object Failed\u001B[0m')
|
||||
mySSH.close()
|
||||
|
||||
def DeployGenObject(self, HTML, RAN, UE):
|
||||
self.exitStatus = 0
|
||||
logging.debug('\u001B[1m Checking Services to deploy\u001B[0m')
|
||||
# Implicitly we are running locally
|
||||
myCmd = cls_cmd.LocalCmd(d = self.yamlPath[0])
|
||||
self.deployKind[0] = False
|
||||
cmd = 'docker-compose config --services'
|
||||
listServices = myCmd.run(cmd)
|
||||
if listServices.returncode != 0:
|
||||
myCmd.close()
|
||||
self.exitStatus = 1
|
||||
HTML.CreateHtmlTestRow('SVC not Found', 'KO', CONST.ALL_PROCESSES_OK)
|
||||
return
|
||||
for reqSvc in self.services[0].split(' '):
|
||||
res = re.search(reqSvc, listServices.stdout)
|
||||
if res is None:
|
||||
logging.error(reqSvc + ' not found in specified docker-compose')
|
||||
self.exitStatus = 1
|
||||
if (self.exitStatus == 1):
|
||||
myCmd.close()
|
||||
HTML.CreateHtmlTestRow('SVC not Found', 'KO', CONST.ALL_PROCESSES_OK)
|
||||
return
|
||||
cmd = 'cp docker-compose.y*ml docker-compose-ci.yml'
|
||||
myCmd.run(cmd, silent=self.displayedNewTags)
|
||||
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup']
|
||||
for image in imageNames:
|
||||
tagToUse = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||
# In the scenario, for 5G images, we have the choice of either pulling normal images
|
||||
# or -asan images. We need to detect which kind we did pull.
|
||||
if image == 'oai-gnb' or image == 'oai-nr-ue' or image == 'oai-nr-cuup':
|
||||
ret = myCmd.run(f'docker image inspect oai-ci/{tagToUse}', reportNonZero=False, silent=self.displayedNewTags)
|
||||
if ret.returncode != 0:
|
||||
tagToUse = tagToUse.replace('oai-gnb', 'oai-gnb-asan')
|
||||
tagToUse = tagToUse.replace('oai-nr-ue', 'oai-nr-ue-asan')
|
||||
tagToUse = tagToUse.replace('oai-nr-cuup', 'oai-nr-cuup-asan')
|
||||
if not self.displayedNewTags:
|
||||
logging.debug(f'\u001B[1m Using sanitized version of {image} with {tagToUse}\u001B[0m')
|
||||
cmd = f'sed -i -e "s@oaisoftwarealliance/{image}:develop@oai-ci/{tagToUse}@" docker-compose-ci.yml'
|
||||
myCmd.run(cmd, silent=self.displayedNewTags)
|
||||
self.displayedNewTags = True
|
||||
|
||||
cmd = f'docker-compose -f docker-compose-ci.yml up -d {self.services[0]}'
|
||||
deployStatus = myCmd.run(cmd, timeout=100)
|
||||
if deployStatus.returncode != 0:
|
||||
myCmd.close()
|
||||
self.exitStatus = 1
|
||||
logging.error('Could not deploy')
|
||||
HTML.CreateHtmlTestRow('Could not deploy', 'KO', CONST.ALL_PROCESSES_OK)
|
||||
return
|
||||
|
||||
logging.debug('\u001B[1m Checking if all deployed healthy\u001B[0m')
|
||||
cmd = 'docker-compose -f docker-compose-ci.yml ps -a'
|
||||
count = 0
|
||||
healthy = 0
|
||||
restarting = 0
|
||||
newContainers = []
|
||||
while (count < 10):
|
||||
count += 1
|
||||
containerStatus = []
|
||||
deployStatus = myCmd.run(cmd, 30, silent=True)
|
||||
healthy = 0
|
||||
restarting = 0
|
||||
for state in deployStatus.stdout.split('\n'):
|
||||
state = state.strip()
|
||||
res = re.search('Name|NAME|----------', state)
|
||||
if res is not None:
|
||||
continue
|
||||
if len(state) == 0:
|
||||
continue
|
||||
res = re.search('^(?P<container_name>[a-zA-Z0-9\-\_]+) ', state)
|
||||
if res is not None:
|
||||
cName = res.group('container_name')
|
||||
found = False
|
||||
for alreadyDeployed in self.deployedContainers:
|
||||
if cName == alreadyDeployed:
|
||||
found = True
|
||||
if not found:
|
||||
newContainers.append(cName)
|
||||
self.deployedContainers.append(cName)
|
||||
if re.search('\(healthy\)', state) is not None:
|
||||
healthy += 1
|
||||
if re.search('rfsim4g-db-init.*Exit 0', state) is not None or re.search('rfsim4g-db-init.*Exited \(0\)', state) is not None:
|
||||
myCmd.run('docker rm -f rfsim4g-db-init', timeout=30, silent=True, reportNonZero=False)
|
||||
if re.search('l2sim4g-db-init.*Exit 0', state) is not None or re.search('l2sim4g-db-init.*Exited \(0\)', state) is not None:
|
||||
myCmd.run('docker rm -f l2sim4g-db-init', timeout=30, silent=True, reportNonZero=False)
|
||||
if re.search('Restarting', state) is None:
|
||||
containerStatus.append(state)
|
||||
else:
|
||||
restarting += 1
|
||||
if healthy == self.nb_healthy[0] and restarting == 0:
|
||||
count = 100
|
||||
else:
|
||||
time.sleep(10)
|
||||
|
||||
html_cell = ''
|
||||
for newCont in newContainers:
|
||||
if newCont == 'rfsim4g-db-init':
|
||||
continue
|
||||
cmd = 'docker inspect -f "{{.Config.Image}}" ' + newCont
|
||||
imageInspect = myCmd.run(cmd, timeout=30, silent=True)
|
||||
imageName = str(imageInspect.stdout).strip()
|
||||
cmd = 'docker image inspect --format \'{{.RepoTags}}\t{{.Size}} bytes\t{{index (split .Created ".") 0}}\n{{.Id}}\' ' + imageName
|
||||
imageInspect = myCmd.run(cmd, 30, silent=True)
|
||||
html_cell += imageInspect.stdout + '\n'
|
||||
myCmd.close()
|
||||
|
||||
for cState in containerStatus:
|
||||
html_cell += cState + '\n'
|
||||
if count == 100 and healthy == self.nb_healthy[0]:
|
||||
if self.tsharkStarted == False:
|
||||
logging.debug('Starting tshark on public network')
|
||||
self.CaptureOnDockerNetworks()
|
||||
HTML.CreateHtmlTestRowQueue('n/a', 'OK', [html_cell])
|
||||
for cState in containerStatus:
|
||||
logging.debug(cState)
|
||||
logging.info('\u001B[1m Deploying OAI Object(s) PASS\u001B[0m')
|
||||
else:
|
||||
HTML.CreateHtmlTestRowQueue('Could not deploy in time', 'KO', [html_cell])
|
||||
for cState in containerStatus:
|
||||
logging.debug(cState)
|
||||
logging.error('\u001B[1m Deploying OAI Object(s) FAILED\u001B[0m')
|
||||
HTML.testCase_id = 'AUTO-UNDEPLOY'
|
||||
UE.testCase_id = 'AUTO-UNDEPLOY'
|
||||
HTML.desc = 'Automatic Undeployment'
|
||||
UE.desc = 'Automatic Undeployment'
|
||||
UE.ShowTestID()
|
||||
self.UndeployGenObject(HTML, RAN, UE)
|
||||
self.exitStatus = 1
|
||||
|
||||
def CaptureOnDockerNetworks(self):
|
||||
myCmd = cls_cmd.LocalCmd(d = self.yamlPath[0])
|
||||
cmd = 'docker-compose -f docker-compose-ci.yml config | grep com.docker.network.bridge.name | sed -e "s@^.*name: @@"'
|
||||
@@ -1232,116 +1092,6 @@ class Containerize():
|
||||
x.daemon = True
|
||||
x.start()
|
||||
|
||||
def UndeployGenObject(self, HTML, RAN, UE):
|
||||
self.exitStatus = 0
|
||||
# Implicitly we are running locally
|
||||
ymlPath = self.yamlPath[0].split('/')
|
||||
logPath = '../cmake_targets/log/' + ymlPath[1]
|
||||
myCmd = cls_cmd.LocalCmd(d = self.yamlPath[0])
|
||||
cmd = 'cp docker-compose.y*ml docker-compose-ci.yml'
|
||||
myCmd.run(cmd)
|
||||
|
||||
# check which containers are running for log recovery later
|
||||
cmd = 'docker-compose -f docker-compose-ci.yml ps --all'
|
||||
deployStatusLogs = myCmd.run(cmd, timeout=30)
|
||||
|
||||
# Stop the containers to shut down objects
|
||||
logging.debug('\u001B[1m Stopping containers \u001B[0m')
|
||||
cmd = 'docker-compose -f docker-compose-ci.yml stop -t3'
|
||||
deployStatus = myCmd.run(cmd, timeout=100)
|
||||
if deployStatus.returncode != 0:
|
||||
myCmd.close()
|
||||
self.exitStatus = 1
|
||||
logging.error('Could not stop containers')
|
||||
HTML.CreateHtmlTestRow('Could not stop', 'KO', CONST.ALL_PROCESSES_OK)
|
||||
logging.error('\u001B[1m Undeploying OAI Object(s) FAILED\u001B[0m')
|
||||
return
|
||||
|
||||
anyLogs = False
|
||||
logging.debug('Working dir is now . (ie ci-scripts)')
|
||||
myCmd2 = cls_cmd.LocalCmd()
|
||||
myCmd2.run(f'mkdir -p {logPath}')
|
||||
myCmd2.cd(logPath)
|
||||
for state in deployStatusLogs.stdout.split('\n'):
|
||||
res = re.search('Name|NAME|----------', state)
|
||||
if res is not None:
|
||||
continue
|
||||
if len(state) == 0:
|
||||
continue
|
||||
res = re.search('^(?P<container_name>[a-zA-Z0-9\-\_]+) ', state)
|
||||
if res is not None:
|
||||
anyLogs = True
|
||||
cName = res.group('container_name')
|
||||
cmd = f'docker logs {cName} > {cName}.log 2>&1'
|
||||
myCmd2.run(cmd, timeout=30, reportNonZero=False)
|
||||
if re.search('magma-mme', cName) is not None:
|
||||
cmd = f'docker cp -L {cName}:/var/log/mme.log {cName}-full.log'
|
||||
myCmd2.run(cmd, timeout=30, reportNonZero=False)
|
||||
fullStatus = True
|
||||
if anyLogs:
|
||||
# Analyzing log file(s)!
|
||||
listOfPossibleRanContainers = ['enb*', 'gnb*', 'cu*', 'du*']
|
||||
for container in listOfPossibleRanContainers:
|
||||
filenames = './*-oai-' + container + '.log'
|
||||
cmd = f'ls {filenames}'
|
||||
lsStatus = myCmd2.run(cmd, silent=True, reportNonZero=False)
|
||||
if lsStatus.returncode != 0:
|
||||
continue
|
||||
filenames = str(lsStatus.stdout).strip()
|
||||
|
||||
for filename in filenames.split('\n'):
|
||||
logging.debug('\u001B[1m Analyzing xNB logfile ' + filename + ' \u001B[0m')
|
||||
logStatus = RAN.AnalyzeLogFile_eNB(f'{logPath}/{filename}', HTML, self.ran_checkers)
|
||||
if (logStatus < 0):
|
||||
fullStatus = False
|
||||
self.exitStatus = 1
|
||||
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'KO', logStatus)
|
||||
else:
|
||||
HTML.CreateHtmlTestRow(RAN.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK)
|
||||
|
||||
listOfPossibleUeContainers = ['lte-ue*', 'nr-ue*']
|
||||
for container in listOfPossibleUeContainers:
|
||||
filenames = './*-oai-' + container + '.log'
|
||||
cmd = f'ls {filenames}'
|
||||
lsStatus = myCmd2.run(cmd, silent=True, reportNonZero=False)
|
||||
if lsStatus.returncode != 0:
|
||||
continue
|
||||
filenames = str(lsStatus.stdout).strip()
|
||||
|
||||
for filename in filenames.split('\n'):
|
||||
logging.debug('\u001B[1m Analyzing UE logfile ' + filename + ' \u001B[0m')
|
||||
logStatus = UE.AnalyzeLogFile_UE(f'{logPath}/{filename}', HTML, RAN)
|
||||
if (logStatus < 0):
|
||||
fullStatus = False
|
||||
self.exitStatus = 1
|
||||
HTML.CreateHtmlTestRow('UE log Analysis', 'KO', logStatus)
|
||||
else:
|
||||
HTML.CreateHtmlTestRow('UE log Analysis', 'OK', CONST.ALL_PROCESSES_OK)
|
||||
myCmd2.close()
|
||||
if self.tsharkStarted:
|
||||
self.tsharkStarted = StopPySharkCapture(ymlPath[1])
|
||||
logging.debug('\u001B[1m Undeploying \u001B[0m')
|
||||
logging.debug(f'Working dir is back {self.yamlPath[0]}')
|
||||
cmd = 'docker-compose -f docker-compose-ci.yml down -v'
|
||||
deployStatus = myCmd.run(cmd, timeout=100)
|
||||
if deployStatus.returncode != 0:
|
||||
myCmd.close()
|
||||
self.exitStatus = 1
|
||||
logging.error('Could not undeploy')
|
||||
HTML.CreateHtmlTestRow('Could not undeploy', 'KO', CONST.ALL_PROCESSES_OK)
|
||||
logging.error('\u001B[1m Undeploying OAI Object(s) FAILED\u001B[0m')
|
||||
return
|
||||
|
||||
self.deployedContainers = []
|
||||
myCmd.close()
|
||||
|
||||
if fullStatus:
|
||||
HTML.CreateHtmlTestRow('n/a', 'OK', CONST.ALL_PROCESSES_OK)
|
||||
logging.info('\u001B[1m Undeploying OAI Object(s) PASS\u001B[0m')
|
||||
else:
|
||||
HTML.CreateHtmlTestRow('n/a', 'KO', CONST.ALL_PROCESSES_OK)
|
||||
logging.error('\u001B[1m Undeploying OAI Object(s) FAIL\u001B[0m')
|
||||
|
||||
def StatsFromGenObject(self, HTML):
|
||||
self.exitStatus = 0
|
||||
ymlPath = self.yamlPath[0].split('/')
|
||||
|
||||
@@ -41,14 +41,18 @@ import cls_cmd
|
||||
|
||||
class Module_UE:
|
||||
|
||||
def __init__(self, module_name, filename="ci_infra.yaml"):
|
||||
def __init__(self, module_name, node=None, filename="ci_infra.yaml"):
|
||||
with open(filename, 'r') as f:
|
||||
all_ues = yaml.load(f, Loader=yaml.FullLoader)
|
||||
m = all_ues.get(module_name)
|
||||
if m is None:
|
||||
raise Exception(f'no such module name "{module_name}" in "{filename}"')
|
||||
self.module_name = module_name
|
||||
self.host = m['Host']
|
||||
self.host = m['Host'] if m['Host'] != "%%current_host%%" else None
|
||||
if node is None and self.host is None:
|
||||
raise Exception(f'node not provided when needed')
|
||||
elif node is not None and self.host is None:
|
||||
self.host = node
|
||||
self.cmd_dict = {
|
||||
"attach": m.get('AttachScript'),
|
||||
"detach": m.get('DetachScript'),
|
||||
@@ -65,6 +69,8 @@ class Module_UE:
|
||||
self.logStore = m.get('LogStore')
|
||||
self.cmd_prefix = m.get('CmdPrefix')
|
||||
self.runIperf3Server = m.get('RunIperf3Server', True)
|
||||
self.namespace = m.get('Namespace')
|
||||
self.cnPath = m.get('CNPath')
|
||||
logging.info(f'initialized {self.module_name}@{self.host} from {filename}')
|
||||
|
||||
def __str__(self):
|
||||
@@ -190,6 +196,12 @@ class Module_UE:
|
||||
def getHost(self):
|
||||
return self.host
|
||||
|
||||
def getNamespace(self):
|
||||
return self.namespace
|
||||
|
||||
def getCNPath(self):
|
||||
return self.cnPath
|
||||
|
||||
def getRunIperf3Server(self):
|
||||
return self.runIperf3Server
|
||||
|
||||
|
||||
@@ -96,45 +96,44 @@ def Iperf_ComputeTime(args):
|
||||
return int(result.group('iperf_time'))
|
||||
|
||||
def Iperf_analyzeV3TCPJson(filename, iperf_tcp_rate_target):
|
||||
if (not os.path.isfile(filename)):
|
||||
return (False, 'Iperf3 TCP: Log file not present')
|
||||
if (os.path.getsize(filename)==0):
|
||||
return (False, 'Iperf3 TCP: Log file is empty')
|
||||
|
||||
with open(filename) as file:
|
||||
filename = json.load(file)
|
||||
try:
|
||||
sender_bitrate = round(filename['end']['streams'][0]['sender']['bits_per_second']/1000000,2)
|
||||
receiver_bitrate = round(filename['end']['streams'][0]['receiver']['bits_per_second']/1000000,2)
|
||||
except Exception as e:
|
||||
return (False, 'Could not compute Iperf3 bitrate!')
|
||||
|
||||
try:
|
||||
with open(filename) as f:
|
||||
results = json.load(f)
|
||||
sender_bitrate = round(results['end']['streams'][0]['sender']['bits_per_second'] / 1000000, 2)
|
||||
receiver_bitrate = round(results['end']['streams'][0]['receiver']['bits_per_second'] / 1000000, 2)
|
||||
except json.JSONDecodeError as e:
|
||||
return (False, f'Could not decode JSON log file {filename}: {e}')
|
||||
except KeyError as e:
|
||||
e_msg = results.get('error', f'error report not found in {filename}')
|
||||
return (False, f'While parsing Iperf3 results: missing key {e}, {e_msg}')
|
||||
except Exception as e:
|
||||
return (False, f'While parsing Iperf3 results: exception: {e}')
|
||||
snd_msg = f'Sender Bitrate : {sender_bitrate} Mbps'
|
||||
rcv_msg = f'Receiver Bitrate : {receiver_bitrate} Mbps'
|
||||
success = True
|
||||
if (iperf_tcp_rate_target is not None):
|
||||
if (int(receiver_bitrate) < int(iperf_tcp_rate_target)):
|
||||
rcv_msg += f" (too low! < {iperf_tcp_rate_target} Mbps)"
|
||||
success = False
|
||||
if iperf_tcp_rate_target is not None:
|
||||
success = float(receiver_bitrate) >= float(iperf_tcp_rate_target)
|
||||
if success:
|
||||
rcv_msg += f" (target: {iperf_tcp_rate_target})"
|
||||
else:
|
||||
rcv_msg += f" (target : {iperf_tcp_rate_target} Mbps)"
|
||||
rcv_msg += f" (too low! < {iperf_tcp_rate_target})"
|
||||
return(success, f'{snd_msg}\n{rcv_msg}')
|
||||
|
||||
def Iperf_analyzeV3BIDIRJson(filename):
|
||||
if (not os.path.isfile(filename)):
|
||||
return (False, 'Iperf3 Bidir TCP: Log file not present')
|
||||
if (os.path.getsize(filename)==0):
|
||||
return (False, 'Iperf3 Bidir TCP: Log file is empty')
|
||||
|
||||
with open(filename) as file:
|
||||
filename = json.load(file)
|
||||
try:
|
||||
sender_bitrate_ul = round(filename['end']['streams'][0]['sender']['bits_per_second']/1000000,2)
|
||||
receiver_bitrate_ul = round(filename['end']['streams'][0]['receiver']['bits_per_second']/1000000,2)
|
||||
sender_bitrate_dl = round(filename['end']['streams'][1]['sender']['bits_per_second']/1000000,2)
|
||||
receiver_bitrate_dl = round(filename['end']['streams'][1]['receiver']['bits_per_second']/1000000,2)
|
||||
except Exception as e:
|
||||
return (False, 'Could not compute BIDIR bitrate!')
|
||||
try:
|
||||
with open(filename) as f:
|
||||
results = json.load(f)
|
||||
sender_bitrate_ul = round(results['end']['streams'][0]['sender']['bits_per_second'] / 1000000, 2)
|
||||
receiver_bitrate_ul = round(results['end']['streams'][0]['receiver']['bits_per_second'] / 1000000, 2)
|
||||
sender_bitrate_dl = round(results['end']['streams'][1]['sender']['bits_per_second'] / 1000000, 2)
|
||||
receiver_bitrate_dl = round(results['end']['streams'][1]['receiver']['bits_per_second'] / 1000000, 2)
|
||||
except json.JSONDecodeError as e:
|
||||
return (False, f'Could not decode JSON log file: {e}')
|
||||
except KeyError as e:
|
||||
e_msg = results.get('error', f'error report not found in {filename}')
|
||||
return (False, f'While parsing Iperf3 results: missing key {e}, {e_msg}')
|
||||
except Exception as e:
|
||||
return (False, f'While parsing Iperf3 results: exception: {e}')
|
||||
|
||||
msg = f'Sender Bitrate DL : {sender_bitrate_dl} Mbps\n'
|
||||
msg += f'Receiver Bitrate DL : {receiver_bitrate_dl} Mbps\n'
|
||||
@@ -202,8 +201,6 @@ def Iperf_analyzeV2UDP(server_filename, iperf_bitrate_threshold, iperf_packetlos
|
||||
with open(server_filename, 'r') as server_file:
|
||||
for line in server_file.readlines():
|
||||
result = re.search(statusTemplate, str(line))
|
||||
if result is not None:
|
||||
break
|
||||
if result is None:
|
||||
return (False, 'Could not parse server report!')
|
||||
bitrate = float(result.group('bitrate'))
|
||||
@@ -283,6 +280,8 @@ class OaiCiTest():
|
||||
self.clean_repository = True
|
||||
self.air_interface=''
|
||||
self.ue_ids = []
|
||||
self.nodes = []
|
||||
self.svr_node = None
|
||||
self.svr_id = None
|
||||
self.cmd_prefix = '' # prefix before {lte,nr}-uesoftmodem
|
||||
|
||||
@@ -609,7 +608,7 @@ class OaiCiTest():
|
||||
self.AutoTerminateUEandeNB(HTML,RAN,EPC,CONTAINERS)
|
||||
|
||||
def AttachUE(self, HTML, RAN, EPC, CONTAINERS):
|
||||
ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids]
|
||||
ues = [cls_module.Module_UE(ue_id, server_name) for ue_id, server_name in zip(self.ue_ids, self.nodes)]
|
||||
with concurrent.futures.ThreadPoolExecutor() as executor:
|
||||
futures = [executor.submit(ue.attach) for ue in ues]
|
||||
attached = [f.result() for f in futures]
|
||||
@@ -624,7 +623,7 @@ class OaiCiTest():
|
||||
self.AutoTerminateUEandeNB(HTML, RAN, EPC, CONTAINERS)
|
||||
|
||||
def DetachUE(self, HTML):
|
||||
ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids]
|
||||
ues = [cls_module.Module_UE(ue_id, server_name) for ue_id, server_name in zip(self.ue_ids, self.nodes)]
|
||||
with concurrent.futures.ThreadPoolExecutor() as executor:
|
||||
futures = [executor.submit(ue.detach) for ue in ues]
|
||||
[f.result() for f in futures]
|
||||
@@ -665,7 +664,7 @@ class OaiCiTest():
|
||||
messages = [f.result() for f in futures]
|
||||
HTML.CreateHtmlTestRowQueue('NA', 'OK', messages)
|
||||
|
||||
def Ping_common(self, EPC, ue, RAN, printLock):
|
||||
def Ping_common(self, EPC, ue, RAN, CONTAINERS, printLock):
|
||||
# Launch ping on the EPC side (true for ltebox and old open-air-cn)
|
||||
ping_status = 0
|
||||
ueIP = ue.getIP()
|
||||
@@ -673,7 +672,11 @@ class OaiCiTest():
|
||||
return (False, f"UE {ue.getName()} has no IP address")
|
||||
ping_log_file = f'ping_{self.testCase_id}_{ue.getName()}.log'
|
||||
ping_time = re.findall("-c *(\d+)",str(self.ping_args))
|
||||
local_ping_log_file = f'{os.getcwd()}/{ping_log_file}'
|
||||
# Creating destination log folder if needed on the python executor workspace
|
||||
ymlPath = CONTAINERS.yamlPath[0].split('/')
|
||||
logPath = f'../cmake_targets/log/{ymlPath[2]}'
|
||||
os.system(f'mkdir -p {logPath}')
|
||||
local_ping_log_file = f'{logPath}/{ping_log_file}'
|
||||
# if has pattern %cn_ip%, replace with core IP address, else we assume the IP is present
|
||||
if re.search('%cn_ip%', self.ping_args):
|
||||
#target address is different depending on EPC type
|
||||
@@ -760,12 +763,11 @@ class OaiCiTest():
|
||||
|
||||
if self.ue_ids == []:
|
||||
raise Exception("no module names in self.ue_ids provided")
|
||||
|
||||
ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids]
|
||||
ues = [cls_module.Module_UE(ue_id, server_name) for ue_id, server_name in zip(self.ue_ids, self.nodes)]
|
||||
logging.debug(ues)
|
||||
pingLock = Lock()
|
||||
with concurrent.futures.ThreadPoolExecutor() as executor:
|
||||
futures = [executor.submit(self.Ping_common, EPC, ue, RAN, pingLock) for ue in ues]
|
||||
futures = [executor.submit(self.Ping_common, EPC, ue, RAN, CONTAINERS, pingLock) for ue in ues]
|
||||
results = [f.result() for f in futures]
|
||||
# each result in results is a tuple, first member goes to successes, second to messages
|
||||
successes, messages = map(list, zip(*results))
|
||||
@@ -790,10 +792,10 @@ class OaiCiTest():
|
||||
udpIperf = re.search('-u', iperf_opt) is not None
|
||||
bidirIperf = re.search('--bidir', iperf_opt) is not None
|
||||
client_filename = f'iperf_client_{self.testCase_id}_{ue.getName()}.log'
|
||||
server_filename = f'iperf_server_{self.testCase_id}_{ue.getName()}.log'
|
||||
ymlPath = CONTAINERS.yamlPath[0].split('/')
|
||||
logPath = f'../cmake_targets/log/{ymlPath[1]}'
|
||||
|
||||
logPath = f'../cmake_targets/log/{ymlPath[2]}'
|
||||
# Creating destination log folder if needed on the python executor workspace
|
||||
os.system(f'mkdir -p {logPath}')
|
||||
if udpIperf:
|
||||
target_bitrate, iperf_opt = Iperf_ComputeModifiedBW(idx, ue_num, self.iperf_profile, self.iperf_args)
|
||||
# note: for UDP testing we don't want to use json report - reports 0 Mbps received bitrate
|
||||
@@ -805,35 +807,29 @@ class OaiCiTest():
|
||||
# hack: the ADB UEs don't have iperf in $PATH, so we need to hardcode for the moment
|
||||
iperf_ue = '/data/local/tmp/iperf3' if re.search('adb', ue.getName()) else 'iperf3'
|
||||
ue_header = f'UE {ue.getName()} ({ueIP})'
|
||||
|
||||
if svr.getName() == "rfsim4g_enb_fembms":
|
||||
with cls_cmd.getConnection(ue.getHost()) as cmd_ue, cls_cmd.getConnection(EPC.IPAddress) as cmd_svr:
|
||||
port = 5002 + idx
|
||||
cmd_ue.run(f'{ue.getCmdPrefix()} iperf -B {ueIP} -s -u -i1 >> {server_filename} &', timeout=iperf_time*1.5)
|
||||
cmd_svr.run(f'{svr.getCmdPrefix()} iperf -c {ueIP} -B {svrIP} {iperf_opt} -i1 2>&1 | tee {client_filename}', timeout=iperf_time*1.5)
|
||||
cmd_ue.run(f'cp {client_filename} {logPath}/{client_filename}')
|
||||
cmd_ue.run(f'cp {server_filename} {logPath}/{server_filename}')
|
||||
status, msg = Iperf_analyzeV2UDP(server_filename, self.iperf_bitrate_threshold, self.iperf_packetloss_threshold, target_bitrate)
|
||||
# create log directory on executor node
|
||||
with cls_cmd.getConnection('localhost') as local:
|
||||
local.run(f'mkdir -p {logPath}')
|
||||
with cls_cmd.getConnection(ue.getHost()) as cmd_ue, cls_cmd.getConnection(EPC.IPAddress) as cmd_svr:
|
||||
port = 5002 + idx
|
||||
# note: some core setups start an iperf3 server automatically, indicated in ci_infra by runIperf3Server: False`
|
||||
t = iperf_time * 2.5
|
||||
cmd_ue.run(f'rm /tmp/{client_filename}', reportNonZero=False)
|
||||
if runIperf3Server:
|
||||
cmd_svr.run(f'{svr.getCmdPrefix()} nohup timeout -vk3 {t} iperf3 -s -B {svrIP} -p {port} -1 {jsonReport} &', timeout=t)
|
||||
cmd_ue.run(f'{ue.getCmdPrefix()} timeout -vk3 {t} {iperf_ue} -B {ueIP} -c {svrIP} -p {port} {iperf_opt} {jsonReport} {serverReport} -O 5 >> /tmp/{client_filename}', timeout=t)
|
||||
localPath = f'{os.getcwd()}'
|
||||
# note: copy iperf3 log to the directory for log collection, used by pipelines running on executor machine
|
||||
cmd_ue.copyin(f'/tmp/{client_filename}', f'{localPath}/{logPath}/{client_filename}')
|
||||
# note: copy iperf3 log to the current directory for log analysis and log collection
|
||||
cmd_ue.copyin(f'/tmp/{client_filename}', f'{localPath}/{client_filename}')
|
||||
cmd_ue.run(f'rm /tmp/{client_filename}', reportNonZero=False)
|
||||
if udpIperf:
|
||||
status, msg = Iperf_analyzeV3UDP(client_filename, self.iperf_bitrate_threshold, self.iperf_packetloss_threshold, target_bitrate)
|
||||
elif bidirIperf:
|
||||
status, msg = Iperf_analyzeV3BIDIRJson(client_filename)
|
||||
else:
|
||||
with cls_cmd.getConnection(ue.getHost()) as cmd_ue, cls_cmd.getConnection(EPC.IPAddress) as cmd_svr:
|
||||
port = 5002 + idx
|
||||
# note: some core setups start an iperf3 server automatically, indicated in ci_infra by runIperf3Server: False`
|
||||
if runIperf3Server:
|
||||
cmd_svr.run(f'{svr.getCmdPrefix()} nohup iperf3 -s -B {svrIP} -p {port} -1 {jsonReport} &', timeout=iperf_time*1.5)
|
||||
cmd_ue.run(f'rm /tmp/{client_filename}', reportNonZero=False)
|
||||
cmd_ue.run(f'{ue.getCmdPrefix()} {iperf_ue} -B {ueIP} -c {svrIP} -p {port} {iperf_opt} {jsonReport} {serverReport} -O 5 >> /tmp/{client_filename}', timeout=iperf_time*1.5)
|
||||
if svr.getHost() == 'localhost':
|
||||
cmd_ue.run(f'mkdir -p {logPath}')
|
||||
cmd_ue.run(f'cp /tmp/{client_filename} {logPath}/{client_filename}')
|
||||
cmd_ue.run(f'cp /tmp/{client_filename} {client_filename}')
|
||||
else:
|
||||
cmd_ue.copyin(f'/tmp/{client_filename}', client_filename)
|
||||
if udpIperf:
|
||||
status, msg = Iperf_analyzeV3UDP(client_filename, self.iperf_bitrate_threshold, self.iperf_packetloss_threshold, target_bitrate)
|
||||
elif bidirIperf:
|
||||
status, msg = Iperf_analyzeV3BIDIRJson(client_filename)
|
||||
else:
|
||||
status, msg = Iperf_analyzeV3TCPJson(client_filename, self.iperf_tcp_rate_target)
|
||||
status, msg = Iperf_analyzeV3TCPJson(client_filename, self.iperf_tcp_rate_target)
|
||||
|
||||
logging.info(f'\u001B[1;37;45m iperf result for {ue_header}\u001B[0m')
|
||||
for l in msg.split('\n'):
|
||||
@@ -856,9 +852,8 @@ class OaiCiTest():
|
||||
|
||||
if self.ue_ids == [] or self.svr_id == None:
|
||||
raise Exception("no module names in self.ue_ids or/and self.svr_id provided")
|
||||
|
||||
ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids]
|
||||
svr = cls_module.Module_UE(self.svr_id)
|
||||
ues = [cls_module.Module_UE(ue_id, server_name) for ue_id, server_name in zip(self.ue_ids, self.nodes)]
|
||||
svr = cls_module.Module_UE(self.svr_id,self.svr_node)
|
||||
logging.debug(ues)
|
||||
with concurrent.futures.ThreadPoolExecutor() as executor:
|
||||
futures = [executor.submit(self.Iperf_Module, EPC, ue, svr, RAN, i, len(ues), CONTAINERS) for i, ue in enumerate(ues)]
|
||||
@@ -871,10 +866,50 @@ class OaiCiTest():
|
||||
HTML.CreateHtmlTestRowQueue(self.iperf_args, 'KO', messages)
|
||||
self.AutoTerminateUEandeNB(HTML,RAN,EPC,CONTAINERS)
|
||||
|
||||
def Iperf2_Unidir(self,HTML,RAN,EPC,CONTAINERS):
|
||||
if self.ue_ids == [] or self.svr_id == None or len(self.ue_ids) != 1:
|
||||
raise Exception("no module names in self.ue_ids or/and self.svr_id provided, multi UE scenario not supported")
|
||||
ue = cls_module.Module_UE(self.ue_ids[0].strip(),self.nodes[0].strip())
|
||||
svr = cls_module.Module_UE(self.svr_id,self.svr_node)
|
||||
ueIP = ue.getIP()
|
||||
if not ueIP:
|
||||
return (False, f"UE {ue.getName()} has no IP address")
|
||||
svrIP = svr.getIP()
|
||||
if not svrIP:
|
||||
return (False, f"Iperf server {ue.getName()} has no IP address")
|
||||
server_filename = f'iperf_server_{self.testCase_id}_{ue.getName()}.log'
|
||||
ymlPath = CONTAINERS.yamlPath[0].split('/')
|
||||
logPath = f'../cmake_targets/log/{ymlPath[-1]}'
|
||||
iperf_time = Iperf_ComputeTime(self.iperf_args)
|
||||
target_bitrate, iperf_opt = Iperf_ComputeModifiedBW(0, 1, self.iperf_profile, self.iperf_args)
|
||||
t = iperf_time*2.5
|
||||
with cls_cmd.getConnection('localhost') as local:
|
||||
local.run(f'mkdir -p {logPath}')
|
||||
with cls_cmd.getConnection(ue.getHost()) as cmd_ue, cls_cmd.getConnection(EPC.IPAddress) as cmd_svr:
|
||||
cmd_ue.run(f'rm /tmp/{server_filename}', reportNonZero=False)
|
||||
cmd_ue.run(f'{ue.getCmdPrefix()} timeout -vk3 {t} iperf -B {ueIP} -s -u -i1 >> /tmp/{server_filename} &', timeout=t)
|
||||
cmd_svr.run(f'{svr.getCmdPrefix()} timeout -vk3 {t} iperf -c {ueIP} -B {svrIP} {iperf_opt} -i1', timeout=t)
|
||||
localPath = f'{os.getcwd()}'
|
||||
# note: copy iperf2 log to the directory for log collection
|
||||
cmd_ue.copyin(f'/tmp/{server_filename}', f'{localPath}/{logPath}/{server_filename}')
|
||||
# note: copy iperf2 log to the current directory for log analysis and log collection
|
||||
cmd_ue.copyin(f'/tmp/{server_filename}', f'{localPath}/{server_filename}')
|
||||
cmd_ue.run(f'rm /tmp/{server_filename}', reportNonZero=False)
|
||||
success, msg = Iperf_analyzeV2UDP(server_filename, self.iperf_bitrate_threshold, self.iperf_packetloss_threshold, target_bitrate)
|
||||
ue_header = f'UE {ue.getName()} ({ueIP})'
|
||||
logging.info(f'\u001B[1;37;45m iperf result for {ue_header}\u001B[0m')
|
||||
for l in msg.split('\n'):
|
||||
logging.info(f'\u001B[1;35m {l} \u001B[0m')
|
||||
if success:
|
||||
HTML.CreateHtmlTestRowQueue(self.iperf_args, 'OK', [f'{ue_header}\n{msg}'])
|
||||
else:
|
||||
HTML.CreateHtmlTestRowQueue(self.iperf_args, 'KO', [f'{ue_header}\n{msg}'])
|
||||
self.AutoTerminateUEandeNB(HTML,RAN,EPC,CONTAINERS)
|
||||
|
||||
def AnalyzeLogFile_UE(self, UElogFile,HTML,RAN):
|
||||
if (not os.path.isfile(f'./{UElogFile}')):
|
||||
if (not os.path.isfile(f'{UElogFile}')):
|
||||
return -1
|
||||
ue_log_file = open(f'./{UElogFile}', 'r')
|
||||
ue_log_file = open(f'{UElogFile}', 'r')
|
||||
exitSignalReceived = False
|
||||
foundAssertion = False
|
||||
msgAssertion = ''
|
||||
@@ -903,8 +938,11 @@ class OaiCiTest():
|
||||
global_status = CONST.ALL_PROCESSES_OK
|
||||
for line in ue_log_file.readlines():
|
||||
result = re.search('nr_synchro_time|Starting NR UE soft modem', str(line))
|
||||
sidelink = re.search('sl-mode', str(line))
|
||||
if result is not None:
|
||||
nrUEFlag = True
|
||||
if sidelink is not None:
|
||||
nrUEFlag = False
|
||||
if nrUEFlag:
|
||||
result = re.search('decode mib', str(line))
|
||||
if result is not None:
|
||||
|
||||
@@ -105,8 +105,7 @@ class StaticCodeAnalysis():
|
||||
else:
|
||||
full_ran_repo_name = self.ranRepository + '.git'
|
||||
|
||||
CreateWorkspace(cmd, lSourcePath, full_ran_repo_name, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
|
||||
|
||||
cmd.cd(lSourcePath)
|
||||
logDir = f'{lSourcePath}/cmake_targets/build_log_{self.testCase_id}'
|
||||
cmd.run(f'mkdir -p {logDir}')
|
||||
cmd.run('docker image rm oai-cppcheck:bionic oai-cppcheck:focal')
|
||||
@@ -218,9 +217,9 @@ class StaticCodeAnalysis():
|
||||
return 0
|
||||
|
||||
def LicenceAndFormattingCheck(self, HTML):
|
||||
if self.ranRepository == '' or self.ranBranch == '' or self.ranCommitID == '':
|
||||
HELP.GenericHelp(CONST.Version)
|
||||
sys.exit('Insufficient Parameter')
|
||||
# Workspace is no longer recreated from scratch.
|
||||
# It implies that this method shall be called last within a build pipeline
|
||||
# where workspace is already created
|
||||
lIpAddr = self.eNBIPAddress
|
||||
lUserName = self.eNBUserName
|
||||
lPassWord = self.eNBPassword
|
||||
@@ -232,14 +231,7 @@ class StaticCodeAnalysis():
|
||||
logging.debug('Building on server: ' + lIpAddr)
|
||||
cmd = cls_cmd.getConnection(lIpAddr)
|
||||
self.testCase_id = HTML.testCase_id
|
||||
# on RedHat/CentOS .git extension is mandatory
|
||||
result = re.search('([a-zA-Z0-9\:\-\.\/])+\.git', self.ranRepository)
|
||||
if result is not None:
|
||||
full_ran_repo_name = self.ranRepository.replace('git/', 'git')
|
||||
else:
|
||||
full_ran_repo_name = self.ranRepository + '.git'
|
||||
|
||||
CreateWorkspace(cmd, lSourcePath, full_ran_repo_name, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
|
||||
check_options = ''
|
||||
if self.ranAllowMerge:
|
||||
check_options = f'--build-arg MERGE_REQUEST=true --build-arg SRC_BRANCH={self.ranBranch}'
|
||||
@@ -252,7 +244,7 @@ class StaticCodeAnalysis():
|
||||
logDir = f'{lSourcePath}/cmake_targets/build_log_{self.testCase_id}'
|
||||
cmd.run(f'mkdir -p {logDir}')
|
||||
cmd.run('docker image rm oai-formatting-check:latest')
|
||||
cmd.run(f'docker build --target oai-formatting-check --tag oai-formatting-check:latest {check_options} --file {lSourcePath}/ci-scripts/docker/Dockerfile.formatting.bionic . > {logDir}/oai-formatting-check.txt 2>&1')
|
||||
cmd.run(f'docker build --target oai-formatting-check --tag oai-formatting-check:latest {check_options} --file {lSourcePath}/ci-scripts/docker/Dockerfile.formatting.bionic {lSourcePath} > {logDir}/oai-formatting-check.txt 2>&1')
|
||||
|
||||
cmd.run('docker image rm oai-formatting-check:latest')
|
||||
cmd.run('docker image prune --force')
|
||||
|
||||
@@ -22,8 +22,8 @@ gNBs =
|
||||
|
||||
tr_s_preference = "f1";
|
||||
|
||||
local_s_address = "192.168.68.194";
|
||||
remote_s_address = "192.168.68.195";
|
||||
local_s_address = "127.0.0.4";
|
||||
remote_s_address = "127.0.0.5";
|
||||
local_s_portc = 501;
|
||||
local_s_portd = 2153;
|
||||
remote_s_portc = 500;
|
||||
@@ -44,8 +44,8 @@ gNBs =
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.68.194";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.68.194";
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.109";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.109";
|
||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
}
|
||||
|
||||
@@ -23,8 +23,8 @@ gNBs =
|
||||
|
||||
tr_s_preference = "f1";
|
||||
|
||||
local_s_address = "192.168.68.194";
|
||||
remote_s_address = "192.168.68.195";
|
||||
local_s_address = "127.0.0.4";
|
||||
remote_s_address = "127.0.0.5";
|
||||
local_s_portc = 501;
|
||||
local_s_portd = 2153;
|
||||
remote_s_portc = 500;
|
||||
@@ -46,16 +46,16 @@ gNBs =
|
||||
(
|
||||
{
|
||||
type = "cp";
|
||||
ipv4_cucp = "192.168.68.194";
|
||||
ipv4_cucp = "127.0.0.4";
|
||||
port_cucp = 38462;
|
||||
ipv4_cuup = "192.168.68.196";
|
||||
ipv4_cuup = "127.0.0.6";
|
||||
port_cuup = 38462;
|
||||
}
|
||||
)
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.68.194";
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.109";
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
@@ -21,8 +21,8 @@ gNBs =
|
||||
|
||||
tr_s_preference = "f1";
|
||||
|
||||
local_s_address = "192.168.68.196";
|
||||
remote_s_address = "192.168.68.195";
|
||||
local_s_address = "127.0.0.6";
|
||||
remote_s_address = "127.0.0.5";
|
||||
local_s_portc = 501;
|
||||
local_s_portd = 2153;
|
||||
remote_s_portc = 500;
|
||||
@@ -40,15 +40,15 @@ gNBs =
|
||||
(
|
||||
{
|
||||
type = "up";
|
||||
ipv4_cucp = "192.168.68.194";
|
||||
ipv4_cuup = "192.168.68.196";
|
||||
ipv4_cucp = "127.0.0.4";
|
||||
ipv4_cuup = "127.0.0.6";
|
||||
}
|
||||
)
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.68.196";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.68.196";
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.109";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.109";
|
||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
}
|
||||
|
||||
@@ -206,14 +206,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
rfsimulator: {
|
||||
serveraddr = "server";
|
||||
|
||||
@@ -162,8 +162,8 @@ MACRLCs = (
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "f1";
|
||||
local_n_address = "192.168.68.195";
|
||||
remote_n_address = "192.168.68.194";
|
||||
local_n_address = "127.0.0.5";
|
||||
remote_n_address = "127.0.0.4";
|
||||
local_n_portc = 500;
|
||||
local_n_portd = 2153;
|
||||
remote_n_portc = 501;
|
||||
@@ -202,14 +202,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
log_config : {
|
||||
global_log_level = "info";
|
||||
|
||||
@@ -206,14 +206,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
rfsimulator: {
|
||||
serveraddr = "server";
|
||||
serverport = 4043;
|
||||
|
||||
@@ -169,8 +169,8 @@ MACRLCs = (
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "f1";
|
||||
local_n_address = "192.168.68.195";
|
||||
remote_n_address = "192.168.68.194";
|
||||
local_n_address = "127.0.0.5";
|
||||
remote_n_address = "127.0.0.4";
|
||||
local_n_portc = 500;
|
||||
local_n_portd = 2153;
|
||||
remote_n_portc = 501;
|
||||
@@ -207,14 +207,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
log_config : {
|
||||
global_log_level = "info";
|
||||
|
||||
@@ -209,14 +209,6 @@ rfsimulator: {
|
||||
serveraddr = "server";
|
||||
};
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
|
||||
@@ -85,7 +85,7 @@ gNBs =
|
||||
powerRampingStep = 1;
|
||||
#ra_ReponseWindow
|
||||
#1,2,4,8,10,20,40,80
|
||||
ra_ResponseWindow = 4;
|
||||
ra_ResponseWindow = 5;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
@@ -217,14 +217,6 @@ rfsimulator: {
|
||||
serveraddr = "server";
|
||||
};
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
|
||||
@@ -213,14 +213,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
|
||||
@@ -197,12 +197,6 @@ RUs = ({
|
||||
sdr_addrs = "addr=192.168.10.2,second_addr=192.168.20.2";
|
||||
});
|
||||
|
||||
THREAD_STRUCT = ({
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
});
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
|
||||
@@ -199,12 +199,6 @@ RUs = ({
|
||||
sdr_addrs = "addr=192.168.10.2,second_addr=192.168.20.2";
|
||||
});
|
||||
|
||||
THREAD_STRUCT = ({
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
});
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
|
||||
@@ -215,14 +215,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
|
||||
@@ -220,14 +220,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
|
||||
@@ -211,14 +211,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
rfsimulator :
|
||||
{
|
||||
|
||||
283
ci-scripts/conf_files/gnb.sa.band66.ntn.25prb.rfsim.conf
Normal file
283
ci-scripts/conf_files/gnb.sa.band66.ntn.25prb.rfsim.conf
Normal file
@@ -0,0 +1,283 @@
|
||||
Active_gNBs = ( "5G-GOA-gNB");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe00;
|
||||
gNB_name = "5G-GOA-gNB";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ({ sst = 1, sd = 0xffffff }) });
|
||||
nr_cellid = 12345678L;
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
sib1_tda = 5;
|
||||
min_rxtxtime = 6;
|
||||
disable_harq = 1;
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
#spCellConfigCommon
|
||||
|
||||
physCellId = 0;
|
||||
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# this is 2150.43 MHz + 14 PRBs@15kHz SCS (same as initial BWP), points to Subcarrier 0 of RB#10 of SSB block
|
||||
absoluteFrequencySSB = 430590;
|
||||
dl_frequencyBand = 66;
|
||||
# this is 2150.43 MHz
|
||||
dl_absoluteFrequencyPointA = 430086;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_subcarrierSpacing = 0;
|
||||
dl_carrierBandwidth = 25;
|
||||
#initialDownlinkBWP
|
||||
#genericParameters
|
||||
# this is RBstart=0,L=25 (275*(L-1))+RBstart
|
||||
initialDLBWPlocationAndBandwidth = 6600;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialDLBWPsubcarrierSpacing = 0;
|
||||
#pdcch-ConfigCommon
|
||||
initialDLBWPcontrolResourceSetZero = 2;
|
||||
initialDLBWPsearchSpaceZero = 0;
|
||||
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 66;
|
||||
# this is 1750.43 MHz
|
||||
ul_absoluteFrequencyPointA = 350086;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_subcarrierSpacing = 0;
|
||||
ul_carrierBandwidth = 25;
|
||||
pMax = 20;
|
||||
#initialUplinkBWP
|
||||
#genericParameters
|
||||
initialULBWPlocationAndBandwidth = 6600;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialULBWPsubcarrierSpacing = 0;
|
||||
#rach-ConfigCommon
|
||||
#rach-ConfigGeneric
|
||||
prach_ConfigurationIndex = 98;
|
||||
#prach_msg1_FDM
|
||||
#0 = one, 1=two, 2=four, 3=eight
|
||||
prach_msg1_FDM = 0;
|
||||
prach_msg1_FrequencyStart = 0;
|
||||
zeroCorrelationZoneConfig = 13;
|
||||
preambleReceivedTargetPower = -118;
|
||||
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
|
||||
preambleTransMax = 6;
|
||||
#powerRampingStep
|
||||
# 0=dB0,1=dB2,2=dB4,3=dB6
|
||||
powerRampingStep = 1;
|
||||
#ra_ReponseWindow
|
||||
#1,2,4,8,10,20,40,80
|
||||
ra_ResponseWindow = 4;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
ra_ContentionResolutionTimer = 7;
|
||||
rsrp_ThresholdSSB = 19;
|
||||
#prach-RootSequenceIndex_PR
|
||||
#1 = 839, 2 = 139
|
||||
prach_RootSequenceIndex_PR = 2;
|
||||
prach_RootSequenceIndex = 1;
|
||||
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
||||
#
|
||||
msg1_SubcarrierSpacing = 0;
|
||||
# restrictedSetConfig
|
||||
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
||||
restrictedSetConfig = 0;
|
||||
|
||||
msg3_DeltaPreamble = 1;
|
||||
p0_NominalWithGrant =-90;
|
||||
|
||||
# pucch-ConfigCommon setup :
|
||||
# pucchGroupHopping
|
||||
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 40;
|
||||
p0_nominal = -90;
|
||||
# ssb_PositionsInBurs_BitmapPR
|
||||
# 1=short, 2=medium, 3=long
|
||||
ssb_PositionsInBurst_PR = 2;
|
||||
ssb_PositionsInBurst_Bitmap = 1;
|
||||
|
||||
# ssb_periodicityServingCell
|
||||
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||
ssb_periodicityServingCell = 2;
|
||||
|
||||
# dmrs_TypeA_position
|
||||
# 0 = pos2, 1 = pos3
|
||||
dmrs_TypeA_Position = 0;
|
||||
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
subcarrierSpacing = 0;
|
||||
|
||||
|
||||
#tdd-UL-DL-ConfigurationCommon
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
referenceSubcarrierSpacing = 0;
|
||||
# pattern1
|
||||
# dl_UL_TransmissionPeriodicity
|
||||
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||
dl_UL_TransmissionPeriodicity = 6;
|
||||
nrofDownlinkSlots = 7;
|
||||
nrofDownlinkSymbols = 6;
|
||||
nrofUplinkSlots = 2;
|
||||
nrofUplinkSymbols = 4;
|
||||
|
||||
ssPBCH_BlockPower = -25;
|
||||
|
||||
#ext2
|
||||
#ntn_Config_r17
|
||||
cellSpecificKoffset_r17 = 478;
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
TIMERS :
|
||||
{
|
||||
sr_ProhibitTimer = 0;
|
||||
sr_TransMax = 64;
|
||||
sr_ProhibitTimer_v1700 = 512;
|
||||
t300 = 2000;
|
||||
t301 = 2000;
|
||||
t319 = 2000;
|
||||
};
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
# Number of streams to use in input/output
|
||||
SCTP_INSTREAMS = 2;
|
||||
SCTP_OUTSTREAMS = 2;
|
||||
};
|
||||
|
||||
|
||||
////////// AMF parameters:
|
||||
amf_ip_address = ({ ipv4 = "192.168.71.132"; });
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.71.140/26";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.71.140/26";
|
||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
MACRLCs = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "local_RRC";
|
||||
pusch_TargetSNRx10 = 150;
|
||||
pucch_TargetSNRx10 = 200;
|
||||
}
|
||||
);
|
||||
|
||||
L1s = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "local_mac";
|
||||
prach_dtx_threshold = 120;
|
||||
pucch0_dtx_threshold = 150;
|
||||
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
|
||||
}
|
||||
);
|
||||
|
||||
RUs = (
|
||||
{
|
||||
local_rf = "yes";
|
||||
nb_tx = 1;
|
||||
nb_rx = 1;
|
||||
att_tx = 0;
|
||||
att_rx = 0;
|
||||
bands = [7];
|
||||
max_pdschReferenceSignalPower = -27;
|
||||
max_rxgain = 114;
|
||||
sf_extension = 0;
|
||||
eNB_instances = [0];
|
||||
##beamforming 1x2 matrix: 1 layer x 2 antennas
|
||||
bf_weights = [0x00007fff, 0x0000];
|
||||
##beamforming 1x4 matrix: 1 layer x 4 antennas
|
||||
#bf_weights = [0x00007fff, 0x0000,0x0000, 0x0000];
|
||||
## beamforming 2x2 matrix:
|
||||
# bf_weights = [0x00007fff, 0x00000000, 0x00000000, 0x00007fff];
|
||||
## beamforming 4x4 matrix:
|
||||
#bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000, 0x00000000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff, 0x0000, 0x0000, 0x0000, 0x0000, 0x00007fff];
|
||||
sdr_addrs = "type=x300";
|
||||
clock_src = "internal";
|
||||
# if_freq = 3700000000L;
|
||||
# if_offset = 1000000;
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_DISABLE";
|
||||
}
|
||||
);
|
||||
|
||||
rfsimulator :
|
||||
{
|
||||
serveraddr = "server";
|
||||
serverport = 4043;
|
||||
options = (); #("saviq"); or/and "chanmod"
|
||||
modelname = "AWGN";
|
||||
IQfile = "/tmp/rfsimulator.iqs";
|
||||
};
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nea0, nea1, nea2, nea3
|
||||
ciphering_algorithms = ( "nea0" );
|
||||
|
||||
# preferred integrity algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nia0, nia1, nia2, nia3
|
||||
integrity_algorithms = ( "nia2", "nia0" );
|
||||
|
||||
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
|
||||
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
|
||||
drb_ciphering = "yes";
|
||||
drb_integrity = "no";
|
||||
};
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
hw_log_level ="info";
|
||||
phy_log_level ="info";
|
||||
mac_log_level ="info";
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
ngap_log_level ="debug";
|
||||
f1ap_log_level ="debug";
|
||||
};
|
||||
|
||||
@@ -28,11 +28,11 @@ gNBs =
|
||||
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# this is 2150 MHz + 14 PRBs@15kHz SCS (same as initial BWP), points to Subcarrier 0 of RB#10 of SSB block
|
||||
# this is 2150.43 MHz + 14 PRBs@15kHz SCS (same as initial BWP), points to Subcarrier 0 of RB#10 of SSB block
|
||||
absoluteFrequencySSB = 430590;
|
||||
dl_frequencyBand = 66;
|
||||
# this is 2150 MHz
|
||||
dl_absoluteFrequencyPointA = 430002;
|
||||
# this is 2150.43 MHz
|
||||
dl_absoluteFrequencyPointA = 430086;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
@@ -53,8 +53,8 @@ gNBs =
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 66;
|
||||
# this is 1750 MHz
|
||||
ul_absoluteFrequencyPointA = 350002;
|
||||
# this is 1750.43 MHz
|
||||
ul_absoluteFrequencyPointA = 350086;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
@@ -220,14 +220,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_DISABLE";
|
||||
}
|
||||
);
|
||||
|
||||
rfsimulator :
|
||||
{
|
||||
|
||||
@@ -212,7 +212,7 @@ RUs = (
|
||||
att_rx = 0;
|
||||
bands = [77];
|
||||
max_pdschReferenceSignalPower = -27;
|
||||
max_rxgain = 72;
|
||||
max_rxgain = 75;
|
||||
eNB_instances = [0];
|
||||
##beamforming 1x2 matrix: 1 layer x 2 antennas
|
||||
bf_weights = [0x00007fff, 0x0000];
|
||||
|
||||
297
ci-scripts/conf_files/gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf
Normal file
297
ci-scripts/conf_files/gnb.sa.band77.273prb.fhi72.4x4-vvdn.conf
Normal file
@@ -0,0 +1,297 @@
|
||||
Active_gNBs = ( "gNB-OAI");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe00;
|
||||
gNB_name = "gNB-OAI";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ( { sst = 1; }); });
|
||||
|
||||
//nr_cellid = 12345678L;
|
||||
nr_cellid = 1;
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
pdsch_AntennaPorts_XP = 2;
|
||||
pdsch_AntennaPorts_N1 = 1;
|
||||
maxMIMO_layers = 2;
|
||||
pusch_AntennaPorts = 4;
|
||||
do_CSIRS = 1;
|
||||
do_SRS = 0 ;
|
||||
|
||||
pdcch_ConfigSIB1 = (
|
||||
{
|
||||
controlResourceSetZero = 11;
|
||||
searchSpaceZero = 0;
|
||||
}
|
||||
);
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
#spCellConfigCommon
|
||||
physCellId = 0;
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# this is 3450.72 MHz (center frequency)
|
||||
absoluteFrequencySSB = 666624;
|
||||
dl_frequencyBand = 77;
|
||||
# this is 3401.58 MHz
|
||||
dl_absoluteFrequencyPointA = 663348;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_subcarrierSpacing = 1;
|
||||
dl_carrierBandwidth = 273;
|
||||
#initialDownlinkBWP
|
||||
#genericParameters
|
||||
initialDLBWPlocationAndBandwidth = 1099; #38.101-1 Table 5.3.2-1
|
||||
#
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialDLBWPsubcarrierSpacing = 1;
|
||||
#pdcch-ConfigCommon
|
||||
initialDLBWPcontrolResourceSetZero = 11;
|
||||
initialDLBWPsearchSpaceZero = 0;
|
||||
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 77;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_subcarrierSpacing = 1;
|
||||
ul_carrierBandwidth = 273;
|
||||
pMax = 23;
|
||||
#initialUplinkBWP
|
||||
#genericParameters
|
||||
initialULBWPlocationAndBandwidth = 1099;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialULBWPsubcarrierSpacing = 1;
|
||||
#rach-ConfigCommon
|
||||
#rach-ConfigGeneric
|
||||
prach_ConfigurationIndex = 159;
|
||||
#prach_msg1_FDM
|
||||
#0 = one, 1=two, 2=four, 3=eight
|
||||
prach_msg1_FDM = 0;
|
||||
prach_msg1_FrequencyStart = 0;
|
||||
zeroCorrelationZoneConfig = 0;
|
||||
preambleReceivedTargetPower = -100;
|
||||
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
|
||||
preambleTransMax = 7;
|
||||
#powerRampingStep
|
||||
# 0=dB0,1=dB2,2=dB4,3=dB6
|
||||
powerRampingStep = 2;
|
||||
#ra_ReponseWindow
|
||||
#1,2,4,8,10,20,40,80
|
||||
ra_ResponseWindow = 5;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
ra_ContentionResolutionTimer = 7;
|
||||
rsrp_ThresholdSSB = 19;
|
||||
#prach-RootSequenceIndex_PR
|
||||
#1 = 839, 2 = 139
|
||||
prach_RootSequenceIndex_PR = 2;
|
||||
prach_RootSequenceIndex = 1;
|
||||
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
||||
#
|
||||
msg1_SubcarrierSpacing = 1,
|
||||
# restrictedSetConfig
|
||||
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
||||
restrictedSetConfig = 0,
|
||||
|
||||
# this is the offset between the last PRACH preamble power and the Msg3 PUSCH, 2 times the field value in dB
|
||||
msg3_DeltaPreamble = 2;
|
||||
p0_NominalWithGrant = -100;
|
||||
|
||||
# pucch-ConfigCommon setup :
|
||||
# pucchGroupHopping
|
||||
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 0;
|
||||
p0_nominal = -96;
|
||||
# ssb_PositionsInBurs_BitmapPR
|
||||
# 1=short, 2=medium, 3=long
|
||||
ssb_PositionsInBurst_PR = 2;
|
||||
ssb_PositionsInBurst_Bitmap = 0x1;
|
||||
|
||||
# ssb_periodicityServingCell
|
||||
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||
ssb_periodicityServingCell = 2;
|
||||
|
||||
# dmrs_TypeA_position
|
||||
# 0 = pos2, 1 = pos3
|
||||
dmrs_TypeA_Position = 0;
|
||||
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
subcarrierSpacing = 1;
|
||||
|
||||
|
||||
#tdd-UL-DL-ConfigurationCommon
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
referenceSubcarrierSpacing = 1;
|
||||
# pattern1
|
||||
# dl_UL_TransmissionPeriodicity
|
||||
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||
dl_UL_TransmissionPeriodicity = 5;
|
||||
nrofDownlinkSlots = 3;
|
||||
nrofDownlinkSymbols = 6;
|
||||
nrofUplinkSlots = 1;
|
||||
nrofUplinkSymbols = 4;
|
||||
|
||||
ssPBCH_BlockPower = 0;
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
# Number of streams to use in input/output
|
||||
SCTP_INSTREAMS = 2;
|
||||
SCTP_OUTSTREAMS = 2;
|
||||
};
|
||||
|
||||
|
||||
////////// AMF parameters:
|
||||
amf_ip_address = ({ ipv4 = "172.21.6.103"; });
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.18.20";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.18.20";
|
||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
MACRLCs = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "local_RRC";
|
||||
pusch_TargetSNRx10 = 180;
|
||||
pucch_TargetSNRx10 = 230;
|
||||
ul_bler_target_upper=.35;
|
||||
ul_bler_target_lower=.15;
|
||||
pusch_FailureThres = 100;
|
||||
}
|
||||
);
|
||||
|
||||
L1s = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "local_mac";
|
||||
prach_dtx_threshold = 130
|
||||
pucch0_dtx_threshold = 80;
|
||||
pusch_dtx_threshold = -100;
|
||||
tx_amp_backoff_dB = 3;
|
||||
L1_rx_thread_core = 3;
|
||||
L1_tx_thread_core = 4;
|
||||
phase_compensation = 0; # needs to match O-RU configuration
|
||||
}
|
||||
);
|
||||
|
||||
RUs = (
|
||||
{
|
||||
local_rf = "no";
|
||||
nb_tx = 4;
|
||||
nb_rx = 4;
|
||||
att_tx = 0
|
||||
att_rx = 0;
|
||||
bands = [77];
|
||||
max_pdschReferenceSignalPower = -27;
|
||||
max_rxgain = 75;
|
||||
sf_extension = 0;
|
||||
eNB_instances = [0];
|
||||
ru_thread_core = 5;
|
||||
sl_ahead = 5;
|
||||
##beamforming 1x2 matrix: 1 layer x 2 antennas
|
||||
bf_weights = [0x00007fff, 0x0000,0x00007fff, 0x0000];
|
||||
clock_src = "internal";
|
||||
tr_preference = "raw_if4p5"; # important: activate FHI7.2
|
||||
do_precoding = 0; # needs to match O-RU configuration
|
||||
}
|
||||
);
|
||||
|
||||
rfsimulator :
|
||||
{
|
||||
serveraddr = "server";
|
||||
serverport = "4043";
|
||||
options = (); #("saviq"); or/and "chanmod"
|
||||
modelname = "AWGN";
|
||||
IQfile = "/tmp/rfsimulator.iqs";
|
||||
};
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nea0, nea1, nea2, nea3
|
||||
ciphering_algorithms = ( "nea0" );
|
||||
|
||||
# preferred integrity algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nia0, nia1, nia2, nia3
|
||||
integrity_algorithms = ( "nia2", "nia0" );
|
||||
|
||||
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
|
||||
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
|
||||
drb_ciphering = "yes";
|
||||
drb_integrity = "no";
|
||||
};
|
||||
|
||||
log_config : {
|
||||
global_log_level = "info";
|
||||
hw_log_level = "info";
|
||||
phy_log_level = "info";
|
||||
mac_log_level = "info";
|
||||
rlc_log_level = "info";
|
||||
pdcp_log_level = "info";
|
||||
rrc_log_level = "info";
|
||||
ngap_log_level = "info";
|
||||
f1ap_log_level = "info";
|
||||
};
|
||||
|
||||
fhi_72 = {
|
||||
dpdk_devices = ("0000:c3:11.0", "0000:c3:11.1");
|
||||
system_core = 0;
|
||||
io_core = 1;
|
||||
worker_cores = (2);
|
||||
du_addr = ("76:76:64:6e:00:01", "76:76:64:6e:00:01");
|
||||
ru_addr = ("98:ae:71:01:c5:eb", "98:ae:71:01:c5:eb");
|
||||
mtu = 9216; # check if xran uses this properly
|
||||
fh_config = ({
|
||||
Tadv_cp_dl = 125;
|
||||
T2a_cp_dl = (285, 429); # (min, max)
|
||||
T2a_cp_ul = (285, 429); # (min, max)
|
||||
T2a_up = (125, 428); # (min, max)
|
||||
Ta3 = (130, 170); # (min, max)
|
||||
T1a_cp_dl = (285, 470); # (min, max)
|
||||
T1a_cp_ul = (285, 429); # (min, max)
|
||||
T1a_up = (125, 350); # (min, max)
|
||||
Ta4 = (110, 180); # (min, max)
|
||||
ru_config = {
|
||||
iq_width = 9;
|
||||
iq_width_prach = 9;
|
||||
};
|
||||
prach_config = {
|
||||
eAxC_offset = 4;
|
||||
};
|
||||
});
|
||||
};
|
||||
@@ -220,14 +220,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
rfsimulator: {
|
||||
serveraddr = "server";
|
||||
|
||||
313
ci-scripts/conf_files/gnb.sa.band78.106prb.rfsim.neighbour.conf
Normal file
313
ci-scripts/conf_files/gnb.sa.band78.106prb.rfsim.neighbour.conf
Normal file
@@ -0,0 +1,313 @@
|
||||
Active_gNBs = ( "gNB-OAI");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe00;
|
||||
gNB_name = "gNB-OAI";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ({ mcc = 001; mnc = 01; mnc_length = 2; snssaiList = ({ sst = 1; sd = 0x1; }) });
|
||||
|
||||
@include "neighbour-config.conf"
|
||||
nr_cellid = 1;
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
do_CSIRS = 0;
|
||||
do_SRS = 0;
|
||||
min_rxtxtime = 6;
|
||||
pdcch_ConfigSIB1 = (
|
||||
{
|
||||
controlResourceSetZero = 12;
|
||||
searchSpaceZero = 0;
|
||||
}
|
||||
);
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
#spCellConfigCommon
|
||||
|
||||
physCellId = 0;
|
||||
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP)
|
||||
absoluteFrequencySSB = 641280;
|
||||
dl_frequencyBand = 78;
|
||||
# this is 3600 MHz
|
||||
dl_absoluteFrequencyPointA = 640008;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_subcarrierSpacing = 1;
|
||||
dl_carrierBandwidth = 106;
|
||||
#initialDownlinkBWP
|
||||
#genericParameters
|
||||
# this is RBstart=27,L=48 (275*(L-1))+RBstart
|
||||
initialDLBWPlocationAndBandwidth = 28875; # 6366 12925 12956 28875 12952
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialDLBWPsubcarrierSpacing = 1;
|
||||
#pdcch-ConfigCommon
|
||||
initialDLBWPcontrolResourceSetZero = 12;
|
||||
initialDLBWPsearchSpaceZero = 0;
|
||||
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 78;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_subcarrierSpacing = 1;
|
||||
ul_carrierBandwidth = 106;
|
||||
pMax = 20;
|
||||
#initialUplinkBWP
|
||||
#genericParameters
|
||||
initialULBWPlocationAndBandwidth = 28875;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialULBWPsubcarrierSpacing = 1;
|
||||
#rach-ConfigCommon
|
||||
#rach-ConfigGeneric
|
||||
prach_ConfigurationIndex = 98;
|
||||
#prach_msg1_FDM
|
||||
#0 = one, 1=two, 2=four, 3=eight
|
||||
prach_msg1_FDM = 0;
|
||||
prach_msg1_FrequencyStart = 0;
|
||||
zeroCorrelationZoneConfig = 13;
|
||||
preambleReceivedTargetPower = -96;
|
||||
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
|
||||
preambleTransMax = 6;
|
||||
#powerRampingStep
|
||||
# 0=dB0,1=dB2,2=dB4,3=dB6
|
||||
powerRampingStep = 1;
|
||||
#ra_ReponseWindow
|
||||
#1,2,4,8,10,20,40,80
|
||||
ra_ResponseWindow = 4;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
ra_ContentionResolutionTimer = 7;
|
||||
rsrp_ThresholdSSB = 19;
|
||||
#prach-RootSequenceIndex_PR
|
||||
#1 = 839, 2 = 139
|
||||
prach_RootSequenceIndex_PR = 2;
|
||||
prach_RootSequenceIndex = 1;
|
||||
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
||||
#
|
||||
msg1_SubcarrierSpacing = 1,
|
||||
# restrictedSetConfig
|
||||
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
||||
restrictedSetConfig = 0,
|
||||
|
||||
msg3_DeltaPreamble = 1;
|
||||
p0_NominalWithGrant =-90;
|
||||
|
||||
# pucch-ConfigCommon setup :
|
||||
# pucchGroupHopping
|
||||
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 40;
|
||||
p0_nominal = -90;
|
||||
# ssb_PositionsInBurs_BitmapPR
|
||||
# 1=short, 2=medium, 3=long
|
||||
ssb_PositionsInBurst_PR = 2;
|
||||
ssb_PositionsInBurst_Bitmap = 1;
|
||||
|
||||
# ssb_periodicityServingCell
|
||||
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||
ssb_periodicityServingCell = 2;
|
||||
|
||||
# dmrs_TypeA_position
|
||||
# 0 = pos2, 1 = pos3
|
||||
dmrs_TypeA_Position = 0;
|
||||
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
subcarrierSpacing = 1;
|
||||
|
||||
|
||||
#tdd-UL-DL-ConfigurationCommon
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
referenceSubcarrierSpacing = 1;
|
||||
# pattern1
|
||||
# dl_UL_TransmissionPeriodicity
|
||||
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||
dl_UL_TransmissionPeriodicity = 6;
|
||||
nrofDownlinkSlots = 7;
|
||||
nrofDownlinkSymbols = 6;
|
||||
nrofUplinkSlots = 2;
|
||||
nrofUplinkSymbols = 4;
|
||||
|
||||
ssPBCH_BlockPower = -25;
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
# Dedicated Serving Cell Configuration
|
||||
servingCellConfigDedicated = ({
|
||||
# BWP-Downlink
|
||||
# BWP 1 Configuration
|
||||
dl_bwp-Id_1 = 1;
|
||||
dl_bwp1_locationAndBandwidth = 28875; // RBstart=0, L=106 (40 MHz BW)
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_bwp1_subcarrierSpacing = 1;
|
||||
|
||||
# BWP 2 Configuration
|
||||
dl_bwp-Id_2 = 2;
|
||||
dl_bwp2_locationAndBandwidth = 13750; // RBstart=0, L=51 (20 MHz BW)
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_bwp2_subcarrierSpacing = 1;
|
||||
|
||||
# BWP 3 Configuration
|
||||
dl_bwp-Id_3 = 3;
|
||||
dl_bwp3_locationAndBandwidth = 6325; // RBstart=0, L=24 (10 MHz BW)
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_bwp3_subcarrierSpacing = 1;
|
||||
|
||||
firstActiveDownlinkBWP-Id = 1; #BWP-Id
|
||||
defaultDownlinkBWP-Id = 1; #BWP-Id
|
||||
|
||||
# bwp-InactivityTimer ENUMERATED {ms2, ms3, ms4, ms5, ms6, ms8, ms10, ms20, ms30,
|
||||
# ms40,ms50, ms60, ms80,ms100, ms200,ms300, ms500,
|
||||
# ms750, ms1280, ms1920, ms2560, spare10, spare9, spare8,
|
||||
# spare7, spare6, spare5, spare4, spare3, spare2, spare1 }
|
||||
|
||||
# UplinkConfig
|
||||
# BWP-Uplink
|
||||
# BWP 1 Configuration
|
||||
ul_bwp-Id_1 = 1;
|
||||
ul_bwp1_locationAndBandwidth = 28875; // RBstart=0, L=106 (40 MHz BW)
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_bwp1_subcarrierSpacing = 1;
|
||||
|
||||
# BWP 2 Configuration
|
||||
ul_bwp-Id_2 = 2;
|
||||
ul_bwp2_locationAndBandwidth = 13750; // RBstart=0, L=51 (20 MHz BW)
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_bwp2_subcarrierSpacing = 1;
|
||||
|
||||
# BWP 3 Configuration
|
||||
ul_bwp-Id_3 = 3;
|
||||
ul_bwp3_locationAndBandwidth = 6325; // RBstart=0, L=24 (10 MHz BW)
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_bwp3_subcarrierSpacing = 1;
|
||||
|
||||
firstActiveUplinkBWP-Id = 1; #BWP-Id
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP : {
|
||||
# Number of streams to use in input/output
|
||||
SCTP_INSTREAMS = 2;
|
||||
SCTP_OUTSTREAMS = 2;
|
||||
};
|
||||
|
||||
|
||||
////////// AMF parameters:
|
||||
amf_ip_address = ( { ipv4 = "192.168.70.132"; });
|
||||
|
||||
|
||||
NETWORK_INTERFACES : {
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.70.129";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.70.129";
|
||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
|
||||
}
|
||||
);
|
||||
|
||||
MACRLCs = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "local_RRC";
|
||||
pusch_TargetSNRx10 = 250;
|
||||
pucch_TargetSNRx10 = 200;
|
||||
ulsch_max_frame_inactivity = 0;
|
||||
}
|
||||
);
|
||||
|
||||
L1s = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "local_mac";
|
||||
prach_dtx_threshold = 120;
|
||||
pucch0_dtx_threshold = 100;
|
||||
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
|
||||
}
|
||||
);
|
||||
|
||||
RUs = ({
|
||||
local_rf = "yes";
|
||||
nb_tx = 1;
|
||||
nb_rx = 1;
|
||||
att_tx = 0;
|
||||
att_rx = 0;
|
||||
bands = [78];
|
||||
max_pdschReferenceSignalPower = -27;
|
||||
max_rxgain = 114;
|
||||
eNB_instances = [0];
|
||||
#beamforming 1x4 matrix:
|
||||
bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000];
|
||||
clock_src = "internal";
|
||||
});
|
||||
|
||||
|
||||
rfsimulator: {
|
||||
serveraddr = "server";
|
||||
serverport = 4043;
|
||||
options = (); #("saviq"); or/and "chanmod"
|
||||
modelname = "AWGN";
|
||||
IQfile = "/tmp/rfsimulator.iqs"
|
||||
}
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nea0, nea1, nea2, nea3
|
||||
ciphering_algorithms = ( "nea0" );
|
||||
|
||||
# preferred integrity algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nia0, nia1, nia2, nia3
|
||||
integrity_algorithms = ( "nia2", "nia0" );
|
||||
|
||||
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
|
||||
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
|
||||
drb_ciphering = "yes";
|
||||
drb_integrity = "no";
|
||||
};
|
||||
|
||||
log_config : {
|
||||
global_log_level ="info";
|
||||
hw_log_level ="info";
|
||||
phy_log_level ="info";
|
||||
mac_log_level ="info";
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
nr_rrc_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
ngap_log_level ="debug";
|
||||
f1ap_log_level ="debug";
|
||||
};
|
||||
@@ -219,14 +219,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
|
||||
@@ -161,8 +161,8 @@ gNBs =
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.68.194";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.68.194";
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.109";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.109";
|
||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
|
||||
|
||||
@@ -233,14 +233,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
|
||||
@@ -233,14 +233,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
|
||||
@@ -215,14 +215,6 @@ rfsimulator: {
|
||||
serveraddr = "server";
|
||||
};
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
|
||||
@@ -0,0 +1,296 @@
|
||||
Active_gNBs = ( "gNB-OAI");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe00;
|
||||
gNB_name = "gNB-OAI";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ( { sst = 1; }); });
|
||||
|
||||
nr_cellid = 1;
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
pdsch_AntennaPorts_XP = 2;
|
||||
pdsch_AntennaPorts_N1 = 1;
|
||||
maxMIMO_layers = 2;
|
||||
pusch_AntennaPorts = 4;
|
||||
do_CSIRS = 1;
|
||||
do_SRS = 0 ;
|
||||
sib1_tda = 15;
|
||||
# force_UL256qam_off = 1;
|
||||
|
||||
pdcch_ConfigSIB1 = (
|
||||
{
|
||||
controlResourceSetZero = 11;
|
||||
searchSpaceZero = 0;
|
||||
}
|
||||
);
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
#spCellConfigCommon
|
||||
|
||||
physCellId = 0;
|
||||
# n_TimingAdvanceOffset = 0;
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# this is 3450.72 MHz (center frequency)
|
||||
absoluteFrequencySSB = 623328;
|
||||
dl_frequencyBand = 78;
|
||||
# this is 3401.58 MHz
|
||||
dl_absoluteFrequencyPointA = 620052;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_subcarrierSpacing = 1;
|
||||
dl_carrierBandwidth = 273;
|
||||
#initialDownlinkBWP
|
||||
#genericParameters
|
||||
initialDLBWPlocationAndBandwidth = 1099; #38.101-1 Table 5.3.2-1
|
||||
#
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialDLBWPsubcarrierSpacing = 1;
|
||||
#pdcch-ConfigCommon
|
||||
initialDLBWPcontrolResourceSetZero = 11;
|
||||
initialDLBWPsearchSpaceZero = 0;
|
||||
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 78;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_subcarrierSpacing = 1;
|
||||
ul_carrierBandwidth = 273;
|
||||
pMax = 23;
|
||||
#initialUplinkBWP
|
||||
#genericParameters
|
||||
initialULBWPlocationAndBandwidth = 1099;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialULBWPsubcarrierSpacing = 1;
|
||||
#rach-ConfigCommon
|
||||
#rach-ConfigGeneric
|
||||
prach_ConfigurationIndex = 151;
|
||||
#prach_msg1_FDM
|
||||
#0 = one, 1=two, 2=four, 3=eight
|
||||
prach_msg1_FDM = 0;
|
||||
prach_msg1_FrequencyStart = 0;
|
||||
zeroCorrelationZoneConfig = 0;
|
||||
preambleReceivedTargetPower = -100;
|
||||
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
|
||||
preambleTransMax = 8;
|
||||
#powerRampingStep
|
||||
# 0=dB0,1=dB2,2=dB4,3=dB6
|
||||
powerRampingStep = 1;
|
||||
#ra_ReponseWindow
|
||||
#1,2,4,8,10,20,40,80
|
||||
ra_ResponseWindow = 5;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 3;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
ra_ContentionResolutionTimer = 7;
|
||||
rsrp_ThresholdSSB = 19;
|
||||
#prach-RootSequenceIndex_PR
|
||||
#1 = 839, 2 = 139
|
||||
prach_RootSequenceIndex_PR = 2;
|
||||
prach_RootSequenceIndex = 1;
|
||||
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
||||
#
|
||||
msg1_SubcarrierSpacing = 1,
|
||||
# restrictedSetConfig
|
||||
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
||||
restrictedSetConfig = 0,
|
||||
|
||||
# this is the offset between the last PRACH preamble power and the Msg3 PUSCH, 2 times the field value in dB
|
||||
msg3_DeltaPreamble = 2;
|
||||
p0_NominalWithGrant = -96;
|
||||
|
||||
# pucch-ConfigCommon setup :
|
||||
# pucchGroupHopping
|
||||
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 0;
|
||||
p0_nominal = -96;
|
||||
# ssb_PositionsInBurs_BitmapPR
|
||||
# 1=short, 2=medium, 3=long
|
||||
ssb_PositionsInBurst_PR = 2;
|
||||
ssb_PositionsInBurst_Bitmap = 0x1;
|
||||
|
||||
# ssb_periodicityServingCell
|
||||
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||
ssb_periodicityServingCell = 2;
|
||||
|
||||
# dmrs_TypeA_position
|
||||
# 0 = pos2, 1 = pos3
|
||||
dmrs_TypeA_Position = 0;
|
||||
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
subcarrierSpacing = 1;
|
||||
|
||||
|
||||
#tdd-UL-DL-ConfigurationCommon
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
referenceSubcarrierSpacing = 1;
|
||||
# pattern1
|
||||
# dl_UL_TransmissionPeriodicity
|
||||
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||
dl_UL_TransmissionPeriodicity = 6;
|
||||
nrofDownlinkSlots = 7;
|
||||
nrofDownlinkSymbols = 6;
|
||||
nrofUplinkSlots = 2;
|
||||
nrofUplinkSymbols = 4;
|
||||
|
||||
ssPBCH_BlockPower = -15;
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
# Number of streams to use in input/output
|
||||
SCTP_INSTREAMS = 2;
|
||||
SCTP_OUTSTREAMS = 2;
|
||||
};
|
||||
|
||||
|
||||
////////// AMF parameters:
|
||||
amf_ip_address = ({ ipv4 = "172.21.6.103"; });
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.18.20";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.18.20";
|
||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
MACRLCs = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "local_RRC";
|
||||
pusch_TargetSNRx10 = 100;
|
||||
pucch_TargetSNRx10 = 200;
|
||||
dl_bler_target_upper=.35;
|
||||
dl_bler_target_lower=.15;
|
||||
ul_bler_target_upper=.35;
|
||||
ul_bler_target_lower=.15;
|
||||
pusch_FailureThres = 1000;
|
||||
ul_max_mcs = 28;
|
||||
}
|
||||
);
|
||||
|
||||
L1s = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "local_mac";
|
||||
prach_dtx_threshold = 90;
|
||||
pucch0_dtx_threshold = 80;
|
||||
pusch_dtx_threshold = 10;
|
||||
max_ldpc_iterations = 15;
|
||||
tx_amp_backoff_dB = 12; # needs to match O-RU configuration
|
||||
L1_rx_thread_core = 3;
|
||||
L1_tx_thread_core = 4;
|
||||
phase_compensation = 0; # needs to match O-RU configuration
|
||||
}
|
||||
);
|
||||
|
||||
RUs = (
|
||||
{
|
||||
local_rf = "no";
|
||||
nb_tx = 4;
|
||||
nb_rx = 4;
|
||||
att_tx = 0
|
||||
att_rx = 0;
|
||||
bands = [78];
|
||||
max_pdschReferenceSignalPower = -27;
|
||||
max_rxgain = 75;
|
||||
sf_extension = 0;
|
||||
eNB_instances = [0];
|
||||
ru_thread_core = 5;
|
||||
sl_ahead = 10;
|
||||
##beamforming 1x2 matrix: 1 layer x 2 antennas
|
||||
bf_weights = [0x00007fff, 0x0000,0x00007fff, 0x0000];
|
||||
tr_preference = "raw_if4p5"; # important: activate FHI7.2
|
||||
do_precoding = 0; # needs to match O-RU configuration
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nea0, nea1, nea2, nea3
|
||||
ciphering_algorithms = ( "nea0" );
|
||||
|
||||
# preferred integrity algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nia0, nia1, nia2, nia3
|
||||
integrity_algorithms = ( "nia2", "nia0" );
|
||||
|
||||
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
|
||||
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
|
||||
drb_ciphering = "yes";
|
||||
drb_integrity = "no";
|
||||
};
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
hw_log_level ="info";
|
||||
phy_log_level ="info";
|
||||
mac_log_level ="info";
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
ngap_log_level ="info";
|
||||
f1ap_log_level ="info";
|
||||
};
|
||||
|
||||
fhi_72 = {
|
||||
dpdk_devices = ("0000:c3:11.0", "0000:c3:11.1");
|
||||
system_core = 0;
|
||||
io_core = 1;
|
||||
worker_cores = (2);
|
||||
du_addr = ("00:11:22:33:44:66", "00:11:22:33:44:67");
|
||||
ru_addr = ("70:b3:d5:e1:5b:81", "70:b3:d5:e1:5b:81");
|
||||
mtu = 9216;
|
||||
file_prefix = "fhi_72";
|
||||
fh_config = ({
|
||||
Tadv_cp_dl = 125;
|
||||
T2a_cp_dl = (259, 500);
|
||||
T2a_cp_ul = (25, 500);
|
||||
T2a_up = (134, 375);
|
||||
Ta3 = (152, 160);
|
||||
T1a_cp_dl = (419, 470);
|
||||
T1a_cp_ul = (285, 336);
|
||||
T1a_up = (294, 345);
|
||||
Ta4 = (0, 200);
|
||||
ru_config = {
|
||||
iq_width = 9;
|
||||
iq_width_prach = 9;
|
||||
};
|
||||
prach_config = {
|
||||
eAxC_offset = 4;
|
||||
};
|
||||
});
|
||||
};
|
||||
@@ -32,20 +32,20 @@ gNBs =
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# this is 3300.60 MHz + 53*12*30e-3 MHz = 3319.68
|
||||
absoluteFrequencySSB = 621312;
|
||||
absoluteFrequencySSB = 630048;
|
||||
dl_frequencyBand = 78;
|
||||
# this is 3300.60 MHz
|
||||
dl_absoluteFrequencyPointA = 620040;
|
||||
dl_absoluteFrequencyPointA = 626772;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_subcarrierSpacing = 1;
|
||||
dl_carrierBandwidth = 106;
|
||||
dl_carrierBandwidth = 273;
|
||||
#initialDownlinkBWP
|
||||
#genericParameters
|
||||
# this is RBstart=27,L=48 (275*(L-1))+RBstart
|
||||
initialDLBWPlocationAndBandwidth = 28875; # 6366 12925 12956 28875 12952
|
||||
initialDLBWPlocationAndBandwidth = 1099; # 6366 12925 12956 28875 12952
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialDLBWPsubcarrierSpacing = 1;
|
||||
@@ -61,11 +61,11 @@ gNBs =
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_subcarrierSpacing = 1;
|
||||
ul_carrierBandwidth = 106;
|
||||
ul_carrierBandwidth = 273;
|
||||
pMax = 20;
|
||||
#initialUplinkBWP
|
||||
#genericParameters
|
||||
initialULBWPlocationAndBandwidth = 28875;
|
||||
initialULBWPlocationAndBandwidth = 1099;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialULBWPsubcarrierSpacing = 1;
|
||||
@@ -140,10 +140,10 @@ gNBs =
|
||||
# pattern1
|
||||
# dl_UL_TransmissionPeriodicity
|
||||
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||
dl_UL_TransmissionPeriodicity = 6;
|
||||
nrofDownlinkSlots = 7;
|
||||
dl_UL_TransmissionPeriodicity = 5;
|
||||
nrofDownlinkSlots = 3;
|
||||
nrofDownlinkSymbols = 6;
|
||||
nrofUplinkSlots = 2;
|
||||
nrofUplinkSlots = 1;
|
||||
nrofUplinkSymbols = 4;
|
||||
|
||||
ssPBCH_BlockPower = -25;
|
||||
@@ -179,9 +179,6 @@ MACRLCs = (
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "local_RRC";
|
||||
#pusch_TargetSNRx10 = 150;
|
||||
#pucch_TargetSNRx10 = 200;
|
||||
dl_max_mcs = 16; # there are retransmissions if more
|
||||
}
|
||||
);
|
||||
|
||||
@@ -190,7 +187,6 @@ L1s = (
|
||||
num_cc = 1;
|
||||
tr_n_preference = "local_mac";
|
||||
prach_dtx_threshold = 120;
|
||||
#pucch0_dtx_threshold = 120;
|
||||
}
|
||||
);
|
||||
|
||||
@@ -212,14 +208,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
rfsimulator :
|
||||
{
|
||||
@@ -232,14 +232,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
|
||||
@@ -161,8 +161,8 @@ gNBs =
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.68.194";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.68.194";
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.109";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.109";
|
||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
|
||||
@@ -207,14 +207,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
|
||||
76
ci-scripts/conf_files/neighbour-config.conf
Normal file
76
ci-scripts/conf_files/neighbour-config.conf
Normal file
@@ -0,0 +1,76 @@
|
||||
neighbour_list = (
|
||||
{
|
||||
nr_cellid = 1;
|
||||
neighbour_cell_configuration = (
|
||||
{
|
||||
gNB_ID = 0xb00;
|
||||
nr_cellid = 2;
|
||||
physical_cellId = 0x002;
|
||||
absoluteFrequencySSB = 641280 ;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
plmn = { mcc = 216; mnc = 03; mnc_length = 2};
|
||||
tracking_area_code = 2;
|
||||
},
|
||||
{
|
||||
gNB_ID = 0xa00;
|
||||
nr_cellid = 3;
|
||||
physical_cellId = 0x003;
|
||||
absoluteFrequencySSB = 641280 ;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
plmn = { mcc = 999; mnc = 99; mnc_length = 2};
|
||||
tracking_area_code = 3;
|
||||
},
|
||||
{
|
||||
gNB_ID = 0xc00;
|
||||
nr_cellid = 4;
|
||||
physical_cellId = 0x004;
|
||||
absoluteFrequencySSB = 641280 ;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
plmn = { mcc = 999; mnc = 99; mnc_length = 2};
|
||||
tracking_area_code = 4;
|
||||
}
|
||||
)
|
||||
},
|
||||
{
|
||||
nr_cellid = 2;
|
||||
neighbour_cell_configuration = (
|
||||
{
|
||||
gNB_ID = 0xe00;
|
||||
nr_cellid = 1;
|
||||
physical_cellId = 0x000;
|
||||
absoluteFrequencySSB = 641280 ;
|
||||
subcarrierSpacing = 1; #30 KHz
|
||||
plmn = { mcc = 001; mnc = 01; mnc_length = 2};
|
||||
tracking_area_code = 1;
|
||||
}
|
||||
)
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
nr_measurement_configuration = {
|
||||
Periodical = {
|
||||
enable = 1;
|
||||
includeBeamMeasurements = 1;
|
||||
maxNrofRS_IndexesToReport = 4;
|
||||
};
|
||||
|
||||
A2 = {
|
||||
enable = 1;
|
||||
threshold = 60;
|
||||
timeToTrigger = 1;
|
||||
};
|
||||
|
||||
A3 = ({
|
||||
physCellId = -1; #Default
|
||||
offset = 10;
|
||||
hysteresis = 0;
|
||||
timeToTrigger = 1
|
||||
}, {
|
||||
physCellId = 2;
|
||||
offset = 5;
|
||||
hysteresis = 1;
|
||||
timeToTrigger = 2
|
||||
})
|
||||
};
|
||||
|
||||
28
ci-scripts/conf_files/nrue.uicc.yaml
Normal file
28
ci-scripts/conf_files/nrue.uicc.yaml
Normal file
@@ -0,0 +1,28 @@
|
||||
uicc0:
|
||||
imsi: 208990100001100
|
||||
key: fec86ba6eb707ed08905757b1bb44b8f
|
||||
opc: C42449363BBAD02B66D16BC975D77CC1
|
||||
dnn: oai
|
||||
nssai_sst: 1
|
||||
|
||||
#/* configuration for channel modelisation */
|
||||
#/* To be included in main config file when */
|
||||
#/* channel modelisation is used (rfsimulator with chanmod options enabled) */
|
||||
channelmod:
|
||||
max_chan: 10;
|
||||
modellist: modellist_rfsimu_1
|
||||
modellist_rfsimu_1:
|
||||
- model_name: rfsimu_channel_enB0
|
||||
type: AWGN
|
||||
ploss_dB: 20
|
||||
noise_power_dB: -4
|
||||
forgetfact: 0
|
||||
offset: 0
|
||||
ds_tdl: 0
|
||||
- model_name: rfsimu_channel_ue0
|
||||
type: AWGN
|
||||
ploss_dB: 20
|
||||
nose_power_dB: -2
|
||||
forgetfact: 0
|
||||
offset: 0
|
||||
ds_tdl: 0
|
||||
@@ -236,14 +236,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
|
||||
@@ -214,14 +214,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
|
||||
@@ -218,15 +218,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_RU_L1_TRX_SPLIT";
|
||||
//parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
|
||||
@@ -211,14 +211,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
rfsimulator :
|
||||
{
|
||||
|
||||
@@ -209,14 +209,6 @@ RUs = (
|
||||
}
|
||||
);
|
||||
|
||||
THREAD_STRUCT = (
|
||||
{
|
||||
#three config for level of parallelism "PARALLEL_SINGLE_THREAD", "PARALLEL_RU_L1_SPLIT", or "PARALLEL_RU_L1_TRX_SPLIT"
|
||||
parallel_config = "PARALLEL_SINGLE_THREAD";
|
||||
#two option for worker "WORKER_DISABLE" or "WORKER_ENABLE"
|
||||
worker_config = "WORKER_ENABLE";
|
||||
}
|
||||
);
|
||||
|
||||
rfsimulator :
|
||||
{
|
||||
|
||||
@@ -14,7 +14,7 @@ Ref :
|
||||
L1 Tx processing : 400.0
|
||||
DLSCH encoding : 177.0
|
||||
L1 Rx processing : 345.0
|
||||
PUSCH inner-receiver : 210.0
|
||||
PUSCH inner-receiver : 200.0
|
||||
Schedule Response : 3.0
|
||||
DL & UL scheduling timing : 13.0
|
||||
UL Indication : 3.0
|
||||
|
||||
@@ -1,5 +1,32 @@
|
||||
#/*
|
||||
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
# * http://www.openairinterface.org/?page_id=698
|
||||
# *
|
||||
# * Unless required by applicable law or agreed to in writing, software
|
||||
# * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# * See the License for the specific language governing permissions and
|
||||
# * limitations under the License.
|
||||
# *-------------------------------------------------------------------------------
|
||||
# * For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
# * contact@openairinterface.org
|
||||
# */
|
||||
#---------------------------------------------------------------------
|
||||
#
|
||||
# Dockerfile for the Open-Air-Interface BUILD service
|
||||
# Valid for Ubuntu 22.04
|
||||
#
|
||||
#---------------------------------------------------------------------
|
||||
FROM ubuntu:xenial AS oai-cppcheck
|
||||
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get update && \
|
||||
|
||||
@@ -1,3 +1,30 @@
|
||||
#/*
|
||||
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
# * contributor license agreements. See the NOTICE file distributed with
|
||||
# * this work for additional information regarding copyright ownership.
|
||||
# * The OpenAirInterface Software Alliance licenses this file to You under
|
||||
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
# * except in compliance with the License.
|
||||
# * You may obtain a copy of the License at
|
||||
# *
|
||||
# * http://www.openairinterface.org/?page_id=698
|
||||
# *
|
||||
# * Unless required by applicable law or agreed to in writing, software
|
||||
# * distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# * See the License for the specific language governing permissions and
|
||||
# * limitations under the License.
|
||||
# *-------------------------------------------------------------------------------
|
||||
# * For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
# * contact@openairinterface.org
|
||||
# */
|
||||
#---------------------------------------------------------------------
|
||||
#
|
||||
# Dockerfile for the Open-Air-Interface BUILD service
|
||||
# Valid for Ubuntu 22.04
|
||||
#
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
FROM ubuntu:bionic AS oai-formatting-check
|
||||
|
||||
ARG MERGE_REQUEST
|
||||
|
||||
@@ -21,15 +21,21 @@
|
||||
#---------------------------------------------------------------------
|
||||
#
|
||||
# Dockerfile for the Open-Air-Interface BUILD service
|
||||
# Valid for Ubuntu 20.04
|
||||
# Valid for Ubuntu 22.04
|
||||
#
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
FROM ran-base:develop as ran-tests
|
||||
FROM ran-base:develop AS ran-tests
|
||||
|
||||
RUN apt-get update && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get upgrade --yes && \
|
||||
DEBIAN_FRONTEND=noninteractive apt-get install --yes \
|
||||
libgtest-dev \
|
||||
libyaml-cpp-dev
|
||||
|
||||
RUN rm -Rf /oai-ran
|
||||
WORKDIR /oai-ran
|
||||
COPY . .
|
||||
|
||||
WORKDIR /oai-ran/build
|
||||
RUN cmake -GNinja -DENABLE_TESTS=ON -DCMAKE_BUILD_TYPE=Debug .. && ninja tests
|
||||
RUN cmake -GNinja -DENABLE_TESTS=ON -DCMAKE_BUILD_TYPE=Debug -DSANITIZE_ADDRESS=True .. && ninja tests
|
||||
@@ -48,6 +48,7 @@ import helpreadme as HELP
|
||||
import constants as CONST
|
||||
import cls_cluster as OC
|
||||
import cls_cmd
|
||||
import cls_module
|
||||
#-----------------------------------------------------------
|
||||
# Class Declaration
|
||||
#-----------------------------------------------------------
|
||||
@@ -72,9 +73,10 @@ class EPCManagement():
|
||||
self.cfgDeploy = '--type start-mini --scenario 1 --capture /tmp/oai-cn5g-v1.5.pcap' #from xml, 'mini' is default normal for docker-network.py
|
||||
self.cfgUnDeploy = '--type stop-mini --scenario 1' #from xml, 'mini' is default normal for docker-network.py
|
||||
self.OCUrl = "https://api.oai.cs.eurecom.fr:6443"
|
||||
self.OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/"
|
||||
self.OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr"
|
||||
self.OCUserName = ''
|
||||
self.OCPassword = ''
|
||||
self.cnID = ''
|
||||
self.imageToPull = ''
|
||||
self.eNBSourceCodePath = ''
|
||||
|
||||
@@ -298,7 +300,8 @@ class EPCManagement():
|
||||
html_cell += '(' + res4.group('date') + ')'
|
||||
html_cell += '\n'
|
||||
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
|
||||
succeeded, report = OC.OC_deploy_CN(mySSH, self.OCUserName, self.OCPassword)
|
||||
cn = cls_module.Module_UE(self.cnID)
|
||||
succeeded, report = OC.OC_deploy_CN(mySSH, self.OCUserName, self.OCPassword, cn.getNamespace(), cn.getCNPath())
|
||||
if not succeeded:
|
||||
HTML.CreateHtmlTestRow('N/A', 'KO', report)
|
||||
HTML.CreateHtmlTabFooter(False)
|
||||
@@ -575,7 +578,8 @@ class EPCManagement():
|
||||
mySSH.copyin(f'{self.SourceCodePath}/logs/test_logs_CN.zip','test_logs_CN.zip')
|
||||
logging.debug(message)
|
||||
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
|
||||
succeeded, report = OC.OC_undeploy_CN(mySSH, self.OCUserName, self.OCPassword)
|
||||
cn = cls_module.Module_UE(self.cnID)
|
||||
succeeded, report = OC.OC_undeploy_CN(mySSH, self.OCUserName, self.OCPassword, cn.getNamespace(), cn.getCNPath())
|
||||
if not succeeded:
|
||||
HTML.CreateHtmlTestRow('N/A', 'KO', report)
|
||||
HTML.CreateHtmlTabFooter(False)
|
||||
|
||||
@@ -217,6 +217,13 @@ def GetParametersFromXML(action):
|
||||
|
||||
elif action == 'Initialize_UE' or action == 'Attach_UE' or action == 'Detach_UE' or action == 'Terminate_UE' or action == 'CheckStatusUE' or action == 'DataEnable_UE' or action == 'DataDisable_UE':
|
||||
CiTestObj.ue_ids = test.findtext('id').split(' ')
|
||||
if test.findtext('nodes'):
|
||||
CiTestObj.nodes = test.findtext('nodes').split(' ')
|
||||
if len(CiTestObj.ue_ids) != len(CiTestObj.nodes):
|
||||
logging.error('Number of Nodes are not equal to the total number of UEs')
|
||||
sys.exit("Mismatch in number of Nodes and UIs")
|
||||
else:
|
||||
CiTestObj.nodes = [None] * len(CiTestObj.ue_ids)
|
||||
|
||||
elif action == 'Build_OAI_UE':
|
||||
CiTestObj.Build_OAI_UE_args = test.findtext('Build_OAI_UE_args')
|
||||
@@ -263,12 +270,28 @@ def GetParametersFromXML(action):
|
||||
CiTestObj.ping_args = test.findtext('ping_args')
|
||||
CiTestObj.ping_packetloss_threshold = test.findtext('ping_packetloss_threshold')
|
||||
CiTestObj.ue_ids = test.findtext('id').split(' ')
|
||||
if test.findtext('nodes'):
|
||||
CiTestObj.nodes = test.findtext('nodes').split(' ')
|
||||
if len(CiTestObj.ue_ids) != len(CiTestObj.nodes):
|
||||
logging.error('Number of Nodes are not equal to the total number of UEs')
|
||||
sys.exit("Mismatch in number of Nodes and UIs")
|
||||
else:
|
||||
CiTestObj.nodes = [None] * len(CiTestObj.ue_ids)
|
||||
ping_rttavg_threshold = test.findtext('ping_rttavg_threshold') or ''
|
||||
|
||||
elif action == 'Iperf':
|
||||
elif action == 'Iperf' or action == 'Iperf2_Unidir':
|
||||
CiTestObj.iperf_args = test.findtext('iperf_args')
|
||||
CiTestObj.ue_ids = test.findtext('id').split(' ')
|
||||
CiTestObj.svr_id = test.findtext('svr_id') or None
|
||||
if test.findtext('nodes'):
|
||||
CiTestObj.nodes = test.findtext('nodes').split(' ')
|
||||
if len(CiTestObj.ue_ids) != len(CiTestObj.nodes):
|
||||
logging.error('Number of Nodes are not equal to the total number of UEs')
|
||||
sys.exit("Mismatch in number of Nodes and UIs")
|
||||
else:
|
||||
CiTestObj.nodes = [None] * len(CiTestObj.ue_ids)
|
||||
if test.findtext('svr_node'):
|
||||
CiTestObj.svr_node = test.findtext('svr_node')
|
||||
CiTestObj.iperf_packetloss_threshold = test.findtext('iperf_packetloss_threshold')
|
||||
CiTestObj.iperf_bitrate_threshold = test.findtext('iperf_bitrate_threshold') or '90'
|
||||
CiTestObj.iperf_profile = test.findtext('iperf_profile') or 'balanced'
|
||||
@@ -281,6 +304,14 @@ def GetParametersFromXML(action):
|
||||
logging.error('test-case has wrong option ' + CiTestObj.iperf_options)
|
||||
CiTestObj.iperf_options = 'check'
|
||||
|
||||
elif action == 'Iperf2_Unidir':
|
||||
CiTestObj.iperf_args = test.findtext('iperf_args')
|
||||
CiTestObj.ue_ids = test.findtext('id').split(' ')
|
||||
CiTestObj.svr_id = test.findtext('svr_id') or None
|
||||
CiTestObj.iperf_packetloss_threshold = test.findtext('iperf_packetloss_threshold')
|
||||
CiTestObj.iperf_bitrate_threshold = test.findtext('iperf_bitrate_threshold') or '90'
|
||||
CiTestObj.iperf_profile = test.findtext('iperf_profile') or 'balanced'
|
||||
|
||||
elif action == 'IdleSleep':
|
||||
string_field = test.findtext('idle_sleep_time_in_sec')
|
||||
if (string_field is None):
|
||||
@@ -329,13 +360,15 @@ def GetParametersFromXML(action):
|
||||
string_field = test.findtext('args')
|
||||
if (string_field is not None):
|
||||
EPC.cfgDeploy = string_field
|
||||
EPC.cnID = test.findtext('cn_id')
|
||||
|
||||
elif action == 'Terminate_5GCN':
|
||||
string_field = test.findtext('args')
|
||||
if (string_field is not None):
|
||||
EPC.cfgUnDeploy = string_field
|
||||
EPC.cnID = test.findtext('cn_id')
|
||||
|
||||
elif action == 'Deploy_Object' or action == 'Undeploy_Object':
|
||||
elif action == 'Deploy_Object' or action == 'Undeploy_Object' or action == "Create_Workspace":
|
||||
eNB_instance=test.findtext('eNB_instance')
|
||||
if (eNB_instance is None):
|
||||
CONTAINERS.eNB_instance=0
|
||||
@@ -359,23 +392,6 @@ def GetParametersFromXML(action):
|
||||
if string_field is not None:
|
||||
CONTAINERS.services[CONTAINERS.eNB_instance] = string_field
|
||||
|
||||
elif action == 'DeployGenObject' or action == 'UndeployGenObject' or action == 'StatsFromGenObject':
|
||||
string_field=test.findtext('yaml_path')
|
||||
if (string_field is not None):
|
||||
CONTAINERS.yamlPath[0] = string_field
|
||||
string_field=test.findtext('services')
|
||||
if (string_field is not None):
|
||||
CONTAINERS.services[0] = string_field
|
||||
string_field=test.findtext('nb_healthy')
|
||||
if (string_field is not None):
|
||||
CONTAINERS.nb_healthy[0] = int(string_field)
|
||||
string_field=test.findtext('d_retx_th')
|
||||
if (string_field is not None):
|
||||
CONTAINERS.ran_checkers['d_retx_th'] = [float(x) for x in string_field.split(',')]
|
||||
string_field=test.findtext('u_retx_th')
|
||||
if (string_field is not None):
|
||||
CONTAINERS.ran_checkers['u_retx_th'] = [float(x) for x in string_field.split(',')]
|
||||
|
||||
elif action == 'Run_CUDATest' or action == 'Run_NRulsimTest' or action == 'Run_T2Test':
|
||||
ldpc.runargs = test.findtext('physim_run_args')
|
||||
ldpc.runsim = test.findtext('physim_run')
|
||||
@@ -536,10 +552,14 @@ elif re.match('^LogCollecteNB$', mode, re.IGNORECASE):
|
||||
if RAN.eNBIPAddress == '' or RAN.eNBUserName == '' or RAN.eNBPassword == '' or RAN.eNBSourceCodePath == '':
|
||||
HELP.GenericHelp(CONST.Version)
|
||||
sys.exit('Insufficient Parameter')
|
||||
if RAN.eNBIPAddress == 'none':
|
||||
if os.path.isdir('cmake_targets/log'):
|
||||
cmd = 'zip -r enb.log.' + RAN.BuildId + '.zip cmake_targets/log'
|
||||
logging.info(cmd)
|
||||
zipStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=60)
|
||||
try:
|
||||
zipStatus = subprocess.check_output(cmd, shell=True, stderr=subprocess.STDOUT, universal_newlines=True, timeout=60)
|
||||
except subprocess.CalledProcessError as e:
|
||||
logging.error("Command '{}' returned non-zero exit status {}.".format(e.cmd, e.returncode))
|
||||
logging.error("Error output:\n{}".format(e.output))
|
||||
sys.exit(0)
|
||||
RAN.LogCollecteNB()
|
||||
elif re.match('^LogCollectHSS$', mode, re.IGNORECASE):
|
||||
@@ -770,6 +790,8 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
|
||||
CiTestObj.Ping(HTML,RAN,EPC,CONTAINERS)
|
||||
elif action == 'Iperf':
|
||||
CiTestObj.Iperf(HTML,RAN,EPC,CONTAINERS)
|
||||
elif action == 'Iperf2_Unidir':
|
||||
CiTestObj.Iperf2_Unidir(HTML,RAN,EPC,CONTAINERS)
|
||||
elif action == 'Initialize_HSS':
|
||||
EPC.InitializeHSS(HTML)
|
||||
elif action == 'Terminate_HSS':
|
||||
@@ -840,6 +862,8 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
|
||||
success = CONTAINERS.Clean_Test_Server_Images(HTML)
|
||||
if not success:
|
||||
RAN.prematureExit = True
|
||||
elif action == 'Create_Workspace':
|
||||
CONTAINERS.Create_Workspace(HTML)
|
||||
elif action == 'Deploy_Object':
|
||||
CONTAINERS.DeployObject(HTML, EPC)
|
||||
if CONTAINERS.exitStatus==1:
|
||||
@@ -858,20 +882,10 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
|
||||
RAN.prematureExit = True
|
||||
elif action == 'Deploy_Run_PhySim':
|
||||
PHYSIM.Deploy_PhySim(HTML, RAN)
|
||||
elif action == 'DeployGenObject':
|
||||
CONTAINERS.DeployGenObject(HTML, RAN, CiTestObj)
|
||||
if CONTAINERS.exitStatus==1:
|
||||
RAN.prematureExit = True
|
||||
elif action == 'UndeployGenObject':
|
||||
CONTAINERS.UndeployGenObject(HTML, RAN, CiTestObj)
|
||||
if CONTAINERS.exitStatus==1:
|
||||
RAN.prematureExit = True
|
||||
elif action == 'IperfFromContainer':
|
||||
CONTAINERS.IperfFromContainer(HTML, RAN, CiTestObj)
|
||||
if CONTAINERS.exitStatus==1:
|
||||
RAN.prematureExit = True
|
||||
elif action == 'StatsFromGenObject':
|
||||
CONTAINERS.StatsFromGenObject(HTML)
|
||||
elif action == 'Push_Images_To_Test_Servers':
|
||||
logging.debug('To be implemented')
|
||||
else:
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
- CheckStatusUE
|
||||
- Ping
|
||||
- Iperf
|
||||
- Iperf2_Unidir
|
||||
- Deploy_EPC
|
||||
- Undeploy_EPC
|
||||
- Initialize_HSS
|
||||
@@ -47,3 +48,4 @@
|
||||
- Pull_Local_Registry
|
||||
- Clean_Test_Server_Images
|
||||
- Custom_Command
|
||||
- Create_Workspace
|
||||
|
||||
@@ -24,9 +24,15 @@
|
||||
<htmlTabRef>build-tab</htmlTabRef>
|
||||
<htmlTabName>Build Images on Cluster</htmlTabName>
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>000001</TestCaseRequestedList>
|
||||
<TestCaseRequestedList>
|
||||
000002
|
||||
000001
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
</testCase>
|
||||
<testCase id="000001">
|
||||
<class>Build_Cluster_Image</class>
|
||||
<desc>Build Images on OpenShift Cluster</desc>
|
||||
|
||||
@@ -26,10 +26,16 @@
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
100001
|
||||
000001
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100001">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>1</eNB_instance>
|
||||
<eNB_serverId>1</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000001">
|
||||
<class>Build_Proxy</class>
|
||||
<desc>Build L2sim Proxy Image</desc>
|
||||
|
||||
@@ -27,18 +27,16 @@
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100001
|
||||
800813
|
||||
000000
|
||||
000001
|
||||
000002
|
||||
000003
|
||||
000004
|
||||
200000
|
||||
020001
|
||||
020002
|
||||
030011
|
||||
030012
|
||||
200001
|
||||
100001
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
@@ -49,49 +47,60 @@
|
||||
<test_svr_id>0</test_svr_id>
|
||||
<images_to_pull>oai-enb oai-lte-ue</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000000">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy Cassandra Database</desc>
|
||||
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_l2sim_fdd</yaml_path>
|
||||
<services>cassandra db_init</services>
|
||||
<nb_healthy>1</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G CoreNetwork</desc>
|
||||
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_l2sim_fdd</yaml_path>
|
||||
<services>oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen</services>
|
||||
<nb_healthy>7</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G eNB L2 sim</desc>
|
||||
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_l2sim_fdd</yaml_path>
|
||||
<services>oai_enb</services>
|
||||
<nb_healthy>8</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000003">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI L2 sim 4G LTE-UE 1 and Proxy</desc>
|
||||
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_l2sim_fdd</yaml_path>
|
||||
<services>proxy oai_ue1</services>
|
||||
<nb_healthy>10</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000004">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE</desc>
|
||||
<id>l2sim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping trf-gen from LTE-UE 1</desc>
|
||||
<id>l2sim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<ping_args> -c 20 192.168.61.11</ping_args>
|
||||
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -100,6 +109,7 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping LTE-UE 1 from trf-gen</desc>
|
||||
<id>l2sim4g_ext_dn</id>
|
||||
<nodes>obelix</nodes>
|
||||
<ping_args>-c 20 12.0.0.2</ping_args>
|
||||
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -108,7 +118,9 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP Downlink</desc>
|
||||
<id>l2sim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<svr_id>l2sim4g_ext_dn</svr_id>
|
||||
<svr_node>obelix</svr_node>
|
||||
<iperf_args>-u -t 30 -b 1M -R</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
@@ -118,28 +130,18 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP Uplink</desc>
|
||||
<id>l2sim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<svr_id>l2sim4g_ext_dn</svr_id>
|
||||
<svr_node>obelix</svr_node>
|
||||
<iperf_args>-u -t 30 -b 3M</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100001">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 4G stack</desc>
|
||||
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
|
||||
</testCase>
|
||||
|
||||
<testCase id="200000">
|
||||
<class>StatsFromGenObject</class>
|
||||
<desc>Statistics before Traffic Test</desc>
|
||||
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
|
||||
</testCase>
|
||||
|
||||
<testCase id="200001">
|
||||
<class>StatsFromGenObject</class>
|
||||
<desc>Statistics after Traffic Test</desc>
|
||||
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_l2sim_fdd</yaml_path>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -31,9 +31,11 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100002">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 4G stack</desc>
|
||||
<yaml_path>yaml_files/4g_l2sim_fdd</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_l2sim_fdd</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100011
|
||||
800813
|
||||
000011
|
||||
000001
|
||||
000012
|
||||
@@ -42,7 +42,12 @@
|
||||
100011
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="111111">
|
||||
<class>Pull_Local_Registry</class>
|
||||
<desc>Pull Images from Local Registry</desc>
|
||||
@@ -51,11 +56,12 @@
|
||||
</testCase>
|
||||
|
||||
<testCase id="000011">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy Cassandra Database</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
|
||||
<services>cassandra db_init</services>
|
||||
<nb_healthy>1</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
@@ -71,39 +77,44 @@
|
||||
</testCase>
|
||||
|
||||
<testCase id="000012">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G CoreNetwork</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
|
||||
<services>oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen</services>
|
||||
<nb_healthy>7</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000013">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G eNB RF sim (FDD 05MHz)</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
|
||||
<services>oai_enb0</services>
|
||||
<nb_healthy>8</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000014">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G LTE-UE RF sim (FDD 05MHz)</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
|
||||
<services>oai_ue0</services>
|
||||
<nb_healthy>9</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000015">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020011">
|
||||
<class>Ping</class>
|
||||
<desc>Ping Traffic-Gen from LTE-UE</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<ping_args> -c 20 192.168.61.11</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -113,6 +124,7 @@
|
||||
<desc>Ping LTE-UE from Traffic-Gen</desc>
|
||||
<id>rfsim4g_ext_dn</id>
|
||||
<ping_args>-c 20 12.0.0.2</ping_args>
|
||||
<nodes>obelix</nodes>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -124,6 +136,8 @@
|
||||
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
<nodes>obelix</nodes>
|
||||
<svr_node>obelix</svr_node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030011">
|
||||
@@ -134,12 +148,16 @@
|
||||
<iperf_args>-u -t 30 -b 1M</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
<nodes>obelix</nodes>
|
||||
<svr_node>obelix</svr_node>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100011">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 4G stack</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -31,9 +31,11 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100011">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 4G stack</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100011
|
||||
800813
|
||||
000013
|
||||
000002
|
||||
000014
|
||||
@@ -45,7 +45,12 @@
|
||||
<test_svr_id>0</test_svr_id>
|
||||
<images_to_pull>oai-enb oai-lte-ue</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000001">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
@@ -59,25 +64,28 @@
|
||||
</testCase>
|
||||
|
||||
<testCase id="000013">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G eNB RF sim (FDD 05MHz)</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
|
||||
<services>oai_enb0</services>
|
||||
<nb_healthy>1</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000014">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G LTE-UE RF sim (FDD 05MHz)</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
|
||||
<services>oai_ue0</services>
|
||||
<nb_healthy>2</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020011">
|
||||
<class>Ping</class>
|
||||
<desc>Ping Traffic-Gen from LTE-UE</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<ping_args> -c 20 10.0.1.1</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -86,6 +94,7 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping LTE-UE from eNB</desc>
|
||||
<id>rfsim4g_enb_nos1</id>
|
||||
<nodes>obelix</nodes>
|
||||
<ping_args> -c 20 10.0.1.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -94,7 +103,9 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP DL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<svr_id>rfsim4g_enb_nos1</svr_id>
|
||||
<svr_node>obelix</svr_node>
|
||||
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
@@ -104,16 +115,20 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP UL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<svr_id>rfsim4g_enb_nos1</svr_id>
|
||||
<svr_node>obelix</svr_node>
|
||||
<iperf_args>-u -t 30 -b 1M</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100011">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 4G stack</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -31,9 +31,11 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100011">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 4G stack</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100011
|
||||
800813
|
||||
000011
|
||||
000001
|
||||
000012
|
||||
@@ -49,13 +49,19 @@
|
||||
<test_svr_id>0</test_svr_id>
|
||||
<images_to_pull>oai-enb oai-lte-ue</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000011">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy Cassandra Database</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
|
||||
<services>cassandra db_init</services>
|
||||
<nb_healthy>1</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
@@ -71,39 +77,44 @@
|
||||
</testCase>
|
||||
|
||||
<testCase id="000012">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G CoreNetwork</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
|
||||
<services>oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen</services>
|
||||
<nb_healthy>7</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000013">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G eNB RF sim (FDD 10MHz)</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
|
||||
<services>oai_enb0</services>
|
||||
<nb_healthy>8</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000014">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G LTE-UE RF sim (FDD 10MHz)</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
|
||||
<services>oai_ue0</services>
|
||||
<nb_healthy>9</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000015">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020011">
|
||||
<class>Ping</class>
|
||||
<desc>Ping Traffic-Gen from LTE-UE</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<ping_args> -c 20 192.168.61.11</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -112,6 +123,7 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping LTE-UE from Traffic-Gen</desc>
|
||||
<id>rfsim4g_ext_dn</id>
|
||||
<nodes>obelix</nodes>
|
||||
<ping_args>-c 20 12.0.0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -120,7 +132,9 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP DL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<svr_id>rfsim4g_ext_dn</svr_id>
|
||||
<svr_node>obelix</svr_node>
|
||||
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
@@ -130,16 +144,20 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP UL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<svr_id>rfsim4g_ext_dn</svr_id>
|
||||
<svr_node>obelix</svr_node>
|
||||
<iperf_args>-u -t 30 -b 1M</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100011">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 4G stack</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -31,9 +31,11 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100011">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 4G stack</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100011
|
||||
800813
|
||||
000011
|
||||
000001
|
||||
000012
|
||||
@@ -49,13 +49,19 @@
|
||||
<test_svr_id>0</test_svr_id>
|
||||
<images_to_pull>oai-enb oai-lte-ue</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000011">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy Cassandra Database</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
|
||||
<services>cassandra db_init</services>
|
||||
<nb_healthy>1</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
@@ -71,39 +77,44 @@
|
||||
</testCase>
|
||||
|
||||
<testCase id="000012">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G CoreNetwork</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
|
||||
<services>oai_hss redis magma_mme oai_spgwc oai_spgwu trf_gen</services>
|
||||
<nb_healthy>7</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000013">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G eNB RF sim (FDD 20MHz)</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
|
||||
<services>oai_enb0</services>
|
||||
<nb_healthy>8</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000014">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G LTE-UE RF sim (FDD 20MHz)</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
|
||||
<services>oai_ue0</services>
|
||||
<nb_healthy>9</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000015">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020011">
|
||||
<class>Ping</class>
|
||||
<desc>Ping Traffic-Gen from LTE-UE</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<ping_args> -c 20 192.168.61.11</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -112,6 +123,7 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping LTE-UE from Traffic-Gen</desc>
|
||||
<id>rfsim4g_ext_dn</id>
|
||||
<nodes>obelix</nodes>
|
||||
<ping_args>-c 20 12.0.0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -120,7 +132,9 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP DL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<svr_id>rfsim4g_ext_dn</svr_id>
|
||||
<svr_node>obelix</svr_node>
|
||||
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
@@ -130,16 +144,20 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP UL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<svr_id>rfsim4g_ext_dn</svr_id>
|
||||
<svr_node>obelix</svr_node>
|
||||
<iperf_args>-u -t 30 -b 1M</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100011">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 4G stack</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -31,9 +31,11 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100011">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 4G stack</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100011
|
||||
800813
|
||||
000013
|
||||
000002
|
||||
000014
|
||||
@@ -42,7 +42,12 @@
|
||||
<test_svr_id>0</test_svr_id>
|
||||
<images_to_pull>oai-enb oai-lte-ue</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000001">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
@@ -56,35 +61,41 @@
|
||||
</testCase>
|
||||
|
||||
<testCase id="000013">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G eNB RF sim (FeMBMS)</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fembms</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fembms</yaml_path>
|
||||
<services>oai_enb0</services>
|
||||
<nb_healthy>1</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000014">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G LTE-UE RF sim (FeMBMS)</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fembms</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fembms</yaml_path>
|
||||
<services>oai_ue0</services>
|
||||
<nb_healthy>2</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030011">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP DL</desc>
|
||||
<class>Iperf2_Unidir</class>
|
||||
<desc>Iperf2 UDP DL</desc>
|
||||
<id>rfsim4g_ue_fembms</id>
|
||||
<nodes>obelix</nodes>
|
||||
<svr_id>rfsim4g_enb_fembms</svr_id>
|
||||
<svr_node>obelix</svr_node>
|
||||
<iperf_args>-u -t 30 -b 2M</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100011">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 4G stack</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fembms</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fembms</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -31,9 +31,11 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100011">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 4G stack</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_fembms</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fembms</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100011
|
||||
800813
|
||||
000013
|
||||
000002
|
||||
000014
|
||||
@@ -42,7 +42,12 @@
|
||||
<test_svr_id>0</test_svr_id>
|
||||
<images_to_pull>oai-enb oai-lte-ue</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000001">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
@@ -56,35 +61,41 @@
|
||||
</testCase>
|
||||
|
||||
<testCase id="000013">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G eNB RF sim (MBMS)</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_mbms</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_mbms</yaml_path>
|
||||
<services>oai_enb0</services>
|
||||
<nb_healthy>1</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000014">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G LTE-UE RF sim (MBMS)</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_mbms</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_mbms</yaml_path>
|
||||
<services>oai_ue0</services>
|
||||
<nb_healthy>2</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030011">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP DL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<svr_id>rfsim4g_enb_nos1</svr_id>
|
||||
<svr_node>obelix</svr_node>
|
||||
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100011">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 4G stack</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_mbms</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_mbms</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -31,9 +31,11 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100011">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 4G stack</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_mbms</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_mbms</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100011
|
||||
800813
|
||||
000011
|
||||
000001
|
||||
000012
|
||||
@@ -50,13 +50,19 @@
|
||||
<test_svr_id>0</test_svr_id>
|
||||
<images_to_pull>oai-enb oai-lte-ue</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000011">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy Cassandra Database</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
|
||||
<services>cassandra db_init</services>
|
||||
<nb_healthy>1</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
@@ -72,33 +78,37 @@
|
||||
</testCase>
|
||||
|
||||
<testCase id="000012">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G CoreNetwork</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
|
||||
<services>oai_hss oai_mme oai_spgwc oai_spgwu trf_gen</services>
|
||||
<nb_healthy>6</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000013">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G eNB RF sim (TDD 05MHz)</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
|
||||
<services>oai_enb0</services>
|
||||
<nb_healthy>7</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000014">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 4G LTE-UE RF sim (TDD 05MHz)</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
|
||||
<services>oai_ue0</services>
|
||||
<nb_healthy>8</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020011">
|
||||
<class>Ping</class>
|
||||
<desc>Ping Traffic-Gen from LTE-UE</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<ping_args> -c 20 192.168.61.11</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -107,6 +117,7 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping LTE-UE from Traffic-Gen</desc>
|
||||
<id>rfsim4g_ext_dn</id>
|
||||
<nodes>obelix</nodes>
|
||||
<ping_args>-c 20 12.0.0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -115,7 +126,9 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP DL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<svr_id>rfsim4g_ext_dn</svr_id>
|
||||
<svr_node>obelix</svr_node>
|
||||
<iperf_args>-u -t 30 -b 2M -R</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
@@ -125,16 +138,20 @@
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf UDP UL</desc>
|
||||
<id>rfsim4g_ue</id>
|
||||
<nodes>obelix</nodes>
|
||||
<svr_id>rfsim4g_ext_dn</svr_id>
|
||||
<svr_node>obelix</svr_node>
|
||||
<iperf_args>-u -t 30 -b 1M</iperf_args>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100011">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 4G stack</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -31,9 +31,11 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100011">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 4G stack</desc>
|
||||
<yaml_path>yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100021
|
||||
800813
|
||||
000021
|
||||
000022
|
||||
000023
|
||||
@@ -42,51 +42,63 @@
|
||||
<test_svr_id>0</test_svr_id>
|
||||
<images_to_pull>oai-gnb oai-nr-cuup oai-nr-ue</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000021">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CoreNetwork</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_e1</yaml_path>
|
||||
<services>mysql oai-amf oai-smf oai-upf</services>
|
||||
<nb_healthy>4</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000022">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G RAN RF sim SA (1 CU-CP, 3 CU-UPs, 3 DUs)</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_e1</yaml_path>
|
||||
<services>oai-cucp oai-cuup oai-cuup2 oai-cuup3 oai-du oai-du2 oai-du3</services>
|
||||
<nb_healthy>11</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000023">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G NR-UE RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_e1</yaml_path>
|
||||
<services>oai-nr-ue oai-nr-ue2 oai-nr-ue3</services>
|
||||
<nb_healthy>14</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000024">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3</id>
|
||||
<nodes>cacofonix cacofonix cacofonix</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020021">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from all NR-UEs</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3</id>
|
||||
<nodes>cacofonix cacofonix cacofonix</nodes>
|
||||
<ping_args> -c 20 12.1.1.1 -i0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100021">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_e1</yaml_path>
|
||||
<d_retx_th>1,0,0,0</d_retx_th>
|
||||
<u_retx_th>1,0,0,0</u_retx_th>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -31,9 +31,11 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100022">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_e1</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_e1</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100021
|
||||
800813
|
||||
000021
|
||||
000022
|
||||
000023
|
||||
@@ -44,33 +44,42 @@
|
||||
<test_svr_id>0</test_svr_id>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-cuup-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000021">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CoreNetwork</desc>
|
||||
<yaml_path>yaml_files/5g_f1_rfsimulator</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_f1_rfsimulator</yaml_path>
|
||||
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
|
||||
<nb_healthy>5</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000022">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CU+DU+UE RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_f1_rfsimulator</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_f1_rfsimulator</yaml_path>
|
||||
<services>oai-cu oai-du oai-nr-ue</services>
|
||||
<nb_healthy>8</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000023">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020021">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from all NR-UEs</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<ping_args> -c 20 192.168.72.135 -i0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -78,7 +87,7 @@
|
||||
<testCase id="030020">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Simulate a DL radio channel with noise (3 dB)</desc>
|
||||
<node>localhost</node>
|
||||
<node>cacofonix</node>
|
||||
<command>echo channelmod modify 0 noise_power_dB 3 | nc --send-only 192.168.71.181 8091</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
@@ -86,9 +95,11 @@
|
||||
<testCase id="030021">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf (DL/5Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 5M -t 30 -R</iperf_args>
|
||||
<iperf_args>-u -b 5M -t 20 -R</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>cacofonix</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -96,9 +107,11 @@
|
||||
<testCase id="030022">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf (UL/3Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 30</iperf_args>
|
||||
<iperf_args>-u -b 3M -t 20</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>cacofonix</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -106,7 +119,7 @@
|
||||
<testCase id="040021">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Simulate a disruption of DL radio channel (ploss 55)(5 sec)</desc>
|
||||
<node>localhost</node>
|
||||
<node>cacofonix</node>
|
||||
<command>echo channelmod modify 0 ploss 55 | nc -N 192.168.71.181 8091 && sleep 5</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
@@ -114,7 +127,7 @@
|
||||
<testCase id="040022">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Get UE sync state (UE ID 0)</desc>
|
||||
<node>localhost</node>
|
||||
<node>cacofonix</node>
|
||||
<command>echo ciUE sync_state 0 | nc -N 192.168.71.181 8091 | grep -E UE_NOT_SYNC</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
@@ -122,7 +135,7 @@
|
||||
<testCase id="040023">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Restoration of the original DL channel conditions (ploss 0)(5 sec)</desc>
|
||||
<node>localhost</node>
|
||||
<node>cacofonix</node>
|
||||
<command>echo channelmod modify 0 ploss 0 | nc -N 192.168.71.181 8091 && sleep 5</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
@@ -130,17 +143,19 @@
|
||||
<testCase id="040024">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Get UE sync state (UE ID 0)</desc>
|
||||
<node>localhost</node>
|
||||
<node>cacofonix</node>
|
||||
<command>echo ciUE sync_state 0 | nc -N 192.168.71.181 8091 | grep -E UE_CONNECTED && sleep 10</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100021">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_f1_rfsimulator</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_f1_rfsimulator</yaml_path>
|
||||
<d_retx_th>30,30,100,100</d_retx_th>
|
||||
<u_retx_th>30,30,100,100</u_retx_th>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -31,9 +31,11 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100022">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_f1_rfsimulator</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_f1_rfsimulator</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100011
|
||||
800813
|
||||
000011
|
||||
000012
|
||||
000013
|
||||
@@ -45,34 +45,43 @@
|
||||
<test_svr_id>0</test_svr_id>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000011">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CoreNetwork</desc>
|
||||
<yaml_path>yaml_files/5g_fdd_rfsimulator</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_fdd_rfsimulator</yaml_path>
|
||||
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
|
||||
<nb_healthy>5</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000012">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G gNB+UE RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_fdd_rfsimulator</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_fdd_rfsimulator</yaml_path>
|
||||
<services>oai-gnb oai-nr-ue</services>
|
||||
<nb_healthy>7</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000013">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020011">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<ping_args> -c 20 192.168.72.135</ping_args>
|
||||
<nodes>cacofonix</nodes>
|
||||
<ping_args>-c 20 -i 0.25 192.168.72.135</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -80,7 +89,8 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<ping_args>-c 20 12.1.1.2</ping_args>
|
||||
<nodes>cacofonix</nodes>
|
||||
<ping_args>-c 20 -i 0.25 12.1.1.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -89,7 +99,9 @@
|
||||
<desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 30 -R</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>cacofonix</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -99,17 +111,21 @@
|
||||
<desc>Iperf (UL/3Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 30</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>cacofonix</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100011">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_fdd_rfsimulator</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_fdd_rfsimulator</yaml_path>
|
||||
<d_retx_th>1,0,0,0</d_retx_th>
|
||||
<u_retx_th>1,0,0,0</u_retx_th>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -31,9 +31,11 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100012">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_fdd_rfsimulator</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_fdd_rfsimulator</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
|
||||
@@ -27,16 +27,14 @@
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100001
|
||||
800813
|
||||
000000
|
||||
000001
|
||||
000002
|
||||
000003
|
||||
000004
|
||||
200000
|
||||
020001
|
||||
020002
|
||||
200001
|
||||
100001
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
@@ -47,49 +45,60 @@
|
||||
<test_svr_id>0</test_svr_id>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000000">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy MySql Database</desc>
|
||||
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_l2sim_tdd</yaml_path>
|
||||
<services>mysql</services>
|
||||
<nb_healthy>1</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CoreNetwork</desc>
|
||||
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_l2sim_tdd</yaml_path>
|
||||
<services>oai-amf oai-smf oai-upf oai-ext-dn</services>
|
||||
<nb_healthy>5</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G gNB L2 sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_l2sim_tdd</yaml_path>
|
||||
<services>oai-gnb</services>
|
||||
<nb_healthy>6</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000003">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G NR-UE L2 sim SA and Proxy</desc>
|
||||
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_l2sim_tdd</yaml_path>
|
||||
<services>proxy oai-nr-ue0</services>
|
||||
<nb_healthy>8</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000004">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE</desc>
|
||||
<id>l2sim5g_ue</id>
|
||||
<nodes>localhost</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>l2sim5g_ue</id>
|
||||
<nodes>localhost</nodes>
|
||||
<ping_args> -c 20 192.168.72.135</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -98,28 +107,19 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>l2sim5g_ext_dn</id>
|
||||
<nodes>localhost</nodes>
|
||||
<ping_args>-c 20 12.1.1.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100001">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_l2sim_tdd</yaml_path>
|
||||
<d_retx_th>20,50,100,100</d_retx_th>
|
||||
<u_retx_th>0,0,0,0</u_retx_th>
|
||||
</testCase>
|
||||
|
||||
<testCase id="200000">
|
||||
<class>StatsFromGenObject</class>
|
||||
<desc>Statistics before Traffic Test</desc>
|
||||
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
|
||||
</testCase>
|
||||
|
||||
<testCase id="200001">
|
||||
<class>StatsFromGenObject</class>
|
||||
<desc>Statistics after Traffic Test</desc>
|
||||
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -31,9 +31,11 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100002">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_l2sim_tdd</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_l2sim_tdd</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100001
|
||||
800813
|
||||
000001
|
||||
000002
|
||||
000003
|
||||
@@ -60,74 +60,88 @@
|
||||
<test_svr_id>0</test_svr_id>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-ue</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000001">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CoreNetwork</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
|
||||
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
|
||||
<nb_healthy>5</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G gNB RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
|
||||
<services>oai-gnb</services>
|
||||
<nb_healthy>6</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000003">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G NR-UE RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
|
||||
<services>oai-nr-ue</services>
|
||||
<nb_healthy>7</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000004">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy Second OAI 5G NR-UE RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
|
||||
<services>oai-nr-ue2</services>
|
||||
<nb_healthy>8</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000005">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G NR-UEs (#3, #4, #5) RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
|
||||
<services>oai-nr-ue3 oai-nr-ue4 oai-nr-ue5</services>
|
||||
<nb_healthy>11</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000006">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G NR-UEs (#6, #7, #8) RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
|
||||
<services>oai-nr-ue6 oai-nr-ue7 oai-nr-ue8</services>
|
||||
<nb_healthy>14</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000007">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G NR-UEs (#9, #10) RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
|
||||
<services>oai-nr-ue9 oai-nr-ue10</services>
|
||||
<nb_healthy>16</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000008">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10</id>
|
||||
<nodes>cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<ping_args> -c 20 192.168.72.135</ping_args>
|
||||
<nodes>cacofonix</nodes>
|
||||
<ping_args> -c 20 -i 0.25 192.168.72.135</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -135,7 +149,8 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<ping_args>-c 20 12.1.1.2</ping_args>
|
||||
<nodes>cacofonix</nodes>
|
||||
<ping_args>-c 20 -i 0.25 12.1.1.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -143,7 +158,8 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from Second NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<ping_args> -c 20 192.168.72.135</ping_args>
|
||||
<nodes>cacofonix</nodes>
|
||||
<ping_args> -c 20 -i 0.25 192.168.72.135</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -151,7 +167,8 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping Second NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<ping_args>-c 20 12.1.1.3</ping_args>
|
||||
<nodes>cacofonix</nodes>
|
||||
<ping_args>-c 20 -i 0.25 12.1.1.3</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -159,7 +176,8 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from both UEs</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2</id>
|
||||
<ping_args>-c 20 192.168.72.135</ping_args>
|
||||
<nodes>cacofonix cacofonix</nodes>
|
||||
<ping_args>-c 20 -i 0.25 192.168.72.135</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -167,7 +185,8 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from both UEs</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2</id>
|
||||
<ping_args>-c 20 192.168.72.135</ping_args>
|
||||
<nodes>cacofonix cacofonix</nodes>
|
||||
<ping_args>-c 20 -i 0.25 192.168.72.135</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -175,16 +194,19 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from all UEs</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10</id>
|
||||
<ping_args>-c 100 192.168.72.135 -i 0.2 -s 1016</ping_args>
|
||||
<nodes>cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix</nodes>
|
||||
<ping_args>-c 20 192.168.72.135 -i 0.25 -s 1016</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030001">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 30 -R</iperf_args>
|
||||
<iperf_args>-u -b 3M -t 20 -R</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>cacofonix</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -192,9 +214,11 @@
|
||||
<testCase id="030002">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf (UL/1Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 1M -t 30</iperf_args>
|
||||
<iperf_args>-u -b 1M -t 20</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>cacofonix</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -203,26 +227,31 @@
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE 1 and 2</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2</id>
|
||||
<nodes>cacofonix cacofonix</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="444444">
|
||||
<class>Detach_UE</class>
|
||||
<desc>Detach OAI UE 1 and 2</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2</id>
|
||||
<nodes>cacofonix cacofonix</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="444445">
|
||||
<class>Detach_UE</class>
|
||||
<desc>Detach OAI UE 2 to 10</desc>
|
||||
<id>rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10</id>
|
||||
<nodes>cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix cacofonix</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100001">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
|
||||
<d_retx_th>1,0,0,0</d_retx_th>
|
||||
<u_retx_th>1,0,0,0</u_retx_th>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100001
|
||||
800813
|
||||
000001
|
||||
000002
|
||||
000003
|
||||
@@ -45,33 +45,42 @@
|
||||
<test_svr_id>0</test_svr_id>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000001">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CoreNetwork</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_24prb</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_24prb</yaml_path>
|
||||
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
|
||||
<nb_healthy>5</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G gNB+UE RFsim SA</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_24prb</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_24prb</yaml_path>
|
||||
<services>oai-gnb oai-nr-ue</services>
|
||||
<nb_healthy>7</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000003">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<ping_args> -c 20 -i0.2 192.168.72.135</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -80,6 +89,7 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<ping_args>-c 20 12.1.1.2 -i0.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -87,9 +97,11 @@
|
||||
<testCase id="030001">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 30 -R</iperf_args>
|
||||
<iperf_args>-u -b 3M -t 20 -R</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>cacofonix</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -97,19 +109,23 @@
|
||||
<testCase id="030002">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf (UL/1Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 1M -t 30</iperf_args>
|
||||
<iperf_args>-u -b 1M -t 20</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>cacofonix</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100001">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_24prb</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_24prb</yaml_path>
|
||||
<d_retx_th>1,0,0,0</d_retx_th>
|
||||
<u_retx_th>1,0,0,0</u_retx_th>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -31,9 +31,11 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100002">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_24prb</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_24prb</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100001
|
||||
800813
|
||||
000001
|
||||
000002
|
||||
000003
|
||||
@@ -45,34 +45,43 @@
|
||||
<test_svr_id>0</test_svr_id>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000001">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CoreNetwork</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_2x2</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_2x2</yaml_path>
|
||||
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
|
||||
<nb_healthy>5</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G gNB+UE RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_2x2</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_2x2</yaml_path>
|
||||
<services>oai-gnb oai-nr-ue</services>
|
||||
<nb_healthy>7</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000003">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<ping_args> -c 20 192.168.72.135</ping_args>
|
||||
<nodes>cacofonix</nodes>
|
||||
<ping_args>-c 20 -i 0.25 192.168.72.135</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
@@ -80,34 +89,41 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<ping_args>-c 20 12.1.1.2</ping_args>
|
||||
<nodes>cacofonix</nodes>
|
||||
<ping_args>-c 20 -i 0.25 12.1.1.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030001">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf (DL/3Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 3M -t 30 -R</iperf_args>
|
||||
<desc>Iperf (DL/10Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 10M -t 20 -R</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>cacofonix</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030002">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf (UL/1Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 1M -t 30</iperf_args>
|
||||
<desc>Iperf (UL/4Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 4M -t 20</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<svr_id>rfsim5g_ext_dn</svr_id>
|
||||
<svr_node>cacofonix</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100001">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_2x2</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_2x2</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<d_retx_th>1,0,0,0</d_retx_th>
|
||||
<u_retx_th>1,0,0,0</u_retx_th>
|
||||
</testCase>
|
||||
|
||||
@@ -31,9 +31,11 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100002">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_2x2</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_2x2</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
|
||||
@@ -31,9 +31,11 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100002">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
800813
|
||||
000020
|
||||
000021
|
||||
020021
|
||||
@@ -40,33 +41,43 @@
|
||||
<test_svr_id>0</test_svr_id>
|
||||
<images_to_pull>oai-gnb oai-nr-ue</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000020">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI-DU+nrUE</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_accelleran</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_accelleran</yaml_path>
|
||||
<services>oai-du oai-nr-ue</services>
|
||||
<nb_healthy>2</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000021">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>ofqot</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020021">
|
||||
<class>Ping</class>
|
||||
<desc>Test Connectivity (ping)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>ofqot</nodes>
|
||||
<ping_args>-c 20 12.1.1.1</ping_args>
|
||||
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100022">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_accelleran</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_accelleran</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -31,9 +31,11 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100022">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_accelleran</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_accelleran</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100011
|
||||
800813
|
||||
004000
|
||||
000010
|
||||
000011
|
||||
@@ -49,30 +49,38 @@
|
||||
<testCase id="004000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Clean-Up any residual volume</desc>
|
||||
<node>localhost</node>
|
||||
<node>cacofonix</node>
|
||||
<command>docker volume rm 5g_rfsimulator_fdd_phytest_rrc.config -f</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000010">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G gNB RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
|
||||
<services>oai-gnb</services>
|
||||
<nb_healthy>1</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000011">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G NR-UE RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
|
||||
<services>oai-nr-ue</services>
|
||||
<nb_healthy>2</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020011">
|
||||
<class>Ping</class>
|
||||
<desc>Ping gNB from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<ping_args>-c20 -i0.2 10.0.1.1</ping_args>
|
||||
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -81,6 +89,7 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from gNB</desc>
|
||||
<id>rfsim5g_gnb_nos1</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<ping_args>-c20 -i0.2 10.0.1.2</ping_args>
|
||||
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -88,9 +97,11 @@
|
||||
<testCase id="030011">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf (DL/30kbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 0.03M -t 30 -R -c 10.0.1.1</iperf_args>
|
||||
<iperf_args>-u -b 0.03M -t 20 -R -c 10.0.1.1</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<svr_id>rfsim5g_gnb_nos1</svr_id>
|
||||
<svr_node>cacofonix</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
@@ -98,19 +109,23 @@
|
||||
<testCase id="030012">
|
||||
<class>Iperf</class>
|
||||
<desc>Iperf (UL/30kbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 0.03M -t 30 -c 10.0.1.1</iperf_args>
|
||||
<iperf_args>-u -b 0.03M -t 20 -c 10.0.1.1</iperf_args>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<svr_id>rfsim5g_gnb_nos1</svr_id>
|
||||
<svr_node>cacofonix</svr_node>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>90</iperf_bitrate_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100011">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
|
||||
<d_retx_th>10,100,100,100</d_retx_th> <!-- phytest: will fail at start! -->
|
||||
<u_retx_th>10,100,100,100</u_retx_th> <!-- phytest: will fail at start! -->
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -32,15 +32,17 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100012">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="004000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Clean-Up any residual volume</desc>
|
||||
<node>localhost</node>
|
||||
<node>cacofonix</node>
|
||||
<command>docker volume rm 5g_rfsimulator_fdd_phytest_rrc.config</command>
|
||||
</testCase>
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100001
|
||||
800813
|
||||
000000
|
||||
000001
|
||||
020001
|
||||
@@ -43,26 +43,36 @@
|
||||
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000000">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI gNB</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
|
||||
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
|
||||
<nb_healthy>5</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
<class>DeployGenObject</class>
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI NR-UE</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
|
||||
<services>oai-gnb oai-nr-ue</services>
|
||||
<nb_healthy>7</nb_healthy>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<ping_args>-c 20 -i0.2 192.168.72.135</ping_args>
|
||||
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
@@ -71,16 +81,19 @@
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<ping_args>-c 20 12.1.1.2 -i0.2</ping_args>
|
||||
<ping_packetloss_threshold>0</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100001">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
|
||||
<d_retx_th>10,0,0,0</d_retx_th>
|
||||
<u_retx_th>10,0,0,0</u_retx_th>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -31,9 +31,11 @@
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100002">
|
||||
<class>UndeployGenObject</class>
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
|
||||
105
ci-scripts/xml_files/container_5g_rfsim_ntn_geo.xml
Normal file
105
ci-scripts/xml_files/container_5g_rfsim_ntn_geo.xml
Normal file
@@ -0,0 +1,105 @@
|
||||
<!--
|
||||
|
||||
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The OpenAirInterface Software Alliance licenses this file to You under
|
||||
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.openairinterface.org/?page_id=698
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
contact@openairinterface.org
|
||||
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>rfsim-5gnr-ntn-geo</htmlTabRef>
|
||||
<htmlTabName>Monolithic SA NTN GEO gNB</htmlTabName>
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100001
|
||||
800813
|
||||
000001
|
||||
000002
|
||||
000003
|
||||
020001
|
||||
020002
|
||||
100001
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="111111">
|
||||
<class>Pull_Local_Registry</class>
|
||||
<desc>Pull Images from Local Registry</desc>
|
||||
<test_svr_id>0</test_svr_id>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="800813">
|
||||
<class>Create_Workspace</class>
|
||||
<desc>Creating new Workspace</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
<testCase id="000001">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G CoreNetwork</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_ntn_geo</yaml_path>
|
||||
<services>mysql oai-amf oai-smf oai-upf oai-ext-dn</services>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy OAI 5G gNB+nrUE RF sim SA</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_ntn_geo</yaml_path>
|
||||
<services>oai-gnb oai-nr-ue</services>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000003">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE (Wait for IP)</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<ping_args>-c 20 -i 0.25 192.168.72.135</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020002">
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<nodes>cacofonix</nodes>
|
||||
<ping_args>-c 20 -i 0.25 12.1.1.2</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100001">
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_ntn_geo</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
47
ci-scripts/xml_files/container_5g_rfsim_ntn_geo_down.xml
Normal file
47
ci-scripts/xml_files/container_5g_rfsim_ntn_geo_down.xml
Normal file
@@ -0,0 +1,47 @@
|
||||
<!--
|
||||
|
||||
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
|
||||
contributor license agreements. See the NOTICE file distributed with
|
||||
this work for additional information regarding copyright ownership.
|
||||
The OpenAirInterface Software Alliance licenses this file to You under
|
||||
the OAI Public License, Version 1.1 (the "License"); you may not use this file
|
||||
except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.openairinterface.org/?page_id=698
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
||||
For more information about the OpenAirInterface (OAI) Software Alliance:
|
||||
contact@openairinterface.org
|
||||
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>rfsim-5gnr-ntn-geo-down</htmlTabRef>
|
||||
<htmlTabName>CleanUp SA Monolithic NTN GEO gNB</htmlTabName>
|
||||
<htmlTabIcon>trash</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
100002
|
||||
222222
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100002">
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_ntn_geo</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
<test_svr_id>0</test_svr_id>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user