mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-19 15:40:30 +00:00
Compare commits
967 Commits
2023.w10
...
sl-eurecom
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
149034887c | ||
|
|
5917f0f2b8 | ||
|
|
6832959b0b | ||
|
|
e7b42f419b | ||
|
|
d629498b98 | ||
|
|
1c01343d49 | ||
|
|
f633fc8d96 | ||
|
|
5e28985954 | ||
|
|
af662183f4 | ||
|
|
efccb416cc | ||
|
|
4232baec52 | ||
|
|
2f19c2de4d | ||
|
|
b17e862742 | ||
|
|
d680bb83b2 | ||
|
|
9354a45235 | ||
|
|
0b6ba9d08f | ||
|
|
f5db0a881e | ||
|
|
e7bf3b83a5 | ||
|
|
b05d0ab91e | ||
|
|
0894a6bfe7 | ||
|
|
462ed76114 | ||
|
|
50923c7f80 | ||
|
|
5cbd83c4e6 | ||
|
|
7fae9eb2d8 | ||
|
|
5ee44e015a | ||
|
|
b2cc750587 | ||
|
|
b90448ae20 | ||
|
|
719752cad8 | ||
|
|
15e858270d | ||
|
|
9421fcc8b9 | ||
|
|
e9ded45428 | ||
|
|
c588facc1b | ||
|
|
5933f5ba53 | ||
|
|
da2ba65685 | ||
|
|
8ba201005f | ||
|
|
f328a6e181 | ||
|
|
bc68fcb32d | ||
|
|
b75d95626e | ||
|
|
375a11b119 | ||
|
|
a990cba81f | ||
|
|
3ea2afdca5 | ||
|
|
3e282f9573 | ||
|
|
8e30f99eee | ||
|
|
3eea99a312 | ||
|
|
67c7d52333 | ||
|
|
1eb4f857af | ||
|
|
ca30b9ee55 | ||
|
|
6ced3cd8a7 | ||
|
|
10b996f5db | ||
|
|
31a1003349 | ||
|
|
44bf62758a | ||
|
|
e7a8eb950e | ||
|
|
2a0142fb96 | ||
|
|
6d7d075d8c | ||
|
|
f2a8b5c41d | ||
|
|
6cc01f7cd9 | ||
|
|
fc01032915 | ||
|
|
db00336a2a | ||
|
|
7223ac8c9a | ||
|
|
a8879d3b9c | ||
|
|
3fbcdf4c5a | ||
|
|
d525849730 | ||
|
|
d9e38660ba | ||
|
|
38ec30559e | ||
|
|
082cf6146d | ||
|
|
149d27d55f | ||
|
|
b339460666 | ||
|
|
787170de83 | ||
|
|
84fa481e72 | ||
|
|
c126cbab77 | ||
|
|
7cfb6db48a | ||
|
|
bc0083c219 | ||
|
|
90e5db3728 | ||
|
|
c9bc86312f | ||
|
|
7221a5f736 | ||
|
|
629b2c9fe3 | ||
|
|
9f91dbd9bb | ||
|
|
a354ce01cf | ||
|
|
93d32eca45 | ||
|
|
594fb18cc8 | ||
|
|
5143133d33 | ||
|
|
c0f7e458bb | ||
|
|
15822a0a5d | ||
|
|
6022fe5acd | ||
|
|
224ef7921a | ||
|
|
4fdbcb0472 | ||
|
|
bbc9442fc8 | ||
|
|
418c6e23f0 | ||
|
|
94185df93e | ||
|
|
302f016650 | ||
|
|
053d8d938f | ||
|
|
cf4a22b58a | ||
|
|
75e9db0633 | ||
|
|
24bf0d8046 | ||
|
|
3c5468dd7d | ||
|
|
e31eacb386 | ||
|
|
361dfc3c9f | ||
|
|
8482cb62c4 | ||
|
|
d8627c91f3 | ||
|
|
ad8da84671 | ||
|
|
f0f1121e9c | ||
|
|
64b4fbe7f2 | ||
|
|
ae6db92dc2 | ||
|
|
99c620b8cc | ||
|
|
9b8eae2256 | ||
|
|
87d9517738 | ||
|
|
e140ac4bf7 | ||
|
|
b307044345 | ||
|
|
62a5c4996c | ||
|
|
d12e67b0bc | ||
|
|
8f85851a95 | ||
|
|
3b429c5399 | ||
|
|
7879afc010 | ||
|
|
053ef8fc44 | ||
|
|
24e4629eff | ||
|
|
aac2a062b3 | ||
|
|
b735f8bec6 | ||
|
|
8a10d1b222 | ||
|
|
9509bdfdc1 | ||
|
|
3eabc2fe01 | ||
|
|
01af5a1e2d | ||
|
|
2faca0fdba | ||
|
|
7f4e8f9220 | ||
|
|
63fc39dc3f | ||
|
|
3f1a52eb3e | ||
|
|
759d9df9bd | ||
|
|
6927eb12a6 | ||
|
|
cf67fcea6c | ||
|
|
62efab7262 | ||
|
|
8a9346dd27 | ||
|
|
9987ebf8aa | ||
|
|
6836582ca1 | ||
|
|
8b339bb659 | ||
|
|
b6feedc883 | ||
|
|
bfbb3a69ba | ||
|
|
b34e4d0a19 | ||
|
|
98f06c5907 | ||
|
|
5c426db6eb | ||
|
|
f798541e84 | ||
|
|
d510827e16 | ||
|
|
c63edad48b | ||
|
|
e9e347043e | ||
|
|
28741ed967 | ||
|
|
608aa3ebc4 | ||
|
|
a6e18fe06a | ||
|
|
46db3534b7 | ||
|
|
2f82aea100 | ||
|
|
b37b0e5c97 | ||
|
|
28fb7a37d7 | ||
|
|
db2aa3c8bd | ||
|
|
9eb1af6dc2 | ||
|
|
6a90266aff | ||
|
|
8c051201d6 | ||
|
|
26e469cbac | ||
|
|
7455bae459 | ||
|
|
a0b207fe6b | ||
|
|
fc17f3fdc7 | ||
|
|
abba6a6d8a | ||
|
|
1fefd730d6 | ||
|
|
56367dd07c | ||
|
|
6e5511b220 | ||
|
|
bf10230185 | ||
|
|
be5c3d7aa0 | ||
|
|
04451c7078 | ||
|
|
224c5538e4 | ||
|
|
ffe0630d93 | ||
|
|
5a153c502f | ||
|
|
1470d7637f | ||
|
|
69da6a5f5e | ||
|
|
1ae561b9cc | ||
|
|
41aadcc54f | ||
|
|
beef5461e5 | ||
|
|
51c4933258 | ||
|
|
8d07275496 | ||
|
|
852a6c4f28 | ||
|
|
ca4b438dd4 | ||
|
|
971bacb76f | ||
|
|
5d38a99955 | ||
|
|
e6488d1b62 | ||
|
|
c6a04db9a1 | ||
|
|
8292c4523e | ||
|
|
eb09a63001 | ||
|
|
8aa0aa4d40 | ||
|
|
296d930fba | ||
|
|
b62474bd83 | ||
|
|
c1a2b65697 | ||
|
|
d021fbd0b6 | ||
|
|
395ca4b4b0 | ||
|
|
44d5b37890 | ||
|
|
88e6d9df09 | ||
|
|
7cb50288ef | ||
|
|
1e30c0adba | ||
|
|
b9293754b8 | ||
|
|
2d1aa8425b | ||
|
|
d907cbd442 | ||
|
|
c744b01566 | ||
|
|
5761b60c60 | ||
|
|
f7181caf65 | ||
|
|
aa6468f95e | ||
|
|
a611d58d3b | ||
|
|
6c590b900a | ||
|
|
4b263c3fa5 | ||
|
|
a85fee5dca | ||
|
|
e49c6db2bf | ||
|
|
f4ed558cc5 | ||
|
|
3ca0f39088 | ||
|
|
98f4d038d4 | ||
|
|
daa1a911ac | ||
|
|
41d9e775c9 | ||
|
|
f09fffdb2b | ||
|
|
486ae6e7bd | ||
|
|
1679cf38ba | ||
|
|
bdfec26d82 | ||
|
|
19d3014150 | ||
|
|
733c7e5e89 | ||
|
|
5b35523c2c | ||
|
|
376a9beb80 | ||
|
|
ebd70a3915 | ||
|
|
3cf3a42b44 | ||
|
|
6fb10cd5fa | ||
|
|
a6862df7aa | ||
|
|
a0a92f4581 | ||
|
|
0b892acef3 | ||
|
|
f4dc362247 | ||
|
|
778c88d8a9 | ||
|
|
ad598a2d5d | ||
|
|
ca010654bf | ||
|
|
1923bed4a3 | ||
|
|
9142357069 | ||
|
|
a3c13fdc71 | ||
|
|
bf844247bf | ||
|
|
7eb2e99dcd | ||
|
|
26909e7c32 | ||
|
|
ded8a3779d | ||
|
|
0a4e28688b | ||
|
|
22db2d613f | ||
|
|
73907e5ee2 | ||
|
|
703047eca9 | ||
|
|
33c09b7776 | ||
|
|
af8b3b0486 | ||
|
|
5403198996 | ||
|
|
5cbad19d19 | ||
|
|
1f6d111f6a | ||
|
|
2bfe9ba229 | ||
|
|
c8a61331ea | ||
|
|
0004626ac7 | ||
|
|
9e4d522937 | ||
|
|
e45a051c80 | ||
|
|
5c6778be0c | ||
|
|
7d23ec27b5 | ||
|
|
f1841639f5 | ||
|
|
a03864ee8c | ||
|
|
f3be849904 | ||
|
|
1d9a4a42e7 | ||
|
|
15c12caa37 | ||
|
|
d1e1f56199 | ||
|
|
5c333cca65 | ||
|
|
1f97969675 | ||
|
|
06c0979b90 | ||
|
|
51fe9b84dd | ||
|
|
5268dbf3f8 | ||
|
|
ca6ae2c486 | ||
|
|
8c1aeb4ab9 | ||
|
|
7a52279078 | ||
|
|
61435e9066 | ||
|
|
c4a9f0ea03 | ||
|
|
a6149386dc | ||
|
|
25b3aaf230 | ||
|
|
06436655ff | ||
|
|
0631c04fba | ||
|
|
8e6554bdf3 | ||
|
|
7fb242d33e | ||
|
|
03862de437 | ||
|
|
ca3a7c612b | ||
|
|
8ca640337a | ||
|
|
a29e59b602 | ||
|
|
e4143ded39 | ||
|
|
b69fb5bd74 | ||
|
|
d1fc95a8a1 | ||
|
|
ee8af9dcfb | ||
|
|
ed1d009381 | ||
|
|
99d5e50b6a | ||
|
|
1ac428a323 | ||
|
|
50bf571347 | ||
|
|
15adb12b71 | ||
|
|
b7f47aa70a | ||
|
|
066de7c3c5 | ||
|
|
bd42a4259f | ||
|
|
cf8dff2093 | ||
|
|
670fcc0459 | ||
|
|
81d44c6422 | ||
|
|
889a50072f | ||
|
|
1880ede547 | ||
|
|
40c06fa8d5 | ||
|
|
a6486909ca | ||
|
|
4700dde2ae | ||
|
|
a0318fb413 | ||
|
|
09ea970b34 | ||
|
|
77e61425e0 | ||
|
|
4642a7c0f5 | ||
|
|
6e01a62838 | ||
|
|
e35401efde | ||
|
|
223fd28bb2 | ||
|
|
528025e9a6 | ||
|
|
d4da44f1d3 | ||
|
|
0de51bcd93 | ||
|
|
fec2a15bdf | ||
|
|
6529d875d8 | ||
|
|
ffebe2498d | ||
|
|
0f43c2c713 | ||
|
|
c405ad16a8 | ||
|
|
2ac2a7f074 | ||
|
|
a458a251a0 | ||
|
|
47ea8d79a2 | ||
|
|
d664190f9d | ||
|
|
0d66410317 | ||
|
|
12ccca72b6 | ||
|
|
6e93619896 | ||
|
|
779748579c | ||
|
|
f3126586f3 | ||
|
|
48d19391e2 | ||
|
|
7c9b501310 | ||
|
|
b58ad4baf0 | ||
|
|
dcdf057dc8 | ||
|
|
342ea0882d | ||
|
|
8cbe4bb1d1 | ||
|
|
a54ca2c6e3 | ||
|
|
60d7fe6347 | ||
|
|
8fd0ad58b2 | ||
|
|
9eac725441 | ||
|
|
8e9f9b5629 | ||
|
|
e5954f2dbf | ||
|
|
96f21a1ccb | ||
|
|
7e29f16d53 | ||
|
|
9074566869 | ||
|
|
b44bb41235 | ||
|
|
a4718d4a16 | ||
|
|
6475cf21a5 | ||
|
|
5b8674cc57 | ||
|
|
9ab2fde392 | ||
|
|
b5acd48e5b | ||
|
|
acf73ac23f | ||
|
|
b3791364fd | ||
|
|
7c0cb06e59 | ||
|
|
9c9ce64809 | ||
|
|
508b67e5e5 | ||
|
|
e79756d7ab | ||
|
|
39b73391d4 | ||
|
|
9e6fe8cf80 | ||
|
|
a4d43c249e | ||
|
|
451449e148 | ||
|
|
508d7d284b | ||
|
|
b2e1631f7d | ||
|
|
29ee6b17fa | ||
|
|
90bfdfcaf3 | ||
|
|
7b40520a2d | ||
|
|
b3ff033e29 | ||
|
|
27566f49dd | ||
|
|
c4c41d3b69 | ||
|
|
0ed9201169 | ||
|
|
da193d1bd1 | ||
|
|
65ce834863 | ||
|
|
de7f072e85 | ||
|
|
ca25160c4c | ||
|
|
3514cb43ba | ||
|
|
40b5e99197 | ||
|
|
ef9104d264 | ||
|
|
7773311e0e | ||
|
|
10a10e9910 | ||
|
|
15055c26b8 | ||
|
|
d77c1c3ebf | ||
|
|
93f42683d1 | ||
|
|
6fdb44953b | ||
|
|
9dc3f4f61f | ||
|
|
f97d002ca6 | ||
|
|
d5bdeb0699 | ||
|
|
0b7da43638 | ||
|
|
e3f0482d09 | ||
|
|
faffc9b136 | ||
|
|
df110d457a | ||
|
|
e88ca34423 | ||
|
|
3a1102d9bf | ||
|
|
784be9d241 | ||
|
|
fefa0bfea7 | ||
|
|
5d378b6416 | ||
|
|
b6e5b3594c | ||
|
|
4dd579e042 | ||
|
|
79d351fbbb | ||
|
|
f79ab7e087 | ||
|
|
b3b53506a1 | ||
|
|
96c1cadf2b | ||
|
|
563421b4dc | ||
|
|
6cee30ba79 | ||
|
|
b64185e85e | ||
|
|
8131f63504 | ||
|
|
29ec271586 | ||
|
|
f82bba5535 | ||
|
|
7db8dce51c | ||
|
|
bf03abae6a | ||
|
|
c6c004b8aa | ||
|
|
2b193cded0 | ||
|
|
36f374be2a | ||
|
|
cdac404c47 | ||
|
|
27546f60da | ||
|
|
32f9d95bba | ||
|
|
03d3e1a5db | ||
|
|
bc73e73c26 | ||
|
|
9288930a3b | ||
|
|
2560ba84e8 | ||
|
|
8352f71a71 | ||
|
|
a07d4376d6 | ||
|
|
1a79b7ca74 | ||
|
|
3efb55ad17 | ||
|
|
ce96cb193b | ||
|
|
2328ee259b | ||
|
|
4352c8314c | ||
|
|
d550fb220e | ||
|
|
082ba963d3 | ||
|
|
474f662337 | ||
|
|
a853a0873e | ||
|
|
36783a3a79 | ||
|
|
459eb193e0 | ||
|
|
6791974004 | ||
|
|
c9db9b4c22 | ||
|
|
258ad6e4c1 | ||
|
|
352eaa2c57 | ||
|
|
ceef0fdb7b | ||
|
|
d0357cc998 | ||
|
|
cc6b473d17 | ||
|
|
c1394b7097 | ||
|
|
4d16f1f883 | ||
|
|
0968576649 | ||
|
|
9dc3b26c1b | ||
|
|
6577a9a379 | ||
|
|
b35451222c | ||
|
|
29c984a1ec | ||
|
|
8e87374b47 | ||
|
|
232700e417 | ||
|
|
52d7d2881a | ||
|
|
7631381a98 | ||
|
|
2f23bf1ea4 | ||
|
|
8263ac09ec | ||
|
|
1436470943 | ||
|
|
3e3dd40cf8 | ||
|
|
52154ddeb9 | ||
|
|
8b0ad24dcd | ||
|
|
a6bd14c2cd | ||
|
|
31e6b5814f | ||
|
|
1b29701368 | ||
|
|
59feb72fca | ||
|
|
4ae28aba10 | ||
|
|
e3520f952e | ||
|
|
7fc9550f7b | ||
|
|
76caa943b5 | ||
|
|
97d989a865 | ||
|
|
e1dc1d9d03 | ||
|
|
6c6ce912b1 | ||
|
|
e76e6f1266 | ||
|
|
6a89d4568e | ||
|
|
39c42bca41 | ||
|
|
7e52caa588 | ||
|
|
40a0072d5b | ||
|
|
0d9268ec10 | ||
|
|
d8e92e93b3 | ||
|
|
8198272571 | ||
|
|
931cf0a868 | ||
|
|
742800b858 | ||
|
|
7668a8917e | ||
|
|
64c59ef5ec | ||
|
|
665fdd3d8d | ||
|
|
9826c81808 | ||
|
|
c9b043eb09 | ||
|
|
f8d0c3de03 | ||
|
|
ff4c48f952 | ||
|
|
6d13f28bc0 | ||
|
|
4065e7b4b7 | ||
|
|
87f603687a | ||
|
|
2385bc364a | ||
|
|
61f49be3eb | ||
|
|
585eb1d357 | ||
|
|
6db9c37e47 | ||
|
|
799d0b3ab5 | ||
|
|
670cc4de09 | ||
|
|
87b7a980e1 | ||
|
|
b925dd3e2b | ||
|
|
14caab46dd | ||
|
|
f596c6907a | ||
|
|
d22d11d003 | ||
|
|
8bf5a0acf6 | ||
|
|
95fc447472 | ||
|
|
5a61145948 | ||
|
|
751f06b15e | ||
|
|
c1aec06360 | ||
|
|
94faf0b46c | ||
|
|
98d5c1691c | ||
|
|
678e3f9a01 | ||
|
|
1ba3b13aef | ||
|
|
c4538995db | ||
|
|
a59753121a | ||
|
|
bccf8379c3 | ||
|
|
ec1d5ead6a | ||
|
|
7cbfbd6c92 | ||
|
|
9338925b93 | ||
|
|
64b65cb5d9 | ||
|
|
7b2d0dbf39 | ||
|
|
ac4c4defd3 | ||
|
|
816532d86c | ||
|
|
a96d727409 | ||
|
|
624fc5353e | ||
|
|
d609f3f5ae | ||
|
|
738ccce421 | ||
|
|
30f0942dbc | ||
|
|
bb525dc0ee | ||
|
|
1f432be612 | ||
|
|
b47cb76977 | ||
|
|
528e1d99d2 | ||
|
|
aba645dc93 | ||
|
|
468e7330de | ||
|
|
e7d04ec14f | ||
|
|
600399aa63 | ||
|
|
56b87424db | ||
|
|
7a1928dfd0 | ||
|
|
6c8112581b | ||
|
|
7e473ca971 | ||
|
|
7f40b90ceb | ||
|
|
7feb6ed41f | ||
|
|
6fbb4df0a3 | ||
|
|
89f11abe68 | ||
|
|
3362fa991f | ||
|
|
3614c221c4 | ||
|
|
298d822bd1 | ||
|
|
6775b577fd | ||
|
|
1283065946 | ||
|
|
50f4890faa | ||
|
|
03b75ed679 | ||
|
|
a91839e69c | ||
|
|
2e34ab0190 | ||
|
|
e6abb12fb1 | ||
|
|
a93da4a886 | ||
|
|
27e14a06c2 | ||
|
|
028f92a3e2 | ||
|
|
bf6b8442f1 | ||
|
|
0f90a7c24c | ||
|
|
0e84775e29 | ||
|
|
0e0fc7eab4 | ||
|
|
323f52aeb1 | ||
|
|
334fbb8879 | ||
|
|
39d54215bd | ||
|
|
bb580fae58 | ||
|
|
783e3d0da6 | ||
|
|
3fc1825e44 | ||
|
|
c0bf78efa0 | ||
|
|
c4f4a5d793 | ||
|
|
b6247b075b | ||
|
|
cfdfe6aaa7 | ||
|
|
709efd5da5 | ||
|
|
d9e487359d | ||
|
|
500069fcf0 | ||
|
|
99fb046474 | ||
|
|
c8ace3b540 | ||
|
|
6fc62b0184 | ||
|
|
085e84dc38 | ||
|
|
b1407040b6 | ||
|
|
88accf144e | ||
|
|
a7c5a0bb29 | ||
|
|
2949d00083 | ||
|
|
8378127c2c | ||
|
|
e1d9d15b2c | ||
|
|
53eb37e674 | ||
|
|
682b1be022 | ||
|
|
f4047b7aa4 | ||
|
|
34d80d4754 | ||
|
|
5dc3663f16 | ||
|
|
de54ec5b8b | ||
|
|
ce07b567d0 | ||
|
|
4ee9a6d8c6 | ||
|
|
39726e3274 | ||
|
|
0d5dcbbccb | ||
|
|
684f762fd9 | ||
|
|
b95722b670 | ||
|
|
b431e042fc | ||
|
|
43e8dcd7b6 | ||
|
|
5ea2e6d029 | ||
|
|
7cdf6847f1 | ||
|
|
1483d53e28 | ||
|
|
8727d12d18 | ||
|
|
6f6a314ab6 | ||
|
|
77f069c1af | ||
|
|
6a2f5664b8 | ||
|
|
6d51179357 | ||
|
|
720b2669fd | ||
|
|
9ffe2b7851 | ||
|
|
6befa6b3b0 | ||
|
|
d497806c6c | ||
|
|
475f99195e | ||
|
|
e1c152fbcf | ||
|
|
0db28d4f5a | ||
|
|
e344d531f9 | ||
|
|
433f3d1507 | ||
|
|
7e7b00e58b | ||
|
|
9b03282972 | ||
|
|
b5a2dab4e9 | ||
|
|
0f22e2a2d8 | ||
|
|
9fe8a273f2 | ||
|
|
e95d6e28fc | ||
|
|
71f52d180f | ||
|
|
0c048b28bd | ||
|
|
0a38dbb7be | ||
|
|
40a2ee85aa | ||
|
|
c61ab7fb7e | ||
|
|
9591a5bef5 | ||
|
|
f95c3f92ed | ||
|
|
0a6e7eb898 | ||
|
|
26a52906df | ||
|
|
0f8bb964a4 | ||
|
|
937c7119ae | ||
|
|
3e028a43b5 | ||
|
|
1f458c7107 | ||
|
|
9c165e3992 | ||
|
|
c501e448ca | ||
|
|
8313896093 | ||
|
|
87436a1884 | ||
|
|
34d508ae23 | ||
|
|
ffb6ca5934 | ||
|
|
682721cf57 | ||
|
|
1a627782dd | ||
|
|
28688065e2 | ||
|
|
21b766912b | ||
|
|
774b8ef6e9 | ||
|
|
aefe918f9f | ||
|
|
1dbe99316a | ||
|
|
b0ca489e60 | ||
|
|
5d270d63ac | ||
|
|
22063a35ec | ||
|
|
d39997d8b0 | ||
|
|
74998221e8 | ||
|
|
c468bd519b | ||
|
|
385243f521 | ||
|
|
0453ef25dd | ||
|
|
a909589185 | ||
|
|
064b05aee8 | ||
|
|
4f34b5f97a | ||
|
|
9c2c8067ef | ||
|
|
ca86a8a5ac | ||
|
|
4708a7d81c | ||
|
|
1d730cd8e2 | ||
|
|
e20bd2edaa | ||
|
|
fc236e4bd3 | ||
|
|
2ebef66785 | ||
|
|
4cd71874c0 | ||
|
|
c19ffff075 | ||
|
|
1c50671296 | ||
|
|
611c98f6f1 | ||
|
|
a66d7fcafc | ||
|
|
c6a972f65e | ||
|
|
28290c792d | ||
|
|
aa2e0319d0 | ||
|
|
0cce63fae9 | ||
|
|
f4bd344b9b | ||
|
|
565f6e13b0 | ||
|
|
30e6cc01c6 | ||
|
|
f9f8e21b55 | ||
|
|
bb1699e4d6 | ||
|
|
853f2737a4 | ||
|
|
7f3242a2b4 | ||
|
|
f2e678375b | ||
|
|
6444ee9aee | ||
|
|
5fc0e53cc8 | ||
|
|
147b5af7fe | ||
|
|
fa5fb4e49b | ||
|
|
d98f09825f | ||
|
|
74c075a751 | ||
|
|
f6815c381a | ||
|
|
7268877512 | ||
|
|
9114cd36cd | ||
|
|
530a5a3f01 | ||
|
|
1a9148ae2f | ||
|
|
e74d9c8aea | ||
|
|
662d453bf5 | ||
|
|
00885ccfd6 | ||
|
|
2e17b65004 | ||
|
|
df3a7bab95 | ||
|
|
c96851dc0d | ||
|
|
8c528798ad | ||
|
|
c065dc89bb | ||
|
|
f339b8b1e7 | ||
|
|
24cec4d5ba | ||
|
|
0d769760fd | ||
|
|
4412a2d318 | ||
|
|
8fb5f5a350 | ||
|
|
9ffc7359b4 | ||
|
|
e6d200befe | ||
|
|
e079c43485 | ||
|
|
5f200844a4 | ||
|
|
6a4aa58c2e | ||
|
|
679bcc4365 | ||
|
|
9f056450d6 | ||
|
|
27994e444d | ||
|
|
9d11486431 | ||
|
|
e6ed641079 | ||
|
|
99bdc94279 | ||
|
|
a86559bdce | ||
|
|
971bb3bfc0 | ||
|
|
c387aa0f0d | ||
|
|
10ec942d67 | ||
|
|
91338a7439 | ||
|
|
a5ff057b69 | ||
|
|
d04291d66d | ||
|
|
4b9bc61748 | ||
|
|
a0a0e32f68 | ||
|
|
8167d64bcb | ||
|
|
e6b101d7da | ||
|
|
3689def55f | ||
|
|
a8c79ebf3b | ||
|
|
12f240c7e5 | ||
|
|
e1fc0a4d6b | ||
|
|
1c602f0e92 | ||
|
|
f5ad65cd2e | ||
|
|
4fe865a30f | ||
|
|
4ba390adfc | ||
|
|
ebfa50dce4 | ||
|
|
3d1631a673 | ||
|
|
7ea1501058 | ||
|
|
6fe163f4c4 | ||
|
|
38cccc73f0 | ||
|
|
75d0b6116e | ||
|
|
acb3a50768 | ||
|
|
e51ce1d232 | ||
|
|
e23e81425c | ||
|
|
14234e9eca | ||
|
|
5dd561743e | ||
|
|
264ab2ddd2 | ||
|
|
1e3932fbe1 | ||
|
|
51b8271ee9 | ||
|
|
c6d13e8d73 | ||
|
|
8a8c5275b0 | ||
|
|
a884e37625 | ||
|
|
dc84deafea | ||
|
|
23adfc132a | ||
|
|
be8bed3602 | ||
|
|
a8cb993e56 | ||
|
|
43da8296cf | ||
|
|
3462053a08 | ||
|
|
5e21c904ae | ||
|
|
26395fa2c2 | ||
|
|
f62ea2b3e0 | ||
|
|
f70097d9c9 | ||
|
|
47c400da03 | ||
|
|
a01a5f06ed | ||
|
|
d8a53795fe | ||
|
|
42991ff0ca | ||
|
|
087318f333 | ||
|
|
c2c574f153 | ||
|
|
96b7930292 | ||
|
|
789b639bbe | ||
|
|
7b5eb7e1b7 | ||
|
|
04d35e8d7e | ||
|
|
bef8362087 | ||
|
|
d80ba9b649 | ||
|
|
fdd75c4a36 | ||
|
|
31beafbd04 | ||
|
|
b203c79d87 | ||
|
|
18188b6f39 | ||
|
|
3e8ad6e26c | ||
|
|
6ef808cae1 | ||
|
|
bc2fe3db05 | ||
|
|
400447825a | ||
|
|
75f52cef4a | ||
|
|
4bec2f496d | ||
|
|
39c6b07820 | ||
|
|
f2cf9f0bd1 | ||
|
|
38b1b41682 | ||
|
|
68638ae67c | ||
|
|
9000f91f7e | ||
|
|
46b1cf6dc9 | ||
|
|
a74d7fa54f | ||
|
|
cdec2dd204 | ||
|
|
f98be66eda | ||
|
|
af5c062638 | ||
|
|
6ca28a9931 | ||
|
|
ce10596a13 | ||
|
|
d9a8108a15 | ||
|
|
1b5005277c | ||
|
|
ee9b35bec7 | ||
|
|
d82ab58c24 | ||
|
|
dbcc558f04 | ||
|
|
54f8add2de | ||
|
|
6e11362b75 | ||
|
|
59310feb4b | ||
|
|
8017cb16f3 | ||
|
|
be32f71b1a | ||
|
|
193720a376 | ||
|
|
865dd7984d | ||
|
|
d31d050dd5 | ||
|
|
3ae4e95775 | ||
|
|
1450ffd015 | ||
|
|
0ff5045410 | ||
|
|
e6a68d8cf2 | ||
|
|
a093745aa1 | ||
|
|
0af95f24fc | ||
|
|
6d1462712c | ||
|
|
048782bbec | ||
|
|
7397fca459 | ||
|
|
3dfb02e876 | ||
|
|
7e31ec9994 | ||
|
|
594811b9e6 | ||
|
|
c18da15703 | ||
|
|
c7c30d26b5 | ||
|
|
b2cf3f5270 | ||
|
|
1ebc4643e9 | ||
|
|
e77818daf8 | ||
|
|
eb6068cc1f | ||
|
|
fbec6c1261 | ||
|
|
2b05e90a57 | ||
|
|
028166428d | ||
|
|
fccae8a158 | ||
|
|
9e8f3f8c67 | ||
|
|
5886bb2b6a | ||
|
|
a999ce41ce | ||
|
|
d911c83c56 | ||
|
|
471df37f73 | ||
|
|
fab708d74e | ||
|
|
96583ee109 | ||
|
|
d3dd8af4cc | ||
|
|
f9642228af | ||
|
|
7a30b607e5 | ||
|
|
042b9e3c85 | ||
|
|
e57d62184e | ||
|
|
0139c38786 | ||
|
|
81c5c06414 | ||
|
|
8e702ad0d0 | ||
|
|
8a06717f95 | ||
|
|
123bf7e339 | ||
|
|
0bfaeac94b | ||
|
|
81a2d3854b | ||
|
|
e6bcd4e559 | ||
|
|
0d78000ca3 | ||
|
|
175579f8e2 | ||
|
|
05d2c538ea | ||
|
|
28a78f02a8 | ||
|
|
9de72b2e7e | ||
|
|
c6a892c15d | ||
|
|
618ea544c2 | ||
|
|
4ed69e515e | ||
|
|
124715d93e | ||
|
|
26553dfdad | ||
|
|
844d683915 | ||
|
|
47c429e8c3 | ||
|
|
33d9f68cda | ||
|
|
8618b6ad60 | ||
|
|
893ca2a4cb | ||
|
|
ef09160447 | ||
|
|
1ab09a6fa8 | ||
|
|
0134d8c914 | ||
|
|
ac0ec7b314 | ||
|
|
9350e05ad6 | ||
|
|
76797a5e86 | ||
|
|
6163143cfe | ||
|
|
60bcbb230f | ||
|
|
57824f4f02 | ||
|
|
9642337729 | ||
|
|
c265a6ec6a | ||
|
|
0558d55259 | ||
|
|
c2328793a3 | ||
|
|
e1300914da | ||
|
|
713f6632f9 | ||
|
|
9e8bd87501 | ||
|
|
b508ea71f8 | ||
|
|
be5a93b29a | ||
|
|
972256cd6e | ||
|
|
b5c2634151 | ||
|
|
992aa392a9 | ||
|
|
6b751b2874 | ||
|
|
034b64c895 | ||
|
|
61a93c2374 | ||
|
|
73c8012b52 | ||
|
|
eca4415287 | ||
|
|
a5c67fac57 | ||
|
|
b0d1b9d44f | ||
|
|
4d7958414e | ||
|
|
4d122d5d7c | ||
|
|
5228c18981 | ||
|
|
7b39aa61a9 | ||
|
|
d785a95a5f | ||
|
|
ff43319fdb | ||
|
|
4167066f04 | ||
|
|
61232c4557 | ||
|
|
5f8b20761b | ||
|
|
4ad9d66a3c | ||
|
|
5d4ad105b7 | ||
|
|
fa8bc0b57c | ||
|
|
1341cc35b9 | ||
|
|
173b4722fc | ||
|
|
515093ca29 | ||
|
|
013e70d22d | ||
|
|
640ce7beed | ||
|
|
d704dbec15 | ||
|
|
33989c3551 | ||
|
|
6470165730 | ||
|
|
fc33a75f22 | ||
|
|
0645690f3d | ||
|
|
e9a541a096 | ||
|
|
ec253251bc | ||
|
|
ae72632b85 | ||
|
|
b69a4aaa9b | ||
|
|
fc56972a35 | ||
|
|
f898a1724c | ||
|
|
ef37bcf170 | ||
|
|
31437e3185 | ||
|
|
fb98755a48 | ||
|
|
b2c07b620d | ||
|
|
d3cda4816d | ||
|
|
8aaa384193 | ||
|
|
2eed6f18e4 | ||
|
|
c79b681480 | ||
|
|
15b6259dcc | ||
|
|
d3e96c6769 | ||
|
|
eef2fb907b | ||
|
|
29a68836fa | ||
|
|
4b5cf91125 | ||
|
|
e66640f5ab | ||
|
|
01921cf9f0 | ||
|
|
d30b232aeb | ||
|
|
f9d93403d0 | ||
|
|
2c84fdbea3 | ||
|
|
61ebbc3403 | ||
|
|
4d8615c4fa | ||
|
|
55eb112ab0 | ||
|
|
9fa16cd5b9 | ||
|
|
6101792f4a | ||
|
|
b931c1b008 | ||
|
|
6aa1ad83a6 | ||
|
|
634f7dc1e6 | ||
|
|
80420d7cba | ||
|
|
b62d2fcf08 | ||
|
|
e5f851b01e | ||
|
|
12cecf668a | ||
|
|
f92a972aa5 | ||
|
|
756ff02fb7 | ||
|
|
1acb2fe894 | ||
|
|
4694664470 | ||
|
|
10c992bb27 | ||
|
|
5c443ee7a5 | ||
|
|
2785c83a90 | ||
|
|
a7f35bba02 | ||
|
|
cb5f8919e4 | ||
|
|
16371a8f5d | ||
|
|
98ac49f1bb | ||
|
|
5006fd48d8 | ||
|
|
a389eb8fd6 | ||
|
|
c68640f6f7 | ||
|
|
2695df5f31 | ||
|
|
fd4dbbfb35 | ||
|
|
5902aaf138 | ||
|
|
fc2ba4f4bd | ||
|
|
d50dae5005 | ||
|
|
e883528dd1 | ||
|
|
b1f721503e | ||
|
|
c0e71341a5 | ||
|
|
f2b9d369bd | ||
|
|
b1a1d1d0dd | ||
|
|
51e56f74d8 | ||
|
|
a34ce559a4 | ||
|
|
8bf7e77b0e | ||
|
|
7b633b141f | ||
|
|
95dbe3089e | ||
|
|
ee2f7c8a5c |
@@ -9,9 +9,10 @@ AlignEscapedNewlines: Left
|
||||
AlignOperands: true
|
||||
AlignTrailingComments: false
|
||||
AllowAllParametersOfDeclarationOnNextLine: false
|
||||
AllowAllArgumentsOnNextLine: false
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: None
|
||||
AllowShortFunctionsOnASingleLine: false
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AlwaysBreakAfterDefinitionReturnType: None
|
||||
@@ -44,7 +45,7 @@ BreakBeforeTernaryOperators: true
|
||||
BreakConstructorInitializersBeforeComma: false
|
||||
BreakConstructorInitializers: BeforeColon
|
||||
BreakStringLiterals: true
|
||||
ColumnLimit: 200
|
||||
ColumnLimit: 132
|
||||
CommentPragmas: '^ IWYU pragma:'
|
||||
CompactNamespaces: false
|
||||
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
||||
|
||||
@@ -37,12 +37,6 @@ include("cmake_targets/macros.cmake")
|
||||
###################################
|
||||
include(FindPkgConfig)
|
||||
|
||||
pkg_search_module(LIBXML2 libxml-2.0 REQUIRED)
|
||||
include_directories(${LIBXML2_INCLUDE_DIRS})
|
||||
|
||||
pkg_search_module(LIBXSLT libxslt REQUIRED)
|
||||
include_directories(${LIBXSLT_INCLUDE_DIRS})
|
||||
|
||||
pkg_search_module(OPENSSL openssl REQUIRED)
|
||||
include_directories(${OPENSSL_INCLUDE_DIRS})
|
||||
|
||||
@@ -195,12 +189,17 @@ elseif(${CPUARCH} NOT STREQUAL "x86_64")
|
||||
message(FATAL_ERROR "Cannot compile for CPU architecture ${CPUARCH}")
|
||||
endif()
|
||||
|
||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -fno-var-tracking-assignments -march=native")
|
||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -march=native")
|
||||
|
||||
# add autotools definitions that were maybe used!
|
||||
add_definitions("-DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FCNTL_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_STRERROR=1 -DHAVE_SOCKET=1 -DHAVE_MEMSET=1 -DHAVE_GETTIMEOFDAY=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LIBSCTP")
|
||||
|
||||
set(commonOpts "-pipe -Wno-packed-bitfield-compat -fPIC -Wall -fno-strict-aliasing -rdynamic")
|
||||
set(commonOpts "-pipe -fPIC -Wall -fno-strict-aliasing")
|
||||
# GNU C/C++ Compiler might throw many warnings without packed-bitfield-compat, see man page
|
||||
# also, we need -rdynamic to incorporate all symbols in shared objects, again, see man page
|
||||
if(CMAKE_C_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
set(commonOpts "${commonOpts} -Wno-packed-bitfield-compat -rdynamic")
|
||||
endif()
|
||||
|
||||
set(CMAKE_C_FLAGS
|
||||
"${CMAKE_C_FLAGS} ${C_FLAGS_PROCESSOR} ${commonOpts} -std=gnu11 -funroll-loops")
|
||||
@@ -447,7 +446,6 @@ add_library(f1ap
|
||||
${F1AP_DIR}/f1ap_cu_interface_management.c
|
||||
${F1AP_DIR}/f1ap_cu_paging.c
|
||||
${F1AP_DIR}/f1ap_cu_rrc_message_transfer.c
|
||||
${F1AP_DIR}/f1ap_cu_system_information.c
|
||||
${F1AP_DIR}/f1ap_cu_task.c
|
||||
${F1AP_DIR}/f1ap_cu_ue_context_management.c
|
||||
${F1AP_DIR}/f1ap_cu_warning_message_transmission.c
|
||||
@@ -744,7 +742,6 @@ include_directories("${OPENAIR2_DIR}/UTIL/OSA")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/MEM")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/LISTS")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/FIFO")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/OCG")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/MATH")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/TIMER")
|
||||
include_directories("${OPENAIR2_DIR}/UTIL/OMG")
|
||||
@@ -778,7 +775,6 @@ add_library(UTIL
|
||||
|
||||
set(SECU_OSA_SRC
|
||||
${OPENAIR2_DIR}/UTIL/OSA/osa_key_deriver.c
|
||||
${OPENAIR2_DIR}/UTIL/OSA/osa_rijndael.c
|
||||
${OPENAIR2_DIR}/UTIL/OSA/osa_snow3g.c
|
||||
${OPENAIR2_DIR}/UTIL/OSA/osa_stream_eea.c
|
||||
${OPENAIR2_DIR}/UTIL/OSA/osa_stream_eia.c
|
||||
@@ -1181,7 +1177,6 @@ set(PHY_SRC_UE
|
||||
${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
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/filt16a_32.c
|
||||
${OPENAIR1_DIR}/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
|
||||
${OPENAIR1_DIR}/PHY/NR_ESTIMATION/nr_measurements_gNB.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
|
||||
@@ -1208,10 +1203,15 @@ set(PHY_SRC_UE
|
||||
${OPENAIR1_DIR}/PHY/MODULATION/slot_fep_nr.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/pss_nr.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/sss_nr.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/pss_nr_sl.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/sss_nr_sl.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_generate_psbch_dmrs_sl.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/psbch_nr_sl.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/cic_filter_nr.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_initial_sync.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_ue_rf_helpers.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_pbch.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_TRANSPORT/nr_psbch.c
|
||||
${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
|
||||
@@ -1232,7 +1232,6 @@ set(PHY_SRC_UE
|
||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/ptrs_nr.c
|
||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gold_ue.c
|
||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/nr_gen_mod_table.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/filt16a_32.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_dl_channel_estimation.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_adjust_synch_ue.c
|
||||
${OPENAIR1_DIR}/PHY/NR_UE_ESTIMATION/nr_ue_measurements.c
|
||||
@@ -1358,7 +1357,6 @@ set(NR_PDCP_SRC
|
||||
#of reusing code of osa_stream_eia.c
|
||||
${OPENAIR2_DIR}/UTIL/OSA/osa_stream_eia.c
|
||||
${OPENAIR2_DIR}/UTIL/OSA/osa_snow3g.c
|
||||
${OPENAIR2_DIR}/UTIL/OSA/osa_rijndael.c
|
||||
)
|
||||
|
||||
set(NR_SDAP_SRC
|
||||
@@ -1482,6 +1480,7 @@ set (MAC_SRC
|
||||
|
||||
set (MAC_NR_SRC
|
||||
${NR_PHY_INTERFACE_DIR}/NR_IF_Module.c
|
||||
${NR_PHY_INTERFACE_DIR}/nr_sched_response.c
|
||||
${NR_GNB_MAC_DIR}/main.c
|
||||
${NR_GNB_MAC_DIR}/config.c
|
||||
${NR_GNB_MAC_DIR}/gNB_scheduler.c
|
||||
@@ -1520,6 +1519,7 @@ set (MAC_NR_SRC_UE
|
||||
${NR_UE_MAC_DIR}/nr_ue_scheduler.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
|
||||
@@ -1903,6 +1903,7 @@ set(libnrnas_emm_msg_OBJS
|
||||
${NAS_SRC}COMMON/EMM/MSG/FGSUplinkNasTransport.c
|
||||
${NAS_SRC}COMMON/ESM/MSG/PduSessionEstablishRequest.c
|
||||
${NAS_SRC}COMMON/ESM/MSG/PduSessionEstablishmentAccept.c
|
||||
${NAS_SRC}COMMON/EMM/MSG/FGSDeregistrationRequestUEOriginating.c
|
||||
)
|
||||
|
||||
set(libnrnas_ies_OBJS
|
||||
@@ -2023,7 +2024,9 @@ 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)
|
||||
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})
|
||||
@@ -2163,7 +2166,6 @@ target_link_libraries(lte-softmodem PRIVATE
|
||||
${NAS_UE_LIB} ITTI SIMU SIMU_ETH
|
||||
-Wl,--end-group z dl)
|
||||
|
||||
target_link_libraries(lte-softmodem PRIVATE ${LIBXML2_LIBRARIES})
|
||||
target_link_libraries(lte-softmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp)
|
||||
target_link_libraries(lte-softmodem PRIVATE ${T_LIB})
|
||||
target_link_libraries(lte-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
@@ -2226,7 +2228,6 @@ target_link_libraries(lte-uesoftmodem PRIVATE
|
||||
${NAS_UE_LIB} ITTI ${ATLAS_LIBRARIES}
|
||||
-Wl,--end-group z dl)
|
||||
|
||||
target_link_libraries(lte-uesoftmodem PRIVATE ${LIBXML2_LIBRARIES})
|
||||
target_link_libraries(lte-uesoftmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${ATLAS_LIBRARIES})
|
||||
target_link_libraries(lte-uesoftmodem PRIVATE ${T_LIB})
|
||||
target_link_libraries(lte-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
@@ -2268,7 +2269,6 @@ target_link_libraries(nr-softmodem PRIVATE
|
||||
x2ap f1ap m2ap m3ap e1ap
|
||||
-Wl,--end-group z dl)
|
||||
|
||||
target_link_libraries(nr-softmodem PRIVATE ${LIBXML2_LIBRARIES})
|
||||
target_link_libraries(nr-softmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} sctp ${ATLAS_LIBRARIES})
|
||||
target_link_libraries(nr-softmodem PRIVATE ${T_LIB})
|
||||
target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
@@ -2331,7 +2331,6 @@ target_link_libraries(nr-uesoftmodem PRIVATE
|
||||
ITTI ${ATLAS_LIBRARIES} LIB_5GNAS_GNB LIB_NAS_SIMUE ${NAS_SIM_LIB} SIMU SIMU_ETH
|
||||
-Wl,--end-group z dl)
|
||||
|
||||
target_link_libraries(nr-uesoftmodem PRIVATE ${LIBXML2_LIBRARIES})
|
||||
target_link_libraries(nr-uesoftmodem PRIVATE pthread m CONFIG_LIB rt crypt ${CRYPTO_LIBRARIES} ${OPENSSL_LIBRARIES} ${ATLAS_LIBRARIES})
|
||||
target_link_libraries(nr-uesoftmodem PRIVATE ${T_LIB})
|
||||
target_link_libraries(nr-uesoftmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
@@ -2442,7 +2441,19 @@ target_link_libraries(nr_pbchsim PRIVATE
|
||||
target_link_libraries(nr_pbchsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
|
||||
|
||||
#PUCCH ---> Prashanth
|
||||
add_executable(nr_psbchsim
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/psbchsim.c
|
||||
${OPENAIR_DIR}/common/utils/nr/nr_common.c
|
||||
${T_SOURCE}
|
||||
${SHLIB_LOADER_SOURCES}
|
||||
)
|
||||
target_link_libraries(nr_psbchsim 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
|
||||
m pthread ${ATLAS_LIBRARIES} ${T_LIB} ITTI dl
|
||||
)
|
||||
target_link_libraries(nr_psbchsim PRIVATE asn1_nr_rrc asn1_lte_rrc)
|
||||
|
||||
|
||||
add_executable(nr_pucchsim
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/pucchsim.c
|
||||
${OPENAIR1_DIR}/SIMULATION/NR_PHY/nr_dummy_functions.c
|
||||
@@ -2573,7 +2584,7 @@ if (${T_TRACER})
|
||||
lte-softmodem lte-uesoftmodem nr-softmodem
|
||||
nr-uesoftmodem dlsim dlsim_tm4 dlsim_tm7
|
||||
ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim
|
||||
syncsim nr_ulsim nr_dlsim nr_dlschsim nr_pbchsim nr_pucchsim
|
||||
syncsim nr_ulsim nr_dlsim nr_dlschsim nr_pbchsim nr_psbchsim nr_pucchsim
|
||||
nr_ulschsim ldpctest polartest smallblocktest cu_test du_test
|
||||
#all "add_library" definitions
|
||||
ITTI lte_rrc nr_rrc s1ap x2ap m2ap m3ap f1ap
|
||||
|
||||
72
README.md
72
README.md
@@ -4,8 +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"></a>
|
||||
<a href="https://www.redhat.com/en/enterprise-linux-8"><img src="https://img.shields.io/badge/OS-RHEL8-Green" alt="Supported OS"></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://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>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
@@ -13,10 +17,10 @@
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://hub.docker.com/r/rdefosseoai/oai-enb"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/rdefosseoai/oai-enb?label=eNB%20docker%20pulls"></a>
|
||||
<a href="https://hub.docker.com/r/rdefosseoai/oai-lte-ue"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/rdefosseoai/oai-lte-ue?label=LTE-UE%20docker%20pulls"></a>
|
||||
<a href="https://hub.docker.com/r/rdefosseoai/oai-gnb"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/rdefosseoai/oai-gnb?label=gNB%20docker%20pulls"></a>
|
||||
<a href="https://hub.docker.com/r/rdefosseoai/oai-nr-ue"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/rdefosseoai/oai-nr-ue?label=NR-UE%20docker%20pulls"></a>
|
||||
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-gnb"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-gnb?label=gNB%20docker%20pulls"></a>
|
||||
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-nr-ue"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-nr-ue?label=NR-UE%20docker%20pulls"></a>
|
||||
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-enb"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-enb?label=eNB%20docker%20pulls"></a>
|
||||
<a href="https://hub.docker.com/r/oaisoftwarealliance/oai-lte-ue"><img alt="Docker Pulls" src="https://img.shields.io/docker/pulls/oaisoftwarealliance/oai-lte-ue?label=LTE-UE%20docker%20pulls"></a>
|
||||
</p>
|
||||
|
||||
# OpenAirInterface License #
|
||||
@@ -32,12 +36,12 @@ Please see [NOTICE](NOTICE.md) file for third party software that is included in
|
||||
|
||||
# Where to Start #
|
||||
|
||||
* [General overview of documentation](./doc/README.md)
|
||||
* [The implemented features](./doc/FEATURE_SET.md)
|
||||
* [How to build](./doc/BUILD.md)
|
||||
* [How to run the modems](./doc/RUNMODEM.md)
|
||||
|
||||
More information and documentation can be found in the [doc folder](./doc).
|
||||
Unfortunately, not all information is available there, and information for
|
||||
Not all information is available in a central place, and information for
|
||||
specific sub-systems might be available in the corresponding sub-directories.
|
||||
To find all READMEs, this command might be handy:
|
||||
|
||||
@@ -51,52 +55,20 @@ The OpenAirInterface (OAI) software is composed of the following parts:
|
||||
|
||||
```
|
||||
openairinterface5g
|
||||
├── charts
|
||||
├── ci-scripts : Meta-scripts used by the OSA CI process. Contains also configuration files used day-to-day by CI.
|
||||
├── CMakeLists.txt : Top-level CMakeLists.txt for building
|
||||
├── cmake_targets : Build utilities to compile (simulation, emulation and real-time platforms), and generated build files.
|
||||
├── common : Some common OAI utilities, other tools can be found at openair2/UTILS.
|
||||
├── doc : Contains an up-to-date feature set list and starting tutorials.
|
||||
├── executables : Top-level executable source files.
|
||||
├── LICENSE : License file.
|
||||
├── common : Some common OAI utilities, some other tools can be found at openair2/UTILS.
|
||||
├── doc : Documentation
|
||||
├── docker : Dockerfiles to build for Ubuntu and RHEL
|
||||
├── executables : Top-level executable source files (gNB, eNB, ...)
|
||||
├── maketags : Script to generate emacs tags.
|
||||
├── nfapi : Contains the NFAPI code. A local Readme file provides more details.
|
||||
├── 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.
|
||||
│ ├── PHY
|
||||
│ ├── SCHED
|
||||
│ ├── SCHED_NBIOT
|
||||
│ ├── SCHED_NR
|
||||
│ ├── SCHED_NR_UE
|
||||
│ ├── SCHED_UE
|
||||
│ └── SIMULATION : PHY RF simulation.
|
||||
├── 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.
|
||||
│ ├── COMMON
|
||||
│ ├── DOCS
|
||||
│ ├── ENB_APP
|
||||
│ ├── F1AP
|
||||
│ ├── GNB_APP
|
||||
│ ├── LAYER2/RLC/ : with the following subdirectories: UM_v9.3.0, TM_v9.3.0, and AM_v9.3.0.
|
||||
│ ├── LAYER2/PDCP/PDCP_v10.1.0
|
||||
│ ├── M2AP
|
||||
│ ├── MCE_APP
|
||||
│ ├── NETWORK_DRIVER
|
||||
│ ├── NR_PHY_INTERFACE
|
||||
│ ├── NR_UE_PHY_INTERFACE
|
||||
│ ├── PHY_INTERFACE
|
||||
│ ├── RRC
|
||||
│ ├── UTIL
|
||||
│ └── X2AP
|
||||
├── openair3 : 3GPP LTE Rel10 for S1AP, NAS GTPV1-U for both ENB and UE.
|
||||
│ ├── COMMON
|
||||
│ ├── DOCS
|
||||
│ ├── GTPV1-U
|
||||
│ ├── M3AP
|
||||
│ ├── MME_APP
|
||||
│ ├── NAS
|
||||
│ ├── S1AP
|
||||
│ ├── SCTP
|
||||
│ ├── SECU
|
||||
│ ├── TEST
|
||||
│ ├── UDP
|
||||
│ └── UTILS
|
||||
├── radio : drivers for various radios such as USRP, AW2S, RFsim, ...
|
||||
└── targets : Top-level wrappers for unitary simulation for PHY channels, system-level emulation (eNB-UE with and without S1), and realtime eNB and UE and RRH GW.
|
||||
├── openshift : OpenShift helm charts for some deployment options of OAI
|
||||
├── radio : Drivers for various radios such as USRP, AW2S, RFsim, ...
|
||||
└── targets : Some configuration files; only historical relevance, and might be deleted in the future
|
||||
```
|
||||
|
||||
@@ -36,7 +36,6 @@ pipeline {
|
||||
label nodeExecutor
|
||||
}
|
||||
options {
|
||||
disableConcurrentBuilds()
|
||||
timestamps()
|
||||
gitLabConnection('OAI GitLab')
|
||||
ansiColor('xterm')
|
||||
@@ -385,27 +384,66 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
//avra is offline, re-enable once it is available
|
||||
//stage ("T1-Offload-Test") {
|
||||
// when { expression {do5Gtest} }
|
||||
// steps {
|
||||
// script {
|
||||
// triggerSlaveJob ('RAN-T1-Offload-Test', 'T1-Offload-Test')
|
||||
// }
|
||||
// }
|
||||
// post {
|
||||
// always {
|
||||
// script {
|
||||
// finalizeSlaveJob('RAN-T1-Offload-Test')
|
||||
// }
|
||||
// }
|
||||
// failure {
|
||||
// script {
|
||||
// currentBuild.result = 'FAILURE'
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
stage ("LTE-TDD-2x2-Container") {
|
||||
when { expression {do4Gtest} }
|
||||
steps {
|
||||
script {
|
||||
triggerSlaveJob ('RAN-LTE-TDD-2x2-Container', 'LTE-TDD-2x2-Container')
|
||||
}
|
||||
}
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-LTE-TDD-2x2-Container')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("SA-AW2S-CN5G") {
|
||||
when { expression {do5Gtest} }
|
||||
steps {
|
||||
script {
|
||||
triggerSlaveJob ('RAN-SA-AW2S-CN5G', 'SA-AW2S-CN5G')
|
||||
}
|
||||
}
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-SA-AW2S-CN5G')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("Interop-F1") {
|
||||
when { expression {do5Gtest} }
|
||||
steps {
|
||||
script {
|
||||
triggerSlaveJob ('RAN-Interop-F1', 'Interop-F1')
|
||||
}
|
||||
}
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-Interop-F1')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("DockerHub-Push") {
|
||||
|
||||
@@ -61,7 +61,6 @@ pipeline {
|
||||
label pythonExecutor
|
||||
}
|
||||
options {
|
||||
disableConcurrentBuilds()
|
||||
timestamps()
|
||||
ansiColor('xterm')
|
||||
lock(extra: lockResources)
|
||||
|
||||
@@ -55,7 +55,6 @@ pipeline {
|
||||
label pythonExecutor
|
||||
}
|
||||
options {
|
||||
disableConcurrentBuilds()
|
||||
timestamps()
|
||||
ansiColor('xterm')
|
||||
lock(extra: lockResources)
|
||||
@@ -211,10 +210,16 @@ pipeline {
|
||||
script {
|
||||
dir ('ci-scripts') {
|
||||
// Zipping all archived log files
|
||||
sh "zip -r -qq physim_deploytest_logs_${env.BUILD_ID}.zip physim_test_logs_*/*"
|
||||
sh "rm -rf physim_test_logs_*/"
|
||||
if (fileExists("physim_deploytest_logs_${env.BUILD_ID}.zip")) {
|
||||
archiveArtifacts artifacts: "physim_deploytest_logs_${env.BUILD_ID}.zip"
|
||||
sh "mkdir test_logs"
|
||||
sh "mv *.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")) {
|
||||
archiveArtifacts artifacts: "test_logs_${env.BUILD_ID}.zip"
|
||||
}
|
||||
if (fileExists("test_logs_CN.zip")){
|
||||
sh "mv test_logs_CN.zip test_logs_CN_${env.BUILD_ID}.zip"
|
||||
archiveArtifacts artifacts: "test_logs_CN_${env.BUILD_ID}.zip"
|
||||
}
|
||||
if (fileExists("test_results.html")) {
|
||||
sh "mv test_results.html test_results-${env.JOB_NAME}.html"
|
||||
|
||||
@@ -36,7 +36,6 @@ pipeline {
|
||||
label nodeExecutor
|
||||
}
|
||||
options {
|
||||
disableConcurrentBuilds()
|
||||
ansiColor('xterm')
|
||||
lock(extra: lockResources)
|
||||
}
|
||||
|
||||
@@ -61,7 +61,6 @@ pipeline {
|
||||
label pythonExecutor
|
||||
}
|
||||
options {
|
||||
disableConcurrentBuilds()
|
||||
ansiColor('xterm')
|
||||
lock(extra: lockResources)
|
||||
}
|
||||
|
||||
@@ -50,7 +50,6 @@ pipeline {
|
||||
label pythonExecutor
|
||||
}
|
||||
options {
|
||||
disableConcurrentBuilds()
|
||||
ansiColor('xterm')
|
||||
lock(extra: lockResources)
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
|
||||
// Location of the python executor node shall be in the same subnet as the others servers
|
||||
def pythonExecutor = params.pythonExecutor
|
||||
def DataBaseHost = params.DataBaseHost
|
||||
|
||||
// Location of the test XML file to be run
|
||||
def testXMLFile = params.pythonTestXmlFile
|
||||
@@ -53,7 +52,6 @@ def StatusForDb = ""
|
||||
pipeline {
|
||||
agent {label pythonExecutor}
|
||||
options {
|
||||
disableConcurrentBuilds()
|
||||
ansiColor('xterm')
|
||||
lock(extra: lockResources)
|
||||
}
|
||||
@@ -169,10 +167,6 @@ pipeline {
|
||||
allParametersPresent = false
|
||||
}
|
||||
|
||||
if (params.DataBaseHost == "none") {
|
||||
DataBaseHost = pythonExecutor
|
||||
}
|
||||
|
||||
if (allParametersPresent) {
|
||||
echo "All parameters are present"
|
||||
if (eNB_AllowMergeRequestProcess) {
|
||||
@@ -357,18 +351,6 @@ pipeline {
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("SQL Collect"){
|
||||
when {
|
||||
expression { params.DataBaseHost != "none" }
|
||||
}
|
||||
agent {label DataBaseHost}
|
||||
steps {
|
||||
script {
|
||||
if (currentBuild.result=='FAILURE') {StatusForDb = 'FAIL'} else {StatusForDb = 'PASS'}
|
||||
sh "python3 /home/oaicicd/mysql/sql_connect.py ${JOB_NAME} ${params.eNB_MR} ${params.eNB_Branch} ${env.BUILD_ID} ${env.BUILD_URL} ${StatusForDb} ''"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,7 +63,6 @@ pipeline {
|
||||
label pythonExecutor
|
||||
}
|
||||
options {
|
||||
disableConcurrentBuilds()
|
||||
ansiColor('xterm')
|
||||
lock(extra: lockResources)
|
||||
}
|
||||
|
||||
@@ -63,7 +63,6 @@ pipeline {
|
||||
label pythonExecutor
|
||||
}
|
||||
options {
|
||||
disableConcurrentBuilds()
|
||||
ansiColor('xterm')
|
||||
lock(extra: lockResources)
|
||||
}
|
||||
|
||||
@@ -197,6 +197,7 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM,CLUST
|
||||
SCA.eNBSourceCodePath=matchReg.group(1)
|
||||
PHYSIM.eNBSourceCodePath=matchReg.group(1)
|
||||
CLUSTER.eNBSourceCodePath=matchReg.group(1)
|
||||
EPC.eNBSourceCodePath=matchReg.group(1)
|
||||
elif re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE):
|
||||
matchReg = re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE)
|
||||
RAN.eNB1SourceCodePath=matchReg.group(1)
|
||||
@@ -219,10 +220,10 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM,CLUST
|
||||
EPC.SourceCodePath=matchReg.group(1)
|
||||
elif re.match('^\-\-EPCType=(.+)$', myArgv, re.IGNORECASE):
|
||||
matchReg = re.match('^\-\-EPCType=(.+)$', myArgv, re.IGNORECASE)
|
||||
if re.match('OAI', matchReg.group(1), re.IGNORECASE) or re.match('ltebox', matchReg.group(1), re.IGNORECASE) or re.match('OAI-Rel14-CUPS', matchReg.group(1), re.IGNORECASE) or re.match('OAI-Rel14-Docker', matchReg.group(1), re.IGNORECASE):
|
||||
if re.match('OAI', matchReg.group(1), re.IGNORECASE) or re.match('ltebox', matchReg.group(1), re.IGNORECASE) or re.match('OAI-Rel14-CUPS', matchReg.group(1), re.IGNORECASE) or re.match('OAI-Rel14-Docker', matchReg.group(1), re.IGNORECASE) or re.match('OC-OAI-CN5G', matchReg.group(1), re.IGNORECASE):
|
||||
EPC.Type=matchReg.group(1)
|
||||
else:
|
||||
sys.exit('Invalid EPC Type: ' + matchReg.group(1) + ' -- (should be OAI or ltebox or OAI-Rel14-CUPS or OAI-Rel14-Docker)')
|
||||
sys.exit('Invalid EPC Type: ' + matchReg.group(1) + ' -- (should be OAI or ltebox or OAI-Rel14-CUPS or OAI-Rel14-Docker or OC-OAI-CN5G)')
|
||||
elif re.match('^\-\-EPCContainerPrefix=(.+)$', myArgv, re.IGNORECASE):
|
||||
matchReg = re.match('^\-\-EPCContainerPrefix=(.+)$', myArgv, re.IGNORECASE)
|
||||
EPC.ContainerPrefix=matchReg.group(1)
|
||||
@@ -260,14 +261,17 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM,CLUST
|
||||
matchReg = re.match('^\-\-OCUserName=(.+)$', myArgv, re.IGNORECASE)
|
||||
PHYSIM.OCUserName = matchReg.group(1)
|
||||
CLUSTER.OCUserName = matchReg.group(1)
|
||||
EPC.OCUserName = matchReg.group(1)
|
||||
elif re.match('^\-\-OCPassword=(.+)$', myArgv, re.IGNORECASE):
|
||||
matchReg = re.match('^\-\-OCPassword=(.+)$', myArgv, re.IGNORECASE)
|
||||
PHYSIM.OCPassword = matchReg.group(1)
|
||||
CLUSTER.OCPassword = matchReg.group(1)
|
||||
EPC.OCPassword = matchReg.group(1)
|
||||
elif re.match('^\-\-OCProjectName=(.+)$', myArgv, re.IGNORECASE):
|
||||
matchReg = re.match('^\-\-OCProjectName=(.+)$', myArgv, re.IGNORECASE)
|
||||
PHYSIM.OCProjectName = matchReg.group(1)
|
||||
CLUSTER.OCProjectName = matchReg.group(1)
|
||||
EPC.OCProjectName = matchReg.group(1)
|
||||
elif re.match('^\-\-OCUrl=(.+)$', myArgv, re.IGNORECASE):
|
||||
matchReg = re.match('^\-\-OCUrl=(.+)$', myArgv, re.IGNORECASE)
|
||||
CLUSTER.OCUrl = matchReg.group(1)
|
||||
|
||||
183
ci-scripts/as_ue/aw2s-asue.cfg
Normal file
183
ci-scripts/as_ue/aw2s-asue.cfg
Normal file
@@ -0,0 +1,183 @@
|
||||
/* UE simulator configuration file version 2021-06-17
|
||||
* LTE / 5G Non StandAlone
|
||||
* Copyright (C) 2019-2021 Amarisoft
|
||||
*/
|
||||
{
|
||||
#define N_ANTENNA_DL 1
|
||||
#define TDD 1
|
||||
|
||||
log_options: "all.level=warn,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
|
||||
log_filename: "/tmp/ue1.log",
|
||||
|
||||
/* Enable remote API and Web interface */
|
||||
com_addr: "0.0.0.0:9002",
|
||||
|
||||
include "rf_driver/1chan.cfg",
|
||||
|
||||
/* If true, allow the simulation of several UEs at the same time and
|
||||
allow dynamic UE creation from remote API */
|
||||
|
||||
cell_groups: [{
|
||||
group_type: "nr",
|
||||
multi_ue: true,
|
||||
cells: [{
|
||||
rf_port: 0,
|
||||
bandwidth: 20,
|
||||
#if TDD == 1
|
||||
band: 78,
|
||||
dl_nr_arfcn:627360,
|
||||
ssb_nr_arfcn:627360,
|
||||
#else
|
||||
band: 7,
|
||||
dl_nr_arfcn: 536020,
|
||||
ssb_nr_arfcn: 535930,
|
||||
ssb_subcarrier_spacing: 15,
|
||||
#endif
|
||||
subcarrier_spacing: 30,
|
||||
n_antenna_dl: N_ANTENNA_DL,
|
||||
n_antenna_ul: 1,
|
||||
rx_to_tx_latency:2,
|
||||
}],
|
||||
}],
|
||||
|
||||
ue_list: [
|
||||
{
|
||||
/* UE capabilities */
|
||||
/* USIM data */
|
||||
"ue_id" : 1,
|
||||
"imsi": "001010000000100",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
/* UE capabilities */
|
||||
/* USIM data */
|
||||
"ue_id" : 2,
|
||||
"imsi": "001010000000101",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
/* UE capabilities */
|
||||
/* USIM data */
|
||||
"ue_id" : 3,
|
||||
"imsi": "001010000000102",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, sd: 66051, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, sd: 66051, },
|
||||
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
/* UE capabilities */
|
||||
/* USIM data */
|
||||
"ue_id" : 4,
|
||||
"imsi": "001010000000103",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, sd: 66051, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, sd: 66051, },
|
||||
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
/* UE capabilities */
|
||||
/* USIM data */
|
||||
"ue_id" : 5,
|
||||
"imsi": "001010000000104",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, sd: 66051, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, sd: 66051, },
|
||||
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
/* UE capabilities */
|
||||
/* USIM data */
|
||||
"ue_id" : 6,
|
||||
"imsi": "001010000000105",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, sd: 66051, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, sd: 66051, },
|
||||
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
/* UE capabilities */
|
||||
|
||||
/* USIM data */
|
||||
"ue_id" : 7,
|
||||
"imsi": "001010000000106",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, sd: 66051, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, sd: 66051, },
|
||||
|
||||
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_addr: "127.1.0.0",
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
280
ci-scripts/as_ue/aw2s-multi-20897.cfg
Normal file
280
ci-scripts/as_ue/aw2s-multi-20897.cfg
Normal file
@@ -0,0 +1,280 @@
|
||||
/* UE simulator configuration file version 2021-06-17
|
||||
* LTE / 5G Non StandAlone
|
||||
* Copyright (C) 2019-2021 Amarisoft
|
||||
*/
|
||||
{
|
||||
#define N_ANTENNA_DL 2
|
||||
#define TDD 1
|
||||
|
||||
log_options: "all.level=warn,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
|
||||
log_filename: "/tmp/ue.log",
|
||||
|
||||
/* Enable remote API and Web interface */
|
||||
com_addr: "0.0.0.0:9002",
|
||||
|
||||
include "rf_driver/1chan.cfg",
|
||||
|
||||
/* If true, allow the simulation of several UEs at the same time and
|
||||
allow dynamic UE creation from remote API */
|
||||
|
||||
cell_groups: [{
|
||||
group_type: "nr",
|
||||
multi_ue: true,
|
||||
cells: [{
|
||||
rf_port: 0,
|
||||
bandwidth: 20,
|
||||
band: 78,
|
||||
dl_nr_arfcn:627360,
|
||||
ssb_nr_arfcn:627360,
|
||||
subcarrier_spacing: 30,
|
||||
n_antenna_dl: N_ANTENNA_DL,
|
||||
n_antenna_ul: 1,
|
||||
rx_to_tx_latency:2,
|
||||
}],
|
||||
}],
|
||||
|
||||
/* UE capabilities */
|
||||
/* USIM data */
|
||||
ue_list: [
|
||||
{
|
||||
"ue_id" : 1,
|
||||
"imsi": "208970000000111",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
"ue_id" : 2,
|
||||
"imsi": "208970000000112",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
"ue_id" : 3,
|
||||
"imsi": "208970000000113",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
"ue_id" : 4,
|
||||
"imsi": "208970000000114",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
"ue_id" : 5,
|
||||
"imsi": "208970000000115",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
"ue_id" : 6,
|
||||
"imsi": "208970000000116",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
"ue_id" : 7,
|
||||
"imsi": "208970000000117",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
"ue_id" : 8,
|
||||
"imsi": "208970000000118",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
"ue_id" : 9,
|
||||
"imsi": "208970000000119",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
"ue_id" : 10,
|
||||
"imsi": "208970000000120",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
"ue_id" : 11,
|
||||
"imsi": "208970000000121",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
"ue_id" : 12,
|
||||
"imsi": "208970000000122",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
"ue_id" : 13,
|
||||
"imsi": "208970000000123",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
"ue_id" : 14,
|
||||
"imsi": "208970000000124",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
"ue_id" : 15,
|
||||
"imsi": "208970000000125",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
{
|
||||
"ue_id" : 16,
|
||||
"imsi": "208970000000126",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [ { sst: 1, }, ],
|
||||
default_pdu_session_snssai: { sst: 1, },
|
||||
tun_setup_script: "ue-ifup",
|
||||
},
|
||||
],
|
||||
}
|
||||
@@ -1,172 +0,0 @@
|
||||
/* UE simulator configuration */
|
||||
|
||||
|
||||
/* UE simulator configuration file version 2021-06-17
|
||||
* LTE / 5G Non StandAlone
|
||||
* Copyright (C) 2019-2021 Amarisoft
|
||||
*/
|
||||
{
|
||||
#define N_ANTENNA_DL 1
|
||||
#define TDD 1
|
||||
#define CELL_BANDWIDTH 40
|
||||
#define UE_COUNT 3 // number of simulated UEs 208970100001127, 208970100001128, 208970100001129
|
||||
|
||||
|
||||
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
|
||||
log_filename: "/tmp/ue0.log",
|
||||
|
||||
/* Enable remote API and Web interface */
|
||||
com_addr: "0.0.0.0:9002",
|
||||
|
||||
include "rf_driver/1chan.cfg",
|
||||
|
||||
/* If true, allow the simulation of several UEs at the same time and allow dynamic UE creation from remote API */
|
||||
|
||||
cell_groups: [{
|
||||
group_type: "nr",
|
||||
multi_ue: true,
|
||||
cells: [{
|
||||
rf_port: 0,
|
||||
bandwidth: CELL_BANDWIDTH,
|
||||
#if TDD == 1
|
||||
band: 78,
|
||||
dl_nr_arfcn:621312,
|
||||
ssb_nr_arfcn:621312,
|
||||
|
||||
//band: 41,
|
||||
//dl_nr_arfcn:517020,
|
||||
//ssb_nr_arfcn:516990,
|
||||
#else
|
||||
band: 7,
|
||||
dl_nr_arfcn: 536020,
|
||||
ssb_nr_arfcn: 535930,
|
||||
ssb_subcarrier_spacing: 15,
|
||||
#endif
|
||||
subcarrier_spacing: 30,
|
||||
n_antenna_dl: N_ANTENNA_DL,
|
||||
n_antenna_ul: 1,
|
||||
rx_to_tx_latency:2,
|
||||
}],
|
||||
}],
|
||||
|
||||
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_bind_addr: "127.0.10.11",
|
||||
|
||||
|
||||
|
||||
ue_list: [
|
||||
{
|
||||
/* UE capabilities */
|
||||
/* USIM data */
|
||||
"ue_id" : 0,
|
||||
"imsi": "208970100001127",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [
|
||||
{
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
],
|
||||
default_pdu_session_snssai: {
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_addr: "127.1.0.0",
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
sim_events: [
|
||||
{
|
||||
event: "power_on",
|
||||
start_time: 5,
|
||||
},
|
||||
{
|
||||
event: "power_off",
|
||||
start_time: 30,
|
||||
}
|
||||
] /*end sim events */
|
||||
}, /*end UE object 0*/
|
||||
{
|
||||
/* UE capabilities */
|
||||
/* USIM data */
|
||||
"ue_id" : 1,
|
||||
"imsi": "208970100001128",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [
|
||||
{
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
],
|
||||
default_pdu_session_snssai: {
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_addr: "127.1.0.0",
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
sim_events: [
|
||||
{
|
||||
event: "power_on",
|
||||
start_time: 5,
|
||||
},
|
||||
{
|
||||
event: "power_off",
|
||||
start_time: 30,
|
||||
}
|
||||
] /*end sim events */
|
||||
}, /*end UE object 1*/
|
||||
{
|
||||
/* UE capabilities */
|
||||
/* USIM data */
|
||||
"ue_id" : 2,
|
||||
"imsi": "208970100001129",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [
|
||||
{
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
],
|
||||
default_pdu_session_snssai: {
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_addr: "127.1.0.0",
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
sim_events: [
|
||||
{
|
||||
event: "power_on",
|
||||
start_time: 5,
|
||||
},
|
||||
{
|
||||
event: "power_off",
|
||||
start_time: 30,
|
||||
}
|
||||
] /*end sim events */
|
||||
} /*end UE object 2*/
|
||||
],/*end UE list*/
|
||||
}/*end json*/
|
||||
|
||||
@@ -1,142 +0,0 @@
|
||||
/* UE simulator configuration */
|
||||
|
||||
|
||||
/* UE simulator configuration file version 2021-06-17
|
||||
* LTE / 5G Non StandAlone
|
||||
* Copyright (C) 2019-2021 Amarisoft
|
||||
*/
|
||||
{
|
||||
#define N_ANTENNA_DL 1
|
||||
#define TDD 1
|
||||
#define CELL_BANDWIDTH 40
|
||||
#define UE_COUNT 2 // number of simulated UEs 208970100001127, 208970100001128, 208970100001129
|
||||
|
||||
|
||||
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
|
||||
log_filename: "/tmp/ue0.log",
|
||||
|
||||
/* Enable remote API and Web interface */
|
||||
com_addr: "0.0.0.0:9002",
|
||||
|
||||
include "rf_driver/1chan.cfg",
|
||||
|
||||
/* If true, allow the simulation of several UEs at the same time and allow dynamic UE creation from remote API */
|
||||
|
||||
cell_groups: [{
|
||||
group_type: "nr",
|
||||
multi_ue: true,
|
||||
cells: [{
|
||||
rf_port: 0,
|
||||
bandwidth: CELL_BANDWIDTH,
|
||||
#if TDD == 1
|
||||
band: 78,
|
||||
dl_nr_arfcn:621312,
|
||||
ssb_nr_arfcn:621312,
|
||||
|
||||
//band: 41,
|
||||
//dl_nr_arfcn:517020,
|
||||
//ssb_nr_arfcn:516990,
|
||||
#else
|
||||
band: 7,
|
||||
dl_nr_arfcn: 536020,
|
||||
ssb_nr_arfcn: 535930,
|
||||
ssb_subcarrier_spacing: 15,
|
||||
#endif
|
||||
subcarrier_spacing: 30,
|
||||
n_antenna_dl: N_ANTENNA_DL,
|
||||
n_antenna_ul: 1,
|
||||
rx_to_tx_latency:2,
|
||||
}],
|
||||
}],
|
||||
|
||||
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_bind_addr: "127.0.10.11",
|
||||
|
||||
|
||||
|
||||
ue_list: [
|
||||
{
|
||||
/* UE capabilities */
|
||||
/* USIM data */
|
||||
"ue_id" : 1,
|
||||
"imsi": "208970100001127",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [
|
||||
{
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
],
|
||||
default_pdu_session_snssai: {
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_addr: "127.1.0.0",
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
sim_events: [
|
||||
{
|
||||
event: "power_on",
|
||||
start_time: 5,
|
||||
},
|
||||
{
|
||||
event: "power_off",
|
||||
start_time: 30,
|
||||
}
|
||||
] /*end sim events */
|
||||
}, /*end UE object 0*/
|
||||
{
|
||||
/* UE capabilities */
|
||||
/* USIM data */
|
||||
"ue_id" : 2,
|
||||
"imsi": "208970100001128",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [
|
||||
{
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
],
|
||||
default_pdu_session_snssai: {
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_addr: "127.1.0.0",
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
sim_events: [
|
||||
{
|
||||
event: "power_on",
|
||||
start_time: 5,
|
||||
},
|
||||
{
|
||||
"tag": "ping",
|
||||
"prog":"oai_ext_app.sh",
|
||||
start_time: 15,
|
||||
end_time: 25,
|
||||
"args":["ping 192.168.70.136"],
|
||||
"event":"ext_app"
|
||||
},
|
||||
{
|
||||
event: "power_off",
|
||||
start_time: 30,
|
||||
}
|
||||
] /*end sim events */
|
||||
} /*end UE object 1*/
|
||||
],/*end UE list*/
|
||||
}/*end json*/
|
||||
@@ -1,150 +0,0 @@
|
||||
/* UE simulator configuration */
|
||||
|
||||
|
||||
/* UE simulator configuration file version 2021-06-17
|
||||
* LTE / 5G Non StandAlone
|
||||
* Copyright (C) 2019-2021 Amarisoft
|
||||
*/
|
||||
{
|
||||
#define N_ANTENNA_DL 1
|
||||
#define TDD 1
|
||||
#define CELL_BANDWIDTH 40
|
||||
#define UE_COUNT 2 // number of simulated UEs 208970100001127, 208970100001128, 208970100001129
|
||||
|
||||
|
||||
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
|
||||
log_filename: "/tmp/ue0.log",
|
||||
|
||||
/* Enable remote API and Web interface */
|
||||
com_addr: "0.0.0.0:9002",
|
||||
|
||||
include "rf_driver/1chan.cfg",
|
||||
|
||||
/* If true, allow the simulation of several UEs at the same time and allow dynamic UE creation from remote API */
|
||||
|
||||
cell_groups: [{
|
||||
group_type: "nr",
|
||||
multi_ue: true,
|
||||
cells: [{
|
||||
rf_port: 0,
|
||||
bandwidth: CELL_BANDWIDTH,
|
||||
#if TDD == 1
|
||||
band: 78,
|
||||
dl_nr_arfcn:621312,
|
||||
ssb_nr_arfcn:621312,
|
||||
|
||||
//band: 41,
|
||||
//dl_nr_arfcn:517020,
|
||||
//ssb_nr_arfcn:516990,
|
||||
#else
|
||||
band: 7,
|
||||
dl_nr_arfcn: 536020,
|
||||
ssb_nr_arfcn: 535930,
|
||||
ssb_subcarrier_spacing: 15,
|
||||
#endif
|
||||
subcarrier_spacing: 30,
|
||||
n_antenna_dl: N_ANTENNA_DL,
|
||||
n_antenna_ul: 1,
|
||||
rx_to_tx_latency:2,
|
||||
}],
|
||||
}],
|
||||
|
||||
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_bind_addr: "127.0.10.11",
|
||||
|
||||
|
||||
|
||||
ue_list: [
|
||||
{
|
||||
/* UE capabilities */
|
||||
/* USIM data */
|
||||
"ue_id" : 1,
|
||||
"imsi": "208970100001127",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [
|
||||
{
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
],
|
||||
default_pdu_session_snssai: {
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_addr: "127.1.0.0",
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
sim_events: [
|
||||
{
|
||||
event: "power_on",
|
||||
start_time: 5,
|
||||
},
|
||||
{
|
||||
"tag": "ping",
|
||||
"prog":"oai_ext_app.sh",
|
||||
start_time: 15,
|
||||
end_time: 25,
|
||||
"args":["ping 192.168.70.136"],
|
||||
"event":"ext_app"
|
||||
},
|
||||
{
|
||||
event: "power_off",
|
||||
start_time: 30,
|
||||
}
|
||||
] /*end sim events */
|
||||
}, /*end UE object 0*/
|
||||
{
|
||||
/* UE capabilities */
|
||||
/* USIM data */
|
||||
"ue_id" : 2,
|
||||
"imsi": "208970100001128",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [
|
||||
{
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
],
|
||||
default_pdu_session_snssai: {
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_addr: "127.1.0.0",
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
sim_events: [
|
||||
{
|
||||
event: "power_on",
|
||||
start_time: 5,
|
||||
},
|
||||
{
|
||||
"tag": "ping",
|
||||
"prog":"oai_ext_app.sh",
|
||||
start_time: 15,
|
||||
end_time: 25,
|
||||
"args":["ping 192.168.70.136"],
|
||||
"event":"ext_app"
|
||||
},
|
||||
{
|
||||
event: "power_off",
|
||||
start_time: 30,
|
||||
}
|
||||
] /*end sim events */
|
||||
} /*end UE object 1*/
|
||||
],/*end UE list*/
|
||||
}/*end json*/
|
||||
@@ -1,150 +0,0 @@
|
||||
/* UE simulator configuration */
|
||||
|
||||
|
||||
/* UE simulator configuration file version 2021-06-17
|
||||
* LTE / 5G Non StandAlone
|
||||
* Copyright (C) 2019-2021 Amarisoft
|
||||
*/
|
||||
{
|
||||
#define N_ANTENNA_DL 1
|
||||
#define TDD 1
|
||||
#define CELL_BANDWIDTH 40
|
||||
#define UE_COUNT 2 // number of simulated UEs 208970100001127, 208970100001128, 208970100001129
|
||||
|
||||
|
||||
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
|
||||
log_filename: "/tmp/ue0.log",
|
||||
|
||||
/* Enable remote API and Web interface */
|
||||
com_addr: "0.0.0.0:9002",
|
||||
|
||||
include "rf_driver/1chan.cfg",
|
||||
|
||||
/* If true, allow the simulation of several UEs at the same time and allow dynamic UE creation from remote API */
|
||||
|
||||
cell_groups: [{
|
||||
group_type: "nr",
|
||||
multi_ue: true,
|
||||
cells: [{
|
||||
rf_port: 0,
|
||||
bandwidth: CELL_BANDWIDTH,
|
||||
#if TDD == 1
|
||||
band: 78,
|
||||
dl_nr_arfcn:621312,
|
||||
ssb_nr_arfcn:621312,
|
||||
|
||||
//band: 41,
|
||||
//dl_nr_arfcn:517020,
|
||||
//ssb_nr_arfcn:516990,
|
||||
#else
|
||||
band: 7,
|
||||
dl_nr_arfcn: 536020,
|
||||
ssb_nr_arfcn: 535930,
|
||||
ssb_subcarrier_spacing: 15,
|
||||
#endif
|
||||
subcarrier_spacing: 30,
|
||||
n_antenna_dl: N_ANTENNA_DL,
|
||||
n_antenna_ul: 1,
|
||||
rx_to_tx_latency:2,
|
||||
}],
|
||||
}],
|
||||
|
||||
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_bind_addr: "127.0.10.11",
|
||||
|
||||
|
||||
|
||||
ue_list: [
|
||||
{
|
||||
/* UE capabilities */
|
||||
/* USIM data */
|
||||
"ue_id" : 1,
|
||||
"imsi": "208970100001127",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [
|
||||
{
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
],
|
||||
default_pdu_session_snssai: {
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_addr: "127.1.0.0",
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
sim_events: [
|
||||
{
|
||||
event: "power_on",
|
||||
start_time: 5,
|
||||
},
|
||||
{
|
||||
"tag": "ping",
|
||||
"prog":"oai_ext_app.sh",
|
||||
start_time: 20,
|
||||
end_time: 30,
|
||||
"args":["ping 192.168.70.136"],
|
||||
"event":"ext_app"
|
||||
},
|
||||
{
|
||||
event: "power_off",
|
||||
start_time: 60,
|
||||
}
|
||||
] /*end sim events */
|
||||
}, /*end UE object 0*/
|
||||
{
|
||||
/* UE capabilities */
|
||||
/* USIM data */
|
||||
"ue_id" : 2,
|
||||
"imsi": "208970100001128",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [
|
||||
{
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
],
|
||||
default_pdu_session_snssai: {
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_addr: "127.1.0.0",
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
sim_events: [
|
||||
{
|
||||
event: "power_on",
|
||||
start_time: 5,
|
||||
},
|
||||
{
|
||||
"tag": "ping",
|
||||
"prog":"oai_ext_app.sh",
|
||||
start_time: 40,
|
||||
end_time: 50,
|
||||
"args":["ping 192.168.70.136"],
|
||||
"event":"ext_app"
|
||||
},
|
||||
{
|
||||
event: "power_off",
|
||||
start_time: 60,
|
||||
}
|
||||
] /*end sim events */
|
||||
} /*end UE object 1*/
|
||||
],/*end UE list*/
|
||||
}/*end json*/
|
||||
@@ -1,113 +0,0 @@
|
||||
/* UE simulator configuration */
|
||||
|
||||
|
||||
|
||||
/* UE simulator configuration file version 2021-06-17
|
||||
* LTE / 5G Non StandAlone
|
||||
* Copyright (C) 2019-2021 Amarisoft
|
||||
*/
|
||||
{
|
||||
#define N_ANTENNA_DL 1
|
||||
#define TDD 1
|
||||
#define CELL_BANDWIDTH 40
|
||||
|
||||
|
||||
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
|
||||
log_filename: "/tmp/ue1.log",
|
||||
|
||||
/* Enable remote API and Web interface */
|
||||
com_addr: "0.0.0.0:9002",
|
||||
|
||||
include "rf_driver/1chan.cfg",
|
||||
|
||||
/* If true, allow the simulation of several UEs at the same time and
|
||||
allow dynamic UE creation from remote API */
|
||||
|
||||
cell_groups: [{
|
||||
group_type: "nr",
|
||||
multi_ue: false,
|
||||
cells: [{
|
||||
rf_port: 0,
|
||||
bandwidth: CELL_BANDWIDTH,
|
||||
#if TDD == 1
|
||||
band: 78,
|
||||
dl_nr_arfcn:621312,
|
||||
ssb_nr_arfcn:621312,
|
||||
|
||||
//band: 41,
|
||||
//dl_nr_arfcn:517020,
|
||||
//ssb_nr_arfcn:516990,
|
||||
#else
|
||||
band: 7,
|
||||
dl_nr_arfcn: 536020,
|
||||
ssb_nr_arfcn: 535930,
|
||||
ssb_subcarrier_spacing: 15,
|
||||
#endif
|
||||
subcarrier_spacing: 30,
|
||||
n_antenna_dl: N_ANTENNA_DL,
|
||||
n_antenna_ul: 1,
|
||||
rx_to_tx_latency:2,
|
||||
}],
|
||||
}],
|
||||
|
||||
|
||||
|
||||
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_bind_addr: "127.0.10.11",
|
||||
|
||||
ue_list: [
|
||||
{
|
||||
/* UE capabilities */
|
||||
|
||||
/* USIM data */
|
||||
|
||||
|
||||
"imsi": "208970100001127",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [
|
||||
{
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
],
|
||||
|
||||
default_pdu_session_snssai: {
|
||||
sst: 1,
|
||||
sd: 66051,
|
||||
},
|
||||
|
||||
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_addr: "127.1.0.0",
|
||||
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
|
||||
sim_events: [{
|
||||
event: "power_on",
|
||||
start_time: 5,
|
||||
}, {
|
||||
"tag": "ping",
|
||||
"prog":"oai_ext_app.sh",
|
||||
start_time: 15,
|
||||
end_time: 25,
|
||||
"args":["ping 192.168.70.136"],
|
||||
"event":"ext_app"
|
||||
|
||||
},
|
||||
{
|
||||
event: "power_off",
|
||||
start_time: 30,
|
||||
}]
|
||||
}
|
||||
],
|
||||
}
|
||||
@@ -1,109 +0,0 @@
|
||||
/* UE simulator configuration */
|
||||
|
||||
|
||||
|
||||
/* UE simulator configuration file version 2021-06-17
|
||||
* LTE / 5G Non StandAlone
|
||||
* Copyright (C) 2019-2021 Amarisoft
|
||||
*/
|
||||
{
|
||||
#define N_ANTENNA_DL 1
|
||||
#define TDD 1
|
||||
#define CELL_BANDWIDTH 20
|
||||
|
||||
|
||||
log_options: "all.level=error,all.max_size=0,nas.level=debug,nas.max_size=1,rrc.level=debug,rrc.max_size=1",
|
||||
log_filename: "/tmp/ue0.log",
|
||||
|
||||
/* Enable remote API and Web interface */
|
||||
com_addr: "0.0.0.0:9002",
|
||||
|
||||
include "rf_driver/1chan.cfg",
|
||||
|
||||
/* If true, allow the simulation of several UEs at the same time and
|
||||
allow dynamic UE creation from remote API */
|
||||
|
||||
cell_groups: [{
|
||||
group_type: "nr",
|
||||
multi_ue: false,
|
||||
cells: [{
|
||||
rf_port: 0,
|
||||
bandwidth: CELL_BANDWIDTH,
|
||||
#if TDD == 1
|
||||
// band: 78,
|
||||
// dl_nr_arfcn:621312,
|
||||
// ssb_nr_arfcn:621312,*/
|
||||
|
||||
band: 41,
|
||||
dl_nr_arfcn:517020,
|
||||
ssb_nr_arfcn:516990,
|
||||
#else
|
||||
band: 7,
|
||||
dl_nr_arfcn: 536020,
|
||||
ssb_nr_arfcn: 535930,
|
||||
ssb_subcarrier_spacing: 15,
|
||||
#endif
|
||||
subcarrier_spacing: 30,
|
||||
n_antenna_dl: N_ANTENNA_DL,
|
||||
n_antenna_ul: 1,
|
||||
rx_to_tx_latency:2,
|
||||
}],
|
||||
}],
|
||||
|
||||
|
||||
|
||||
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_bind_addr: "127.0.10.11",
|
||||
|
||||
ue_list: [
|
||||
{
|
||||
/* UE capabilities */
|
||||
|
||||
/* USIM data */
|
||||
|
||||
"imsi": "208970100001127",
|
||||
"K": "fec86ba6eb707ed08905757b1bb44b8f",
|
||||
"sim_algo":"milenage",
|
||||
"op": "1006020f0a478bf6b699f15c062e42b3",
|
||||
|
||||
|
||||
as_release: 15,
|
||||
ue_category: "nr",
|
||||
apn:"oai",
|
||||
attach_pdn_type:"ipv4",
|
||||
default_nssai: [
|
||||
{
|
||||
sst: 1,
|
||||
sd: 1,
|
||||
},
|
||||
],
|
||||
|
||||
default_pdu_session_snssai: {
|
||||
sst: 1,
|
||||
sd: 1,
|
||||
},
|
||||
|
||||
|
||||
/* Enable it to allow sim_events to be handled remotely */
|
||||
//rue_addr: "127.1.0.0",
|
||||
|
||||
/* Enable it to create a TUN interface for each UE PDN */
|
||||
tun_setup_script: "ue-ifup",
|
||||
|
||||
sim_events: [{
|
||||
event: "power_on",
|
||||
start_time: 5,
|
||||
}, {
|
||||
event: "ext_app",
|
||||
start_time: 15,
|
||||
end_time: 25,
|
||||
prog: "ext_app.sh",
|
||||
args: ["iperf", " -c 172.21.10.5", " -u"," -b 1M"," -i 1"," -t 10"]
|
||||
}, {
|
||||
event: "power_off",
|
||||
start_time: 30,
|
||||
}]
|
||||
}
|
||||
],
|
||||
}
|
||||
@@ -49,75 +49,75 @@ adb_ue_2:
|
||||
|
||||
amarisoft_ue:
|
||||
Host: amariue
|
||||
InitScript: nohup /root/NV18-06-2022/ue/lteue /root/NV18-06-2022/ue/config/oaicicd-ue-ci-test.cfg &
|
||||
TermScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"quit"}'
|
||||
InitScript: /root/NV18-06-2022/lteue-linux-2023-03-17/lteue /root/oaicicd/ran_sa_aw2s_asue/aw2s-multi-20897.cfg &
|
||||
TermScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"quit"}'
|
||||
amarisoft_ue_1:
|
||||
Host: amariue
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":1}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":1}'
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":1}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":1}'
|
||||
UENetworkScript: ip netns exec ue1 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue1
|
||||
MTU: 1500
|
||||
amarisoft_ue_2:
|
||||
Host: amariue
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":2}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":2}'
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":2}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":2}'
|
||||
UENetworkScript: ip netns exec ue2 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue2
|
||||
MTU: 1500
|
||||
amarisoft_ue_3:
|
||||
Host: amariue
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":3}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":3}'
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":3}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":3}'
|
||||
UENetworkScript: ip netns exec ue3 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue3
|
||||
MTU: 1500
|
||||
amarisoft_ue_4:
|
||||
Host: amariue
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":4}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":4}'
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":4}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":4}'
|
||||
UENetworkScript: ip netns exec ue4 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue4
|
||||
MTU: 1500
|
||||
amarisoft_ue_5:
|
||||
Host: amariue
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":5}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":5}'
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":5}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":5}'
|
||||
UENetworkScript: ip netns exec ue5 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue5
|
||||
MTU: 1500
|
||||
amarisoft_ue_6:
|
||||
Host: amariue
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":6}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":6}'
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":6}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":6}'
|
||||
UENetworkScript: ip netns exec ue6 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue6
|
||||
MTU: 1500
|
||||
amarisoft_ue_7:
|
||||
Host: amariue
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":7}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":7}'
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":7}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":7}'
|
||||
UENetworkScript: ip netns exec ue7 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue7
|
||||
MTU: 1500
|
||||
amarisoft_ue_8:
|
||||
Host: amariue
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":8}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":8}'
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":8}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":8}'
|
||||
UENetworkScript: ip netns exec ue8 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue8
|
||||
MTU: 1500
|
||||
amarisoft_ue_9:
|
||||
Host: amariue
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":9}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":9}'
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":9}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":9}'
|
||||
UENetworkScript: ip netns exec ue9 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue9
|
||||
MTU: 1500
|
||||
amarisoft_ue_10:
|
||||
Host: amariue
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":10}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2022-06-18/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":10}'
|
||||
AttachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":10}'
|
||||
DetachScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":10}'
|
||||
UENetworkScript: ip netns exec ue10 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue10
|
||||
MTU: 1500
|
||||
|
||||
@@ -40,6 +40,29 @@ 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/"
|
||||
|
||||
|
||||
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 /')
|
||||
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')
|
||||
return False
|
||||
ret = cmd.run(f'oc project {ocProjectName}')
|
||||
if ret.returncode != 0:
|
||||
logging.error(f'\u001B[1mUnable to access OC project {ocProjectName}\u001B[0m')
|
||||
OC_logout(cmd)
|
||||
return False
|
||||
return True
|
||||
|
||||
def OC_logout(cmd):
|
||||
cmd.run(f'oc logout')
|
||||
|
||||
class Cluster:
|
||||
def __init__(self):
|
||||
@@ -57,7 +80,7 @@ class Cluster:
|
||||
self.ranAllowMerge = False
|
||||
self.ranTargetBranch = ""
|
||||
self.cmd = None
|
||||
|
||||
self.imageToPull = ''
|
||||
|
||||
def _recreate_entitlements(self):
|
||||
# recreating entitlements, don't care if deletion fails
|
||||
@@ -170,11 +193,47 @@ class Cluster:
|
||||
def _undeploy_pod(self, filename):
|
||||
self.cmd.run(f'oc delete -f {filename}')
|
||||
|
||||
def PullClusterImage(self, HTML, RAN):
|
||||
if self.imageToPull == '':
|
||||
HELP.GenericHelp(CONST.Version)
|
||||
HELP.EPCSrvHelp(self.imageToPull)
|
||||
sys.exit('Insufficient eNB Parameters')
|
||||
lIpAddr = self.eNBIPAddress
|
||||
self.testCase_id = HTML.testCase_id
|
||||
cmd = cls_cmd.getConnection(lIpAddr)
|
||||
succeeded = OC_login(cmd, self.OCUserName, self.OCPassword, self.OCProjectName)
|
||||
if not succeeded:
|
||||
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
|
||||
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
|
||||
return False
|
||||
ret = cmd.run(f'oc whoami -t | docker login -u oaicicd --password-stdin {self.OCRegistry}')
|
||||
if ret.returncode != 0:
|
||||
logging.error(f'\u001B[1m Unable to access OC project {ocProjectName}\u001B[0m')
|
||||
OC_logout(cmd)
|
||||
cmd.close()
|
||||
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
|
||||
return False
|
||||
for image in self.imageToPull:
|
||||
imagePrefix = f'{self.OCRegistry}{self.OCProjectName}'
|
||||
imageTag = cls_containerize.ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||
ret = cmd.run(f'docker pull {imagePrefix}/{imageTag}')
|
||||
if ret.returncode != 0:
|
||||
logging.error(f'Could not pull {image} from local registry : {self.OCRegistry}')
|
||||
OC_logout(cmd)
|
||||
cmd.close()
|
||||
HTML.CreateHtmlTestRow('msg', 'KO', CONST.ALL_PROCESSES_OK)
|
||||
return False
|
||||
cmd.run(f'docker tag {imagePrefix}/{imageTag} oai-ci/{imageTag}')
|
||||
cmd.run(f'docker rmi {imagePrefix}/{imageTag}')
|
||||
OC_logout(cmd)
|
||||
cmd.close()
|
||||
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
||||
return True
|
||||
|
||||
def BuildClusterImage(self, HTML):
|
||||
if self.ranRepository == '' or self.ranBranch == '' or self.ranCommitID == '':
|
||||
HELP.GenericHelp(CONST.Version)
|
||||
sys.exit(f'Insufficient Parameter: ranRepository {self.ranRepository} ranBranch {ranBranch} ranCommitID {self.ranCommitID}')
|
||||
|
||||
lIpAddr = self.eNBIPAddress
|
||||
lSourcePath = self.eNBSourceCodePath
|
||||
if lIpAddr == '' or lSourcePath == '':
|
||||
@@ -204,7 +263,6 @@ class Cluster:
|
||||
|
||||
baseTag = 'develop'
|
||||
forceBaseImageBuild = False
|
||||
imageTag = 'develop'
|
||||
if self.ranAllowMerge: # merging MR branch into develop -> temporary image
|
||||
imageTag = f'{self.ranBranch}-{self.ranCommitID[0:8]}'
|
||||
if self.ranTargetBranch == 'develop':
|
||||
@@ -214,6 +272,7 @@ class Cluster:
|
||||
forceBaseImageBuild = True
|
||||
baseTag = 'ci-temp'
|
||||
else:
|
||||
imageTag = f'develop-{self.ranCommitID[0:8]}'
|
||||
forceBaseImageBuild = True
|
||||
|
||||
# logging to OC Cluster and then switch to corresponding project
|
||||
@@ -273,11 +332,18 @@ class Cluster:
|
||||
ranbuild_job = self._start_build('ran-build')
|
||||
attemptedImages += ['ran-build']
|
||||
|
||||
wait = ranbuild_job is not None and physim_job is not None and self._wait_build_end([ranbuild_job, physim_job], 1200)
|
||||
if not wait: logging.error('error during build of ranbuild_job or physim_job')
|
||||
self._recreate_is_tag('oai-clang', imageTag, 'openshift/oai-clang-is.yaml')
|
||||
self._recreate_bc('oai-clang', imageTag, 'openshift/oai-clang-bc.yaml')
|
||||
self._retag_image_statement('ran-base', 'image-registry.openshift-image-registry.svc:5000/oaicicd-ran/ran-base', baseTag, 'docker/Dockerfile.clang.rhel8.2')
|
||||
clang_job = self._start_build('oai-clang')
|
||||
attemptedImages += ['oai-clang']
|
||||
|
||||
wait = ranbuild_job is not None and physim_job is not None and clang_job is not None and self._wait_build_end([ranbuild_job, physim_job, clang_job], 1200)
|
||||
if not wait: logging.error('error during build of ranbuild_job or physim_job or clang_job')
|
||||
status = status and wait
|
||||
self.cmd.run(f'oc logs {ranbuild_job} &> cmake_targets/log/ran-build.log')
|
||||
self.cmd.run(f'oc logs {physim_job} &> cmake_targets/log/oai-physim.log')
|
||||
self.cmd.run(f'oc logs {clang_job} &> cmake_targets/log/oai-clang.log')
|
||||
self.cmd.run(f'oc get pods.metrics.k8s.io &>> cmake_targets/log/build-metrics.log', '\$', 10)
|
||||
|
||||
if status:
|
||||
|
||||
@@ -31,6 +31,9 @@ import subprocess as sp
|
||||
import os
|
||||
import paramiko
|
||||
import uuid
|
||||
import sys
|
||||
|
||||
SSHTIMEOUT=7
|
||||
|
||||
# helper that returns either LocalCmd or RemoteCmd based on passed host name
|
||||
def getConnection(host, d=None):
|
||||
@@ -123,13 +126,21 @@ class LocalCmd(Cmd):
|
||||
|
||||
class RemoteCmd(Cmd):
|
||||
def __init__(self, hostname, d=None):
|
||||
cIdx = 0
|
||||
logging.getLogger('paramiko').setLevel(logging.ERROR) # prevent spamming through Paramiko
|
||||
self.client = paramiko.SSHClient()
|
||||
self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
|
||||
cfg = RemoteCmd._lookup_ssh_config(hostname)
|
||||
self.client.connect(**cfg)
|
||||
self.cwd = d
|
||||
self.cp = sp.CompletedProcess(args='', returncode=0, stdout='')
|
||||
while cIdx < 3:
|
||||
try:
|
||||
self.client.connect(**cfg)
|
||||
return
|
||||
except:
|
||||
logging.error(f'Could not connect to {hostname}, tried for {cIdx} time')
|
||||
cIdx +=1
|
||||
raise Exception ("Error: max retries, did not connect to host")
|
||||
|
||||
def _lookup_ssh_config(hostname):
|
||||
ssh_config = paramiko.SSHConfig()
|
||||
@@ -142,7 +153,7 @@ class RemoteCmd(Cmd):
|
||||
ucfg = ssh_config.lookup(hostname)
|
||||
if 'identityfile' not in ucfg or 'user' not in ucfg:
|
||||
raise KeyError(f'no identityfile or user in SSH config for host {hostname}')
|
||||
cfg = {'hostname':hostname, 'username':ucfg['user'], 'key_filename':ucfg['identityfile']}
|
||||
cfg = {'hostname':hostname, 'username':ucfg['user'], 'key_filename':ucfg['identityfile'], 'timeout':SSHTIMEOUT}
|
||||
if 'hostname' in ucfg:
|
||||
cfg['hostname'] = ucfg['hostname'] # override user-given hostname with what is in config
|
||||
if 'port' in ucfg:
|
||||
|
||||
@@ -31,8 +31,8 @@
|
||||
#-----------------------------------------------------------
|
||||
# Import
|
||||
#-----------------------------------------------------------
|
||||
import sys # arg
|
||||
import re # reg
|
||||
import sys # arg
|
||||
import re # reg
|
||||
import logging
|
||||
import os
|
||||
import shutil
|
||||
@@ -47,6 +47,7 @@ from zipfile import ZipFile
|
||||
#-----------------------------------------------------------
|
||||
# OAI Testing modules
|
||||
#-----------------------------------------------------------
|
||||
import cls_cluster as OC
|
||||
import cls_cmd
|
||||
import sshconnection as SSH
|
||||
import helpreadme as HELP
|
||||
@@ -90,6 +91,15 @@ def CreateWorkspace(sshSession, sourcePath, ranRepository, ranCommitID, ranTarge
|
||||
logging.debug(f'Merging with the target branch: {ranTargetBranch}')
|
||||
sshSession.command(f'git merge --ff origin/{ranTargetBranch} -m "Temporary merge for CI"', '\$', 30)
|
||||
|
||||
def ImageTagToUse(imageName, ranCommitID, ranBranch, ranAllowMerge):
|
||||
shortCommit = ranCommitID[0:8]
|
||||
if ranAllowMerge:
|
||||
tagToUse = f'{ranBranch}-{shortCommit}'
|
||||
else:
|
||||
tagToUse = f'develop-{shortCommit}'
|
||||
fullTag = f'{imageName}:{tagToUse}'
|
||||
return fullTag
|
||||
|
||||
def CopyLogsToExecutor(cmd, sourcePath, log_name):
|
||||
cmd.cd(f'{sourcePath}/cmake_targets')
|
||||
cmd.run(f'rm -f {log_name}.zip')
|
||||
@@ -306,7 +316,6 @@ class Containerize():
|
||||
self.registrySvrId = ''
|
||||
self.testSvrId = ''
|
||||
self.imageToPull = []
|
||||
|
||||
#checkers from xml
|
||||
self.ran_checkers={}
|
||||
|
||||
@@ -383,7 +392,7 @@ class Containerize():
|
||||
|
||||
CreateWorkspace(cmd, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge)
|
||||
|
||||
# if asterix, copy the entitlement and subscription manager configurations
|
||||
# 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/')
|
||||
@@ -649,15 +658,6 @@ class Containerize():
|
||||
HTML.CreateHtmlTestRow('commit ' + tag, 'OK', CONST.ALL_PROCESSES_OK)
|
||||
HTML.CreateHtmlNextTabHeaderTestRow(collectInfo, allImagesSize)
|
||||
|
||||
def ImageTagToUse(self, imageName):
|
||||
shortCommit = self.ranCommitID[0:8]
|
||||
if self.ranAllowMerge:
|
||||
tagToUse = f'{self.ranBranch}-{shortCommit}'
|
||||
else:
|
||||
tagToUse = f'develop-{shortCommit}'
|
||||
fullTag = f'porcepix.sboai.cs.eurecom.fr/{imageName}:{tagToUse}'
|
||||
return fullTag
|
||||
|
||||
def Push_Image_to_Local_Registry(self, HTML):
|
||||
if self.registrySvrId == '0':
|
||||
lIpAddr = self.eNBIPAddress
|
||||
@@ -680,8 +680,8 @@ class Containerize():
|
||||
logging.debug('Pushing images from server: ' + lIpAddr)
|
||||
mySSH = SSH.SSHConnection()
|
||||
mySSH.open(lIpAddr, lUserName, lPassWord)
|
||||
|
||||
mySSH.command('docker login -u oaicicd -p oaicicd porcepix.sboai.cs.eurecom.fr', '\$', 5)
|
||||
imagePrefix = 'porcepix.sboai.cs.eurecom.fr'
|
||||
mySSH.command(f'docker login -u oaicicd -p oaicicd {imagePrefix}', '\$', 5)
|
||||
if re.search('Login Succeeded', mySSH.getBefore()) is None:
|
||||
msg = 'Could not log into local registry'
|
||||
logging.error(msg)
|
||||
@@ -694,9 +694,9 @@ class Containerize():
|
||||
orgTag = 'ci-temp'
|
||||
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup']
|
||||
for image in imageNames:
|
||||
tagToUse = self.ImageTagToUse(image)
|
||||
mySSH.command(f'docker image tag {image}:{orgTag} {tagToUse}', '\$', 5)
|
||||
mySSH.command(f'docker push {tagToUse}', '\$', 120)
|
||||
tagToUse = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||
mySSH.command(f'docker image tag {image}:{orgTag} {imagePrefix}/{tagToUse}', '\$', 5)
|
||||
mySSH.command(f'docker push {imagePrefix}/{tagToUse}', '\$', 120)
|
||||
if re.search(': digest:', mySSH.getBefore()) is None:
|
||||
logging.debug(mySSH.getBefore())
|
||||
msg = f'Could not push {image} to local registry : {tagToUse}'
|
||||
@@ -704,9 +704,9 @@ class Containerize():
|
||||
mySSH.close()
|
||||
HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
|
||||
return False
|
||||
mySSH.command(f'docker rmi {tagToUse} {image}:{orgTag}', '\$', 30)
|
||||
mySSH.command(f'docker rmi {imagePrefix}/{tagToUse} {image}:{orgTag}', '\$', 30)
|
||||
|
||||
mySSH.command('docker logout porcepix.sboai.cs.eurecom.fr', '\$', 5)
|
||||
mySSH.command(f'docker logout {imagePrefix}', '\$', 5)
|
||||
if re.search('Removing login credentials', mySSH.getBefore()) is None:
|
||||
msg = 'Could not log off from local registry'
|
||||
logging.error(msg)
|
||||
@@ -739,25 +739,18 @@ class Containerize():
|
||||
if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
|
||||
HELP.GenericHelp(CONST.Version)
|
||||
sys.exit('Insufficient Parameter')
|
||||
if lIpAddr != 'none':
|
||||
logging.debug('Pulling images onto server: ' + lIpAddr)
|
||||
myCmd = cls_cmd.RemoteCmd(lIpAddr)
|
||||
else:
|
||||
logging.debug('Pulling images locally')
|
||||
myCmd = cls_cmd.LocalCmd()
|
||||
|
||||
cmd = 'docker login -u oaicicd -p oaicicd porcepix.sboai.cs.eurecom.fr'
|
||||
response = myCmd.run(cmd)
|
||||
myCmd = cls_cmd.getConnection(lIpAddr)
|
||||
imagePrefix = 'porcepix.sboai.cs.eurecom.fr'
|
||||
response = myCmd.run(f'docker login -u oaicicd -p oaicicd {imagePrefix}')
|
||||
if response.returncode != 0:
|
||||
msg = 'Could not log into local registry'
|
||||
logging.error(msg)
|
||||
myCmd.close()
|
||||
HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
|
||||
return False
|
||||
|
||||
for image in self.imageToPull:
|
||||
tagToUse = self.ImageTagToUse(image)
|
||||
cmd = f'docker pull {tagToUse}'
|
||||
tagToUse = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||
cmd = f'docker pull {imagePrefix}/{tagToUse}'
|
||||
response = myCmd.run(cmd, timeout=120)
|
||||
if response.returncode != 0:
|
||||
logging.debug(response)
|
||||
@@ -766,16 +759,15 @@ class Containerize():
|
||||
myCmd.close()
|
||||
HTML.CreateHtmlTestRow('msg', 'KO', CONST.ALL_PROCESSES_OK)
|
||||
return False
|
||||
|
||||
cmd = 'docker logout porcepix.sboai.cs.eurecom.fr'
|
||||
response = myCmd.run(cmd)
|
||||
myCmd.run(f'docker tag {imagePrefix}/{tagToUse} oai-ci/{tagToUse}')
|
||||
myCmd.run(f'docker rmi {imagePrefix}/{tagToUse}')
|
||||
response = myCmd.run(f'docker logout {imagePrefix}')
|
||||
if response.returncode != 0:
|
||||
msg = 'Could not log off from local registry'
|
||||
logging.error(msg)
|
||||
myCmd.close()
|
||||
HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK)
|
||||
return False
|
||||
|
||||
myCmd.close()
|
||||
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
||||
return True
|
||||
@@ -810,7 +802,8 @@ class Containerize():
|
||||
|
||||
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup']
|
||||
for image in imageNames:
|
||||
cmd = f'docker rmi {self.ImageTagToUse(image)}'
|
||||
imageTag = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||
cmd = f'docker rmi oai-ci/{imageTag}'
|
||||
myCmd.run(cmd, reportNonZero=False)
|
||||
|
||||
myCmd.close()
|
||||
@@ -844,11 +837,11 @@ class Containerize():
|
||||
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.yml ci-docker-compose.yml', '\$', 5)
|
||||
imagesList = ['oai-enb', 'oai-gnb', 'oai-nr-cuup']
|
||||
mySSH.command('cp docker-compose.y*ml ci-docker-compose.yml', '\$', 5)
|
||||
imagesList = ['oai-enb', 'oai-gnb', 'oai-nr-cuup', 'oai-gnb-aw2s']
|
||||
for image in imagesList:
|
||||
imageToUse = self.ImageTagToUse(image)
|
||||
mySSH.command(f'sed -i -e "s#image: {image}:latest#image: {imageToUse}#" ci-docker-compose.yml', '\$', 2)
|
||||
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)
|
||||
localMmeIpAddr = EPC.MmeIPAddress
|
||||
mySSH.command('sed -i -e "s/CI_MME_IP_ADDR/' + localMmeIpAddr + '/" ci-docker-compose.yml', '\$', 2)
|
||||
|
||||
@@ -966,6 +959,7 @@ class Containerize():
|
||||
logging.debug('\u001B[1m Undeploying OAI Object from server: ' + lIpAddr + '\u001B[0m')
|
||||
mySSH = SSH.SSHConnection()
|
||||
mySSH.open(lIpAddr, lUserName, lPassWord)
|
||||
|
||||
mySSH.command('cd ' + lSourcePath + '/' + self.yamlPath[self.eNB_instance], '\$', 5)
|
||||
|
||||
svcName = self.services[self.eNB_instance]
|
||||
@@ -980,8 +974,8 @@ class Containerize():
|
||||
services = []
|
||||
for s in allServices:
|
||||
mySSH.command(f'docker-compose -f ci-docker-compose.yml ps --all -- {s}', '\$', 5, silent=False)
|
||||
running = mySSH.getBefore().split('\r\n')[3:-1]
|
||||
#logging.debug(f'running services: {running}')
|
||||
running = mySSH.getBefore().split('\r\n')[2:-1]
|
||||
logging.debug(f'running services: {running}')
|
||||
if len(running) > 0: # something is running for that service
|
||||
services.append(s)
|
||||
logging.info(f'stopping services {services}')
|
||||
@@ -1050,13 +1044,12 @@ class Containerize():
|
||||
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 = self.ImageTagToUse(image)
|
||||
cmd = f'sed -i -e "s@oaisoftwarealliance/{image}:develop@{tagToUse}@" docker-compose-ci.yml'
|
||||
tagToUse = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||
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
|
||||
|
||||
@@ -1193,13 +1186,12 @@ class Containerize():
|
||||
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, 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 = self.ImageTagToUse(image)
|
||||
cmd = f'sed -i -e "s@oaisoftwarealliance/{image}:develop@{tagToUse}@" docker-compose-ci.yml'
|
||||
tagToUse = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||
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
|
||||
|
||||
@@ -1490,11 +1482,6 @@ class Containerize():
|
||||
result = re.search('172.21.16.128', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S ip route add 192.168.68.128/26 via 172.21.16.128 dev eno1', '\$', 10)
|
||||
# Check if route to nepes gnb exists
|
||||
mySSH.command('ip route | grep --colour=never "192.168.68.192/26"', '\$', 10)
|
||||
result = re.search('172.21.16.137', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S ip route add 192.168.68.192/26 via 172.21.16.137 dev eno1', '\$', 10)
|
||||
# Check if forwarding is enabled
|
||||
mySSH.command('sysctl net.ipv4.conf.all.forwarding', '\$', 10)
|
||||
result = re.search('net.ipv4.conf.all.forwarding = 1', mySSH.getBefore())
|
||||
@@ -1564,16 +1551,28 @@ class Containerize():
|
||||
mySSH.close()
|
||||
if svrName == 'nepes':
|
||||
mySSH.open(ipAddr, userName, password)
|
||||
# Check if route to porcepix epc exists
|
||||
mySSH.command('ip route | grep --colour=never "192.168.61.192/26"', '\$', 10)
|
||||
result = re.search('172.21.16.136', mySSH.getBefore())
|
||||
# Check if route to ofqot gnb exists
|
||||
mySSH.command('ip route | grep --colour=never "192.168.68.192/26"', '\$', 10)
|
||||
result = re.search('172.21.16.109', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S ip route add 192.168.61.192/26 via 172.21.16.136 dev enp0s31f6', '\$', 10)
|
||||
# Check if X2 route to obelix enb exists
|
||||
mySSH.command('echo ' + password + ' | sudo -S ip route add 192.168.68.192/26 via 172.21.16.109 dev enp0s31f6', '\$', 10)
|
||||
mySSH.command('sysctl net.ipv4.conf.all.forwarding', '\$', 10)
|
||||
result = re.search('net.ipv4.conf.all.forwarding = 1', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S sysctl net.ipv4.conf.all.forwarding=1', '\$', 10)
|
||||
# Check if iptables forwarding is accepted
|
||||
mySSH.command('echo ' + password + ' | sudo -S iptables -L FORWARD', '\$', 10)
|
||||
result = re.search('Chain FORWARD .*policy ACCEPT', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S iptables -P FORWARD ACCEPT', '\$', 10)
|
||||
mySSH.close()
|
||||
if svrName == 'ofqot':
|
||||
mySSH.open(ipAddr, userName, password)
|
||||
# Check if X2 route to nepes enb/epc exists
|
||||
mySSH.command('ip route | grep --colour=never "192.168.68.128/26"', '\$', 10)
|
||||
result = re.search('172.21.16.128', mySSH.getBefore())
|
||||
result = re.search('172.21.16.137', mySSH.getBefore())
|
||||
if result is None:
|
||||
mySSH.command('echo ' + password + ' | sudo -S ip route add 192.168.68.128/26 via 172.21.16.128 dev enp0s31f6', '\$', 10)
|
||||
mySSH.command('echo ' + password + ' | sudo -S ip route add 192.168.68.128/26 via 172.21.16.137 dev enp2s0', '\$', 10)
|
||||
# Check if forwarding is enabled
|
||||
mySSH.command('sysctl net.ipv4.conf.all.forwarding', '\$', 10)
|
||||
result = re.search('net.ipv4.conf.all.forwarding = 1', mySSH.getBefore())
|
||||
|
||||
@@ -81,7 +81,7 @@ class Module_UE:
|
||||
c = cls_cmd.RemoteCmd(self.host)
|
||||
response = c.run(cmd, silent=silent)
|
||||
c.close()
|
||||
return response.stdout
|
||||
return response
|
||||
|
||||
#-----------------$
|
||||
#PUBLIC Methods$
|
||||
@@ -95,7 +95,11 @@ class Module_UE:
|
||||
if self.cmd_dict["detach"]:
|
||||
self._command(self.cmd_dict["detach"], silent=True)
|
||||
self._command(self.cmd_dict["terminate"], silent=True)
|
||||
self._command(self.cmd_dict["initialize"])
|
||||
ret = self._command(self.cmd_dict["initialize"])
|
||||
logging.info(f'For command: {ret.args} | return output: {ret.stdout} | Code: {ret.returncode}')
|
||||
# Here each UE returns differently for the successful initialization, requires check based on UE
|
||||
return ret.returncode == 0
|
||||
|
||||
|
||||
def terminate(self):
|
||||
self._command(self.cmd_dict["terminate"])
|
||||
@@ -122,9 +126,9 @@ class Module_UE:
|
||||
self._command(self.cmd_dict["detach"])
|
||||
time.sleep(5)
|
||||
if ip:
|
||||
logging.debug(f'\u001B[1mUE IP Address is {ip}\u001B[0m')
|
||||
logging.debug(f'\u001B[1mUE IP Address for UE {self.module_name} is {ip}\u001B[0m')
|
||||
else:
|
||||
logging.debug('\u001B[1;37;41mUE IP Address Not Found!\u001B[0m')
|
||||
logging.debug(f'\u001B[1;37;41mUE IP Address for UE {self.module_name} Not Found!\u001B[0m')
|
||||
return ip
|
||||
|
||||
def detach(self):
|
||||
@@ -133,7 +137,7 @@ class Module_UE:
|
||||
def check(self):
|
||||
cmd = self.cmd_dict["check"]
|
||||
if cmd:
|
||||
return self._command(cmd)
|
||||
return self._command(cmd).stdout
|
||||
else:
|
||||
logging.warning(f"requested status check of UE {self.getName()}, but operation is not supported")
|
||||
return f"UE {self.getName()} does not support status checking"
|
||||
@@ -160,7 +164,7 @@ class Module_UE:
|
||||
|
||||
def getIP(self):
|
||||
output = self._command(self.cmd_dict["getNetwork"], silent=True)
|
||||
result = re.search('inet (?P<ip>[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)', output)
|
||||
result = re.search('inet (?P<ip>[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)', output.stdout)
|
||||
if result and result.group('ip'):
|
||||
ip = result.group('ip')
|
||||
return ip
|
||||
@@ -168,12 +172,12 @@ class Module_UE:
|
||||
|
||||
def checkMTU(self):
|
||||
output = self._command(self.cmd_dict["getNetwork"], silent=True)
|
||||
result = re.search('mtu (?P<mtu>[0-9]+)', output)
|
||||
result = re.search('mtu (?P<mtu>[0-9]+)', output.stdout)
|
||||
if result and result.group('mtu') and int(result.group('mtu')) == self.MTU:
|
||||
logging.debug('\u001B[1mUE Module NIC MTU is ' + str(self.MTU) + ' as expected\u001B[0m')
|
||||
logging.debug(f'\u001B[1mUE Module {self.module_name} NIC MTU is {self.MTU} as expected\u001B[0m')
|
||||
return True
|
||||
else:
|
||||
logging.debug('\u001B[1;37;41m Incorrect Module NIC MTU or MTU not found! Expected: ' + str(self.MTU) + '\u001B[0m')
|
||||
logging.debug(f'\u001B[1;37;41m UE module {self.module_name} has incorrect Module NIC MTU or MTU not found! Expected: {self.MTU} \u001B[0m')
|
||||
return False
|
||||
|
||||
def getName(self):
|
||||
|
||||
@@ -295,10 +295,13 @@ class OaiCiTest():
|
||||
|
||||
def InitializeUE(self, HTML):
|
||||
ues = [cls_module_ue.Module_UE(n.strip()) for n in self.ue_ids]
|
||||
messages = []
|
||||
with concurrent.futures.ThreadPoolExecutor() as executor:
|
||||
futures = [executor.submit(ue.initialize) for ue in ues]
|
||||
for f, ue in zip(futures, ues):
|
||||
uename = f'UE {ue.getName()}'
|
||||
messages.append(f'{uename}: initialized' if f.result() else f'{uename}: ERROR during Initialization')
|
||||
[f.result() for f in futures]
|
||||
messages = [f'UE {ue.getName()}: initialized' for ue in ues]
|
||||
HTML.CreateHtmlTestRowQueue('N/A', 'OK', messages)
|
||||
|
||||
|
||||
@@ -461,7 +464,7 @@ class OaiCiTest():
|
||||
doInterfaceCheck = True
|
||||
# For the moment, only in explicit noS1 without kernel module (ie w/ tunnel interface)
|
||||
if self.air_interface == 'nr-uesoftmodem':
|
||||
result = re.search('--noS1 --nokrnmod 1', str(self.Initialize_OAI_UE_args))
|
||||
result = re.search('--noS1', str(self.Initialize_OAI_UE_args))
|
||||
if result is not None:
|
||||
doInterfaceCheck = True
|
||||
if doInterfaceCheck:
|
||||
@@ -605,6 +608,8 @@ class OaiCiTest():
|
||||
Target = EPC.MmeIPAddress
|
||||
elif re.match('OAICN5G', EPC.Type, re.IGNORECASE):
|
||||
Target = EPC.MmeIPAddress
|
||||
elif re.match('OC-OAI-CN5G', EPC.Type, re.IGNORECASE):
|
||||
Target = "172.21.6.100"
|
||||
else:
|
||||
Target = EPC.IPAddress
|
||||
#ping from module NIC rather than IP address to make sure round trip is over the air
|
||||
@@ -1227,7 +1232,7 @@ class OaiCiTest():
|
||||
raise Exception("could not corver prod-trf-gen IP address")
|
||||
cn_target_ip = result.group('trf_ip_addr')
|
||||
SSH.close()
|
||||
cn_iperf_prefix = "docker exec -it prod-trf-gen" # -w /iperf-2.0.13 necessary?
|
||||
cn_iperf_prefix = "docker exec prod-trf-gen" # -w /iperf-2.0.13 necessary?
|
||||
else: # ltebox, sabox
|
||||
cn_target_ip = "192.172.0.1"
|
||||
cn_iperf_prefix = ""
|
||||
@@ -1271,7 +1276,7 @@ class OaiCiTest():
|
||||
logging.debug("Iperf in UL requested")
|
||||
cmd = cls_cmd.getConnection(EPC.IPAddress)
|
||||
cmd.run(f'rm {EPC.SourceCodePath}/{server_filename}')
|
||||
cmd.run(f'{cn_iperf_prefix} iperf -s {udpSwitch} -1 -t {iperf_time * 1.5} {port} &> {EPC.SourceCodePath}/{server_filename} &')
|
||||
cmd.run(f'{cn_iperf_prefix} iperf -s {udpSwitch} -t {iperf_time * 1.5} {port} &> {EPC.SourceCodePath}/{server_filename} &')
|
||||
cmd.close()
|
||||
|
||||
cmd = cls_cmd.getConnection(ue.getHost())
|
||||
|
||||
@@ -114,7 +114,7 @@ class PhySim:
|
||||
logging.debug('Merging with the target branch: ' + self.ranTargetBranch)
|
||||
mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 30)
|
||||
else:
|
||||
imageTag = "develop"
|
||||
imageTag = f'develop-{self.ranCommitID[0:8]}'
|
||||
|
||||
# logging to OC Cluster and then switch to corresponding project
|
||||
mySSH.command(f'oc login -u {ocUserName} -p {ocPassword} --server https://api.oai.cs.eurecom.fr:6443', '\$', 30)
|
||||
|
||||
@@ -172,7 +172,7 @@ eNBs =
|
||||
|
||||
|
||||
////////// MME parameters:
|
||||
mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR";
|
||||
mme_ip_address = ( { ipv4 = "192.168.61.195";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
@@ -191,11 +191,11 @@ eNBs =
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eno1";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "172.21.16.128";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eno1";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "172.21.16.128";
|
||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR";
|
||||
ENB_IPV4_ADDRESS_FOR_X2C = "172.21.16.128";
|
||||
ENB_PORT_FOR_X2C = 36422; # Spec 36422
|
||||
};
|
||||
}
|
||||
|
||||
@@ -172,7 +172,7 @@ eNBs =
|
||||
|
||||
|
||||
////////// MME parameters:
|
||||
mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR";
|
||||
mme_ip_address = ( { ipv4 = "192.168.61.195";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
@@ -191,11 +191,11 @@ eNBs =
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
ENB_INTERFACE_NAME_FOR_S1_MME = "eno1";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR";
|
||||
ENB_IPV4_ADDRESS_FOR_S1_MME = "172.21.16.128";
|
||||
ENB_INTERFACE_NAME_FOR_S1U = "eno1";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR";
|
||||
ENB_IPV4_ADDRESS_FOR_S1U = "172.21.16.128";
|
||||
ENB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR";
|
||||
ENB_IPV4_ADDRESS_FOR_X2C = "172.21.16.128";
|
||||
ENB_PORT_FOR_X2C = 36422; # Spec 36422
|
||||
};
|
||||
}
|
||||
|
||||
@@ -169,7 +169,7 @@ gNBs =
|
||||
|
||||
|
||||
////////// AMF parameters:
|
||||
amf_ip_address = ( { ipv4 = "192.168.5.233";
|
||||
amf_ip_address = ( { ipv4 = "192.168.70.132";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
@@ -178,11 +178,10 @@ gNBs =
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
|
||||
GNB_INTERFACE_NAME_FOR_NG_AMF = "eth0";
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "CI_GNB_IP_ADDR";
|
||||
GNB_INTERFACE_NAME_FOR_NGU = "eth0";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "CI_GNB_IP_ADDR";
|
||||
GNB_INTERFACE_NAME_FOR_NG_AMF = "demo-oai";
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.70.129/24";
|
||||
GNB_INTERFACE_NAME_FOR_NGU = "demo-oai";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.70.129/24";
|
||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
}
|
||||
@@ -213,7 +212,7 @@ security = {
|
||||
rlc_log_level ="debug";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
f1ap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
ngap_log_level ="debug";
|
||||
};
|
||||
|
||||
|
||||
@@ -233,7 +233,7 @@ serveraddr = "server";
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
f1ap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
ngap_log_level ="debug";
|
||||
};
|
||||
|
||||
|
||||
@@ -274,5 +274,5 @@ security = {
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
f1ap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
};
|
||||
|
||||
@@ -270,5 +270,5 @@ security = {
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
f1ap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
};
|
||||
|
||||
@@ -222,7 +222,7 @@ security = {
|
||||
rlc_log_level ="debug";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
f1ap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
ngap_log_level ="debug";
|
||||
};
|
||||
|
||||
|
||||
@@ -81,7 +81,7 @@ security = {
|
||||
rlc_log_level ="debug";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
f1ap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
ngap_log_level ="debug";
|
||||
};
|
||||
|
||||
|
||||
@@ -233,6 +233,6 @@ log_config :
|
||||
rlc_log_level = "info";
|
||||
pdcp_log_level = "info";
|
||||
rrc_log_level = "info";
|
||||
f1ap_log_level = "debug";
|
||||
f1ap_log_level = "info";
|
||||
ngap_log_level = "debug";
|
||||
};
|
||||
|
||||
@@ -278,5 +278,5 @@ security = {
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
f1ap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
};
|
||||
|
||||
@@ -276,5 +276,5 @@ security = {
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
f1ap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
};
|
||||
|
||||
@@ -277,5 +277,5 @@ security = {
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
f1ap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
};
|
||||
|
||||
@@ -280,5 +280,5 @@ security = {
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
f1ap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
};
|
||||
|
||||
@@ -279,5 +279,5 @@ security = {
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
f1ap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
};
|
||||
|
||||
@@ -280,5 +280,5 @@ log_config :
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
ngap_log_level ="debug";
|
||||
f1ap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
};
|
||||
|
||||
@@ -158,65 +158,6 @@ gNBs =
|
||||
|
||||
);
|
||||
|
||||
# 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 :
|
||||
{
|
||||
@@ -331,5 +272,5 @@ log_config :
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
ngap_log_level ="debug";
|
||||
f1ap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
};
|
||||
|
||||
281
ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.ddsuu.conf
Normal file
281
ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.ddsuu.conf
Normal file
@@ -0,0 +1,281 @@
|
||||
Active_gNBs = ( "gNB-Eurecom-n78_20");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
#device :{
|
||||
# name = "aw2sori_transpro";
|
||||
#}
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_CU_ID = 0xe00;
|
||||
|
||||
gNB_name = "gNB-Eurecom-n78_20";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 0x1;
|
||||
plmn_list = ({ mcc = 208; mnc = 97; mnc_length = 2; snssaiList = ({ sst =0x1; }) });
|
||||
|
||||
nr_cellid = 12345678L
|
||||
|
||||
////////// Physical parameters:
|
||||
pdsch_AntennaPorts_XP = 2;
|
||||
pusch_AntennaPorts = 2;
|
||||
do_CSIRS = 1;
|
||||
do_SRS = 0;
|
||||
|
||||
pdcch_ConfigSIB1 = (
|
||||
{
|
||||
controlResourceSetZero = 11;
|
||||
searchSpaceZero = 0;
|
||||
}
|
||||
);
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
#spCellConfigCommon
|
||||
|
||||
physCellId = 0;
|
||||
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# this is 3410.4 MHz => 301 REs from PointA 25 PRBs + 1 RE
|
||||
absoluteFrequencySSB = 627360;
|
||||
dl_frequencyBand = 78;
|
||||
# this is 3410.4 - (51*12*30e-3/2) = 3401.22 MHz
|
||||
dl_absoluteFrequencyPointA = 626748;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_subcarrierSpacing = 1;
|
||||
dl_carrierBandwidth = 51;
|
||||
#initialDownlinkBWP
|
||||
#genericParameters
|
||||
# this is RBstart=0,L=50 (275*(L-1))+RBstart
|
||||
initialDLBWPlocationAndBandwidth = 13750;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialDLBWPsubcarrierSpacing = 1;
|
||||
#pdcch-ConfigCommon
|
||||
initialDLBWPcontrolResourceSetZero = 11; # this means shift of 14, so Coreset is in PRBs 1..48, SSB starts at PRB 15
|
||||
initialDLBWPsearchSpaceZero = 0;
|
||||
#pdsch-ConfigCommon
|
||||
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 78;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_subcarrierSpacing = 1;
|
||||
ul_carrierBandwidth = 51;
|
||||
pMax = 20;
|
||||
#initialUplinkBWP
|
||||
#genericParameters
|
||||
initialULBWPlocationAndBandwidth = 13750;
|
||||
# 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 = 15;
|
||||
preambleReceivedTargetPower = -104;
|
||||
#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 = 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,
|
||||
|
||||
msg3_DeltaPreamble = 1;
|
||||
p0_NominalWithGrant =-96;
|
||||
|
||||
# pucch-ConfigCommon setup :
|
||||
# pucchGroupHopping
|
||||
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 40;
|
||||
p0_nominal = -96;
|
||||
# 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 = 5;
|
||||
nrofDownlinkSlots = 2;
|
||||
nrofDownlinkSymbols = 6;
|
||||
nrofUplinkSlots = 2;
|
||||
nrofUplinkSymbols = 4;
|
||||
|
||||
ssPBCH_BlockPower = -10;
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
|
||||
# ------- 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.100";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
}
|
||||
);
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
|
||||
GNB_INTERFACE_NAME_FOR_NG_AMF = "eno33np0";
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.124/20";
|
||||
GNB_INTERFACE_NAME_FOR_NGU = "eno33np0";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.124/20";
|
||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
MACRLCs = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "local_RRC";
|
||||
pusch_TargetSNRx10 = 200;
|
||||
pucch_TargetSNRx10 = 200;
|
||||
ulsch_max_frame_inactivity = 10;
|
||||
ul_max_mcs = 15;
|
||||
}
|
||||
);
|
||||
|
||||
L1s = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "local_mac";
|
||||
prach_dtx_threshold = 120;
|
||||
pucch0_dtx_threshold = 50;
|
||||
pusch_dtx_threshold = 10;
|
||||
}
|
||||
);
|
||||
|
||||
RUs = (
|
||||
{
|
||||
local_if_name = "ens7f3";
|
||||
remote_address = "192.168.80.239";
|
||||
local_address = "192.168.80.24";
|
||||
local_portc = 50000;
|
||||
remote_portc = 55444;
|
||||
local_portd = 52001;
|
||||
remote_portd = 52183;
|
||||
local_rf = "no"
|
||||
tr_preference = "udp_ecpri_if5"
|
||||
nb_tx = 2
|
||||
nb_rx = 2
|
||||
att_tx = 16
|
||||
att_rx = 0;
|
||||
num_tp_cores = 4;
|
||||
rxfh_core_id = 9;
|
||||
txfh_core_id = 10;
|
||||
tp_cores = [11,12,13,14];
|
||||
nr_flag = 1;
|
||||
eNB_instances = [0];
|
||||
bands = [78];
|
||||
sl_ahead = 5;
|
||||
##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];
|
||||
}
|
||||
);
|
||||
|
||||
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";
|
||||
global_log_verbosity ="medium";
|
||||
hw_log_level ="info";
|
||||
hw_log_verbosity ="medium";
|
||||
phy_log_level ="info";
|
||||
phy_log_verbosity ="medium";
|
||||
mac_log_level ="info";
|
||||
mac_log_verbosity ="high";
|
||||
rlc_log_level ="info";
|
||||
rlc_log_verbosity ="medium";
|
||||
pdcp_log_level ="info";
|
||||
pdcp_log_verbosity ="medium";
|
||||
rrc_log_level ="info";
|
||||
rrc_log_verbosity ="medium";
|
||||
f1ap_log_level ="debug";
|
||||
f1ap_log_verbosity ="medium";
|
||||
ngap_log_level ="debug";
|
||||
ngap_log_verbosity ="medium";
|
||||
};
|
||||
|
||||
@@ -262,6 +262,6 @@ log_config :
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
ngap_log_level ="debug";
|
||||
f1ap_log_level ="debug";
|
||||
f1ap_log_level ="info";
|
||||
};
|
||||
|
||||
|
||||
@@ -14,8 +14,8 @@ Ref :
|
||||
L1 Tx processing : 210.0
|
||||
DLSCH encoding : 137.0
|
||||
L1 Rx processing : 345.0
|
||||
PUSCH inner-receiver : 184.0
|
||||
PUSCH decoding : 276.0
|
||||
PUSCH inner-receiver : 210.0
|
||||
PUSCH decoding : 210.0
|
||||
Schedule Response : 48.0
|
||||
DL & UL scheduling timing : 13.0
|
||||
UL Indication : 60.0
|
||||
|
||||
@@ -14,10 +14,10 @@ Ref :
|
||||
L1 Tx processing : 400.0
|
||||
DLSCH encoding : 177.0
|
||||
L1 Rx processing : 345.0
|
||||
PUSCH inner-receiver : 184.0
|
||||
PUSCH decoding : 276.0
|
||||
PUSCH inner-receiver : 210.0
|
||||
PUSCH decoding : 210.0
|
||||
Schedule Response : 111.0
|
||||
DL & UL scheduling timing : 37.0
|
||||
DL & UL scheduling timing : 20.0
|
||||
UL Indication : 127.0
|
||||
Threshold :
|
||||
feprx : 1.25
|
||||
|
||||
@@ -14,11 +14,11 @@ Ref :
|
||||
L1 Tx processing : 170.0
|
||||
DLSCH encoding : 118.0
|
||||
L1 Rx processing : 305.0
|
||||
PUSCH inner-receiver : 117.0
|
||||
PUSCH decoding : 303.0
|
||||
Schedule Response : 25.0
|
||||
PUSCH inner-receiver : 150.0
|
||||
PUSCH decoding : 210.0
|
||||
Schedule Response : 20.0
|
||||
DL & UL scheduling timing : 10.0
|
||||
UL Indication : 34.0
|
||||
UL Indication : 30.0
|
||||
Threshold :
|
||||
feprx : 1.25
|
||||
feptx_prec : 1.25
|
||||
|
||||
@@ -31,8 +31,8 @@
|
||||
#-----------------------------------------------------------
|
||||
# Import
|
||||
#-----------------------------------------------------------
|
||||
import sys # arg
|
||||
import re # reg
|
||||
import sys # arg
|
||||
import re # reg
|
||||
import logging
|
||||
import os
|
||||
import time
|
||||
@@ -46,10 +46,13 @@ from multiprocessing import Process, Lock, SimpleQueue
|
||||
import sshconnection as SSH
|
||||
import helpreadme as HELP
|
||||
import constants as CONST
|
||||
|
||||
import cls_cluster as OC
|
||||
import cls_cmd
|
||||
#-----------------------------------------------------------
|
||||
# Class Declaration
|
||||
#-----------------------------------------------------------
|
||||
|
||||
|
||||
class EPCManagement():
|
||||
|
||||
def __init__(self):
|
||||
@@ -68,7 +71,13 @@ class EPCManagement():
|
||||
self.isMagmaUsed = False
|
||||
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.OCUserName = ''
|
||||
self.OCPassword = ''
|
||||
self.OCProjectName = ''
|
||||
self.imageToPull = ''
|
||||
self.eNBSourceCodePath = ''
|
||||
|
||||
#-----------------------------------------------------------
|
||||
# EPC management functions
|
||||
@@ -235,8 +244,7 @@ class EPCManagement():
|
||||
HELP.GenericHelp(CONST.Version)
|
||||
HELP.EPCSrvHelp(self.IPAddress, self.UserName, self.Password, self.SourceCodePath, self.Type)
|
||||
sys.exit('Insufficient EPC Parameters')
|
||||
mySSH = SSH.SSHConnection()
|
||||
mySSH.open(self.IPAddress, self.UserName, self.Password)
|
||||
mySSH = cls_cmd.getConnection(self.IPAddress)
|
||||
html_cell = ''
|
||||
if re.match('ltebox', self.Type, re.IGNORECASE):
|
||||
logging.debug('Using the SABOX simulated HSS')
|
||||
@@ -286,6 +294,40 @@ class EPCManagement():
|
||||
if res4 is not None:
|
||||
html_cell += '(' + res4.group('date') + ')'
|
||||
html_cell += '\n'
|
||||
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
|
||||
self.testCase_id = HTML.testCase_id
|
||||
imageNames = ["oai-nrf", "oai-amf", "oai-smf", "oai-spgwu-tiny", "oai-ausf", "oai-udm", "oai-udr", "mysql","oai-traffic-server"]
|
||||
logging.debug('Deploying OAI CN5G on Openshift Cluster')
|
||||
lIpAddr = self.IPAddress
|
||||
lSourcePath = self.SourceCodePath
|
||||
succeeded = OC.OC_login(mySSH, self.OCUserName, self.OCPassword, self.OCProjectName)
|
||||
if not succeeded:
|
||||
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
|
||||
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
|
||||
return False
|
||||
for ii in imageNames:
|
||||
mySSH.run(f'helm uninstall {ii}', reportNonZero=False)
|
||||
mySSH.run(f'helm spray {lSourcePath}/ci-scripts/charts/oai-5g-basic/.')
|
||||
ret = mySSH.run(f'oc get pods', silent=True)
|
||||
if ret.stdout.count('Running') != 9:
|
||||
logging.error('\u001B[1m Deploying 5GCN Failed using helm chart on OC Cluster\u001B[0m')
|
||||
for ii in imageNames:
|
||||
mySSH.run('helm uninstall '+ ii)
|
||||
ret = mySSH.run(f'oc get pods')
|
||||
if re.search('No resources found', ret.stdout):
|
||||
logging.debug('All pods uninstalled')
|
||||
OC.OC_logout(mySSH)
|
||||
mySSH.close()
|
||||
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_PROJECT_FAIL)
|
||||
return False
|
||||
ret = mySSH.run(f'oc get pods', silent=True)
|
||||
for line in ret.stdout.split('\n')[1:]:
|
||||
columns = line.strip().split()
|
||||
name = columns[0]
|
||||
status = columns[2]
|
||||
html_cell += status + ' ' + name
|
||||
html_cell += '\n'
|
||||
OC.OC_logout(mySSH)
|
||||
else:
|
||||
logging.error('This option should not occur!')
|
||||
mySSH.close()
|
||||
@@ -311,6 +353,10 @@ class EPCManagement():
|
||||
else:
|
||||
logging.error('no container with name oai-amf found, could not retrieve AMF IP address')
|
||||
mySSH.close()
|
||||
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
|
||||
mySSH = SSH.SSHConnection()
|
||||
mySSH.open(self.IPAddress, self.UserName, self.Password)
|
||||
response=mySSH.command3('oc pods ls -f name=oai-amf', 10)
|
||||
|
||||
def CheckHSSProcess(self, status_queue):
|
||||
try:
|
||||
@@ -513,8 +559,9 @@ class EPCManagement():
|
||||
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
||||
|
||||
def Terminate5GCN(self, HTML):
|
||||
mySSH = SSH.SSHConnection()
|
||||
mySSH.open(self.IPAddress, self.UserName, self.Password)
|
||||
imageNames = ["mysql", "oai-nrf", "oai-amf", "oai-smf", "oai-spgwu-tiny", "oai-ausf", "oai-udm", "oai-udr", "oai-traffic-server"]
|
||||
containerInPods = ["", "-c nrf", "-c amf", "-c smf", "-c spgwu", "-c ausf", "-c udm", "-c udr", ""]
|
||||
mySSH = cls_cmd.getConnection(self.IPAddress)
|
||||
message = ''
|
||||
if re.match('ltebox', self.Type, re.IGNORECASE):
|
||||
logging.debug('Terminating SA BOX')
|
||||
@@ -545,6 +592,37 @@ class EPCManagement():
|
||||
else:
|
||||
message = 'No Tracking area update request'
|
||||
logging.debug(message)
|
||||
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
|
||||
logging.debug('Terminating OAI CN5G on Openshift Cluster')
|
||||
lIpAddr = self.IPAddress
|
||||
lSourcePath = self.SourceCodePath
|
||||
mySSH.run(f'rm -Rf {lSourcePath}/logs')
|
||||
mySSH.run(f'mkdir -p {lSourcePath}/logs')
|
||||
logging.debug('OC OAI CN5G - Collecting Log files to workspace')
|
||||
succeeded = OC.OC_login(mySSH, self.OCUserName, self.OCPassword, self.OCProjectName)
|
||||
if not succeeded:
|
||||
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
|
||||
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
|
||||
return False
|
||||
mySSH.run(f'oc describe pod &> {lSourcePath}/logs/describe-pods-post-test.log')
|
||||
mySSH.run(f'oc get pods.metrics.k8s &> {lSourcePath}/logs/nf-resource-consumption.log')
|
||||
for ii, ci in zip(imageNames, containerInPods):
|
||||
podName = mySSH.run(f"oc get pods | grep {ii} | awk \'{{print $1}}\'").stdout.strip()
|
||||
if not podName:
|
||||
logging.debug(f'{ii} pod not found!')
|
||||
HTML.CreateHtmlTestRow(self.Type, 'KO', CONST.INVALID_PARAMETER)
|
||||
HTML.CreateHtmlTabFooter(False)
|
||||
mySSH.run(f'oc logs -f {podName} {ci} &> {lSourcePath}/logs/{ii}.log &')
|
||||
mySSH.run(f'helm uninstall {ii}')
|
||||
podName = ''
|
||||
mySSH.run(f'cd {lSourcePath}/logs && zip -r -qq test_logs_CN.zip *.log')
|
||||
mySSH.copyin(f'{lSourcePath}/logs/test_logs_CN.zip','test_logs_CN.zip')
|
||||
ret = mySSH.run(f'oc get pods', silent=True)
|
||||
res = re.search('No resources found in oaicicd-ran namespace.', ret.stdout)
|
||||
if res is not None:
|
||||
logging.debug('OC OAI CN5G components uninstalled')
|
||||
message = 'OC OAI CN5G components uninstalled'
|
||||
OC.OC_logout(mySSH)
|
||||
else:
|
||||
logging.error('This should not happen!')
|
||||
mySSH.close()
|
||||
@@ -784,6 +862,8 @@ class EPCManagement():
|
||||
mySSH.command('zip hss.log.zip hss_check_run.*', '\$', 60)
|
||||
elif re.match('OAICN5G', self.Type, re.IGNORECASE):
|
||||
logging.debug('LogCollect is bypassed for that variant')
|
||||
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
|
||||
logging.debug('LogCollect is bypassed for that variant')
|
||||
elif re.match('OAI', self.Type, re.IGNORECASE) or re.match('OAI-Rel14-CUPS', self.Type, re.IGNORECASE):
|
||||
mySSH.command('zip hss.log.zip hss*.log', '\$', 60)
|
||||
mySSH.command('echo ' + self.Password + ' | sudo -S rm hss*.log', '\$', 5)
|
||||
@@ -798,10 +878,13 @@ class EPCManagement():
|
||||
mySSH.close()
|
||||
|
||||
def LogCollectMME(self):
|
||||
mySSH = SSH.SSHConnection()
|
||||
mySSH.open(self.IPAddress, self.UserName, self.Password)
|
||||
mySSH.command('cd ' + self.SourceCodePath + '/scripts', '\$', 5)
|
||||
mySSH.command('rm -f mme.log.zip', '\$', 5)
|
||||
if self.Type != 'OC-OAI-CN5G':
|
||||
mySSH = SSH.SSHConnection()
|
||||
mySSH.open(self.IPAddress, self.UserName, self.Password)
|
||||
mySSH.command('cd ' + self.SourceCodePath + '/scripts', '\$', 5)
|
||||
mySSH.command('rm -f mme.log.zip', '\$', 5)
|
||||
else:
|
||||
mySSH = cls_cmd.getConnection(self.IPAddress)
|
||||
if re.match('OAI-Rel14-Docker', self.Type, re.IGNORECASE):
|
||||
mySSH.command('docker inspect prod-oai-mme', '\$', 10)
|
||||
result = re.search('No such object', mySSH.getBefore())
|
||||
@@ -819,6 +902,10 @@ class EPCManagement():
|
||||
mySSH.command('cp -f /tmp/oai-cn5g-v1.5.pcap .','\$', 30)
|
||||
mySSH.command('zip mme.log.zip oai-amf.log oai-nrf.log oai-cn5g*.pcap','\$', 30)
|
||||
mySSH.command('mv mme.log.zip ' + self.SourceCodePath + '/scripts','\$', 30)
|
||||
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
|
||||
mySSH.run('cd ' + self.SourceCodePath + '/logs')
|
||||
mySSH.run('zip mme.log.zip oai-amf.log oai-nrf.log oai-cn5g*.pcap')
|
||||
mySSH.run('mv mme.log.zip ' + self.SourceCodePath + '/scripts')
|
||||
elif re.match('OAI', self.Type, re.IGNORECASE) or re.match('OAI-Rel14-CUPS', self.Type, re.IGNORECASE):
|
||||
mySSH.command('zip mme.log.zip mme*.log', '\$', 60)
|
||||
mySSH.command('echo ' + self.Password + ' | sudo -S rm mme*.log', '\$', 5)
|
||||
@@ -852,6 +939,10 @@ class EPCManagement():
|
||||
mySSH.command('cd ' + self.SourceCodePath + '/logs','\$', 5)
|
||||
mySSH.command('zip spgw.log.zip oai-smf.log oai-spgwu.log','\$', 30)
|
||||
mySSH.command('mv spgw.log.zip ' + self.SourceCodePath + '/scripts','\$', 30)
|
||||
elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE):
|
||||
mySSH.command('cd ' + self.SourceCodePath + '/logs','\$', 5)
|
||||
mySSH.command('zip spgw.log.zip oai-smf.log oai-spgwu.log','\$', 30)
|
||||
mySSH.command('mv spgw.log.zip ' + self.SourceCodePath + '/scripts','\$', 30)
|
||||
elif re.match('OAI', self.Type, re.IGNORECASE) or re.match('OAI-Rel14-CUPS', self.Type, re.IGNORECASE):
|
||||
mySSH.command('zip spgw.log.zip spgw*.log', '\$', 60)
|
||||
mySSH.command('echo ' + self.Password + ' | sudo -S rm spgw*.log', '\$', 5)
|
||||
|
||||
@@ -38,12 +38,12 @@ import helpreadme as HELP
|
||||
import constants as CONST
|
||||
|
||||
|
||||
import cls_oaicitest #main class for OAI CI test framework
|
||||
import cls_physim #class PhySim for physical simulators build and test
|
||||
import cls_containerize #class Containerize for all container-based operations on RAN/UE objects
|
||||
import cls_static_code_analysis #class for static code analysis
|
||||
import cls_physim1 #class PhySim for physical simulators deploy and run
|
||||
import cls_cluster # class for building/deploying on cluster
|
||||
import cls_oaicitest #main class for OAI CI test framework
|
||||
import cls_physim #class PhySim for physical simulators build and test
|
||||
import cls_containerize #class Containerize for all container-based operations on RAN/UE objects
|
||||
import cls_static_code_analysis #class for static code analysis
|
||||
import cls_physim1 #class PhySim for physical simulators deploy and run
|
||||
import cls_cluster # class for building/deploying on cluster
|
||||
|
||||
import sshconnection
|
||||
import epc
|
||||
@@ -429,7 +429,12 @@ def GetParametersFromXML(action):
|
||||
elif action == 'Custom_Command':
|
||||
RAN.node = test.findtext('node')
|
||||
RAN.command = test.findtext('command')
|
||||
|
||||
RAN.command_fail = test.findtext('command_fail') in ['True', 'true', 'Yes', 'yes']
|
||||
elif action == 'Pull_Cluster_Image':
|
||||
# CLUSTER.imageToPull.clear()
|
||||
string_field = test.findtext('images_to_pull')
|
||||
if (string_field is not None):
|
||||
CLUSTER.imageToPull = string_field.split()
|
||||
else:
|
||||
logging.warning(f"unknown action {action} from option-parsing point-of-view")
|
||||
|
||||
@@ -705,6 +710,8 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
|
||||
# On CI bench w/ containers, we need to validate if IP routes are set
|
||||
if EPC.IPAddress == '172.21.16.136':
|
||||
CONTAINERS.CheckAndAddRoute('porcepix', EPC.IPAddress, EPC.UserName, EPC.Password)
|
||||
if EPC.IPAddress == '172.21.16.137':
|
||||
CONTAINERS.CheckAndAddRoute('nepes', EPC.IPAddress, EPC.UserName, EPC.Password)
|
||||
if CONTAINERS.eNBIPAddress == '172.21.16.127':
|
||||
CONTAINERS.CheckAndAddRoute('asterix', CONTAINERS.eNBIPAddress, CONTAINERS.eNBUserName, CONTAINERS.eNBPassword)
|
||||
if CONTAINERS.eNB1IPAddress == '172.21.16.127':
|
||||
@@ -713,6 +720,8 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
|
||||
CONTAINERS.CheckAndAddRoute('obelix', CONTAINERS.eNBIPAddress, CONTAINERS.eNBUserName, CONTAINERS.eNBPassword)
|
||||
if CONTAINERS.eNB1IPAddress == '172.21.16.128':
|
||||
CONTAINERS.CheckAndAddRoute('obelix', CONTAINERS.eNB1IPAddress, CONTAINERS.eNB1UserName, CONTAINERS.eNB1Password)
|
||||
if CONTAINERS.eNBIPAddress == '172.21.16.109' or CONTAINERS.eNBIPAddress == 'ofqot':
|
||||
CONTAINERS.CheckAndAddRoute('ofqot', CONTAINERS.eNBIPAddress, CONTAINERS.eNBUserName, CONTAINERS.eNBPassword)
|
||||
if CONTAINERS.eNBIPAddress == '172.21.16.137':
|
||||
CONTAINERS.CheckAndAddRoute('nepes', CONTAINERS.eNBIPAddress, CONTAINERS.eNBUserName, CONTAINERS.eNBPassword)
|
||||
if CONTAINERS.eNB1IPAddress == '172.21.16.137':
|
||||
@@ -752,6 +761,8 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
|
||||
elif action == 'Custom_Command':
|
||||
logging.info(f"Executing custom command")
|
||||
RAN.CustomCommand(HTML)
|
||||
if RAN.prematureExit:
|
||||
CiTestObj.AutoTerminateeNB(HTML,RAN,EPC,CONTAINERS)
|
||||
elif action == 'Initialize_eNB':
|
||||
RAN.InitializeeNB(HTML, EPC)
|
||||
if RAN.prematureExit:
|
||||
@@ -822,6 +833,9 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
|
||||
HTML=ldpc.Run_NRulsimTest(HTML,CONST,id)
|
||||
if ldpc.exitStatus==1:
|
||||
RAN.prematureExit = True
|
||||
elif action == 'Pull_Cluster_Image':
|
||||
if not CLUSTER.PullClusterImage(HTML,RAN):
|
||||
RAN.prematureExit = True
|
||||
elif action == 'Build_Cluster_Image':
|
||||
if not CLUSTER.BuildClusterImage(HTML):
|
||||
RAN.prematureExit = True
|
||||
|
||||
@@ -99,6 +99,7 @@ class RANManagement():
|
||||
self.cmd_prefix = '' # prefix before {lte,nr}-softmodem
|
||||
self.node = ''
|
||||
self.command = ''
|
||||
self.command_fail = False
|
||||
|
||||
|
||||
#-----------------------------------------------------------
|
||||
@@ -259,19 +260,24 @@ class RANManagement():
|
||||
self.checkBuildeNB(lIpAddr, lUserName, lPassWord, lSourcePath, self.backgroundBuildTestId[int(self.eNB_instance)], HTML)
|
||||
|
||||
def CustomCommand(self, HTML):
|
||||
if self.node == '' or self.node == "localhost":
|
||||
cmd = cls_cmd.LocalCmd()
|
||||
else:
|
||||
cmd = cls_cmd.RemoteCmd(self.node)
|
||||
cmd = cls_cmd.getConnection(self.node)
|
||||
ret = cmd.run(self.command)
|
||||
cmd.close()
|
||||
logging.debug(f'CustomCommand: {self.command} returnCode: {ret.returncode} output: {ret.stdout}')
|
||||
html_queue = SimpleQueue()
|
||||
logging.debug(f"Custum command : {self.command} on node : {self.node} returnCode : {ret.returncode}")
|
||||
status = 'OK'
|
||||
if ret.returncode != 0:
|
||||
html_queue.put(ret.stdout)
|
||||
message = []
|
||||
if ret.returncode != 0 and not self.command_fail:
|
||||
message = [ret.stdout]
|
||||
logging.warning(f'CustomCommand output: {message}')
|
||||
status = 'Warning'
|
||||
HTML.CreateHtmlTestRow(self.command, status, 1, html_queue)
|
||||
if self.command_fail: # important command since it would make the pipeline fail, so show output in HTML
|
||||
message = [ret.stdout]
|
||||
if ret.returncode != 0 and self.command_fail:
|
||||
message = [ret.stdout]
|
||||
logging.error(f'CustomCommand failed: output: {message}')
|
||||
status = 'KO'
|
||||
self.prematureExit = True
|
||||
HTML.CreateHtmlTestRowQueue(self.command, status, message)
|
||||
|
||||
def checkBuildeNB(self, lIpAddr, lUserName, lPassWord, lSourcePath, testcaseId, HTML):
|
||||
HTML.testCase_id=testcaseId
|
||||
|
||||
341
ci-scripts/run_sl_test.py
Executable file
341
ci-scripts/run_sl_test.py
Executable file
@@ -0,0 +1,341 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Automated tests for running 5G NR Sidelink SyncRef UE and/or Nearby UE.
|
||||
# The following is an example to run remote machine (nearby) three times.
|
||||
# The syncref UE is launched on the current machine, and a single
|
||||
# nearby UE is launched on the machine specified by the --host and
|
||||
# --user flags. The -r will enable this simulation to be repeated
|
||||
# three times.
|
||||
#
|
||||
# python3 run_sl_test.py --user account --host 10.1.1.68 -r 3
|
||||
#
|
||||
# The following is an example to run just a Sidelink Nearby UE.
|
||||
# By specifying -l nearby, only the nearby UE will be launched
|
||||
# on the machine specified by the --host and --user flags.
|
||||
# The -r will enable this simulation to be repeated two times.
|
||||
#
|
||||
# python3 run_sl_test.py -l nearby --user account --host 10.1.1.68 -r 2
|
||||
#
|
||||
# See `--help` for more information.
|
||||
#
|
||||
|
||||
import os
|
||||
import sys
|
||||
import argparse
|
||||
import logging
|
||||
import time
|
||||
import re
|
||||
import glob
|
||||
import subprocess
|
||||
from subprocess import Popen
|
||||
import threading
|
||||
from typing import Dict
|
||||
from queue import *
|
||||
from sl_check_log import LogChecker
|
||||
|
||||
HOME_DIR = os.path.expanduser( '~' )
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
# Command line argument parsing
|
||||
|
||||
parser = argparse.ArgumentParser(description="""
|
||||
Automated tests for 5G NR Sidelink simulations
|
||||
""")
|
||||
|
||||
parser.add_argument('--launch', '-l', default='both', choices='syncref nearby both'.split(), help="""
|
||||
Sidelink UE type to launch test scenario (default: %(default)s)
|
||||
""")
|
||||
|
||||
parser.add_argument('--host', default='10.1.1.80', type=str, help="""
|
||||
Nearby Host IP (default: %(default)s)
|
||||
""")
|
||||
|
||||
parser.add_argument('--user', '-u', default='zaid', type=str, help="""
|
||||
User id in Nearby Host (default: %(default)s)
|
||||
""")
|
||||
|
||||
parser.add_argument('--repeat', '-r', default=1, type=int, help="""
|
||||
The number of repeated test iterations (default: %(default)s)
|
||||
""")
|
||||
|
||||
parser.add_argument('--basic', '-b', action='store_true', help="""
|
||||
Basic test with basic shell commands
|
||||
""")
|
||||
|
||||
parser.add_argument('--commands', default='sl_cmds.txt', help="""
|
||||
The USRP Commands .txt file (default: %(default)s)
|
||||
""")
|
||||
|
||||
parser.add_argument('--duration', '-d', metavar='SECONDS', type=int, default=30, help="""
|
||||
How long to run the test before stopping to examine the logs
|
||||
""")
|
||||
|
||||
parser.add_argument('--nid1', type=int, default=10, help="""
|
||||
Nid1 value
|
||||
""")
|
||||
|
||||
parser.add_argument('--nid2', type=int, default=1, help="""
|
||||
Nid2 value
|
||||
""")
|
||||
|
||||
parser.add_argument('--log-dir', default=HOME_DIR, help="""
|
||||
Where to store log files
|
||||
""")
|
||||
|
||||
parser.add_argument('--compress', action='store_true', help="""
|
||||
Compress the log files in the --log-dir
|
||||
""")
|
||||
|
||||
parser.add_argument('--no-run', '-n', action='store_true', help="""
|
||||
Don't run the test, only examine the logs in the --log-dir
|
||||
directory from a previous run of the test
|
||||
""")
|
||||
|
||||
parser.add_argument('--debug', action='store_true', help="""
|
||||
Enable debug logging (for this script only)
|
||||
""")
|
||||
|
||||
parser.add_argument('--test', '-t', default='usrp', choices='psbchsim rfsim usrp'.split(), help="""
|
||||
The kind of test scenario to run. The options include psbchsim, rfsim, or usrp. (default: %(default)s)
|
||||
""")
|
||||
|
||||
OPTS = parser.parse_args()
|
||||
del parser
|
||||
|
||||
logging.basicConfig(level=logging.DEBUG if OPTS.debug else logging.INFO,
|
||||
format='>>> %(name)s: %(levelname)s: %(message)s')
|
||||
LOGGER = logging.getLogger(os.path.basename(sys.argv[0]))
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
def redirect_output(cmd: str, filename: str) -> str:
|
||||
cmd += ' >{} 2>&1'.format(filename)
|
||||
return cmd
|
||||
|
||||
def thread_delay(thread_name: str, delay: int) -> None:
|
||||
count = 0
|
||||
while count < 1:
|
||||
time.sleep(delay)
|
||||
count += 1
|
||||
|
||||
class Command:
|
||||
"""
|
||||
Parsing USRP commands file
|
||||
"""
|
||||
def __init__(self, filename) -> None:
|
||||
self.check_user()
|
||||
self.filename = self.check_file(filename)
|
||||
self.parse_commands()
|
||||
|
||||
def check_user(self) -> None:
|
||||
if OPTS.test != 'usrp': return
|
||||
if OPTS.launch != 'syncref' and OPTS.user == '':
|
||||
LOGGER.error("--user followed by [user id] is mandatory to connect to remote machine")
|
||||
sys.exit(1)
|
||||
|
||||
def check_file(self, filename) -> str:
|
||||
data_file = glob.glob(filename)
|
||||
if data_file:
|
||||
return filename
|
||||
else:
|
||||
LOGGER.error(f'The file {filename} does not exist!')
|
||||
sys.exit(1)
|
||||
|
||||
def parse_commands(self) -> None:
|
||||
"""
|
||||
Scan the provided commands file.
|
||||
"""
|
||||
self.launch_cmds: Dict[str, str] = {}
|
||||
if OPTS.test == 'usrp':
|
||||
launch_cmds_re = re.compile(r'^\s*(\S*)usrp\S*\s*=\s*((\S+\s*)*)')
|
||||
elif OPTS.test == 'rfsim':
|
||||
launch_cmds_re = re.compile(r'^\s*(\S*)rfsim\S*\s*=\s*((\S+\s*)*)')
|
||||
elif OPTS.test == 'psbchsim':
|
||||
launch_cmds_re = re.compile(r'^\s*(\S*)psbchsim\S*\s*=\s*((\S+\s*)*)')
|
||||
else:
|
||||
LOGGER.error("Provided test option not valid! %s", OPTS.test)
|
||||
exit(1)
|
||||
|
||||
with open(self.filename, 'rt') as fh:
|
||||
nearby_cmd_continued = False
|
||||
syncref_cmd_continued = False
|
||||
for line in fh:
|
||||
if line == '\n': continue
|
||||
match = launch_cmds_re.match(line)
|
||||
if match:
|
||||
host_role = match.group(1)
|
||||
launch_cmds = match.group(2)
|
||||
if host_role.lower().startswith('nearby'):
|
||||
nearby_cmd_continued = True
|
||||
continue
|
||||
if host_role.lower().startswith('syncref'):
|
||||
syncref_cmd_continued = True
|
||||
continue
|
||||
elif nearby_cmd_continued:
|
||||
launch_cmds += line
|
||||
if not line.strip().endswith('\\'):
|
||||
self.launch_cmds['nearby'] = launch_cmds
|
||||
LOGGER.debug('Nearby cmd is %s', launch_cmds)
|
||||
nearby_cmd_continued = False
|
||||
continue
|
||||
elif syncref_cmd_continued:
|
||||
launch_cmds += line
|
||||
if not line.strip().endswith('\\'):
|
||||
self.launch_cmds['syncref'] = launch_cmds
|
||||
LOGGER.debug('Syncref cmd is %s', launch_cmds)
|
||||
syncref_cmd_continued = False
|
||||
continue
|
||||
else:
|
||||
LOGGER.debug('Unmatched line %r', line)
|
||||
continue
|
||||
if self.launch_cmds == {}:
|
||||
LOGGER.error(f'usrp commands are not found in file: {self.filename} ')
|
||||
exit()
|
||||
|
||||
class TestThread(threading.Thread):
|
||||
"""
|
||||
Represents TestThread
|
||||
"""
|
||||
def __init__(self, queue, commands, passed, log_agent):
|
||||
threading.Thread.__init__(self)
|
||||
self.queue = queue
|
||||
self.commands = commands
|
||||
self.passed = passed
|
||||
self.delay = 0
|
||||
self.log_file = log_agent.txlog_file_path
|
||||
self.log_agent = log_agent
|
||||
|
||||
def run(self):
|
||||
if self.queue.empty() == True:
|
||||
LOGGER.error("Queue is empty!")
|
||||
sys.exit(1)
|
||||
try:
|
||||
while not self.queue.empty():
|
||||
job = self.queue.get()
|
||||
if "nearby" == job:
|
||||
thread_delay(job, delay = 0)
|
||||
self.launch_nearby(job)
|
||||
if "syncref" == job and not OPTS.no_run:
|
||||
thread_delay(job, delay = self.delay)
|
||||
self.launch_syncref(job)
|
||||
self.queue.task_done()
|
||||
except Exception as inst:
|
||||
LOGGER.info(f"Failed to operate on job with type {type(inst)} and args {inst.args}")
|
||||
|
||||
def launch_syncref(self, job) -> Popen:
|
||||
LOGGER.info('Launching SyncRef UE')
|
||||
if OPTS.basic: cmd = redirect_output('uname -a', self.log_file)
|
||||
else: cmd = self.commands.launch_cmds[job]
|
||||
proc = Popen(cmd, shell=True)
|
||||
LOGGER.info(f"syncref_proc = {proc}")
|
||||
if not OPTS.basic and not OPTS.no_run:
|
||||
LOGGER.info(f"Process running... {job}")
|
||||
time.sleep(OPTS.duration)
|
||||
self.kill_process("syncref", proc)
|
||||
|
||||
def launch_nearby(self, job, host=OPTS.host, user=OPTS.user) -> Popen:
|
||||
LOGGER.info('#' * 42)
|
||||
LOGGER.info('Launching Nearby UE')
|
||||
if OPTS.basic: cmd = redirect_output('uname -a', self.log_file)
|
||||
else: cmd = self.commands.launch_cmds[job]
|
||||
if OPTS.test == 'usrp':
|
||||
cmd = cmd[:-1] + f' -d {OPTS.duration} --nid1 {OPTS.nid1} --nid2 {OPTS.nid2}'
|
||||
proc = Popen(["ssh", f"{user}@{host}", cmd],
|
||||
shell=False,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
LOGGER.info(f"nearby_proc = {proc}")
|
||||
remote_output = proc.stdout.readlines()
|
||||
if remote_output == []:
|
||||
nearby_result = proc.stderr.readlines()
|
||||
else:
|
||||
nearby_result = remote_output
|
||||
self.kill_process("nearby", proc)
|
||||
if nearby_result:
|
||||
self.find_nearby_result_metric(nearby_result)
|
||||
else:
|
||||
proc = Popen(cmd, shell=True)
|
||||
LOGGER.info(f"nearby_proc = {proc}")
|
||||
if not OPTS.basic and not OPTS.no_run:
|
||||
LOGGER.info(f"Process running... {job}")
|
||||
time.sleep(OPTS.duration)
|
||||
self.kill_process("nearby", proc)
|
||||
nearby_result = self.log_agent.analyze_nearby_logs(OPTS.nid1, OPTS.nid2)
|
||||
if nearby_result:
|
||||
self.find_nearby_result_metric(nearby_result)
|
||||
|
||||
def find_nearby_result_metric(self, remote_log):
|
||||
result_metric = None
|
||||
for line in remote_log:
|
||||
if type(line) is not str:
|
||||
line = line.decode()
|
||||
if OPTS.test == 'usrp':
|
||||
LOGGER.info(line.strip())
|
||||
# 'SyncRef UE found. RSRP: -100 dBm/RE. It took {delta_time_s} seconds'
|
||||
if 'SyncRef UE found' in line:
|
||||
fields = line.split(maxsplit=12)
|
||||
if len(fields) > 6:
|
||||
ssb_rsrp = float(fields[-6])
|
||||
sync_duration = float(fields[-2])
|
||||
counting_duration = sync_duration - self.delay
|
||||
result_metric = (ssb_rsrp, sync_duration, counting_duration)
|
||||
self.passed += [result_metric]
|
||||
return
|
||||
|
||||
def kill_process(self, job: str, proc: Popen) -> None:
|
||||
# Wait for the processes to end
|
||||
LOGGER.info(f'kill main simulation processes... {job}')
|
||||
cmd = ['sudo', 'killall']
|
||||
cmd.append('-KILL')
|
||||
if proc:
|
||||
cmd.append('nr-uesoftmodem')
|
||||
if "syncref" == job:
|
||||
subprocess.run(cmd)
|
||||
LOGGER.info(f'Waiting for PID proc.pid for {job}')
|
||||
proc.kill()
|
||||
proc.wait()
|
||||
LOGGER.info(f'kill main simulation processes...done for {job}')
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
def main() -> int:
|
||||
commands = Command(OPTS.commands)
|
||||
log_agent = LogChecker(OPTS, LOGGER)
|
||||
LOGGER.debug(f'Number of iterations {OPTS.repeat}')
|
||||
if commands.launch_cmds is not None:
|
||||
for role, cmd in commands.launch_cmds.items():
|
||||
LOGGER.debug(f'{role} UE: {cmd}')
|
||||
jobs = ['nearby', 'syncref'] if OPTS.launch == 'both' else [OPTS.launch]
|
||||
passed_metric = []
|
||||
num_tx_ssb = []
|
||||
num_passed = 0
|
||||
for i in range(OPTS.repeat):
|
||||
threads = []
|
||||
queue = Queue()
|
||||
for job in jobs:
|
||||
queue.put(job)
|
||||
th = TestThread(queue, commands, passed_metric, log_agent)
|
||||
th.setDaemon(True)
|
||||
th.start()
|
||||
threads.append(th)
|
||||
for th in threads:
|
||||
th.join()
|
||||
if num_passed != len(passed_metric):
|
||||
# Examine the logs to determine if the test passed
|
||||
(ssb_rsrp, sync_duration, counting_duration) = passed_metric[-1]
|
||||
num_ssb = log_agent.analyze_syncref_logs(counting_duration)
|
||||
num_tx_ssb += [num_ssb]
|
||||
LOGGER.info(f"Trial {i+1}/{OPTS.repeat} PASSED. {num_ssb} SSB(s) were generated. Measured {ssb_rsrp} RSRP (dbm/RE)")
|
||||
else:
|
||||
LOGGER.info(f"Failure detected during {i+1}/{OPTS.repeat} trial(s).")
|
||||
num_passed = len(passed_metric)
|
||||
|
||||
LOGGER.info('#' * 42)
|
||||
LOGGER.info(f"Number of passed = {len(passed_metric)}/{OPTS.repeat}")
|
||||
if len(num_tx_ssb) > 0:
|
||||
LOGGER.info(f"Avg number of SSB = {sum(num_tx_ssb) / len(num_tx_ssb)} ({num_tx_ssb})")
|
||||
if len(passed_metric) > 0:
|
||||
LOGGER.info(f"Avg SSB RSRP = {sum([result[0] for result in passed_metric]) / len(passed_metric)}")
|
||||
LOGGER.info(f"Avg Sync duration (seconds) = {sum([result[1] for result in passed_metric]) / len(passed_metric)}")
|
||||
return 0
|
||||
|
||||
sys.exit(main())
|
||||
112
ci-scripts/sl_check_log.py
Executable file
112
ci-scripts/sl_check_log.py
Executable file
@@ -0,0 +1,112 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import os
|
||||
import bz2
|
||||
import logging
|
||||
from typing import Optional, List, Generator
|
||||
|
||||
class LogChecker():
|
||||
def __init__(self, OPTS, LOGGER):
|
||||
self.OPTS = OPTS
|
||||
self.LOGGER = LOGGER
|
||||
self.rxlog_file_path = os.path.join(OPTS.log_dir, 'rx.log')
|
||||
self.txlog_file_path = os.path.join(OPTS.log_dir, 'tx.log')
|
||||
|
||||
def get_lines(self, filename: str) -> Generator[str, None, None]:
|
||||
"""
|
||||
Yield each line of the given log file (.bz2 compressed log file if -c flag is used.)
|
||||
"""
|
||||
fh = bz2.open(filename, 'rb') if self.OPTS.compress else open(filename, 'rb')
|
||||
for line_bytes in fh:
|
||||
line = line_bytes.decode('utf-8', 'backslashreplace')
|
||||
line = line.rstrip('\r\n')
|
||||
yield line
|
||||
|
||||
def get_analysis_messages_nearby(self, filename: str) -> Generator[str, None, None]:
|
||||
"""
|
||||
Finding all logs in the log file with X fields for log parsing optimization
|
||||
"""
|
||||
self.LOGGER.info('Scanning %s', filename)
|
||||
for line in self.get_lines(filename):
|
||||
#796821.854505 [NR_PHY] SyncRef UE found with Nid1 10 and Nid2 1 SS-RSRP 100 dBm/RE
|
||||
#796811.532881 [NR_PHY] nrUE configured
|
||||
fields = line.split(maxsplit=10)
|
||||
if len(fields) == 11 or len(fields) == 4:
|
||||
yield line
|
||||
|
||||
def analyze_nearby_logs(self, exp_nid1: int, exp_nid2: int) -> bool:
|
||||
found = set()
|
||||
est_nid1, est_nid2, time_start_s, time_end_s = -1, -1, -1, -1
|
||||
ssb_rsrp = 0
|
||||
log_file = self.rxlog_file_path
|
||||
result = None
|
||||
|
||||
if self.OPTS.compress:
|
||||
log_file = f'{log_file}.bz2'
|
||||
for line in self.get_analysis_messages_nearby(log_file):
|
||||
#796821.854505 [NR_PHY] SyncRef UE found with Nid1 10 and Nid2 1 SS-RSRP -100 dBm/RE
|
||||
#796811.532881 [NR_PHY] nrUE configured
|
||||
if 'SyncRef UE found' in line and 'Nid1' in line and 'Nid2' in line:
|
||||
num_split = 13 if 'RSRP' in line else 10
|
||||
fields = line.split(maxsplit=num_split)
|
||||
est_nid1 = int(fields[7])
|
||||
est_nid2 = int(fields[10])
|
||||
if 'RSRP' in line:
|
||||
ssb_rsrp = int(fields[12])
|
||||
found.add('found')
|
||||
time_end_s = float(fields[0])
|
||||
break
|
||||
if time_start_s == -1 and 'nrUE configured' in line:
|
||||
fields = line.split(maxsplit=3)
|
||||
time_start_s = float(fields[0])
|
||||
|
||||
|
||||
self.LOGGER.debug('found: %r', found)
|
||||
if len(found) != 1:
|
||||
self.LOGGER.error(f'Failed -- No SyncRef UE found.')
|
||||
return
|
||||
elif exp_nid1 != est_nid1 or exp_nid2 != est_nid2:
|
||||
self.LOGGER.error(f'Failed -- found SyncRef UE Nid1 {est_nid1}, Ni2 {est_nid2}, expecting Nid1 {exp_nid1}, Nid2 {exp_nid2}')
|
||||
return
|
||||
if time_start_s == -1:
|
||||
self.LOGGER.error(f'Failed -- No start time found! Fix log and re-run!')
|
||||
return
|
||||
|
||||
delta_time_s = time_end_s - time_start_s
|
||||
result = f'SyncRef UE found. RSRP: {ssb_rsrp} dBm/RE. It took {delta_time_s} seconds'
|
||||
self.LOGGER.info(result)
|
||||
return [result]
|
||||
|
||||
|
||||
def get_analysis_messages_syncref(self, filename: str) -> Generator[str, None, None]:
|
||||
"""
|
||||
Finding all logs in the log file with X fields for log parsing optimization
|
||||
"""
|
||||
self.LOGGER.info('Scanning %s', filename)
|
||||
for line in self.get_lines(filename):
|
||||
#796811.532881 [NR_PHY] nrUE configured
|
||||
#796821.854505 [NR_PHY] PSBCH SL generation started
|
||||
fields = line.split(maxsplit=5)
|
||||
if len(fields) == 4 or len(fields) == 6 :
|
||||
yield line
|
||||
|
||||
def analyze_syncref_logs(self, counting_delta: float) -> int:
|
||||
time_start_s, time_end_s = -1, -1
|
||||
log_file = self.txlog_file_path
|
||||
sum_ssb = 0
|
||||
|
||||
if self.OPTS.compress:
|
||||
tx_log_file = f'{log_file}.bz2'
|
||||
for line in self.get_analysis_messages_syncref(log_file):
|
||||
#796811.532881 [NR_PHY] nrUE configured
|
||||
#796821.854505 [NR_PHY] PSBCH SL generation started
|
||||
if time_start_s == -1 and 'nrUE configured' in line:
|
||||
fields = line.split(maxsplit=2)
|
||||
time_start_s = float(fields[0])
|
||||
time_end_s = time_start_s + counting_delta
|
||||
if 'PSBCH SL generation started' in line:
|
||||
fields = line.split(maxsplit=2)
|
||||
time_st = float(''.join([ch for ch in fields[0] if ch.isnumeric() or ch =='.']))
|
||||
if time_st < time_end_s:
|
||||
sum_ssb += 1
|
||||
return sum_ssb
|
||||
45
ci-scripts/sl_cmds.txt
Normal file
45
ci-scripts/sl_cmds.txt
Normal file
@@ -0,0 +1,45 @@
|
||||
# The lines containing 'usrp' and starts with 'syncref' or 'nearby' will be valid until it does not contain backspace.
|
||||
|
||||
####################
|
||||
#### USRP ####
|
||||
####################
|
||||
|
||||
### RX Nearby UE ###
|
||||
nearby_usrp_cmd = cd $HOME/openairinterface5g/ci-scripts; \
|
||||
python3 sl_rx_agent.py --cmd \
|
||||
'sudo -E LD_LIBRARY_PATH=$HOME/openairinterface5g/cmake_targets/ran_build/build:$LD_LIBRARY_PATH \
|
||||
$HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem \
|
||||
--sl-mode 2 -r 106 --numerology 1 --band 38 --SLC 2600000000 --ue-rxgain 90 \
|
||||
--usrp-args "type=n3xx,addr=192.168.20.2,subdev=A:0,master_clock_rate=122.88e6" \
|
||||
--log_config.global_log_options time,nocolor \
|
||||
> ~/rx.log 2>&1'
|
||||
|
||||
### TX SyncRef UE ###
|
||||
|
||||
syncref_usrp_cmd = \
|
||||
sudo -E LD_LIBRARY_PATH=$HOME/openairinterface5g/cmake_targets/ran_build/build:$LD_LIBRARY_PATH \
|
||||
$HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem \
|
||||
--sl-mode 2 --sync-ref -r 106 --numerology 1 --band 38 --SLC 2600000000 --ue-txgain 8 \
|
||||
--usrp-args "type=n3xx,addr=192.168.10.2,subdev=A:0,master_clock_rate=122.88e6" \
|
||||
--log_config.global_log_options time,nocolor\
|
||||
> ~/tx.log 2>&1
|
||||
|
||||
####################
|
||||
#### RFSIM ####
|
||||
####################
|
||||
|
||||
### RX Nearby UE ###
|
||||
nearby_rfsim_cmd = \
|
||||
sudo -E RFSIMULATOR=127.0.0.1 \
|
||||
$HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem \
|
||||
--rfsim --sl-mode 2 --rfsimulator.serverport 4048 \
|
||||
--log_config.global_log_options time,nocolor \
|
||||
> ~/rx.log 2>&1
|
||||
|
||||
### TX SyncRef UE ###
|
||||
syncref_rfsim_cmd = \
|
||||
sudo -E RFSIMULATOR=server \
|
||||
$HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem \
|
||||
--sync-ref --rfsim --sl-mode 2 --rfsimulator.serverport 4048 \
|
||||
--log_config.global_log_options time,nocolor \
|
||||
> ~/tx.log 2>&1
|
||||
218
ci-scripts/sl_rx_agent.py
Executable file
218
ci-scripts/sl_rx_agent.py
Executable file
@@ -0,0 +1,218 @@
|
||||
#!/usr/bin/env python3
|
||||
#
|
||||
# Automated tests for running 5G NR Sidelink Nearby UE.
|
||||
# The following is an example to run this script.
|
||||
#
|
||||
# python3 sl_rx_agent.py \
|
||||
# --cmd 'sudo -E LD_LIBRARY_PATH=$HOME/openairinterface5g/cmake_targets/ran_build/build:$LD_LIBRARY_PATH \
|
||||
# $HOME/openairinterface5g/cmake_targets/ran_build/build/nr-uesoftmodem \
|
||||
# --sl-mode 2 -r 106 --numerology 1 --band 38 -C 2600000000 --ue-rxgain 90 \
|
||||
# --usrp-args "type=n3xx,addr=192.168.20.2,subdev=A:0,master_clock_rate=122.88e6" \
|
||||
# > ~/rx.log 2>&1' \
|
||||
# --nid1 10 --nid2 1
|
||||
#
|
||||
# See `--help` for more information.
|
||||
#
|
||||
|
||||
import os
|
||||
import sys
|
||||
import argparse
|
||||
import logging
|
||||
import time
|
||||
import glob
|
||||
import bz2
|
||||
import subprocess
|
||||
from subprocess import Popen
|
||||
from typing import Optional, List
|
||||
from sl_check_log import LogChecker
|
||||
|
||||
HOME_DIR = os.path.expanduser( '~' )
|
||||
# ----------------------------------------------------------------------------
|
||||
# Command line argument parsing
|
||||
|
||||
parser = argparse.ArgumentParser(description="""
|
||||
Automated tests for 5G NR Sidelink Rx simulations
|
||||
""")
|
||||
|
||||
parser.add_argument('--duration', '-d', metavar='SECONDS', type=int, default=30, help="""
|
||||
How long to run the test before stopping to examine the logs
|
||||
""")
|
||||
|
||||
parser.add_argument('--cmd', type=str, default='', help="""
|
||||
Commands
|
||||
""")
|
||||
|
||||
parser.add_argument('--nid1', type=int, default=10, help="""
|
||||
Nid1 value
|
||||
""")
|
||||
|
||||
parser.add_argument('--nid2', type=int, default=1, help="""
|
||||
Nid2 value
|
||||
""")
|
||||
|
||||
parser.add_argument('--log-dir', default=HOME_DIR, help="""
|
||||
Where to store log files
|
||||
""")
|
||||
|
||||
parser.add_argument('--compress', '-c', action='store_true', help="""
|
||||
Compress the log files in the --log-dir
|
||||
""")
|
||||
|
||||
parser.add_argument('--no-run', '-n', action='store_true', help="""
|
||||
Don't run the test, only examine the logs in the --log-dir
|
||||
directory from a previous run of the test
|
||||
""")
|
||||
|
||||
parser.add_argument('--debug', action='store_true', help="""
|
||||
Enable debug logging (for this script only)
|
||||
""")
|
||||
|
||||
OPTS = parser.parse_args()
|
||||
del parser
|
||||
|
||||
logging.basicConfig(level=logging.DEBUG if OPTS.debug else logging.INFO,
|
||||
format='>>> %(name)s: %(levelname)s: %(message)s')
|
||||
LOGGER = logging.getLogger(os.path.basename(sys.argv[0]))
|
||||
|
||||
log_file_path = os.path.join(OPTS.log_dir, 'rx.log')
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
def compress(from_name: str, to_name: Optional[str]=None, remove_original: bool=False) -> None:
|
||||
"""
|
||||
Compress the file `from_name` and store it as `to_name`.
|
||||
`to_name` defaults to `from_name` with `.bz2` appended.
|
||||
If `remove_original` is True, removes `from_name` when the compress finishes.
|
||||
"""
|
||||
if to_name is None:
|
||||
to_name = from_name
|
||||
if not to_name.endswith('.bz2'):
|
||||
to_name += '.bz2'
|
||||
LOGGER.info('Compress %s to %s', from_name, to_name)
|
||||
with bz2.open(to_name, 'w') as outh, \
|
||||
open(from_name, 'rb') as inh:
|
||||
while True:
|
||||
data = inh.read(10240)
|
||||
if not data:
|
||||
break
|
||||
outh.write(data)
|
||||
if remove_original:
|
||||
LOGGER.debug('Remove %s', from_name)
|
||||
os.remove(from_name)
|
||||
|
||||
|
||||
class CompressJobs:
|
||||
"""
|
||||
Allow multiple invocations of `compress` to run in parallel
|
||||
"""
|
||||
|
||||
def __init__(self) -> None:
|
||||
self.kids: List[int] = []
|
||||
|
||||
def compress(self, from_name: str, to_name: Optional[str]=None, remove_original: bool=False) -> None:
|
||||
if not os.path.exists(from_name):
|
||||
# It's not necessarily an error if the log file does not exist.
|
||||
# For example, if nfapi_trace never gets invoked (e.g., because
|
||||
# NFAPI_TRACE_LEVEL is set to none), then the log file nfapi.log
|
||||
# will not get created.
|
||||
LOGGER.warning('No file: %s', from_name)
|
||||
return
|
||||
kid = os.fork()
|
||||
if kid != 0:
|
||||
self.kids.append(kid)
|
||||
else:
|
||||
LOGGER.debug('in pid %d compress %s...', os.getpid(), from_name)
|
||||
compress(from_name, to_name, remove_original)
|
||||
LOGGER.debug('in pid %d compress %s...done', os.getpid(), from_name)
|
||||
sys.exit()
|
||||
|
||||
def wait(self) -> None:
|
||||
LOGGER.debug('wait %s...', self.kids)
|
||||
failed = []
|
||||
for kid in self.kids:
|
||||
LOGGER.debug('waitpid %d', kid)
|
||||
_pid, status = os.waitpid(kid, 0)
|
||||
if status != 0:
|
||||
failed.append(kid)
|
||||
if failed:
|
||||
raise Exception('compression failed: %s', failed)
|
||||
LOGGER.debug('wait...done')
|
||||
|
||||
|
||||
class TestNearby():
|
||||
"""
|
||||
Represents TestNearby
|
||||
"""
|
||||
def __init__(self):
|
||||
self.cmd = None
|
||||
self.delay = 0 # seconds
|
||||
|
||||
def run(self, cmd: str) -> bool:
|
||||
self.cmd = cmd
|
||||
job = "nearby"
|
||||
time.sleep(self.delay)
|
||||
proc = self.launch_nearby(job)
|
||||
LOGGER.info(f"nearby_proc = {proc}")
|
||||
LOGGER.info(f"Process running... {job}")
|
||||
time.sleep(OPTS.duration)
|
||||
passed = self.kill_process("nearby", proc)
|
||||
if OPTS.compress:
|
||||
self.compress_log_file(proc)
|
||||
return passed
|
||||
|
||||
def launch_nearby(self, job) -> Popen:
|
||||
LOGGER.info('Launching Nearby UE: %s', log_file_path)
|
||||
cmd = self.cmd
|
||||
proc = Popen(cmd, shell=True)
|
||||
time.sleep(1)
|
||||
return proc
|
||||
|
||||
def kill_process(self, job: str, proc: Popen) -> bool:
|
||||
passed = True
|
||||
if proc:
|
||||
status = proc.poll()
|
||||
if status is None:
|
||||
LOGGER.info('process is still running, which is good')
|
||||
else:
|
||||
#passed = False
|
||||
LOGGER.info('process ended early: %r', status)
|
||||
LOGGER.info(f'kill main simulation processes... {job}')
|
||||
cmd = ['sudo', 'killall']
|
||||
cmd.append('-KILL')
|
||||
if proc:
|
||||
cmd.append('nr-uesoftmodem')
|
||||
if "nearby" == job:
|
||||
subprocess.run(cmd)
|
||||
LOGGER.info(f'Waiting for PID proc.pid for {job}')
|
||||
proc.kill()
|
||||
proc.wait()
|
||||
LOGGER.info(f'kill main simulation processes...done for {job}')
|
||||
return passed
|
||||
|
||||
def compress_log_file(self, proc: Popen):
|
||||
jobs = CompressJobs()
|
||||
jobs.compress(log_file_path)
|
||||
jobs.wait()
|
||||
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
def main(argv) -> int:
|
||||
test_agent = TestNearby()
|
||||
log_agent = LogChecker(OPTS, LOGGER)
|
||||
|
||||
passed = True
|
||||
if not OPTS.no_run:
|
||||
passed = test_agent.run(OPTS.cmd)
|
||||
|
||||
# Examine the logs to determine if the test passed
|
||||
if not log_agent.analyze_nearby_logs(exp_nid1=OPTS.nid1, exp_nid2=OPTS.nid2):
|
||||
passed = False
|
||||
|
||||
if not passed:
|
||||
LOGGER.critical('FAILED')
|
||||
return 1
|
||||
|
||||
LOGGER.info('PASSED')
|
||||
return 0
|
||||
|
||||
sys.exit(main(sys.argv))
|
||||
@@ -1,5 +1,6 @@
|
||||
- Build_Proxy
|
||||
- Build_Cluster_Image
|
||||
- Pull_Cluster_Image
|
||||
- Build_PhySim
|
||||
- Run_LDPCTest
|
||||
- Run_LDPCt1Test
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<eNB_instance>1</eNB_instance>
|
||||
<eNB_serverId>1</eNB_serverId>
|
||||
<forced_workspace_cleanup>True</forced_workspace_cleanup>
|
||||
<proxy_commit>a6169d8</proxy_commit>
|
||||
<proxy_commit>a2fa216</proxy_commit>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
74
ci-scripts/xml_files/container_5g_rfsim_f1_accelleran.xml
Normal file
74
ci-scripts/xml_files/container_5g_rfsim_f1_accelleran.xml
Normal file
@@ -0,0 +1,74 @@
|
||||
<!--
|
||||
|
||||
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-f1-accelleran</htmlTabRef>
|
||||
<htmlTabName>F1 DU Interop Accelleran CU</htmlTabName>
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
000020
|
||||
000021
|
||||
020021
|
||||
100021
|
||||
100022
|
||||
</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 oai-nr-ue</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000020">
|
||||
<class>DeployGenObject</class>
|
||||
<desc>Deploy OAI-DU</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_accelleran</yaml_path>
|
||||
<services>oai-du</services>
|
||||
<nb_healthy>1</nb_healthy>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000021">
|
||||
<class>DeployGenObject</class>
|
||||
<desc>Deploy nrUE</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_accelleran</yaml_path>
|
||||
<services>oai-nr-ue</services>
|
||||
<nb_healthy>2</nb_healthy>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020021">
|
||||
<class>PingFromContainer</class>
|
||||
<desc>Test Connectivity (ping)</desc>
|
||||
<container_name>rfsim5g-oai-nr-ue</container_name>
|
||||
<options>-I oaitun_ue1 -c 20 12.1.1.1</options>
|
||||
<loss_threshold>0</loss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100022">
|
||||
<class>UndeployGenObject</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_accelleran</yaml_path>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
@@ -0,0 +1,45 @@
|
||||
<!--
|
||||
|
||||
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-down-f1-accelleran</htmlTabRef>
|
||||
<htmlTabName>CleanUp</htmlTabName>
|
||||
<htmlTabIcon>trash</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
100022
|
||||
222222
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100022">
|
||||
<class>UndeployGenObject</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator_accelleran</yaml_path>
|
||||
</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>
|
||||
@@ -36,7 +36,7 @@
|
||||
<eNB_instance>1</eNB_instance>
|
||||
<eNB_serverId>1</eNB_serverId>
|
||||
<forced_workspace_cleanup>True</forced_workspace_cleanup>
|
||||
<proxy_commit>a6169d8</proxy_commit>
|
||||
<proxy_commit>a2fa216</proxy_commit>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -27,6 +27,7 @@ Replaces xml_files/enb_usrp210_band40_test_05mhz_tm1.xml
|
||||
<htmlTabName>Test-TDD-05MHz-TM1</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
300000
|
||||
100000
|
||||
111110
|
||||
040101
|
||||
@@ -57,6 +58,13 @@ Replaces xml_files/enb_usrp210_band40_test_05mhz_tm1.xml
|
||||
<command>sudo cpupower idle-set -E</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="300000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Reset USRP</desc>
|
||||
<node>starsky</node>
|
||||
<command>sudo -S b2xx_fx3_utils --reset-device</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030104">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy eNB (TDD/Band40/5MHz/B200) in a container</desc>
|
||||
|
||||
160
ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm1.xml
Normal file
160
ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm1.xml
Normal file
@@ -0,0 +1,160 @@
|
||||
<!--
|
||||
|
||||
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>TEST-LTE-2x2-N3XX-TM1</htmlTabRef>
|
||||
<htmlTabName>2.6 Ghz TDD LTE 2x2 TM1</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
|
||||
111111
|
||||
100000
|
||||
010000
|
||||
030101
|
||||
010001
|
||||
000001
|
||||
050000
|
||||
050001
|
||||
070000
|
||||
070001
|
||||
010010
|
||||
010002
|
||||
030201
|
||||
|
||||
</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-enb</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Disable Sleep States</desc>
|
||||
<node>obelix</node>
|
||||
<command>sudo cpupower idle-set -D 0</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="200000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Enable Sleep States</desc>
|
||||
<node>obelix</node>
|
||||
<command>sudo cpupower idle-set -E</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030101">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy eNB (TDD/Band38/2.6Ghz/N3XX) in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm1</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010000">
|
||||
<class>Initialize_UE</class>
|
||||
<desc>Initialize Quectel</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010002">
|
||||
<class>Terminate_UE</class>
|
||||
<desc>Terminate Quectel</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010001">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="050000">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 20 pings</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
||||
<ping_rttavg_threshold>60</ping_rttavg_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="050001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 100 pings, size 1024</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
<ping_args>-c 100 -s 1024 -i 0,2</ping_args>
|
||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
||||
<ping_rttavg_threshold>60</ping_rttavg_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="070000">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (DL/26Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 26M -t 60</iperf_args>
|
||||
<direction>DL</direction>
|
||||
<id>nrmodule2_quectel</id>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||
<iperf_profile>single-ue</iperf_profile>
|
||||
</testCase>
|
||||
|
||||
<testCase id="070001">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (UL/7Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 7M -t 60</iperf_args>
|
||||
<direction>UL</direction>
|
||||
<id>nrmodule2_quectel</id>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||
<iperf_profile>single-ue</iperf_profile>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010010">
|
||||
<class>Detach_UE</class>
|
||||
<desc>Detach UE</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030201">
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy gNB</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm1</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<!-- <d_retx_th>1,100,100,100</d_retx_th>
|
||||
<u_retx_th>1,100,100,100</u_retx_th>
|
||||
?
|
||||
-->
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
160
ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm2.xml
Normal file
160
ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm2.xml
Normal file
@@ -0,0 +1,160 @@
|
||||
<!--
|
||||
|
||||
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>TEST-LTE-2x2-N3XXi-TM2</htmlTabRef>
|
||||
<htmlTabName>2.6 Ghz TDD LTE 2x2 TM2</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
|
||||
111111
|
||||
100000
|
||||
010000
|
||||
030101
|
||||
010001
|
||||
000001
|
||||
050000
|
||||
050001
|
||||
070000
|
||||
070001
|
||||
010010
|
||||
010002
|
||||
030201
|
||||
|
||||
</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-enb</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Disable Sleep States</desc>
|
||||
<node>obelix</node>
|
||||
<command>sudo cpupower idle-set -D 0</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="200000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Enable Sleep States</desc>
|
||||
<node>obelix</node>
|
||||
<command>sudo cpupower idle-set -E</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030101">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy eNB (TDD/Band38/2.6Ghz/N3XX) in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm2</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010000">
|
||||
<class>Initialize_UE</class>
|
||||
<desc>Initialize Quectel</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010002">
|
||||
<class>Terminate_UE</class>
|
||||
<desc>Terminate Quectel</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010001">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="050000">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 20 pings</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
||||
<ping_rttavg_threshold>60</ping_rttavg_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="050001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 100 pings, size 1024</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
<ping_args>-c 100 -s 1024 -i 0,2</ping_args>
|
||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
||||
<ping_rttavg_threshold>60</ping_rttavg_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="070000">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (DL/26Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 1M -t 60</iperf_args>
|
||||
<direction>DL</direction>
|
||||
<id>nrmodule2_quectel</id>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||
<iperf_profile>single-ue</iperf_profile>
|
||||
</testCase>
|
||||
|
||||
<testCase id="070001">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (UL/7Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 7M -t 60</iperf_args>
|
||||
<direction>UL</direction>
|
||||
<id>nrmodule2_quectel</id>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||
<iperf_profile>single-ue</iperf_profile>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010010">
|
||||
<class>Detach_UE</class>
|
||||
<desc>Detach UE</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030201">
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy gNB</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm2</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<!-- <d_retx_th>1,100,100,100</d_retx_th>
|
||||
<u_retx_th>1,100,100,100</u_retx_th>
|
||||
?
|
||||
-->
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -69,8 +69,8 @@
|
||||
<class>Custom_Command</class>
|
||||
<desc>Reset USRP</desc>
|
||||
<node>nepes</node>
|
||||
<command>sudo -S b2xx_fx3_utils --reset-device</command>
|
||||
</testCase>
|
||||
<command>sudo -S /usr/lib/uhd/utils/b2xx_fx3_utils --reset-device</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="200000">
|
||||
<class>Custom_Command</class>
|
||||
@@ -86,14 +86,14 @@
|
||||
</testCase>
|
||||
<testCase id="500000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Disable Sleep States (obelix)</desc>
|
||||
<node>obelix</node>
|
||||
<desc>Disable Sleep States (ofqot)</desc>
|
||||
<node>ofqot</node>
|
||||
<command>sudo cpupower idle-set -D 0</command>
|
||||
</testCase>
|
||||
<testCase id="600000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Enable Sleep States (obelix)</desc>
|
||||
<node>obelix</node>
|
||||
<desc>Enable Sleep States (ofqot)</desc>
|
||||
<node>ofqot</node>
|
||||
<command>sudo cpupower idle-set -E</command>
|
||||
</testCase>
|
||||
|
||||
@@ -185,8 +185,8 @@
|
||||
|
||||
<testCase id="070000">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (DL/125Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 125M -t 60 -i 1 -fm</iperf_args>
|
||||
<desc>iperf (DL/90Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 90M -t 60 -i 1 -fm</iperf_args>
|
||||
<direction>DL</direction>
|
||||
<id>idefix</id>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
|
||||
122
ci-scripts/xml_files/container_sa_aw2s_asue.xml
Normal file
122
ci-scripts/xml_files/container_sa_aw2s_asue.xml
Normal file
@@ -0,0 +1,122 @@
|
||||
<!--
|
||||
|
||||
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>TEST-5G-AW2S</htmlTabRef>
|
||||
<htmlTabName>20 MHz TDD SA</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
010000
|
||||
001000
|
||||
020000
|
||||
002000
|
||||
002002
|
||||
000100
|
||||
000200
|
||||
003000
|
||||
004000
|
||||
000002
|
||||
030000
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="010000">
|
||||
<class>Pull_Cluster_Image</class>
|
||||
<desc>Pull Images from Cluster</desc>
|
||||
<images_to_pull>oai-gnb-aw2s</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020000">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy gNB (TDD/Band78/20MHz/aw2s) in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/sa_aw2s_gnb</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
</testCase>
|
||||
|
||||
<testCase id="001000">
|
||||
<class>Initialize_UE</class>
|
||||
<desc>Initialize Amarisoft UE</desc>
|
||||
<id>amarisoft_ue</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="002000">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE</desc>
|
||||
<id>amarisoft_ue_1</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="002002">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE</desc>
|
||||
<id>amarisoft_ue_2</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000100">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 20pings in 20sec</desc>
|
||||
<id>amarisoft_ue_1 amarisoft_ue_2</id>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
||||
<ping_rttavg_threshold>15</ping_rttavg_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000200">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 100pings in 20sec</desc>
|
||||
<id>amarisoft_ue_1 amarisoft_ue_2</id>
|
||||
<ping_args>-c 100 -i 0.2</ping_args>
|
||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
||||
<ping_rttavg_threshold>15</ping_rttavg_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="003000">
|
||||
<class>Detach_UE</class>
|
||||
<desc>Detach UE</desc>
|
||||
<id>amarisoft_ue_1 amarisoft_ue_2</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="004000">
|
||||
<class>Terminate_UE</class>
|
||||
<desc>Terminate UE</desc>
|
||||
<id>amarisoft_ue</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030000">
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy gNB</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/sa_aw2s_gnb</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<d_retx_th>20,100,100,100</d_retx_th>
|
||||
<u_retx_th>20,100,100,100</u_retx_th>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>TEST-SA-FR1-B200</htmlTabRef>
|
||||
<htmlTabName>40 MHz TDD SA</htmlTabName>
|
||||
<htmlTabName>20 MHz TDD SA</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
@@ -36,6 +36,10 @@
|
||||
070000
|
||||
070001
|
||||
070002
|
||||
060001
|
||||
000002
|
||||
060002
|
||||
050000
|
||||
010010
|
||||
010002
|
||||
030201
|
||||
@@ -53,13 +57,13 @@
|
||||
<testCase id="100000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Disable Sleep States</desc>
|
||||
<node>nepes</node>
|
||||
<node>ofqot</node>
|
||||
<command>sudo cpupower idle-set -D 0</command>
|
||||
</testCase>
|
||||
<testCase id="200000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Enable Sleep States</desc>
|
||||
<node>nepes</node>
|
||||
<node>ofqot</node>
|
||||
<command>sudo cpupower idle-set -E</command>
|
||||
</testCase>
|
||||
|
||||
@@ -136,8 +140,8 @@
|
||||
|
||||
<testCase id="070001">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (UL/8Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 8M -t 30 -i 1 -fm</iperf_args>
|
||||
<desc>iperf (UL/3.5Mbps/UDP)(30 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 3.5M -t 30 -i 1 -fm</iperf_args>
|
||||
<direction>UL</direction>
|
||||
<id>idefix</id>
|
||||
<iperf_packetloss_threshold>1</iperf_packetloss_threshold>
|
||||
@@ -154,6 +158,21 @@
|
||||
<iperf_profile>single-ue</iperf_profile>
|
||||
</testCase>
|
||||
|
||||
<testCase id="060001">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger Reestablishment</desc>
|
||||
<node>ofqot</node>
|
||||
<command>echo ci force_reestab | nc -N 192.168.68.194 9090 | grep -E 'force-remove UE RNTI [0-9a-f]{4} from RLC to trigger reestablishment'</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
<testCase id="060002">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Verify Reestablishment</desc>
|
||||
<node>ofqot</node>
|
||||
<command>echo ci get_reestab_count | nc -N 192.168.68.194 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1 reconf_after_reestab 1'</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030201">
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy gNB</desc>
|
||||
|
||||
@@ -93,13 +93,13 @@
|
||||
<testCase id="100000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Disable Sleep States</desc>
|
||||
<node>nepes</node>
|
||||
<node>ofqot</node>
|
||||
<command>sudo cpupower idle-set -D 0</command>
|
||||
</testCase>
|
||||
<testCase id="200000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Enable Sleep States</desc>
|
||||
<node>nepes</node>
|
||||
<node>ofqot</node>
|
||||
<command>sudo cpupower idle-set -E</command>
|
||||
</testCase>
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
<class>Initialize_OAI_UE</class>
|
||||
<desc>Initialize OAI UE</desc>
|
||||
<air_interface>nr</air_interface>
|
||||
<Initialize_OAI_UE_args>--sa -O ../../../ci-scripts/conf_files/ue.sa.conf --usrp-args "serial=30C51D1" --numerology 1 -r 106 --band 78 -C 3319680000 --nokrnmod 1 --ue-txgain 0 -E --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
|
||||
<Initialize_OAI_UE_args>--sa -O ../../../ci-scripts/conf_files/ue.sa.conf --usrp-args "serial=30C51D1" --numerology 1 -r 106 --band 78 -C 3319680000 --ue-txgain 0 -E --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010002">
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<class>Initialize_OAI_UE</class>
|
||||
<desc>Initialize OAI UE (N310)</desc>
|
||||
<air_interface>nr</air_interface>
|
||||
<Initialize_OAI_UE_args>--sa -O ../../../ci-scripts/conf_files/ue.sa.conf --usrp-args "mgmt_addr=172.21.19.13,addr=192.168.10.2" --numerology 1 -r 106 --band 78 -C 3319680000 --nokrnmod 1 --ue-txgain 0 --ue-rxgain 70 --ue-fo-compensation --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
|
||||
<Initialize_OAI_UE_args>--sa -O ../../../ci-scripts/conf_files/ue.sa.conf --usrp-args "mgmt_addr=172.21.19.13,addr=192.168.10.2" --numerology 1 -r 106 --band 78 -C 3319680000 --ue-txgain 0 --ue-rxgain 70 --ue-fo-compensation --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010002">
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
<class>Initialize_OAI_UE</class>
|
||||
<desc>Initialize OAI UE (X300)</desc>
|
||||
<air_interface>nr</air_interface>
|
||||
<Initialize_OAI_UE_args>--sa -O ../../../ci-scripts/conf_files/ue.sa.conf --usrp-args "addr=192.168.60.2" --numerology 1 -r 106 --band 78 -C 3319680000 --nokrnmod 1 --ue-txgain 0 --ue-rxgain 70 --ue-fo-compensation --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
|
||||
<Initialize_OAI_UE_args>--sa -O ../../../ci-scripts/conf_files/ue.sa.conf --usrp-args "addr=192.168.60.2" --numerology 1 -r 106 --band 78 -C 3319680000 --ue-txgain 0 --ue-rxgain 70 --ue-fo-compensation --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010002">
|
||||
|
||||
@@ -166,8 +166,8 @@
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<air_interface>nr</air_interface>
|
||||
<d_retx_th>5,50,100,100</d_retx_th>
|
||||
<u_retx_th>5,50,100,100</u_retx_th>
|
||||
<d_retx_th>5,80,100,100</d_retx_th>
|
||||
<u_retx_th>5,80,100,100</u_retx_th>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -119,8 +119,8 @@
|
||||
|
||||
<testCase id="072000">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (DL/200Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 200M -t 60</iperf_args>
|
||||
<desc>iperf (DL/180Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 180M -t 60</iperf_args>
|
||||
<direction>DL</direction>
|
||||
<id>nrmodule2_quectel</id>
|
||||
<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
|
||||
@@ -155,8 +155,8 @@
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<air_interface>nr</air_interface>
|
||||
<d_retx_th>5,50,100,100</d_retx_th>
|
||||
<u_retx_th>5,50,100,100</u_retx_th>
|
||||
<d_retx_th>5,80,100,100</d_retx_th>
|
||||
<u_retx_th>5,80,100,100</u_retx_th>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -193,8 +193,8 @@
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<air_interface>nr</air_interface>
|
||||
<d_retx_th>5,50,100,100</d_retx_th>
|
||||
<u_retx_th>5,50,100,100</u_retx_th>
|
||||
<d_retx_th>5,80,100,100</d_retx_th>
|
||||
<u_retx_th>5,80,100,100</u_retx_th>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -1,164 +0,0 @@
|
||||
<!--
|
||||
|
||||
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>TEST-LTE-TM1-Tab1</htmlTabRef>
|
||||
<htmlTabName>LTE 2x2 TM1 Ping DL UL with QUECTEL</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
100000
|
||||
010000
|
||||
030000
|
||||
010001
|
||||
050000
|
||||
050001
|
||||
070000
|
||||
070001
|
||||
010011
|
||||
010002
|
||||
080000
|
||||
200000
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Disable Sleep States</desc>
|
||||
<node>obelix</node>
|
||||
<command>sudo cpupower idle-set -D 0</command>
|
||||
</testCase>
|
||||
<testCase id="200000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Enable Sleep States</desc>
|
||||
<node>obelix</node>
|
||||
<command>sudo cpupower idle-set -E</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010000">
|
||||
<class>Initialize_UE</class>
|
||||
<desc>Initialize Quectel</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
</testCase>
|
||||
<testCase id="010002">
|
||||
<class>Terminate_UE</class>
|
||||
<desc>Terminate Quectel</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
</testCase>
|
||||
<testCase id="010001">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach Quectel</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
</testCase>
|
||||
<testCase id="010011">
|
||||
<class>Detach_UE</class>
|
||||
<desc>Detach Quectel</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030000">
|
||||
<class>Initialize_eNB</class>
|
||||
<desc>Initialize eNB</desc>
|
||||
<Initialize_eNB_args>-O ci-scripts/conf_files/enb.band38.lte_2x2.100PRB.usrpn310.conf --usrp-tx-thread-config 1 --thread-pool 0,2,4,6 --log_config.global_log_options level,nocolor,time</Initialize_eNB_args>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<air_interface>lte</air_interface>
|
||||
<eNB_Trace>yes</eNB_Trace>
|
||||
<eNB_Stats>yes</eNB_Stats>
|
||||
<USRP_IPAddress>172.21.19.13</USRP_IPAddress>
|
||||
</testCase>
|
||||
|
||||
|
||||
<testCase id="000001">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>20</idle_sleep_time_in_sec>
|
||||
</testCase>
|
||||
|
||||
|
||||
<testCase id="050000">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 20 pings</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
||||
<ping_rttavg_threshold>60</ping_rttavg_threshold>
|
||||
</testCase>
|
||||
<testCase id="050001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 100 pings, size 1024</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
<ping_args>-c 100 -s 1024 -i 0,2</ping_args>
|
||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
||||
<ping_rttavg_threshold>60</ping_rttavg_threshold>
|
||||
</testCase>
|
||||
|
||||
|
||||
<testCase id="070000">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (DL/26Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 26M -t 60</iperf_args>
|
||||
<direction>DL</direction>
|
||||
<id>nrmodule2_quectel</id>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||
<iperf_profile>single-ue</iperf_profile>
|
||||
</testCase>
|
||||
|
||||
<testCase id="070001">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (UL/7Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 7M -t 60</iperf_args>
|
||||
<direction>UL</direction>
|
||||
<id>nrmodule2_quectel</id>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||
<iperf_profile>single-ue</iperf_profile>
|
||||
</testCase>
|
||||
|
||||
|
||||
|
||||
|
||||
<testCase id="080000">
|
||||
<class>Terminate_eNB</class>
|
||||
<desc>Terminate eNB</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<air_interface>lte</air_interface>
|
||||
</testCase>
|
||||
|
||||
<testCase id="080001">
|
||||
<class>Terminate_eNB</class>
|
||||
<desc>Terminate gNB</desc>
|
||||
<eNB_instance>1</eNB_instance>
|
||||
<eNB_serverId>1</eNB_serverId>
|
||||
<air_interface>nr</air_interface>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -1,164 +0,0 @@
|
||||
<!--
|
||||
|
||||
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>TEST-LTE-TM2-Tab2</htmlTabRef>
|
||||
<htmlTabName>LTE 2x2 TM2 Ping DL UL with QUECTEL</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
100000
|
||||
010000
|
||||
030001
|
||||
010001
|
||||
050002
|
||||
050003
|
||||
070002
|
||||
070003
|
||||
010011
|
||||
010002
|
||||
080000
|
||||
200000
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="100000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Disable Sleep States</desc>
|
||||
<node>obelix</node>
|
||||
<command>sudo cpupower idle-set -D 0</command>
|
||||
</testCase>
|
||||
<testCase id="200000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Enable Sleep States</desc>
|
||||
<node>obelix</node>
|
||||
<command>sudo cpupower idle-set -E</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="010000">
|
||||
<class>Initialize_UE</class>
|
||||
<desc>Initialize Quectel</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
</testCase>
|
||||
<testCase id="010002">
|
||||
<class>Terminate_UE</class>
|
||||
<desc>Terminate Quectel</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
</testCase>
|
||||
<testCase id="010001">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach Quectel</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
</testCase>
|
||||
<testCase id="010011">
|
||||
<class>Detach_UE</class>
|
||||
<desc>Detach Quectel</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030001">
|
||||
<class>Initialize_eNB</class>
|
||||
<desc>Initialize eNB</desc>
|
||||
<Initialize_eNB_args>-O ci-scripts/conf_files/enb.band38.lte_2x2_tm2.100PRB.usrpn310.conf --usrp-tx-thread-config 1 --thread-pool 0,2,4,6 --log_config.global_log_options level,nocolor,time</Initialize_eNB_args>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<air_interface>lte</air_interface>
|
||||
<eNB_Trace>yes</eNB_Trace>
|
||||
<eNB_Stats>yes</eNB_Stats>
|
||||
<USRP_IPAddress>172.21.19.13</USRP_IPAddress>
|
||||
</testCase>
|
||||
|
||||
|
||||
<testCase id="000001">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000002">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>20</idle_sleep_time_in_sec>
|
||||
</testCase>
|
||||
|
||||
|
||||
<testCase id="050002">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 20 pings</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
<ping_args>-c 20</ping_args>
|
||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
||||
<ping_rttavg_threshold>60</ping_rttavg_threshold>
|
||||
</testCase>
|
||||
<testCase id="050003">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 100 pings, size 1024</desc>
|
||||
<id>nrmodule2_quectel</id>
|
||||
<ping_args>-c 100 -s 1024 -i 0,2</ping_args>
|
||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
||||
<ping_rttavg_threshold>60</ping_rttavg_threshold>
|
||||
</testCase>
|
||||
|
||||
|
||||
<testCase id="070002">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (DL/1Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 1M -t 60</iperf_args>
|
||||
<direction>DL</direction>
|
||||
<id>nrmodule2_quectel</id>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||
<iperf_profile>single-ue</iperf_profile>
|
||||
</testCase>
|
||||
|
||||
<testCase id="070003">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (UL/7Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-u -b 7M -t 60</iperf_args>
|
||||
<direction>UL</direction>
|
||||
<id>nrmodule2_quectel</id>
|
||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||
<iperf_profile>single-ue</iperf_profile>
|
||||
</testCase>
|
||||
|
||||
|
||||
|
||||
|
||||
<testCase id="080000">
|
||||
<class>Terminate_eNB</class>
|
||||
<desc>Terminate eNB</desc>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<air_interface>lte</air_interface>
|
||||
</testCase>
|
||||
|
||||
<testCase id="080001">
|
||||
<class>Terminate_eNB</class>
|
||||
<desc>Terminate gNB</desc>
|
||||
<eNB_instance>1</eNB_instance>
|
||||
<eNB_serverId>1</eNB_serverId>
|
||||
<air_interface>nr</air_interface>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<testCase id="090110">
|
||||
<class>Initialize_OAI_UE</class>
|
||||
<desc>Initialize OAI UE -- sniffing Orange frequency</desc>
|
||||
<Initialize_OAI_UE_args>-C 816000000 -r 50 --ue-rxgain 135 --ue-scan-carrier --no-L2-connect --nokrnmod 1 --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
|
||||
<Initialize_OAI_UE_args>-C 816000000 -r 50 --ue-rxgain 135 --ue-scan-carrier --no-L2-connect --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<testCase id="090111">
|
||||
<class>Initialize_OAI_UE</class>
|
||||
<desc>Initialize OAI UE -- sniffing SFR frequency</desc>
|
||||
<Initialize_OAI_UE_args>-C 806000000 -r 50 --ue-rxgain 130 --ue-scan-carrier --no-L2-connect --nokrnmod 1 --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
|
||||
<Initialize_OAI_UE_args>-C 806000000 -r 50 --ue-rxgain 130 --ue-scan-carrier --no-L2-connect --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
|
||||
@@ -248,7 +248,7 @@ services:
|
||||
UE_NFAPI_IF_NAME: eno1
|
||||
ENB_IP_ADDRESS: 127.0.0.1
|
||||
LTE_UE_IP_ADDRESS: 127.0.0.1
|
||||
USE_ADDITIONAL_OPTIONS: --L2-emul 5 --nokrnmod 1 --num-ues 1 --node-number 2 --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --L2-emul 5 --num-ues 1 --node-number 2 --log_config.global_log_options level,nocolor,time
|
||||
volumes:
|
||||
- ../../../openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results:/opt/oai-nr-ue/openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results
|
||||
healthcheck:
|
||||
@@ -276,7 +276,7 @@ services:
|
||||
UE_NFAPI_IF_NAME: eno1
|
||||
ENB_IP_ADDRESS: 127.0.0.1
|
||||
LTE_UE_IP_ADDRESS: 127.0.0.1
|
||||
USE_ADDITIONAL_OPTIONS: --L2-emul 5 --nokrnmod 1 --num-ues 1 --node-number 3 --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --L2-emul 5 --num-ues 1 --node-number 3 --log_config.global_log_options level,nocolor,time
|
||||
volumes:
|
||||
- ../../../openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results:/opt/oai-nr-ue/openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results
|
||||
healthcheck:
|
||||
|
||||
@@ -233,7 +233,7 @@ services:
|
||||
OPC: 'c42449363bbad02b66d16bc975d77cc1'
|
||||
MSISDN: '001011234561010'
|
||||
HPLMN: 20896
|
||||
USE_ADDITIONAL_OPTIONS: --rfsim -C 2680000000 -r 25 --ue-rxgain 140 --ue-txgain 120 --nokrnmod 1 --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --rfsim -C 2680000000 -r 25 --ue-rxgain 140 --ue-txgain 120 --log_config.global_log_options level,nocolor,time
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep lte-uesoftmodem"
|
||||
interval: 10s
|
||||
|
||||
@@ -55,7 +55,7 @@ services:
|
||||
OPC: 'c42449363bbad02b66d16bc975d77cc1'
|
||||
MSISDN: '001011234561010'
|
||||
HPLMN: 20896
|
||||
USE_ADDITIONAL_OPTIONS: --rfsim -C 2680000000 -r 25 --ue-rxgain 140 --ue-txgain 120 --nokrnmod 1 --log_config.global_log_options level,nocolor,time --noS1
|
||||
USE_ADDITIONAL_OPTIONS: --rfsim -C 2680000000 -r 25 --ue-rxgain 140 --ue-txgain 120 --log_config.global_log_options level,nocolor,time --noS1
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep lte-uesoftmodem"
|
||||
interval: 10s
|
||||
|
||||
@@ -233,7 +233,7 @@ services:
|
||||
OPC: 'c42449363bbad02b66d16bc975d77cc1'
|
||||
MSISDN: '001011234561010'
|
||||
HPLMN: 20896
|
||||
USE_ADDITIONAL_OPTIONS: --rfsim -C 2680000000 -r 50 --ue-rxgain 140 --ue-txgain 120 --nokrnmod 1 --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --rfsim -C 2680000000 -r 50 --ue-rxgain 140 --ue-txgain 120 --log_config.global_log_options level,nocolor,time
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep lte-uesoftmodem"
|
||||
interval: 10s
|
||||
|
||||
@@ -233,7 +233,7 @@ services:
|
||||
OPC: 'c42449363bbad02b66d16bc975d77cc1'
|
||||
MSISDN: '001011234561010'
|
||||
HPLMN: 20896
|
||||
USE_ADDITIONAL_OPTIONS: --rfsim -C 2680000000 -r 100 --ue-rxgain 140 --ue-txgain 120 --nokrnmod 1 --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --rfsim -C 2680000000 -r 100 --ue-rxgain 140 --ue-txgain 120 --log_config.global_log_options level,nocolor,time
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep lte-uesoftmodem"
|
||||
interval: 10s
|
||||
|
||||
@@ -39,7 +39,7 @@ services:
|
||||
OPC: 'e734f8734007d6c5ce7a0508809e7e9c'
|
||||
MSISDN: '33611123456'
|
||||
HPLMN: 20893
|
||||
USE_ADDITIONAL_OPTIONS: -C 2680000000 -r 25 --ue-rxgain 140 --ue-txgain 120 --nokrnmod 1 --rfsim --noS1 --log_config.global_log_options level,nocolor,time --noS1
|
||||
USE_ADDITIONAL_OPTIONS: -C 2680000000 -r 25 --ue-rxgain 140 --ue-txgain 120 --rfsim --noS1 --log_config.global_log_options level,nocolor,time --noS1
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep lte-uesoftmodem"
|
||||
interval: 10s
|
||||
|
||||
@@ -43,7 +43,7 @@ services:
|
||||
OPC: 'e734f8734007d6c5ce7a0508809e7e9c'
|
||||
MSISDN: '33611123456'
|
||||
HPLMN: 20893
|
||||
USE_ADDITIONAL_OPTIONS: -C 2680000000 -r 25 --ue-rxgain 140 --ue-txgain 120 --nokrnmod 1 --rfsim --noS1 --log_config.global_log_options level,nocolor,time --noS1
|
||||
USE_ADDITIONAL_OPTIONS: -C 2680000000 -r 25 --ue-rxgain 140 --ue-txgain 120 --rfsim --noS1 --log_config.global_log_options level,nocolor,time --noS1
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep lte-uesoftmodem"
|
||||
interval: 10s
|
||||
|
||||
@@ -232,7 +232,7 @@ services:
|
||||
OPC: 'c42449363bbad02b66d16bc975d77cc1'
|
||||
MSISDN: '001011234561010'
|
||||
HPLMN: 20896
|
||||
USE_ADDITIONAL_OPTIONS: --rfsim -T -C 2605000000 -r 25 --ue-rxgain 140 --ue-txgain 120 --nokrnmod 1 --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --rfsim -T -C 2605000000 -r 25 --ue-rxgain 140 --ue-txgain 120 --log_config.global_log_options level,nocolor,time
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep lte-uesoftmodem"
|
||||
interval: 10s
|
||||
|
||||
@@ -241,7 +241,7 @@ services:
|
||||
OPC: 'C42449363BBAD02B66D16BC975D77CC1'
|
||||
DNN: oai
|
||||
NSSAI_SST: 1
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 106 --numerology 1 -C 3619200000 --log_config.global_log_options level,nocolor,time
|
||||
depends_on:
|
||||
- oai-du
|
||||
networks:
|
||||
|
||||
@@ -202,7 +202,7 @@ services:
|
||||
OPC: 'C42449363BBAD02B66D16BC975D77CC1'
|
||||
DNN: oai
|
||||
NSSAI_SST: 1
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 --band 66 -C 2169080000 --CO -400000000 --ssb 396 --nokrnmod --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 --band 66 -C 2169080000 --CO -400000000 --ssb 396 --log_config.global_log_options level,nocolor,time
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
|
||||
@@ -228,7 +228,7 @@ services:
|
||||
NR_UE_NFAPI_IF_NAME: eno1
|
||||
GNB_IP_ADDRESS: 127.0.0.1
|
||||
NR_UE_IP_ADDRESS: 127.0.0.1
|
||||
USE_ADDITIONAL_OPTIONS: --nokrnmod 1 --nfapi STANDALONE_PNF --node-number 2 --sa --emulate-l1 --log_config.global_log_options level,time,thread_id,nocolor
|
||||
USE_ADDITIONAL_OPTIONS: --nfapi STANDALONE_PNF --node-number 2 --sa --emulate-l1 --log_config.global_log_options level,time,thread_id,nocolor
|
||||
volumes:
|
||||
- ../../../openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results:/opt/oai-nr-ue/openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results
|
||||
depends_on:
|
||||
|
||||
@@ -250,7 +250,7 @@ Create entry for Second UE in docker-compose.yaml file as follows:
|
||||
OPC: 'C42449363BBAD02B66D16BC975D77CC1'
|
||||
DNN: oai
|
||||
NSSAI_SST: 1
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 -C 3619200000 --log_config.global_log_options level,nocolor,time
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
|
||||
@@ -203,7 +203,7 @@ services:
|
||||
OPC: 'C42449363BBAD02B66D16BC975D77CC1'
|
||||
DNN: oai
|
||||
NSSAI_SST: 1
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 -C 3619200000 --log_config.global_log_options level,nocolor,time
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
@@ -226,7 +226,7 @@ services:
|
||||
OPC: 'C42449363BBAD02B66D16BC975D77CC1'
|
||||
DNN: oai
|
||||
NSSAI_SST: 1
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 -C 3619200000 --log_config.global_log_options level,nocolor,time
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
|
||||
@@ -193,7 +193,7 @@ services:
|
||||
OPC: 'C42449363BBAD02B66D16BC975D77CC1'
|
||||
DNN: oai
|
||||
NSSAI_SST: 1
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 24 --ssb 24 --numerology 1 -C 3604320000 --nokrnmod --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 24 --ssb 24 --numerology 1 -C 3604320000 --log_config.global_log_options level,nocolor,time
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
|
||||
@@ -194,7 +194,7 @@ services:
|
||||
OPC: 'C42449363BBAD02B66D16BC975D77CC1'
|
||||
DNN: oai
|
||||
NSSAI_SST: 1
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 106 --numerology 1 --band 78 -C 3319680000 --nokrnmod --ue-nb-ant-tx 2 --ue-nb-ant-rx 2 --uecap_file /opt/oai-nr-ue/etc/uecap.xml --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 106 --numerology 1 --band 78 -C 3319680000 --ue-nb-ant-tx 2 --ue-nb-ant-rx 2 --uecap_file /opt/oai-nr-ue/etc/uecap.xml --log_config.global_log_options level,nocolor,time
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
version: '3.8'
|
||||
services:
|
||||
oai-du:
|
||||
image: oaisoftwarealliance/oai-gnb:develop
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-du
|
||||
network_mode: "host"
|
||||
environment:
|
||||
RFSIMULATOR: server
|
||||
USE_VOLUMED_CONF: 'yes'
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim --MACRLCs.[0].local_n_address 172.21.16.109 --MACRLCs.[0].remote_n_address 172.21.6.22 --log_config.global_log_options level,nocolor,time
|
||||
volumes:
|
||||
- ../../conf_files/gnb-du.band78.106prb.rfsim.conf:/opt/oai-gnb/etc/mounted.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-softmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-nr-ue:
|
||||
image: oaisoftwarealliance/oai-nr-ue:develop
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue
|
||||
network_mode: "host"
|
||||
environment:
|
||||
RFSIMULATOR: 127.0.0.1
|
||||
FULL_IMSI: '208990100001140'
|
||||
FULL_KEY: 'fec86ba6eb707ed08905757b1bb44b8f'
|
||||
OPC: 'C42449363BBAD02B66D16BC975D77CC1'
|
||||
DNN: oai
|
||||
NSSAI_SST: 1
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 106 --numerology 1 -C 3619200000 --log_config.global_log_options level,nocolor,time
|
||||
depends_on:
|
||||
- oai-du
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-uesoftmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
@@ -239,7 +239,7 @@ services:
|
||||
OPC: 'C42449363BBAD02B66D16BC975D77CC1'
|
||||
DNN: oai
|
||||
NSSAI_SST: 1
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 106 --numerology 1 -C 3619200000 --nokrnmod --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 106 --numerology 1 -C 3619200000 --log_config.global_log_options level,nocolor,time
|
||||
depends_on:
|
||||
- oai-du
|
||||
networks:
|
||||
|
||||
@@ -7,7 +7,7 @@ services:
|
||||
environment:
|
||||
RFSIMULATOR: server
|
||||
USE_VOLUMED_CONF: 'yes'
|
||||
USE_ADDITIONAL_OPTIONS: --phy-test --rfsim --noS1 --nokrnmod --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --phy-test --rfsim --rfsimulator.wait_timeout 20 --noS1 --log_config.global_log_options level,nocolor,time
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.140
|
||||
@@ -31,7 +31,7 @@ services:
|
||||
OPC: 'C42449363BBAD02B66D16BC975D77CC1'
|
||||
DNN: oai
|
||||
NSSAI_SST: 1
|
||||
USE_ADDITIONAL_OPTIONS: --phy-test --rfsim --noS1 --nokrnmod --rrc_config_path etc/rrc/ --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --phy-test --rfsim --noS1 --rrc_config_path etc/rrc/ --log_config.global_log_options level,nocolor,time
|
||||
volumes:
|
||||
- rrc.config:/opt/oai-nr-ue/etc/rrc/
|
||||
depends_on:
|
||||
|
||||
@@ -7,7 +7,7 @@ services:
|
||||
environment:
|
||||
RFSIMULATOR: server
|
||||
USE_VOLUMED_CONF: 'yes'
|
||||
USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --noS1 --nokrnmod --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --rfsimulator.wait_timeout 20 --noS1 --log_config.global_log_options level,nocolor,time
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.140
|
||||
@@ -31,7 +31,7 @@ services:
|
||||
OPC: 'C42449363BBAD02B66D16BC975D77CC1'
|
||||
DNN: oai
|
||||
NSSAI_SST: 1
|
||||
USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --noS1 --rrc_config_path etc/rrc/ --nokrnmod --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --noS1 --rrc_config_path etc/rrc/ --log_config.global_log_options level,nocolor,time
|
||||
volumes:
|
||||
- rrc.config:/opt/oai-nr-ue/etc/rrc/
|
||||
depends_on:
|
||||
|
||||
@@ -7,7 +7,7 @@ services:
|
||||
environment:
|
||||
RFSIMULATOR: server
|
||||
USE_VOLUMED_CONF: 'yes'
|
||||
USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --noS1 --nokrnmod --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --rfsimulator.wait_timeout 20 --noS1 --log_config.global_log_options level,nocolor,time
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.140
|
||||
@@ -31,7 +31,7 @@ services:
|
||||
OPC: 'C42449363BBAD02B66D16BC975D77CC1'
|
||||
DNN: oai
|
||||
NSSAI_SST: 1
|
||||
USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --noS1 --rrc_config_path etc/rrc/ --nokrnmod --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --noS1 --rrc_config_path etc/rrc/ --log_config.global_log_options level,nocolor,time
|
||||
volumes:
|
||||
- rrc.config:/opt/oai-nr-ue/etc/rrc/
|
||||
depends_on:
|
||||
|
||||
@@ -194,7 +194,7 @@ services:
|
||||
OPC: 'C42449363BBAD02B66D16BC975D77CC1'
|
||||
DNN: oai
|
||||
NSSAI_SST: 1
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 25 --numerology 0 --band 66 -C 2152250000 --CO -400000000 --ssb 48 --nokrnmod --nokrnmod --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 25 --numerology 0 --band 66 -C 2152250000 --CO -400000000 --ssb 48 --log_config.global_log_options level,nocolor,time
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
version: '3.8'
|
||||
services:
|
||||
oai-enb:
|
||||
image: oai-enb:latest
|
||||
privileged: true
|
||||
container_name: oai-enb
|
||||
environment:
|
||||
TZ: Europe/Paris
|
||||
USE_VOLUMED_CONF: 'yes'
|
||||
USE_ADDITIONAL_OPTIONS: --usrp-tx-thread-config 1 --thread-pool 0,2,4,6
|
||||
volumes:
|
||||
- ../../conf_files/enb.band38.lte_2x2.100PRB.usrpn310.conf:/opt/oai-enb/etc/mounted.conf
|
||||
network_mode: "host"
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep lte-softmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user