mirror of
https://gitlab.eurecom.fr/oai/openairinterface5g.git
synced 2026-07-15 13:40:29 +00:00
Compare commits
773 Commits
master
...
test-slice
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d47ded101e | ||
|
|
f326c15d67 | ||
|
|
88daeb39db | ||
|
|
e2f35a2dcd | ||
|
|
bdfea1d001 | ||
|
|
8954a140fd | ||
|
|
289c87d238 | ||
|
|
5bb186229e | ||
|
|
dbb08a9c85 | ||
|
|
3faaf888e7 | ||
|
|
3bc87342c6 | ||
|
|
3544c35c7a | ||
|
|
b5177eb796 | ||
|
|
8eb350c5c8 | ||
|
|
d0b00aa53d | ||
|
|
477510cb53 | ||
|
|
3c8a95e767 | ||
|
|
f02f3af722 | ||
|
|
8f544acf20 | ||
|
|
09a2643518 | ||
|
|
2350bf56dd | ||
|
|
790c3b999d | ||
|
|
5249dd9670 | ||
|
|
d24a3d1a98 | ||
|
|
6cb52cf2ef | ||
|
|
889a116497 | ||
|
|
7cd6d36716 | ||
|
|
6c2194038a | ||
|
|
a402e11b6f | ||
|
|
84ee651784 | ||
|
|
175e835d05 | ||
|
|
eac9ec0547 | ||
|
|
f92617b772 | ||
|
|
e161ca227f | ||
|
|
f0df1ccb53 | ||
|
|
4f653c8471 | ||
|
|
1f0e5bd664 | ||
|
|
ff758dd029 | ||
|
|
01c6377331 | ||
|
|
b240bc485f | ||
|
|
c5aeaf03dc | ||
|
|
d61c4f1042 | ||
|
|
f69f419a13 | ||
|
|
6bf954d35d | ||
|
|
3979879e9e | ||
|
|
8b118fd875 | ||
|
|
ada4e8ebd8 | ||
|
|
3580ddb546 | ||
|
|
b4b2389753 | ||
|
|
fecb4bc3a9 | ||
|
|
5440d6671f | ||
|
|
39468ca98e | ||
|
|
581f280cd7 | ||
|
|
aa555f9125 | ||
|
|
6ef5d27c08 | ||
|
|
c80fc07719 | ||
|
|
ed29252c6d | ||
|
|
8e990850c3 | ||
|
|
72b485a2fe | ||
|
|
6104dbc749 | ||
|
|
39df275fa4 | ||
|
|
aec6170df4 | ||
|
|
41c491a0fa | ||
|
|
107c0c8d65 | ||
|
|
e13a4813ee | ||
|
|
89b776925d | ||
|
|
5168ef72d9 | ||
|
|
deac180224 | ||
|
|
7c6c4fc7d3 | ||
|
|
79c920cd81 | ||
|
|
6f14b11847 | ||
|
|
ec24b9c3e9 | ||
|
|
463115bf19 | ||
|
|
6a91f49e9f | ||
|
|
b5e2c76d93 | ||
|
|
124c86f7b8 | ||
|
|
7d7dced70e | ||
|
|
463dfc6658 | ||
|
|
11c853e760 | ||
|
|
8e35d8fe5b | ||
|
|
4db8dfaf5d | ||
|
|
85befc1c71 | ||
|
|
2a82e36e71 | ||
|
|
6debc5dd21 | ||
|
|
31740f0d71 | ||
|
|
466f753eb0 | ||
|
|
7c5b945766 | ||
|
|
7bb529dcdf | ||
|
|
10d7fe9cc6 | ||
|
|
697a7871d0 | ||
|
|
4defabeb8d | ||
|
|
cf97acb8c7 | ||
|
|
99ca87a1c1 | ||
|
|
e945b260f8 | ||
|
|
ee287d62f4 | ||
|
|
79a1b1cf69 | ||
|
|
728fc34296 | ||
|
|
f3ff41befe | ||
|
|
ff38130196 | ||
|
|
9acfaaabcb | ||
|
|
b04e166e59 | ||
|
|
3e9d310093 | ||
|
|
67b0c006f5 | ||
|
|
ec3de01377 | ||
|
|
1b1c8e22a2 | ||
|
|
18e59d3c2e | ||
|
|
d6abd0117a | ||
|
|
b704f45daa | ||
|
|
e24145fd85 | ||
|
|
75d8c05c24 | ||
|
|
3217a3745b | ||
|
|
041758a13a | ||
|
|
38d46be372 | ||
|
|
d241506043 | ||
|
|
59125df278 | ||
|
|
65bcbabdca | ||
|
|
ea369e403d | ||
|
|
9ab67ad87c | ||
|
|
c6e5ead2a9 | ||
|
|
207f65992e | ||
|
|
088bdf234e | ||
|
|
9e46a6a6ae | ||
|
|
273562f345 | ||
|
|
2715c7efdd | ||
|
|
848f5767d7 | ||
|
|
df917624db | ||
|
|
4d8bb4ef25 | ||
|
|
5661b20e9e | ||
|
|
8013d5d8cc | ||
|
|
4599969f89 | ||
|
|
36479a0ac5 | ||
|
|
623092e130 | ||
|
|
2c2915dad8 | ||
|
|
7ae790afb6 | ||
|
|
107913d6b2 | ||
|
|
7a7d8a1766 | ||
|
|
470af5f497 | ||
|
|
f265b04593 | ||
|
|
7203e5aba8 | ||
|
|
07ee33f024 | ||
|
|
69a2f103ea | ||
|
|
13757862fb | ||
|
|
578cd23d59 | ||
|
|
31a63bc919 | ||
|
|
b0b8c90fd2 | ||
|
|
f248b2fdff | ||
|
|
e5ab3e022e | ||
|
|
43036eb83d | ||
|
|
0accb601e4 | ||
|
|
5e5ab86d47 | ||
|
|
18951bad4d | ||
|
|
e989ae834a | ||
|
|
23597c9193 | ||
|
|
b07691643d | ||
|
|
0c51db05ad | ||
|
|
ad93072e0a | ||
|
|
e98acd7c5a | ||
|
|
1111eccac6 | ||
|
|
610a886da7 | ||
|
|
3fd45922b7 | ||
|
|
dd059343d9 | ||
|
|
3bede49b9b | ||
|
|
8e4ff595a0 | ||
|
|
45dd4813c9 | ||
|
|
c2255a4168 | ||
|
|
0d85903d09 | ||
|
|
58edc4a57b | ||
|
|
8551260243 | ||
|
|
196e0a2c85 | ||
|
|
39274212fe | ||
|
|
1e565f6b7b | ||
|
|
eefffef55b | ||
|
|
a6c95537fb | ||
|
|
01a095a268 | ||
|
|
e9d91de50b | ||
|
|
41c5ea94ae | ||
|
|
96dfb44ae7 | ||
|
|
59a25c48ff | ||
|
|
6520dbc95a | ||
|
|
97d574229d | ||
|
|
7c4ec50e23 | ||
|
|
ac5c4efd4e | ||
|
|
6fe68a574b | ||
|
|
f50d5f5a9b | ||
|
|
3a7f17ebb8 | ||
|
|
fff5497f45 | ||
|
|
c36eb7c9b4 | ||
|
|
c812cea143 | ||
|
|
e155080ece | ||
|
|
a377e5231c | ||
|
|
e5684d217c | ||
|
|
843a1dc0a3 | ||
|
|
1af4e81951 | ||
|
|
8cdb23639b | ||
|
|
3a5cff17d7 | ||
|
|
9a092c1433 | ||
|
|
1153e62e45 | ||
|
|
c00b287c60 | ||
|
|
4c2bfe7a1f | ||
|
|
474c3507f1 | ||
|
|
05aefb9aaa | ||
|
|
808b7684a8 | ||
|
|
11df08a8f0 | ||
|
|
4ad7e9c5c0 | ||
|
|
e6d3a367de | ||
|
|
f993b075f8 | ||
|
|
0a05622a20 | ||
|
|
dc7743c4e8 | ||
|
|
e1e8e10d91 | ||
|
|
31ed25acd7 | ||
|
|
102cbf0d0c | ||
|
|
230258370b | ||
|
|
629825aca6 | ||
|
|
d247abb53d | ||
|
|
a05baa3c77 | ||
|
|
5b5b0f9595 | ||
|
|
3ae665388a | ||
|
|
fb1dc668e5 | ||
|
|
3d63dc0a7e | ||
|
|
c22fe2bab6 | ||
|
|
8f79b4aeed | ||
|
|
128bd3d3db | ||
|
|
21b269fa99 | ||
|
|
dc95e838eb | ||
|
|
19551d1254 | ||
|
|
950becb423 | ||
|
|
5f78fa6eed | ||
|
|
f381e93237 | ||
|
|
2bf40fbd17 | ||
|
|
89fa5a18a8 | ||
|
|
279a55c976 | ||
|
|
6a1a17bcff | ||
|
|
e0ff84f67c | ||
|
|
82597e7e8f | ||
|
|
7420de8fc9 | ||
|
|
57f0cb134c | ||
|
|
a828da1b3f | ||
|
|
803fcb59a9 | ||
|
|
2f7658d7b1 | ||
|
|
fa5c4d3a4c | ||
|
|
a51c5299c6 | ||
|
|
a198239084 | ||
|
|
724c8c014c | ||
|
|
75cc625fe9 | ||
|
|
1fb68160b0 | ||
|
|
b257734c6f | ||
|
|
679b497891 | ||
|
|
4cea368a17 | ||
|
|
364f98ac11 | ||
|
|
60d867a978 | ||
|
|
7317efea00 | ||
|
|
10a0a52604 | ||
|
|
dc88ca3b6d | ||
|
|
90bb405e0d | ||
|
|
d1740c9d8e | ||
|
|
8062af94b5 | ||
|
|
d442e21f3c | ||
|
|
a87cad57b7 | ||
|
|
38a6e92fdf | ||
|
|
d4cc2c8597 | ||
|
|
2dc36ffcf7 | ||
|
|
9001ad2d7c | ||
|
|
5fb151e195 | ||
|
|
eb475f7747 | ||
|
|
c2f0bf16d7 | ||
|
|
2f87a2b0e5 | ||
|
|
781d01d5de | ||
|
|
2e252dd377 | ||
|
|
fb5b125110 | ||
|
|
ec60fd8157 | ||
|
|
380151faa7 | ||
|
|
9546166ebc | ||
|
|
70ddc0e7fb | ||
|
|
c5006cf4ed | ||
|
|
2136ceec0d | ||
|
|
0a6998db4b | ||
|
|
bba9aac079 | ||
|
|
e14903cd96 | ||
|
|
e07a741ee0 | ||
|
|
b08ce59bc2 | ||
|
|
1d3127bb99 | ||
|
|
7d37143bac | ||
|
|
75b055711a | ||
|
|
b26dcc1ee5 | ||
|
|
23eaea4b8d | ||
|
|
f721b13982 | ||
|
|
c3927fa6b7 | ||
|
|
a23984c7ae | ||
|
|
5c07c326ea | ||
|
|
e4a28cfabd | ||
|
|
5215cc921f | ||
|
|
d1e5ee2bab | ||
|
|
0070bf11fc | ||
|
|
29212d4e94 | ||
|
|
e37f67ccce | ||
|
|
6eba667813 | ||
|
|
ed0923c2ec | ||
|
|
c3f19a4ead | ||
|
|
d58ebfcaab | ||
|
|
453f483c7a | ||
|
|
e49608339a | ||
|
|
4852354dac | ||
|
|
4a52b17386 | ||
|
|
c3405d39df | ||
|
|
65549745ee | ||
|
|
a88c3d2ba4 | ||
|
|
2ccc58f6d3 | ||
|
|
3b57e3ba51 | ||
|
|
9a57514bf9 | ||
|
|
a062be47cc | ||
|
|
b7073ebdbc | ||
|
|
6568d40eca | ||
|
|
877efbbb99 | ||
|
|
dce7b4446d | ||
|
|
9762b63cae | ||
|
|
c8168ed4a7 | ||
|
|
73244eae4d | ||
|
|
94d4cd7cce | ||
|
|
24ac96cd40 | ||
|
|
470ea73175 | ||
|
|
bd551a6ac1 | ||
|
|
191ab1a934 | ||
|
|
0caa65231f | ||
|
|
80c2bc3fcb | ||
|
|
146edd2f4c | ||
|
|
43d9895caf | ||
|
|
bab4ad2d85 | ||
|
|
09af6d1c31 | ||
|
|
bfd12e4aa0 | ||
|
|
e46eeffe2a | ||
|
|
79cd189160 | ||
|
|
a62bdf36de | ||
|
|
33e5d7f66e | ||
|
|
5231b9777d | ||
|
|
362d44c7ba | ||
|
|
f88a6e36b5 | ||
|
|
afb770d1b3 | ||
|
|
d6fe889abe | ||
|
|
7f0dbde135 | ||
|
|
be9a3375ed | ||
|
|
2f0c31637b | ||
|
|
821ab37f49 | ||
|
|
e3b3495488 | ||
|
|
80a6a3e8c3 | ||
|
|
f75519978e | ||
|
|
8d2b8895df | ||
|
|
6b56b46811 | ||
|
|
34e64ab1eb | ||
|
|
838b284aa4 | ||
|
|
91a30e9a2a | ||
|
|
7157e7fd9a | ||
|
|
9aee7bf745 | ||
|
|
9189129985 | ||
|
|
be9b84c03f | ||
|
|
bba1418811 | ||
|
|
7957b466d4 | ||
|
|
2635cf4817 | ||
|
|
a8fa1b0e52 | ||
|
|
16e15b3393 | ||
|
|
08fca7ebce | ||
|
|
653e66594d | ||
|
|
4ff2c4e781 | ||
|
|
e160e083d8 | ||
|
|
146217fc90 | ||
|
|
bcbb0d5905 | ||
|
|
806842a087 | ||
|
|
c3df9c277f | ||
|
|
4066fd4ba2 | ||
|
|
aaef0b5e74 | ||
|
|
584fb235cd | ||
|
|
f451f62c9c | ||
|
|
68a82e0b7d | ||
|
|
84ffd14a8f | ||
|
|
21795b3b88 | ||
|
|
b7746e9bfd | ||
|
|
8de0f50087 | ||
|
|
fe3aa3ddc3 | ||
|
|
8a80517a2d | ||
|
|
f8c122a7cf | ||
|
|
8934c7db10 | ||
|
|
3fbc20412a | ||
|
|
58134a29d9 | ||
|
|
9bee85dbe2 | ||
|
|
06efde1ed9 | ||
|
|
072620aa0a | ||
|
|
ed4c634186 | ||
|
|
d6285354e4 | ||
|
|
0ffb01b9c3 | ||
|
|
999bdc01c8 | ||
|
|
12e09526e8 | ||
|
|
832bea2482 | ||
|
|
169a9be8cd | ||
|
|
e92c827820 | ||
|
|
cdcb403538 | ||
|
|
5424843190 | ||
|
|
058eb64ed9 | ||
|
|
8b1f42423b | ||
|
|
e8bcd1882c | ||
|
|
7d6a955b49 | ||
|
|
0c4993249f | ||
|
|
797f8cec80 | ||
|
|
465fc55e20 | ||
|
|
526363dfad | ||
|
|
e241edf287 | ||
|
|
b46479889d | ||
|
|
3ce1f6517d | ||
|
|
7e9968451f | ||
|
|
a7af689d50 | ||
|
|
313419180f | ||
|
|
c603bcc146 | ||
|
|
0be397b238 | ||
|
|
f3910e7707 | ||
|
|
280c987938 | ||
|
|
2676e9a5bf | ||
|
|
e197671103 | ||
|
|
e1461d95f3 | ||
|
|
40fbe8b0cd | ||
|
|
73e8db7fb2 | ||
|
|
2eaac0351d | ||
|
|
c6e9992e81 | ||
|
|
6a7d7e1844 | ||
|
|
203df298a8 | ||
|
|
3b936c9a50 | ||
|
|
dc64ac3ab3 | ||
|
|
51862543e4 | ||
|
|
67eadd4d53 | ||
|
|
6a076c8490 | ||
|
|
03c8502e5e | ||
|
|
48d2f999d7 | ||
|
|
41ea99c5d1 | ||
|
|
b07e9f32c4 | ||
|
|
f9ab9ca137 | ||
|
|
06e63f7cca | ||
|
|
c481aad0c8 | ||
|
|
602879539c | ||
|
|
d448b5e549 | ||
|
|
728d8027de | ||
|
|
91c5bccc05 | ||
|
|
1bc08b652d | ||
|
|
23c1ea021b | ||
|
|
58d497e8bb | ||
|
|
c4f3d6d7fe | ||
|
|
8aea710a6c | ||
|
|
82e83bc6a6 | ||
|
|
8e59ef77db | ||
|
|
dbdfe06d1e | ||
|
|
cf36c6d893 | ||
|
|
debd35a877 | ||
|
|
2360925e29 | ||
|
|
58f6cb2af9 | ||
|
|
4de550f040 | ||
|
|
7cb8988372 | ||
|
|
d19302fb40 | ||
|
|
91497ece94 | ||
|
|
fab0a3de3e | ||
|
|
fc2432e93b | ||
|
|
0263b4a807 | ||
|
|
5231a3ab74 | ||
|
|
62ad185df9 | ||
|
|
f4beb879cc | ||
|
|
9db99b2fd2 | ||
|
|
39e7e09152 | ||
|
|
090ac4870d | ||
|
|
e54d4a98b6 | ||
|
|
428af852a0 | ||
|
|
e51d8a9bc9 | ||
|
|
04073b03e4 | ||
|
|
1a42fa5326 | ||
|
|
9127258a54 | ||
|
|
0ae48e3441 | ||
|
|
f5cc51b4a8 | ||
|
|
deb443dc2a | ||
|
|
d16c4c370e | ||
|
|
00acfe3049 | ||
|
|
0d1fdd7a11 | ||
|
|
f3bd3ec449 | ||
|
|
32e4d66c74 | ||
|
|
cf1baafd75 | ||
|
|
e7c626a79e | ||
|
|
18892963a9 | ||
|
|
3d824e3958 | ||
|
|
f8464b9e91 | ||
|
|
0982bf2683 | ||
|
|
53348bd41d | ||
|
|
b0b57402f3 | ||
|
|
d8cb2491bd | ||
|
|
3ad4c8502a | ||
|
|
484db764cf | ||
|
|
d8c8c6b103 | ||
|
|
3f46a71157 | ||
|
|
f5c90ead7e | ||
|
|
62fd56f904 | ||
|
|
567ab39153 | ||
|
|
d94a4e545d | ||
|
|
78290f9127 | ||
|
|
6f8a222698 | ||
|
|
1a09c6eeb0 | ||
|
|
885a029abc | ||
|
|
a4c75620ee | ||
|
|
a3382f8faa | ||
|
|
1b171e798d | ||
|
|
c325c6a232 | ||
|
|
c69e8b6895 | ||
|
|
3982cc2e23 | ||
|
|
7e2487c294 | ||
|
|
fb72b7b9e5 | ||
|
|
a3f76309b3 | ||
|
|
325ac4f8e2 | ||
|
|
18db5f68ac | ||
|
|
c930563929 | ||
|
|
67d5f56a3c | ||
|
|
a62857a74d | ||
|
|
eaf28414ca | ||
|
|
a44a54f3d3 | ||
|
|
5d0ae84ad2 | ||
|
|
6142d1d74c | ||
|
|
0f897b4007 | ||
|
|
2b29531591 | ||
|
|
f709ee815b | ||
|
|
b93368f46d | ||
|
|
a23a702acb | ||
|
|
f670cc6749 | ||
|
|
89f3ea3dd0 | ||
|
|
aaae82d7b4 | ||
|
|
08cfd560f2 | ||
|
|
591697642b | ||
|
|
4219839e47 | ||
|
|
925c2d0f1e | ||
|
|
84d8f6c272 | ||
|
|
5315d69692 | ||
|
|
24c61fe1f9 | ||
|
|
ddd37ca145 | ||
|
|
0a1b728051 | ||
|
|
ca374e86eb | ||
|
|
d21aa79fe0 | ||
|
|
85d8916476 | ||
|
|
7456cf945d | ||
|
|
3dbcadf244 | ||
|
|
d8276eed3e | ||
|
|
d6e99a8218 | ||
|
|
fd3ecb29b0 | ||
|
|
4badf66973 | ||
|
|
a241922614 | ||
|
|
632ca15752 | ||
|
|
4f7ae5dd2a | ||
|
|
57876fc13f | ||
|
|
45a678cb60 | ||
|
|
96e300dabd | ||
|
|
6e08c4c0bd | ||
|
|
515b71f995 | ||
|
|
4be567bb77 | ||
|
|
e7b971a4af | ||
|
|
3b8c1cd59e | ||
|
|
15c2af2384 | ||
|
|
a460794792 | ||
|
|
8571416ac8 | ||
|
|
e5804c48d6 | ||
|
|
6787689537 | ||
|
|
2fcd538082 | ||
|
|
a6baa6d6f1 | ||
|
|
f820d74605 | ||
|
|
afc75c5db9 | ||
|
|
29b4e64dfc | ||
|
|
eac8f3b5d6 | ||
|
|
38c5faba9b | ||
|
|
20c23475a2 | ||
|
|
4ef9e17156 | ||
|
|
0f25438316 | ||
|
|
cc57fea7b3 | ||
|
|
7241520072 | ||
|
|
6582db99c6 | ||
|
|
0994d79585 | ||
|
|
1987f3259c | ||
|
|
4c83925fc4 | ||
|
|
f66d995df7 | ||
|
|
bd0457e40e | ||
|
|
fec1396fb0 | ||
|
|
cf1a0b1cd7 | ||
|
|
0fe4605143 | ||
|
|
e272dd89e1 | ||
|
|
24efc76de0 | ||
|
|
ec6e32f3e5 | ||
|
|
eedcf0708f | ||
|
|
e0b7ebd375 | ||
|
|
6c73828cd5 | ||
|
|
505a00c3b3 | ||
|
|
8db0e44d4c | ||
|
|
09d7487dc1 | ||
|
|
59ad094271 | ||
|
|
c6fab23af7 | ||
|
|
1f2098fcce | ||
|
|
73bc34b278 | ||
|
|
5c7c51089b | ||
|
|
cb562c2769 | ||
|
|
47e150fbb8 | ||
|
|
fa73c14df6 | ||
|
|
a62641f9f3 | ||
|
|
a7bc282302 | ||
|
|
21790f9c4f | ||
|
|
445a51f5c1 | ||
|
|
e70213cdf7 | ||
|
|
f43090fa01 | ||
|
|
07850586f5 | ||
|
|
79fd37b489 | ||
|
|
f13830cf29 | ||
|
|
59d1c14dad | ||
|
|
2a94583e29 | ||
|
|
48dd9bb31f | ||
|
|
52abf72c29 | ||
|
|
378516bd4f | ||
|
|
05969631b6 | ||
|
|
a1c15da786 | ||
|
|
f5c502670a | ||
|
|
60f99e510e | ||
|
|
bb7174997b | ||
|
|
0226dc76cb | ||
|
|
e42e1d8065 | ||
|
|
9cfa0f239f | ||
|
|
bc295b3ba5 | ||
|
|
0ace73bba9 | ||
|
|
282a20578f | ||
|
|
1272847fea | ||
|
|
f991dc9ebc | ||
|
|
28438ab5c4 | ||
|
|
a629feec29 | ||
|
|
9f7b159039 | ||
|
|
39919152cb | ||
|
|
087f9a0bc2 | ||
|
|
e0ab96eedc | ||
|
|
7611fe671f | ||
|
|
72aae2553a | ||
|
|
f7fe3b448f | ||
|
|
43f5eecd19 | ||
|
|
e3dbc97723 | ||
|
|
b4fea523b9 | ||
|
|
67a3184bb3 | ||
|
|
4c9706a950 | ||
|
|
e273f80fa8 | ||
|
|
1b69fc6c5d | ||
|
|
e74b9a5c29 | ||
|
|
97b0844031 | ||
|
|
f08998af2c | ||
|
|
f80896f93f | ||
|
|
f0923f68fb | ||
|
|
1936bc06d8 | ||
|
|
1bb77d65a6 | ||
|
|
b8c1129dfe | ||
|
|
2509733678 | ||
|
|
0fb0203c1c | ||
|
|
9f0ec74cf4 | ||
|
|
04eebcbdc3 | ||
|
|
998b58da04 | ||
|
|
86801cc136 | ||
|
|
014e02904a | ||
|
|
9f7e553e3e | ||
|
|
21f7128209 | ||
|
|
f2849868e8 | ||
|
|
517d351430 | ||
|
|
24dd439aec | ||
|
|
c1864711cd | ||
|
|
011a5a3b56 | ||
|
|
e8944c95aa | ||
|
|
76aa112cec | ||
|
|
8a4df37e83 | ||
|
|
2fef830d42 | ||
|
|
4c3d8e7581 | ||
|
|
452615f9d0 | ||
|
|
1b2a64fe0a | ||
|
|
01c1eba4ff | ||
|
|
ea9bc93f74 | ||
|
|
87d0eddc2c | ||
|
|
416edd1980 | ||
|
|
02c7387c0d | ||
|
|
30c401e0fa | ||
|
|
464a62dd97 | ||
|
|
8ad215f680 | ||
|
|
4d244c5c7c | ||
|
|
e45855f41d | ||
|
|
26bceb2277 | ||
|
|
56ceb76a3a | ||
|
|
d1ac08ffaa | ||
|
|
c3e04b65df | ||
|
|
9d45b49c38 | ||
|
|
206aa36a47 | ||
|
|
a8aa383fee | ||
|
|
f8f7c40830 | ||
|
|
d0895b5ebc | ||
|
|
417509d146 | ||
|
|
699526236c | ||
|
|
8b87c656e0 | ||
|
|
ca96b9e9bf | ||
|
|
336e4a5ef1 | ||
|
|
24f9f87941 | ||
|
|
31af346ebc | ||
|
|
35b5782968 | ||
|
|
27f9d6f743 | ||
|
|
866a76dc4a | ||
|
|
cb003e4f10 | ||
|
|
3f8c8b73e2 | ||
|
|
93f59a3c6e | ||
|
|
7b7f045f1c | ||
|
|
3b87dd30a0 | ||
|
|
d40db13e2a | ||
|
|
6337951182 | ||
|
|
e72fa6aa39 | ||
|
|
bb63aa79b2 | ||
|
|
57be09efaf | ||
|
|
7fbccc709a | ||
|
|
7746897f0e | ||
|
|
cd8cfab768 | ||
|
|
f40b4ab297 | ||
|
|
5b943f598d | ||
|
|
a6e11e7029 | ||
|
|
efc5ce39d3 | ||
|
|
a082f708b6 | ||
|
|
9d6de3b511 | ||
|
|
d0bfaf4dcb | ||
|
|
979ebdeb42 | ||
|
|
792cd56f63 | ||
|
|
7a298e73cd | ||
|
|
04abbdb668 | ||
|
|
b90a59a671 | ||
|
|
707cf8088a | ||
|
|
1c07afbeb6 | ||
|
|
644a5768a3 | ||
|
|
9790246daf | ||
|
|
763a95b12b | ||
|
|
5c42004e21 | ||
|
|
c832b7af91 | ||
|
|
2e1107fa41 | ||
|
|
eca89e20b0 | ||
|
|
7c2c01727e | ||
|
|
f48d86d7c5 | ||
|
|
d24454ce9a | ||
|
|
d220ee23e2 | ||
|
|
0943891005 | ||
|
|
0a0f6b7952 | ||
|
|
3e0f07705c | ||
|
|
af545c07b7 | ||
|
|
4574a19fc9 | ||
|
|
c5b9962954 | ||
|
|
97b65555fd | ||
|
|
f1cef982f2 | ||
|
|
d647a98f65 | ||
|
|
50bba6b287 | ||
|
|
ab9f9bdd76 | ||
|
|
435c849866 | ||
|
|
79c7b9a873 | ||
|
|
f3c2c12fa2 | ||
|
|
66df72d1f8 | ||
|
|
ee8269ea98 | ||
|
|
b141450180 | ||
|
|
934a6aeb83 | ||
|
|
cb5f3954b6 | ||
|
|
26ef1128d8 | ||
|
|
a87cd3e83c | ||
|
|
9f45f1d769 | ||
|
|
cd6f491b97 | ||
|
|
9983478a61 | ||
|
|
53171d96ea | ||
|
|
f64179039e | ||
|
|
4f9aa86510 | ||
|
|
386881c382 | ||
|
|
970e65a4d6 | ||
|
|
3f6ed8d14a | ||
|
|
aa62ddfabd | ||
|
|
6979b56aa7 | ||
|
|
9b8a8280ad | ||
|
|
72e92f7e46 | ||
|
|
3161add2c1 | ||
|
|
a3ddabafc6 | ||
|
|
f1a095057e | ||
|
|
b49ac6ec4e |
@@ -60,6 +60,8 @@ ForEachMacros:
|
||||
- foreach
|
||||
- Q_FOREACH
|
||||
- BOOST_FOREACH
|
||||
- RB_FOREACH
|
||||
- UE_iterator
|
||||
IncludeBlocks: Preserve
|
||||
IncludeCategories:
|
||||
- Regex: '^<ext/.*\.h>'
|
||||
|
||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -9,8 +9,11 @@ cmake_targets/nas_sim_tools/build/
|
||||
log/
|
||||
lte_build_oai/
|
||||
|
||||
# vscode
|
||||
# IDE files
|
||||
.vscode
|
||||
.cproject
|
||||
.project
|
||||
.settings
|
||||
|
||||
# Tags for vim/global
|
||||
GPATH
|
||||
|
||||
2
.gitmodules
vendored
2
.gitmodules
vendored
@@ -1,4 +1,4 @@
|
||||
[submodule "openair2/E2AP/flexric"]
|
||||
path = openair2/E2AP/flexric
|
||||
url = https://gitlab.eurecom.fr/mosaic5g/flexric.git
|
||||
branch = remotes/origin/mir_dev
|
||||
branch = remotes/origin/service-models-integration
|
||||
|
||||
31
.vscode/launch.json
vendored
31
.vscode/launch.json
vendored
@@ -1,31 +0,0 @@
|
||||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "(gdb) Launch",
|
||||
"type": "cppdbg",
|
||||
"request": "launch",
|
||||
"program": "${workspaceFolder}/cmake_targets/ran_build/build/lte-softmodem",
|
||||
"args": [
|
||||
"-O", "../ci-scripts/conf_files/rcc.band7.tm1.nfapi.conf",
|
||||
"--noS1"
|
||||
],
|
||||
"stopAtEntry": false,
|
||||
"cwd": "${workspaceFolder}/cmake_targets",
|
||||
"environment": [],
|
||||
"externalConsole": false,
|
||||
"MIMode": "gdb",
|
||||
"miDebuggerPath": "${workspaceFolder}/cmake_targets/sudo-gdb",
|
||||
"setupCommands": [
|
||||
{
|
||||
"description": "Enable pretty-printing for gdb",
|
||||
"text": "-enable-pretty-printing",
|
||||
"ignoreFailures": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
168
CMakeLists.txt
168
CMakeLists.txt
@@ -102,21 +102,23 @@ add_list_string_option(CMAKE_BUILD_TYPE "RelWithDebInfo" "Choose the type of bui
|
||||
# in case /proc/cpuinfo exists we want to inspect available Intrinsics
|
||||
# -so not to go always through SIMDE emulation
|
||||
# -so to avoid AVX512 instructions generation by gcc
|
||||
execute_process(COMMAND uname -m OUTPUT_VARIABLE CPUARCH OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
message(STATUS "CPUARCH ${CPUARCH}")
|
||||
if(EXISTS "/proc/cpuinfo")
|
||||
if(EXISTS "/proc/cpuinfo" AND NOT CROSS_COMPILE)
|
||||
file(STRINGS "/proc/cpuinfo" CPUFLAGS REGEX flags LIMIT_COUNT 1)
|
||||
else()
|
||||
message(WARNING "did not find /proc/cpuinfo -- not setting any x86-specific compilation variables")
|
||||
endif()
|
||||
|
||||
|
||||
eval_boolean(AUTODETECT_AVX512 DEFINED CPUFLAGS AND CPUFLAGS MATCHES "avx512")
|
||||
add_boolean_option(AVX512 ${AUTODETECT_AVX512} "Whether AVX512 intrinsics is available on the host processor" ON)
|
||||
|
||||
eval_boolean(AUTODETECT_AVX2 DEFINED CPUFLAGS AND CPUFLAGS MATCHES "avx2")
|
||||
add_boolean_option(AVX2 ${AUTODETECT_AVX2} "Whether AVX2 intrinsics is available on the host processor" ON)
|
||||
|
||||
if(${CPUARCH} STREQUAL "x86_64" AND DEFINED CPUFLAGS)
|
||||
message(STATUS "CPU architecture is ${CMAKE_SYSTEM_PROCESSOR}")
|
||||
if (CROSS_COMPILE)
|
||||
message(STATUS "setting as aarch64")
|
||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -gdwarf-2 -lgcc -lrt")
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
||||
# The following intrinsics are assumed to be available on any x86 system
|
||||
# (avx, f16c, fma, gnfi, mmx, pclmul, sse, sse2, sse3, xop)
|
||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_AVX_NATIVE -DSIMDE_X86_F16C_NATIVE -DSIMDE_X86_FMA_NATIVE -DSIMDE_X86_GFNI_NATIVE -DSIMDE_X86_MMX_NATIVE -DSIMDE_X86_PCLMUL_NATIVE -DSIMDE_X86_SSE2_NATIVE -DSIMDE_X86_SSE3_NATIVE -DSIMDE_X86_SSE_NATIVE -DSIMDE_X86_XOP_HAVE_COM_ -DSIMDE_X86_XOP_NATIVE")
|
||||
@@ -139,11 +141,19 @@ if(${CPUARCH} STREQUAL "x86_64" AND DEFINED CPUFLAGS)
|
||||
if(CPUINFO MATCHES "ssse3")
|
||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -DSIMDE_X86_SSSE3_NATIVE")
|
||||
endif()
|
||||
elseif(${CPUARCH} NOT STREQUAL "x86_64")
|
||||
message(FATAL_ERROR "Cannot compile for CPU architecture ${CPUARCH}")
|
||||
elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7l")
|
||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -gdwarf-2 -mfloat-abi=hard -mfpu=neon -lgcc -lrt")
|
||||
elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
|
||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -gdwarf-2 -lgcc -lrt")
|
||||
else()
|
||||
message(FATAL_ERROR "compile for CPU architecture ${CPUARCH}, CMAKE_SYSTEM_PROCESSOR ${CMAKE_SYSTEM_PROCESSOR}")
|
||||
endif()
|
||||
|
||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -march=native")
|
||||
if (NOT CROSS_COMPILE)
|
||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -march=native")
|
||||
else ()
|
||||
set(C_FLAGS_PROCESSOR "${C_FLAGS_PROCESSOR} -march=armv8-a")
|
||||
endif()
|
||||
|
||||
# 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")
|
||||
@@ -183,6 +193,13 @@ if (SANITIZE_ADDRESS)
|
||||
# wrong in the pthread library, or something subtly wrong in this CMakeLists.txt. Use Ubuntu 20.04 instead.
|
||||
endif ()
|
||||
|
||||
add_boolean_option(SANITIZE_THREAD False "enable the address sanitizer (TSan)" ON)
|
||||
if (SANITIZE_THREAD)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=thread -fno-omit-frame-pointer -fno-common")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=thread -fno-omit-frame-pointer -fno-common")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=thread")
|
||||
endif()
|
||||
|
||||
add_boolean_option(SANITIZE_UNDEFINED False "enable the undefined behavior sanitizer (UBSan)" ON)
|
||||
if (SANITIZE_UNDEFINED)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=undefined -fno-sanitize-recover=all")
|
||||
@@ -279,6 +296,15 @@ add_definitions(-DHAVE_NETINET_IN_H)
|
||||
set(E2_AGENT "OFF" CACHE STRING "O-RAN-compliant E2 Agent")
|
||||
set_property(CACHE E2_AGENT PROPERTY STRINGS "ON" "OFF")
|
||||
|
||||
set(E2AP_VERSION "E2AP_V2" CACHE STRING "E2AP version")
|
||||
set_property(CACHE E2AP_VERSION PROPERTY STRINGS "E2AP_V1" "E2AP_V2" "E2AP_V3")
|
||||
message(STATUS "Selected E2AP_VERSION: ${E2AP_VERSION}")
|
||||
|
||||
set(KPM_VERSION "KPM_V2_03" CACHE STRING "The KPM SM version to use")
|
||||
set_property(CACHE KPM_VERSION PROPERTY STRINGS "KPM_V2_03" "KPM_V3_00")
|
||||
message(STATUS "Selected KPM Version: ${KPM_VERSION}")
|
||||
|
||||
|
||||
##################################################
|
||||
# ASN.1 grammar C code generation & dependencies #
|
||||
##################################################
|
||||
@@ -413,6 +439,7 @@ target_link_libraries(x2ap PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
||||
set(F1AP_DIR ${OPENAIR2_DIR}/F1AP)
|
||||
add_library(f1ap
|
||||
${F1AP_DIR}/f1ap_common.c
|
||||
${F1AP_DIR}/f1ap_ids.c
|
||||
${F1AP_DIR}/f1ap_cu_interface_management.c
|
||||
${F1AP_DIR}/f1ap_cu_paging.c
|
||||
${F1AP_DIR}/f1ap_cu_rrc_message_transfer.c
|
||||
@@ -431,7 +458,7 @@ add_library(f1ap
|
||||
${F1AP_DIR}/f1ap_itti_messaging.c)
|
||||
target_include_directories(f1ap PUBLIC F1AP_DIR)
|
||||
target_link_libraries(f1ap PUBLIC asn1_f1ap)
|
||||
target_link_libraries(f1ap PRIVATE ngap nr_rrc)
|
||||
target_link_libraries(f1ap PRIVATE ngap nr_rrc HASHTABLE)
|
||||
|
||||
# LPP
|
||||
##############
|
||||
@@ -443,19 +470,23 @@ add_list1_option(NB_ANTENNAS_RX "4" "Number of antennas in reception" "1" "2" "4
|
||||
add_list1_option(NB_ANTENNAS_TX "4" "Number of antennas in transmission" "1" "2" "4")
|
||||
|
||||
set (CONFIG_ROOTDIR ${OPENAIR_DIR}/common/config)
|
||||
add_library(config_internals OBJECT
|
||||
${CONFIG_ROOTDIR}/config_common.c
|
||||
)
|
||||
|
||||
add_library(CONFIG_LIB
|
||||
${CONFIG_ROOTDIR}/config_load_configmodule.c
|
||||
${CONFIG_ROOTDIR}/config_userapi.c
|
||||
${CONFIG_ROOTDIR}/config_cmdline.c
|
||||
)
|
||||
target_link_libraries(CONFIG_LIB PRIVATE config_internals dl UTIL)
|
||||
|
||||
# CONFIG_LIB is a wrapper around a particular config implementation, default is
|
||||
# libconfig in params_libconfig below
|
||||
pkg_check_modules(libconfig REQUIRED libconfig)
|
||||
target_link_libraries(CONFIG_LIB PRIVATE dl UTIL)
|
||||
add_library(params_libconfig MODULE ${CONFIG_ROOTDIR}/libconfig/config_libconfig.c)
|
||||
target_include_directories(params_libconfig PRIVATE ${libconfig_INCLUDE_DIRS})
|
||||
target_link_libraries(params_libconfig PRIVATE ${libconfig_LIBRARIES})
|
||||
target_link_libraries(params_libconfig PRIVATE config_internals ${libconfig_LIBRARIES})
|
||||
|
||||
# shared library loader
|
||||
add_library(shlib_loader OBJECT common/utils/load_module_shlib.c)
|
||||
@@ -463,20 +494,21 @@ target_link_libraries(shlib_loader PRIVATE CONFIG_LIB)
|
||||
|
||||
##########################################################
|
||||
|
||||
# LDPC offload library
|
||||
# LDPC offload library - AMD T2 Accelerator Card
|
||||
##########################################################
|
||||
|
||||
add_boolean_option(ENABLE_LDPC_T1 OFF "Build support for LDPC Offload to T1 library" OFF)
|
||||
if (ENABLE_LDPC_T1)
|
||||
pkg_check_modules(LIBDPDK_T1 REQUIRED libdpdk=20.05.0)
|
||||
find_library(T1 NAMES rte_pmd_hpac_sdfec_pmd REQUIRED)
|
||||
if (NOT T1)
|
||||
message(FATAL_ERROR "Library rte_pmd_hpac_sdfec_pmd for T1 offload not found")
|
||||
add_boolean_option(ENABLE_LDPC_T2 OFF "Build support for LDPC Offload to T2 library" OFF)
|
||||
set(ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:/usr/local/lib/x86_64-linux-gnu/pkgconfig")
|
||||
if (ENABLE_LDPC_T2)
|
||||
pkg_check_modules(LIBDPDK_T2 REQUIRED libdpdk=20.11.7)
|
||||
find_library(PMD_T2 NAMES rte_baseband_accl_ldpc HINTS "/opt/dpdk-t2/lib/x86_64-linux-gnu/")
|
||||
if (NOT PMD_T2)
|
||||
message(FATAL_ERROR "could not find PMD T2")
|
||||
endif()
|
||||
add_library(ldpc_t1 MODULE ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c)
|
||||
set_target_properties(ldpc_t1 PROPERTIES COMPILE_FLAGS "-DALLOW_EXPERIMENTAL_API")
|
||||
target_compile_options(ldpc_t1 PRIVATE ${LIBDPDK_T1_CFLAGS})
|
||||
target_link_libraries(ldpc_t1 ${LIBDPDK_T1_LDFLAGS} ${T1})
|
||||
message(STATUS "T2 build: use ${PMD_T2}")
|
||||
add_library(ldpc_t2 MODULE ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_offload.c)
|
||||
set_target_properties(ldpc_t2 PROPERTIES COMPILE_FLAGS "-DALLOW_EXPERIMENTAL_API")
|
||||
target_link_libraries(ldpc_t2 ${LIBDPDK_T2_LDFLAGS} ${PMD_T2})
|
||||
endif()
|
||||
|
||||
##########################################################
|
||||
@@ -788,19 +820,30 @@ set(PHY_LDPC_ORIG_SRC
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder.c
|
||||
)
|
||||
add_library(ldpc_orig MODULE ${PHY_LDPC_ORIG_SRC} )
|
||||
target_link_libraries(ldpc_orig PRIVATE ldpc_gen_HEADERS)
|
||||
|
||||
set(PHY_LDPC_OPTIM_SRC
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim.c
|
||||
)
|
||||
)
|
||||
add_library(ldpc_optim MODULE ${PHY_LDPC_OPTIM_SRC} )
|
||||
target_link_libraries(ldpc_optim PRIVATE ldpc_gen_HEADERS)
|
||||
|
||||
set(PHY_LDPC_OPTIM8SEG_SRC
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8seg.c
|
||||
)
|
||||
add_library(ldpc_optim8seg MODULE ${PHY_LDPC_OPTIM8SEG_SRC} )
|
||||
target_link_libraries(ldpc_optim8seg PRIVATE ldpc_gen_HEADERS)
|
||||
|
||||
set(PHY_LDPC_OPTIM8SEGMULTI_SRC
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
|
||||
)
|
||||
)
|
||||
add_library(ldpc MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} )
|
||||
target_link_libraries(ldpc PRIVATE ldpc_gen_HEADERS)
|
||||
|
||||
set(PHY_LDPC_CUDA_SRC
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder_LYC/nrLDPC_decoder_LYC.cu
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_encoder/ldpc_encoder_optim8segmulti.c
|
||||
@@ -814,21 +857,13 @@ add_custom_target( nrLDPC_decoder_kernels_CL
|
||||
COMMAND gcc ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_CL.c -dD -DNRLDPC_KERNEL_SOURCE -E -o ${CMAKE_CURRENT_BINARY_DIR}/nrLDPC_decoder_kernels_CL.clc
|
||||
SOURCES ${OPENAIR1_DIR}/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder_CL.c
|
||||
)
|
||||
|
||||
set(PHY_NR_CODINGIF
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_load.c;
|
||||
)
|
||||
|
||||
add_library(ldpc_orig MODULE ${PHY_LDPC_ORIG_SRC} )
|
||||
target_link_libraries(ldpc_orig PRIVATE ldpc_gen_HEADERS)
|
||||
add_library(ldpc_optim MODULE ${PHY_LDPC_OPTIM_SRC} )
|
||||
target_link_libraries(ldpc_optim PRIVATE ldpc_gen_HEADERS)
|
||||
add_library(ldpc_optim8seg MODULE ${PHY_LDPC_OPTIM8SEG_SRC} )
|
||||
target_link_libraries(ldpc_optim8seg PRIVATE ldpc_gen_HEADERS)
|
||||
add_library(ldpc_cl MODULE ${PHY_LDPC_CL_SRC} )
|
||||
target_link_libraries(ldpc_cl OpenCL)
|
||||
add_dependencies(ldpc_cl nrLDPC_decoder_kernels_CL)
|
||||
|
||||
set(PHY_NR_CODINGIF
|
||||
${OPENAIR1_DIR}/PHY/CODING/nrLDPC_load.c
|
||||
)
|
||||
|
||||
##############################################
|
||||
# Base CUDA setting
|
||||
@@ -846,16 +881,9 @@ if (ENABLE_LDPC_CUDA)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
add_library(ldpc MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} )
|
||||
target_link_libraries(ldpc PRIVATE ldpc_gen_HEADERS)
|
||||
|
||||
add_library(ldpc_parityCheck MODULE ${PHY_LDPC_OPTIM8SEGMULTI_SRC} )
|
||||
target_compile_definitions(ldpc_parityCheck PUBLIC NR_LDPC_ENABLE_PARITY_CHECK)
|
||||
target_link_libraries(ldpc_parityCheck PRIVATE ldpc_gen_HEADERS)
|
||||
|
||||
add_library(coding MODULE ${PHY_TURBOSRC} )
|
||||
|
||||
add_library(dfts MODULE ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts.c )
|
||||
add_library(dfts MODULE ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts.c ${OPENAIR1_DIR}/PHY/TOOLS/oai_dfts_neon.c)
|
||||
|
||||
|
||||
set(PHY_SRC_COMMON
|
||||
@@ -1029,6 +1057,7 @@ set(PHY_SRC_UE
|
||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/dmrs_nr.c
|
||||
${OPENAIR1_DIR}/PHY/NR_REFSIG/ptrs_nr.c
|
||||
${OPENAIR1_DIR}/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
|
||||
${OPENAIR1_DIR}/PHY/NR_ESTIMATION/nr_freq_equalization.c
|
||||
${OPENAIR1_DIR}/PHY/NR_ESTIMATION/nr_measurements_gNB.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/file_output.c
|
||||
${OPENAIR1_DIR}/PHY/TOOLS/cadd_vv.c
|
||||
@@ -1108,9 +1137,9 @@ if (${SMBV})
|
||||
endif (${SMBV})
|
||||
|
||||
set(PHY_SRC_UE ${PHY_SRC_UE} ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c)
|
||||
set(PHY_NR_UE_SRC ${PHY_NR_UE_SRC} ${OPENAIR1_DIR}/PHY/LTE_UE_TRANSPORT/dlsch_llr_computation_avx2.c)
|
||||
|
||||
add_library(PHY_COMMON ${PHY_SRC_COMMON})
|
||||
target_link_libraries(PHY_COMMON PRIVATE shlib_loader)
|
||||
add_dependencies(PHY_COMMON dfts)
|
||||
target_link_libraries(PHY_COMMON PRIVATE asn1_lte_rrc_hdrs)
|
||||
|
||||
@@ -1133,6 +1162,7 @@ add_library(PHY_NR_COMMON ${PHY_NR_SRC_COMMON})
|
||||
add_library(PHY_NR ${PHY_NR_SRC})
|
||||
|
||||
add_library(PHY_NR_UE ${PHY_NR_UE_SRC})
|
||||
target_link_libraries(PHY_NR_UE PRIVATE asn1_nr_rrc_hdrs)
|
||||
|
||||
add_library(PHY_RU ${PHY_SRC_RU})
|
||||
target_link_libraries(PHY_RU PRIVATE asn1_lte_rrc_hdrs)
|
||||
@@ -1194,6 +1224,10 @@ set(NR_PDCP_SRC
|
||||
${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_integrity_nia2.c
|
||||
${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_integrity_nia1.c
|
||||
${OPENAIR2_DIR}/LAYER2/nr_pdcp/asn1_utils.c
|
||||
openair2/LAYER2/nr_pdcp/cucp_cuup_handler.c
|
||||
openair2/LAYER2/nr_pdcp/cuup_cucp_if.c
|
||||
openair2/LAYER2/nr_pdcp/cuup_cucp_direct.c
|
||||
openair2/LAYER2/nr_pdcp/cuup_cucp_e1ap.c
|
||||
)
|
||||
|
||||
set(NR_SDAP_SRC
|
||||
@@ -1245,7 +1279,6 @@ set(L2_NR_SRC
|
||||
${NR_SDAP_SRC}
|
||||
${NR_RRC_DIR}/rrc_gNB.c
|
||||
${NR_RRC_DIR}/nr_rrc_common.c
|
||||
${NR_RRC_DIR}/L2_nr_interface.c
|
||||
${NR_RRC_DIR}/mac_rrc_dl_direct.c
|
||||
${NR_RRC_DIR}/mac_rrc_dl_f1ap.c
|
||||
${NR_RRC_DIR}/nr_rrc_config.c
|
||||
@@ -1255,6 +1288,8 @@ set(L2_NR_SRC
|
||||
${NR_RRC_DIR}/rrc_gNB_UE_context.c
|
||||
${NR_RRC_DIR}/rrc_gNB_NGAP.c
|
||||
${NR_RRC_DIR}/rrc_gNB_radio_bearers.c
|
||||
${NR_RRC_DIR}/rrc_gNB_cuup.c
|
||||
${NR_RRC_DIR}/rrc_gNB_du.c
|
||||
)
|
||||
|
||||
set(L2_SRC_UE
|
||||
@@ -1331,6 +1366,7 @@ set (MAC_NR_SRC
|
||||
${NR_GNB_MAC_DIR}/mac_rrc_dl_handler.c
|
||||
${NR_GNB_MAC_DIR}/mac_rrc_ul_direct.c
|
||||
${NR_GNB_MAC_DIR}/mac_rrc_ul_f1ap.c
|
||||
${NR_GNB_MAC_DIR}/slicing/nr_slicing.c
|
||||
)
|
||||
|
||||
|
||||
@@ -1396,15 +1432,14 @@ add_library(L2
|
||||
)
|
||||
target_link_libraries(L2 PRIVATE x2ap s1ap lte_rrc m2ap)
|
||||
target_link_libraries(L2 PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
||||
|
||||
if(E2_AGENT)
|
||||
target_link_libraries(L2 PUBLIC e2_agent e2_ran_func)
|
||||
target_compile_definitions(L2 PRIVATE E2_AGENT)
|
||||
target_compile_definitions(L2 PRIVATE ${E2AP_VERSION} ${KPM_VERSION})
|
||||
endif()
|
||||
|
||||
|
||||
add_library(MAC_NR ${MAC_NR_SRC})
|
||||
target_link_libraries(MAC_NR PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
||||
|
||||
add_library(MAC_UE_NR ${MAC_NR_SRC_UE})
|
||||
target_link_libraries(MAC_UE_NR PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
||||
|
||||
@@ -1424,15 +1459,10 @@ add_library(e1_if
|
||||
|
||||
target_link_libraries(e1_if PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs asn1_f1ap SECURITY ${OPENSSL_LIBRARIES} e1ap GTPV1U)
|
||||
|
||||
add_library(e1_pdcp_if
|
||||
${OPENAIR2_DIR}/LAYER2/nr_pdcp/nr_pdcp_e1_api.c
|
||||
)
|
||||
|
||||
target_link_libraries(e1_pdcp_if PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
|
||||
target_link_libraries(L2_NR PRIVATE f1ap x2ap s1ap ngap nr_rrc e1ap nr_rlc)
|
||||
if(E2_AGENT)
|
||||
target_link_libraries(L2_NR PUBLIC e2_agent e2_ran_func)
|
||||
target_compile_definitions(L2_NR PRIVATE ${E2AP_VERSION} ${KPM_VERSION})
|
||||
target_compile_definitions(L2_NR PRIVATE E2_AGENT)
|
||||
endif()
|
||||
|
||||
@@ -1858,8 +1888,6 @@ set (SIMUSRC
|
||||
)
|
||||
add_library(SIMU STATIC ${SIMUSRC} )
|
||||
target_include_directories(SIMU PUBLIC ${OPENAIR1_DIR}/SIMULATION/TOOLS ${OPENAIR1_DIR}/SIMULATION/RF)
|
||||
target_link_libraries(SIMU PRIVATE ${blas_LIBRARIES} ${cblas_LIBRARIES} ${lapacke_LIBRARIES})
|
||||
target_include_directories(SIMU PRIVATE ${blas_INCLUDE_DIRS} ${lapacke_INCLUDE_DIRS})
|
||||
|
||||
# Qt-based scope
|
||||
add_boolean_option(ENABLE_NRQTSCOPE OFF "Build the Qt-Scope" OFF)
|
||||
@@ -1955,6 +1983,7 @@ target_link_libraries(lte-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
|
||||
if(E2_AGENT)
|
||||
target_compile_definitions(lte-softmodem PRIVATE E2_AGENT)
|
||||
target_compile_definitions(lte-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION})
|
||||
endif()
|
||||
|
||||
add_executable(oairu
|
||||
@@ -2051,11 +2080,16 @@ target_link_libraries(nr-softmodem PRIVATE
|
||||
target_link_libraries(nr-softmodem PRIVATE pthread m CONFIG_LIB rt sctp)
|
||||
target_link_libraries(nr-softmodem PRIVATE ${T_LIB})
|
||||
target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
target_link_libraries(nr-softmodem PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
if(E2_AGENT)
|
||||
target_compile_definitions(nr-softmodem PRIVATE ${E2AP_VERSION} ${KPM_VERSION})
|
||||
endif()
|
||||
|
||||
|
||||
add_dependencies(nr-softmodem ldpc_orig ldpc_optim ldpc_optim8seg ldpc)
|
||||
|
||||
if (ENABLE_LDPC_T1)
|
||||
add_dependencies(nr-softmodem ldpc_t1)
|
||||
if (ENABLE_LDPC_T2)
|
||||
add_dependencies(nr-softmodem ldpc_t2)
|
||||
endif()
|
||||
|
||||
# force the generation of ASN.1 so that we don't need to wait during the build
|
||||
@@ -2078,7 +2112,7 @@ add_executable(nr-cuup
|
||||
|
||||
target_link_libraries(nr-cuup PRIVATE
|
||||
CONFIG_LIB ITTI SCTP_CLIENT
|
||||
GTPV1U e1ap e1_pdcp_if f1ap SIMU_ETH
|
||||
GTPV1U e1ap f1ap SIMU_ETH
|
||||
z sctp dl pthread shlib_loader ${T_LIB})
|
||||
target_link_libraries(nr-cuup PRIVATE asn1_lte_rrc_hdrs asn1_nr_rrc_hdrs)
|
||||
|
||||
@@ -2176,12 +2210,12 @@ add_executable(ldpctest
|
||||
${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/ldpctest.c
|
||||
)
|
||||
|
||||
add_dependencies( ldpctest ldpc_orig ldpc_optim ldpc_optim8seg ldpc ldpc_parityCheck)
|
||||
add_dependencies(ldpctest ldpc_orig ldpc_optim ldpc_optim8seg ldpc)
|
||||
if (ENABLE_LDPC_CUDA)
|
||||
add_dependencies(ldpctest ldpc_cuda)
|
||||
endif()
|
||||
target_link_libraries(ldpctest PRIVATE
|
||||
-Wl,--start-group UTIL SIMU PHY_NR PHY_COMMON PHY_NR_COMMON -Wl,--end-group
|
||||
-Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR_COMMON -Wl,--end-group
|
||||
m pthread dl shlib_loader ${T_LIB}
|
||||
)
|
||||
|
||||
@@ -2232,7 +2266,7 @@ add_executable(nr_dlsim
|
||||
${PHY_INTERFACE_DIR}/queue_t.c
|
||||
)
|
||||
target_link_libraries(nr_dlsim PRIVATE
|
||||
-Wl,--start-group UTIL SIMU SIMU_ETH PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_NR MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
|
||||
-Wl,--start-group UTIL SIMU SIMU_ETH PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
|
||||
m pthread ${T_LIB} ITTI dl shlib_loader
|
||||
)
|
||||
target_link_libraries(nr_dlsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
@@ -2271,12 +2305,12 @@ add_executable(nr_ulsim
|
||||
${PHY_INTERFACE_DIR}/queue_t.c
|
||||
)
|
||||
|
||||
if (ENABLE_LDPC_T1)
|
||||
add_dependencies(nr_ulsim ldpc_t1)
|
||||
if (ENABLE_LDPC_T2)
|
||||
add_dependencies(nr_ulsim ldpc_t2)
|
||||
endif()
|
||||
|
||||
target_link_libraries(nr_ulsim PRIVATE
|
||||
-Wl,--start-group UTIL SIMU SIMU_ETH PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_NR MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
|
||||
-Wl,--start-group UTIL SIMU SIMU_ETH PHY_COMMON PHY_NR_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB SCHED_NR_UE_LIB MAC_UE_NR MAC_NR_COMMON nr_rrc CONFIG_LIB L2_NR HASHTABLE x2ap SECURITY ngap -lz -Wl,--end-group
|
||||
m pthread ${T_LIB} ITTI dl shlib_loader
|
||||
)
|
||||
target_link_libraries(nr_ulsim PRIVATE asn1_nr_rrc_hdrs asn1_lte_rrc_hdrs)
|
||||
@@ -2338,9 +2372,9 @@ if (${T_TRACER})
|
||||
NFAPI_COMMON_LIB NFAPI_LIB NFAPI_PNF_LIB NFAPI_VNF_LIB NFAPI_USER_LIB
|
||||
MISC_NFAPI_LTE_LIB MISC_NFAPI_NR_LIB
|
||||
PHY_COMMON PHY PHY_UE PHY_NR PHY_NR_COMMON PHY_NR_UE PHY_RU PHY_MEX
|
||||
L2 L2_LTE L2_NR L2_LTE_NR L2_UE NR_L2_UE L2_UE_LTE_NR MAC_NR_COMMON MAC_NR MAC_UE_NR ngap
|
||||
L2 L2_LTE L2_NR L2_LTE_NR L2_UE NR_L2_UE L2_UE_LTE_NR MAC_NR_COMMON MAC_UE_NR ngap
|
||||
CN_UTILS GTPV1U SCTP_CLIENT MME_APP LIB_NAS_UE NB_IoT SIMU SIMU_ETH OPENAIR0_LIB
|
||||
ldpc_orig ldpc_optim ldpc_optim8seg ldpc dfts)
|
||||
ldpc_orig ldpc_optim ldpc_optim8seg ldpc_t2 ldpc_cl ldpc_cuda ldpc dfts config_internals)
|
||||
if (TARGET ${i})
|
||||
add_dependencies(${i} generate_T)
|
||||
endif()
|
||||
|
||||
@@ -16,8 +16,6 @@ Please refer to the steps described on our website: [How to contribute to OAI](h
|
||||
* This decision was made for the license reasons.
|
||||
* The Continuous Integration will reject your merge request.
|
||||
- All merge requests SHALL have `develop` branch as target branch.
|
||||
- All merge requests SHALL have source branch names that SHALL not contain the `/` character.
|
||||
* We are using a `docker` registry scheme and the image names are based on the source branch name.
|
||||
|
||||
## Coding Styles ##
|
||||
|
||||
|
||||
@@ -31,6 +31,9 @@ def do5Gtest = false
|
||||
//
|
||||
def gitCommitAuthorEmailAddr
|
||||
|
||||
// list of failing stages
|
||||
def failingStages = ""
|
||||
|
||||
pipeline {
|
||||
agent {
|
||||
label nodeExecutor
|
||||
@@ -117,44 +120,49 @@ pipeline {
|
||||
}
|
||||
}
|
||||
// Build Stages are Mandatory
|
||||
// Later we will add a Ubuntu20 build
|
||||
stage ("Image Building Processes") {
|
||||
when { expression {doBuild} }
|
||||
parallel {
|
||||
stage ("Ubuntu18-Image-Builder") {
|
||||
stage ("Ubuntu-Image-Builder") {
|
||||
steps {
|
||||
script {
|
||||
triggerSlaveJob ('RAN-Ubuntu18-Image-Builder', 'Ubuntu18-Image-Builder')
|
||||
triggerSlaveJob ('RAN-Ubuntu18-Image-Builder', 'Ubuntu-Image-Builder')
|
||||
}
|
||||
}
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-Ubuntu18-Image-Builder')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
ubuntuBuildStatus = finalizeSlaveJob('RAN-Ubuntu18-Image-Builder')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += ubuntuBuildStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("RHEL8-Cluster-Image-Builder") {
|
||||
stage ("RHEL-Cluster-Image-Builder") {
|
||||
steps {
|
||||
script {
|
||||
triggerSlaveJob ('RAN-RHEL8-Cluster-Image-Builder', 'RHEL8-Cluster-Image-Builder')
|
||||
triggerSlaveJob ('RAN-RHEL8-Cluster-Image-Builder', 'RHEL-Cluster-Image-Builder')
|
||||
}
|
||||
}
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-RHEL8-Cluster-Image-Builder')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
rhelBuildStatus = finalizeSlaveJob('RAN-RHEL8-Cluster-Image-Builder')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += rhelBuildStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -168,12 +176,37 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-cppcheck')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
cppcheckStatus = finalizeSlaveJob('RAN-cppcheck')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += cppcheckStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
stage ("ARM-Cross-Compile") {
|
||||
steps {
|
||||
script {
|
||||
triggerSlaveJob ('RAN-ARM-Cross-Compile-Builder', 'ARM-Cross-Compilation')
|
||||
}
|
||||
}
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
armBuildStatus = finalizeSlaveJob('RAN-ARM-Cross-Compile-Builder')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += armBuildStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -193,12 +226,15 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-PhySim-Cluster')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
physimStatus = finalizeSlaveJob('RAN-PhySim-Cluster')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += physimStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -213,12 +249,15 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-RF-Sim-Test-4G')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
rfSim4GStatus = finalizeSlaveJob('RAN-RF-Sim-Test-4G')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += rfSim4GStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -233,12 +272,15 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-RF-Sim-Test-5G')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
rfSim5GStatus = finalizeSlaveJob('RAN-RF-Sim-Test-5G')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += rfSim5GStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -253,12 +295,15 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-L2-Sim-Test-4G')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
l2Sim4GStatus = finalizeSlaveJob('RAN-L2-Sim-Test-4G')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += l2Sim4GStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -273,12 +318,15 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-L2-Sim-Test-5G')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
l2Sim5GStatus = finalizeSlaveJob('RAN-L2-Sim-Test-5G')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += l2Sim5GStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -293,12 +341,15 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-LTE-FDD-LTEBOX-Container')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
lteTDDB200Status = finalizeSlaveJob('RAN-LTE-FDD-LTEBOX-Container')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += lteTDDB200Status
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -314,12 +365,15 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-LTE-FDD-OAIUE-OAICN4G-Container')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
lteFDDB200OAIUEStatus = finalizeSlaveJob('RAN-LTE-FDD-OAIUE-OAICN4G-Container')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += lteFDDB200OAIUEStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -334,12 +388,15 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-LTE-TDD-LTEBOX-Container')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
lteFDDB200Status = finalizeSlaveJob('RAN-LTE-TDD-LTEBOX-Container')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += lteFDDB200Status
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -354,12 +411,15 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-NSA-B200-Module-LTEBOX-Container')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
nsaTDDB200Status = finalizeSlaveJob('RAN-NSA-B200-Module-LTEBOX-Container')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += nsaTDDB200Status
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -374,12 +434,15 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-SA-B200-Module-SABOX-Container')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
saTDDB200Status = finalizeSlaveJob('RAN-SA-B200-Module-SABOX-Container')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += saTDDB200Status
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -394,12 +457,15 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-gNB-N300-Timing-Phytest-LDPC')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
phytestLDPCoffloadStatus = finalizeSlaveJob('RAN-gNB-N300-Timing-Phytest-LDPC')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += phytestLDPCoffloadStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -414,12 +480,15 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-LTE-TDD-2x2-Container')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
lteTDD2x2N3xxStatus = finalizeSlaveJob('RAN-LTE-TDD-2x2-Container')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += lteTDD2x2N3xxStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -434,12 +503,15 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-SA-AW2S-CN5G')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
saAW2SStatus = finalizeSlaveJob('RAN-SA-AW2S-CN5G')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += saAW2SStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -454,12 +526,15 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-Interop-F1')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
f1InteropStatus = finalizeSlaveJob('RAN-Interop-F1')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += f1InteropStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -474,12 +549,15 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('OAI-CN5G-COTS-UE-Test')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
cn5gCOTSUESanityCheck = finalizeSlaveJob('OAI-CN5G-COTS-UE-Test')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += cn5gCOTSUESanityCheck
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -494,12 +572,15 @@ pipeline {
|
||||
post {
|
||||
always {
|
||||
script {
|
||||
finalizeSlaveJob('RAN-SA-OAIUE-CN5G')
|
||||
// Using a unique variable name for each test stage to avoid overwriting on a global variable
|
||||
// due to parallel-time concurrency
|
||||
saOAIUEStatus = finalizeSlaveJob('RAN-SA-OAIUE-CN5G')
|
||||
}
|
||||
}
|
||||
failure {
|
||||
script {
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += saOAIUEStatus
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -518,6 +599,7 @@ pipeline {
|
||||
script {
|
||||
echo "Push to Docker-Hub KO"
|
||||
currentBuild.result = 'FAILURE'
|
||||
failingStages += '\n * RAN-DockerHub-Push'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -541,7 +623,8 @@ pipeline {
|
||||
script {
|
||||
def message = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): failed (" + BUILD_URL + ")"
|
||||
if ("MERGE".equals(env.gitlabActionType)) {
|
||||
addGitLabMRComment comment: message
|
||||
def fullMessage = message + '\n\nList of failing test stages:' + failingStages
|
||||
addGitLabMRComment comment: fullMessage
|
||||
def message2 = message + " -- MergeRequest #" + env.gitlabMergeRequestIid + " (" + env.gitlabMergeRequestTitle + ")"
|
||||
sendSocialMediaMessage('ci-enb', 'danger', message2)
|
||||
} else {
|
||||
@@ -589,6 +672,7 @@ def triggerCN5GSlaveJob (jobName, gitlabStatusName) {
|
||||
if ("MERGE".equals(env.gitlabActionType)) {
|
||||
shortenShaOne = sh returnStdout: true, script: 'git log -1 --pretty=format:"%h" --abbrev=8 ' + env.gitlabMergeRequestLastCommit
|
||||
shortenShaOne = shortenShaOne.trim()
|
||||
branchName = env.gitlabSourceBranch.replaceAll("/", "-").trim()
|
||||
fullRanTag = 'porcepix.sboai.cs.eurecom.fr/oai-gnb:' + env.gitlabSourceBranch + '-' + shortenShaOne
|
||||
} else {
|
||||
shortenShaOne = sh returnStdout: true, script: 'git log -1 --pretty=format:"%h" --abbrev=8 ' + env.GIT_COMMIT
|
||||
@@ -643,21 +727,29 @@ def triggerSlaveJobNoGitLab (jobName) {
|
||||
}
|
||||
|
||||
def finalizeSlaveJob(jobName) {
|
||||
// In case of any non-success, we are retrieving the HTML report of the last completed
|
||||
// slave job. The only drop-back is that we may retrieve the HTML report of a previous build
|
||||
if (jobName == 'OAI-CN5G-COTS-UE-Test') {
|
||||
fileName = "test_results_oai_cn5g_cots_ue.html"
|
||||
} else {
|
||||
fileName = "test_results-${jobName}.html"
|
||||
}
|
||||
if (!fileExists(fileName)) {
|
||||
copyArtifacts(projectName: jobName,
|
||||
filter: 'test_results*.html',
|
||||
selector: lastCompleted())
|
||||
if (fileExists(fileName)) {
|
||||
sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' ${fileName}"
|
||||
archiveArtifacts artifacts: fileName
|
||||
lock ('Parent-Lock') {
|
||||
// In case of any non-success, we are retrieving the HTML report of the last completed
|
||||
// slave job. The only drop-back is that we may retrieve the HTML report of a previous build
|
||||
if (jobName == 'OAI-CN5G-COTS-UE-Test') {
|
||||
fileName = "test_results_oai_cn5g_cots_ue.html"
|
||||
} else {
|
||||
fileName = "test_results-${jobName}.html"
|
||||
}
|
||||
artifactUrl = BUILD_URL
|
||||
if (!fileExists(fileName)) {
|
||||
copyArtifacts(projectName: jobName,
|
||||
filter: 'test_results*.html',
|
||||
selector: lastCompleted())
|
||||
if (fileExists(fileName)) {
|
||||
sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' ${fileName}"
|
||||
archiveArtifacts artifacts: fileName
|
||||
// BUILD_URL is like http://server:port/jenkins/job/foo/15/
|
||||
// no need to add a prefixed '/'
|
||||
artifactUrl += 'artifact/' + fileName
|
||||
}
|
||||
}
|
||||
artifactUrl = "\n * [${jobName}](${artifactUrl})"
|
||||
return artifactUrl
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -67,6 +67,13 @@ pipeline {
|
||||
}
|
||||
|
||||
stages {
|
||||
stage("Build Init") {
|
||||
steps {
|
||||
// update the build name and description
|
||||
buildName "${params.eNB_MR}"
|
||||
buildDescription "Branch : ${params.eNB_Branch}"
|
||||
}
|
||||
}
|
||||
stage ('Verify Parameters') {
|
||||
steps {
|
||||
script {
|
||||
|
||||
@@ -61,6 +61,13 @@ pipeline {
|
||||
}
|
||||
|
||||
stages {
|
||||
stage("Build Init") {
|
||||
steps {
|
||||
// update the build name and description
|
||||
buildName "${params.eNB_MR}"
|
||||
buildDescription "Branch : ${params.eNB_Branch}"
|
||||
}
|
||||
}
|
||||
stage ('Verify Parameters') {
|
||||
steps {
|
||||
script {
|
||||
|
||||
@@ -61,6 +61,13 @@ pipeline {
|
||||
}
|
||||
|
||||
stages {
|
||||
stage("Build Init") {
|
||||
steps {
|
||||
// update the build name and description
|
||||
buildName "${params.eNB_MR}"
|
||||
buildDescription "Branch : ${params.eNB_Branch}"
|
||||
}
|
||||
}
|
||||
stage ('Verify Parameters') {
|
||||
steps {
|
||||
script {
|
||||
|
||||
@@ -66,6 +66,13 @@ pipeline {
|
||||
}
|
||||
|
||||
stages {
|
||||
stage("Build Init") {
|
||||
steps {
|
||||
// update the build name and description
|
||||
buildName "${params.eNB_MR}"
|
||||
buildDescription "Branch : ${params.eNB_Branch}"
|
||||
}
|
||||
}
|
||||
stage ("Verify Parameters") {
|
||||
steps {
|
||||
script {
|
||||
|
||||
@@ -54,6 +54,13 @@ pipeline {
|
||||
lock(extra: lockResources)
|
||||
}
|
||||
stages {
|
||||
stage("Build Init") {
|
||||
steps {
|
||||
// update the build name and description
|
||||
buildName "${params.eNB_MR}"
|
||||
buildDescription "Branch : ${params.eNB_Branch}"
|
||||
}
|
||||
}
|
||||
stage ("Verify Parameters") {
|
||||
steps {
|
||||
script {
|
||||
|
||||
@@ -66,32 +66,14 @@ pipeline {
|
||||
ansiColor('xterm')
|
||||
lock(extra: lockResources)
|
||||
}
|
||||
// the following parameter options are commented out so it shows the ones
|
||||
// that you SHALL have to run the job.
|
||||
// You can use them as template
|
||||
/*
|
||||
parameters {
|
||||
//node-test parameters
|
||||
string(name: 'pythonExecutor', defaultValue: 'nodea', description: 'Node where the pipeline - python scripts will be executed')
|
||||
string(name: 'pythonTestXmlFile', defaultValue: 'enb_usrpB210_band7_50PRB.xml', description: 'Location of the Test XML to be run')
|
||||
string(name: 'pipelineTestStageName', defaultValue: 'Test COTS-UE - OAI eNB - LTEBOX EPC', description: 'Naming of the Test Stage')
|
||||
booleanParam(name: 'pipelineZipsConsoleLog', defaultValue: 'True', description: 'If true, the pipeline script retrieves the job console log, zips it and archives it as artifact')
|
||||
string(name: 'lockResources', defaultValue: 'CI-Bench-1-Phones', description: 'Lockeable Resource to prevent multiple jobs to run simultaneously with the same resource')
|
||||
|
||||
//eNB parameters
|
||||
string(name: 'eNB_IPAddress', defaultValue: '192.168.XX.XX', description: 'IP Address of eNB')
|
||||
credentials(name: 'eNB_Credentials', defaultValue: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX', credentialType: "Username with password", required: true, description: 'Credentials for eNB')
|
||||
string(name: 'eNB_SourceCodePath', defaultValue: '/tmp/CI-enb', description: 'Full path of eNB source code')
|
||||
|
||||
//EPC parameters
|
||||
string(name: 'EPC_IPAddress', defaultValue: '192.168.XX.XX', description: 'IP Address of EPC')
|
||||
string(name: 'EPC_Type', defaultValue: 'ltebox', description: 'EPC type: OAI or ltebox')
|
||||
credentials(name: 'EPC_Credentials', defaultValue: 'XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX', credentialType: "Username with password", required: true, description: 'Credentials for EPC')
|
||||
string(name: 'EPC_SourceCodePath', defaultValue: '/tmp/CI-enb', description: 'Full path of EPC source code')
|
||||
}
|
||||
*/
|
||||
|
||||
stages {
|
||||
stage("Build Init") {
|
||||
steps {
|
||||
// update the build name and description
|
||||
buildName "${params.eNB_MR}"
|
||||
buildDescription "Branch : ${params.eNB_Branch}"
|
||||
}
|
||||
}
|
||||
stage ("Verify Parameters") {
|
||||
steps {
|
||||
script {
|
||||
|
||||
@@ -49,75 +49,75 @@ adb_ue_2:
|
||||
|
||||
amarisoft_ue:
|
||||
Host: amariue
|
||||
InitScript: /root/2023-06-10/lteue-linux-2023-06-10/lteue /root/oaicicd/ran_sa_aw2s_asue/aw2s-multi-20897-2x2.cfg &
|
||||
TermScript: /root/2023-06-10/libs/ws.js -t 10 127.0.0.1:9002 '{"message":"quit"}' || killall -KILL lteue-avx2
|
||||
InitScript: /root/lteue-linux-2023-10-27/ue/lteue /root/oaicicd/ran_sa_aw2s_asue/aw2s-multi-20897-2x2.cfg &
|
||||
TermScript: /root/2023-10-27/libs/ws.js -t 10 127.0.0.1:9002 '{"message":"quit"}' || killall -KILL lteue-avx2
|
||||
amarisoft_ue_1:
|
||||
Host: amariue
|
||||
AttachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":1}'
|
||||
DetachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":1}'
|
||||
AttachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":1}'
|
||||
DetachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":1}'
|
||||
NetworkScript: ip netns exec ue1 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue1
|
||||
MTU: 1500
|
||||
amarisoft_ue_2:
|
||||
Host: amariue
|
||||
AttachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":2}'
|
||||
DetachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":2}'
|
||||
AttachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":2}'
|
||||
DetachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":2}'
|
||||
NetworkScript: ip netns exec ue2 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue2
|
||||
MTU: 1500
|
||||
amarisoft_ue_3:
|
||||
Host: amariue
|
||||
AttachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":3}'
|
||||
DetachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":3}'
|
||||
AttachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":3}'
|
||||
DetachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":3}'
|
||||
NetworkScript: ip netns exec ue3 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue3
|
||||
MTU: 1500
|
||||
amarisoft_ue_4:
|
||||
Host: amariue
|
||||
AttachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":4}'
|
||||
DetachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":4}'
|
||||
AttachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":4}'
|
||||
DetachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":4}'
|
||||
NetworkScript: ip netns exec ue4 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue4
|
||||
MTU: 1500
|
||||
amarisoft_ue_5:
|
||||
Host: amariue
|
||||
AttachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":5}'
|
||||
DetachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":5}'
|
||||
AttachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":5}'
|
||||
DetachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":5}'
|
||||
NetworkScript: ip netns exec ue5 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue5
|
||||
MTU: 1500
|
||||
amarisoft_ue_6:
|
||||
Host: amariue
|
||||
AttachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":6}'
|
||||
DetachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":6}'
|
||||
AttachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":6}'
|
||||
DetachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":6}'
|
||||
NetworkScript: ip netns exec ue6 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue6
|
||||
MTU: 1500
|
||||
amarisoft_ue_7:
|
||||
Host: amariue
|
||||
AttachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":7}'
|
||||
DetachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":7}'
|
||||
AttachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":7}'
|
||||
DetachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":7}'
|
||||
NetworkScript: ip netns exec ue7 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue7
|
||||
MTU: 1500
|
||||
amarisoft_ue_8:
|
||||
Host: amariue
|
||||
AttachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":8}'
|
||||
DetachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":8}'
|
||||
AttachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":8}'
|
||||
DetachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":8}'
|
||||
NetworkScript: ip netns exec ue8 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue8
|
||||
MTU: 1500
|
||||
amarisoft_ue_9:
|
||||
Host: amariue
|
||||
AttachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":9}'
|
||||
DetachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":9}'
|
||||
AttachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":9}'
|
||||
DetachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":9}'
|
||||
NetworkScript: ip netns exec ue9 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue9
|
||||
MTU: 1500
|
||||
amarisoft_ue_10:
|
||||
Host: amariue
|
||||
AttachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":10}'
|
||||
DetachScript: /root/2023-06-10/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":10}'
|
||||
AttachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_on","ue_id":10}'
|
||||
DetachScript: /root/2023-10-27/libs/ws.js 127.0.0.1:9002 '{"message":"power_off","ue_id":10}'
|
||||
NetworkScript: ip netns exec ue10 ip a show dev pdn0
|
||||
CmdPrefix: ip netns exec ue10
|
||||
MTU: 1500
|
||||
@@ -161,6 +161,78 @@ rfsim5g_ue2:
|
||||
DetachScript: docker stop rfsim5g-oai-nr-ue2
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ue3:
|
||||
Host: localhost
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue3 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue3
|
||||
IF: oaitun_ue1
|
||||
AttachScript: docker start rfsim5g-oai-nr-ue3
|
||||
DetachScript: docker stop rfsim5g-oai-nr-ue3
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ue4:
|
||||
Host: localhost
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue4 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue4
|
||||
IF: oaitun_ue1
|
||||
AttachScript: docker start rfsim5g-oai-nr-ue4
|
||||
DetachScript: docker stop rfsim5g-oai-nr-ue4
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ue5:
|
||||
Host: localhost
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue5 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue5
|
||||
IF: oaitun_ue1
|
||||
AttachScript: docker start rfsim5g-oai-nr-ue5
|
||||
DetachScript: docker stop rfsim5g-oai-nr-ue5
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ue6:
|
||||
Host: localhost
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue6 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue6
|
||||
IF: oaitun_ue1
|
||||
AttachScript: docker start rfsim5g-oai-nr-ue6
|
||||
DetachScript: docker stop rfsim5g-oai-nr-ue6
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ue7:
|
||||
Host: localhost
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue7 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue7
|
||||
IF: oaitun_ue1
|
||||
AttachScript: docker start rfsim5g-oai-nr-ue7
|
||||
DetachScript: docker stop rfsim5g-oai-nr-ue7
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ue8:
|
||||
Host: localhost
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue8 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue8
|
||||
IF: oaitun_ue1
|
||||
AttachScript: docker start rfsim5g-oai-nr-ue8
|
||||
DetachScript: docker stop rfsim5g-oai-nr-ue8
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ue9:
|
||||
Host: localhost
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue9 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue9
|
||||
IF: oaitun_ue1
|
||||
AttachScript: docker start rfsim5g-oai-nr-ue9
|
||||
DetachScript: docker stop rfsim5g-oai-nr-ue9
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ue10:
|
||||
Host: localhost
|
||||
NetworkScript: docker exec rfsim5g-oai-nr-ue10 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec rfsim5g-oai-nr-ue10
|
||||
IF: oaitun_ue1
|
||||
AttachScript: docker start rfsim5g-oai-nr-ue10
|
||||
DetachScript: docker stop rfsim5g-oai-nr-ue10
|
||||
MTU: 1500
|
||||
|
||||
rfsim5g_ext_dn:
|
||||
Host: localhost
|
||||
NetworkScript: docker exec rfsim5g-oai-ext-dn ip a show dev eth0
|
||||
@@ -185,9 +257,12 @@ rfsim4g_enb_nos1:
|
||||
|
||||
l2sim5g_ue:
|
||||
Host: localhost
|
||||
AttachScript: docker start l2sim-oai-nr-ue0
|
||||
DetachScript: docker stop l2sim-oai-nr-ue0
|
||||
NetworkScript: docker exec l2sim-oai-nr-ue0 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec l2sim-oai-nr-ue0
|
||||
IF: oaitun_ue1
|
||||
MTU: 1500
|
||||
|
||||
l2sim5g_ext_dn:
|
||||
Host: localhost
|
||||
@@ -196,9 +271,12 @@ l2sim5g_ext_dn:
|
||||
|
||||
l2sim4g_ue:
|
||||
Host: localhost
|
||||
AttachScript: docker start l2sim4g-oai-lte-ue1
|
||||
DetachScript: docker stop l2sim4g-oai-lte-ue1
|
||||
NetworkScript: docker exec l2sim4g-oai-lte-ue1 ip a show dev oaitun_ue1
|
||||
CmdPrefix: docker exec l2sim4g-oai-lte-ue1
|
||||
IF: oaitun_ue1
|
||||
MTU: 1500
|
||||
|
||||
l2sim4g_ext_dn:
|
||||
Host: localhost
|
||||
|
||||
@@ -266,7 +266,8 @@ class Cluster:
|
||||
baseTag = 'develop'
|
||||
forceBaseImageBuild = False
|
||||
if self.ranAllowMerge: # merging MR branch into develop -> temporary image
|
||||
imageTag = f'{self.ranBranch}-{self.ranCommitID[0:8]}'
|
||||
branchName = self.ranBranch.replace('/','-')
|
||||
imageTag = f'{branchName}-{self.ranCommitID[0:8]}'
|
||||
if self.ranTargetBranch == 'develop':
|
||||
ret = self.cmd.run(f'git diff HEAD..origin/develop -- cmake_targets/build_oai cmake_targets/tools/build_helper docker/Dockerfile.base.rhel9 | grep --colour=never -i INDEX')
|
||||
result = re.search('index', ret.stdout)
|
||||
@@ -412,7 +413,6 @@ class Cluster:
|
||||
imageSize = {}
|
||||
for image in attemptedImages:
|
||||
self.cmd.run(f'mkdir -p cmake_targets/log/{image}')
|
||||
self.cmd.run(f'python3 ci-scripts/docker_log_split.py --logfilename=cmake_targets/log/{image}.log')
|
||||
tag = imageTag if image != 'ran-base' else baseTag
|
||||
size = self._get_image_size(image, tag)
|
||||
if size <= 0:
|
||||
|
||||
@@ -58,7 +58,7 @@ import cls_oaicitest
|
||||
# Helper functions used here and in other classes
|
||||
# (e.g., cls_cluster.py)
|
||||
#-----------------------------------------------------------
|
||||
IMAGES = ['oai-enb', 'oai-lte-ru', 'oai-lte-ue', 'oai-gnb', 'oai-nr-cuup', 'oai-gnb-aw2s', 'oai-nr-ue']
|
||||
IMAGES = ['oai-enb', 'oai-lte-ru', 'oai-lte-ue', 'oai-gnb', 'oai-nr-cuup', 'oai-gnb-aw2s', 'oai-nr-ue', 'oai-gnb-asan', 'oai-nr-ue-asan', 'oai-nr-cuup-asan']
|
||||
|
||||
def CreateWorkspace(sshSession, sourcePath, ranRepository, ranCommitID, ranTargetBranch, ranAllowMerge):
|
||||
if ranCommitID == '':
|
||||
@@ -97,7 +97,9 @@ def CreateWorkspace(sshSession, sourcePath, ranRepository, ranCommitID, ranTarge
|
||||
def ImageTagToUse(imageName, ranCommitID, ranBranch, ranAllowMerge):
|
||||
shortCommit = ranCommitID[0:8]
|
||||
if ranAllowMerge:
|
||||
tagToUse = f'{ranBranch}-{shortCommit}'
|
||||
# Allowing contributor to have a name/branchName format
|
||||
branchName = ranBranch.replace('/','-')
|
||||
tagToUse = f'{branchName}-{shortCommit}'
|
||||
else:
|
||||
tagToUse = f'develop-{shortCommit}'
|
||||
fullTag = f'{imageName}:{tagToUse}'
|
||||
@@ -153,17 +155,13 @@ def AnalyzeBuildLogs(buildRoot, images, globalStatus):
|
||||
committed = False
|
||||
tagged = False
|
||||
with open(f'{buildRoot}/{image}.log', mode='r') as inputfile:
|
||||
startOfTargetImageCreation = False # check for tagged/committed only after image created
|
||||
for line in inputfile:
|
||||
result = re.search(f'FROM .* [aA][sS] {image}$', str(line))
|
||||
if result is not None:
|
||||
startOfTargetImageCreation = True
|
||||
if startOfTargetImageCreation:
|
||||
lineHasTag = re.search(f'Successfully tagged {image}:', str(line)) is not None
|
||||
tagged = tagged or lineHasTag
|
||||
# the OpenShift Cluster builder prepends image registry URL
|
||||
lineHasCommit = re.search(f'COMMIT [a-zA-Z0-9\.:/\-]*{image}', str(line)) is not None
|
||||
committed = committed or lineHasCommit
|
||||
lineHasTag = re.search(f'Successfully tagged {image}:', str(line)) is not None
|
||||
lineHasTag2 = re.search(f'naming to docker.io/library/{image}:', str(line)) is not None
|
||||
tagged = tagged or lineHasTag or lineHasTag2
|
||||
# the OpenShift Cluster builder prepends image registry URL
|
||||
lineHasCommit = re.search(f'COMMIT [a-zA-Z0-9\.:/\-]*{image}', str(line)) is not None
|
||||
committed = committed or lineHasCommit
|
||||
errorandwarnings['errors'] = 0 if committed or tagged else 1
|
||||
errorandwarnings['warnings'] = 0
|
||||
errorandwarnings['status'] = committed or tagged
|
||||
@@ -291,6 +289,7 @@ class Containerize():
|
||||
self.proxyCommit = None
|
||||
self.eNB_instance = 0
|
||||
self.eNB_serverId = ['', '', '']
|
||||
self.deployKind = [True, True, True]
|
||||
self.yamlPath = ['', '', '']
|
||||
self.services = ['', '', '']
|
||||
self.nb_healthy = [0, 0, 0]
|
||||
@@ -365,27 +364,33 @@ class Containerize():
|
||||
self.cliBuildOptions = '--no-cache --disable-compression'
|
||||
|
||||
# we always build the ran-build image with all targets
|
||||
imageNames = [('ran-build', 'build')]
|
||||
# Creating a tupple with the imageName, the DockerFile prefix pattern, targetName and sanitized option
|
||||
imageNames = [('ran-build', 'build', 'ran-build', '')]
|
||||
result = re.search('eNB', self.imageKind)
|
||||
# Creating a tupple with the imageName and the DockerFile prefix pattern on obelix
|
||||
if result is not None:
|
||||
imageNames.append(('oai-enb', 'eNB'))
|
||||
else:
|
||||
result = re.search('gNB', self.imageKind)
|
||||
if result is not None:
|
||||
imageNames.append(('oai-gnb', 'gNB'))
|
||||
else:
|
||||
result = re.search('all', self.imageKind)
|
||||
if result is not None:
|
||||
imageNames.append(('oai-enb', 'eNB'))
|
||||
imageNames.append(('oai-gnb', 'gNB'))
|
||||
imageNames.append(('oai-nr-cuup', 'nr-cuup'))
|
||||
imageNames.append(('oai-lte-ue', 'lteUE'))
|
||||
imageNames.append(('oai-nr-ue', 'nrUE'))
|
||||
if self.host == 'Red Hat':
|
||||
imageNames.append(('oai-physim', 'phySim'))
|
||||
if self.host == 'Ubuntu':
|
||||
imageNames.append(('oai-lte-ru', 'lteRU'))
|
||||
imageNames.append(('oai-enb', 'eNB', 'oai-enb', ''))
|
||||
result = re.search('gNB', self.imageKind)
|
||||
if result is not None:
|
||||
imageNames.append(('oai-gnb', 'gNB', 'oai-gnb', ''))
|
||||
result = re.search('all', self.imageKind)
|
||||
if result is not None:
|
||||
imageNames.append(('oai-enb', 'eNB', 'oai-enb', ''))
|
||||
imageNames.append(('oai-gnb', 'gNB', 'oai-gnb', ''))
|
||||
imageNames.append(('oai-nr-cuup', 'nr-cuup', 'oai-nr-cuup', ''))
|
||||
imageNames.append(('oai-lte-ue', 'lteUE', 'oai-lte-ue', ''))
|
||||
imageNames.append(('oai-nr-ue', 'nrUE', 'oai-nr-ue', ''))
|
||||
if self.host == 'Red Hat':
|
||||
imageNames.append(('oai-physim', 'phySim', 'oai-physim', ''))
|
||||
if self.host == 'Ubuntu':
|
||||
imageNames.append(('oai-lte-ru', 'lteRU', 'oai-lte-ru', ''))
|
||||
# Building again the 5G images with Address Sanitizer
|
||||
imageNames.append(('ran-build', 'build', 'ran-build-asan', '--build-arg "BUILD_OPTION=--sanitize"'))
|
||||
imageNames.append(('oai-gnb', 'gNB', 'oai-gnb-asan', '--build-arg "BUILD_OPTION=--sanitize"'))
|
||||
imageNames.append(('oai-nr-ue', 'nrUE', 'oai-nr-ue-asan', '--build-arg "BUILD_OPTION=--sanitize"'))
|
||||
imageNames.append(('oai-nr-cuup', 'nr-cuup', 'oai-nr-cuup-asan', '--build-arg "BUILD_OPTION=--sanitize"'))
|
||||
result = re.search('build_cross_arm64', self.imageKind)
|
||||
if result is not None:
|
||||
self.dockerfileprefix = '.ubuntu20.cross-arm64'
|
||||
|
||||
# Workaround for some servers, we need to erase completely the workspace
|
||||
if self.forcedWorkspaceCleanup:
|
||||
@@ -421,8 +426,8 @@ class Containerize():
|
||||
cmd.run(f"{self.cli} image prune --force")
|
||||
if forceBaseImageBuild:
|
||||
cmd.run(f"{self.cli} image rm {baseImage}:{baseTag}")
|
||||
for image,pattern in imageNames:
|
||||
cmd.run(f"{self.cli} image rm {image}:{imageTag}")
|
||||
for image,pattern,name,option in imageNames:
|
||||
cmd.run(f"{self.cli} image rm {name}:{imageTag}")
|
||||
|
||||
# Build the base image only on Push Events (not on Merge Requests)
|
||||
# On when the base image docker file is being modified.
|
||||
@@ -434,7 +439,7 @@ class Containerize():
|
||||
if ret.returncode != 0:
|
||||
logging.error('\u001B[1m Could not build properly ran-base\u001B[0m')
|
||||
# Recover the name of the failed container?
|
||||
cmd.run(f"{self.cli} ps --quiet --filter \"status=exited\" -n1 | xargs {self.cli} rm -f")
|
||||
cmd.run(f"{self.cli} ps --quiet --filter \"status=exited\" -n1 | xargs --no-run-if-empty {self.cli} rm -f")
|
||||
cmd.run(f"{self.cli} image prune --force")
|
||||
cmd.close()
|
||||
logging.error('\u001B[1m Building OAI Images Failed\u001B[0m')
|
||||
@@ -460,43 +465,50 @@ class Containerize():
|
||||
# Build the target image(s)
|
||||
status = True
|
||||
attemptedImages = ['ran-base']
|
||||
for image,pattern in imageNames:
|
||||
attemptedImages += [image]
|
||||
for image,pattern,name,option in imageNames:
|
||||
attemptedImages += [name]
|
||||
# the archived Dockerfiles have "ran-base:latest" as base image
|
||||
# we need to update them with proper tag
|
||||
cmd.run(f'git checkout -- docker/Dockerfile.{pattern}{self.dockerfileprefix}')
|
||||
cmd.run(f'sed -i -e "s#{baseImage}:latest#{baseImage}:{baseTag}#" docker/Dockerfile.{pattern}{self.dockerfileprefix}')
|
||||
if image != 'ran-build':
|
||||
# target images should use the proper ran-build image
|
||||
if image != 'ran-build' and "-asan" in name:
|
||||
cmd.run(f'sed -i -e "s#ran-build:latest#ran-build-asan:{imageTag}#" docker/Dockerfile.{pattern}{self.dockerfileprefix}')
|
||||
elif image != 'ran-build':
|
||||
cmd.run(f'sed -i -e "s#ran-build:latest#ran-build:{imageTag}#" docker/Dockerfile.{pattern}{self.dockerfileprefix}')
|
||||
cmd.run(f'{self.cli} build {self.cliBuildOptions} --target {image} --tag {image}:{imageTag} --file docker/Dockerfile.{pattern}{self.dockerfileprefix} . > cmake_targets/log/{image}.log 2>&1', timeout=1200)
|
||||
# split the log
|
||||
cmd.run(f"mkdir -p cmake_targets/log/{image}")
|
||||
cmd.run(f"python3 ci-scripts/docker_log_split.py --logfilename=cmake_targets/log/{image}.log")
|
||||
ret = cmd.run(f'{self.cli} build {self.cliBuildOptions} --target {image} --tag {name}:{imageTag} --file docker/Dockerfile.{pattern}{self.dockerfileprefix} {option} . > cmake_targets/log/{name}.log 2>&1', timeout=1200)
|
||||
if image == 'ran-build' and ret.returncode == 0:
|
||||
cmd.run(f"docker run --name test-log -d {name}:{imageTag} /bin/true")
|
||||
cmd.run(f"docker cp test-log:/oai-ran/cmake_targets/log/ cmake_targets/log/{name}/")
|
||||
cmd.run(f"docker rm -f test-log")
|
||||
else:
|
||||
cmd.run(f"mkdir -p cmake_targets/log/{name}")
|
||||
# check the status of the build
|
||||
ret = cmd.run(f"{self.cli} image inspect --format=\'Size = {{{{.Size}}}} bytes\' {image}:{imageTag}")
|
||||
ret = cmd.run(f"{self.cli} image inspect --format=\'Size = {{{{.Size}}}} bytes\' {name}:{imageTag}")
|
||||
if ret.returncode != 0:
|
||||
logging.error('\u001B[1m Could not build properly ' + image + '\u001B[0m')
|
||||
logging.error('\u001B[1m Could not build properly ' + name + '\u001B[0m')
|
||||
status = False
|
||||
# Here we should check if the last container corresponds to a failed command and destroy it
|
||||
cmd.run(f"{self.cli} ps --quiet --filter \"status=exited\" -n1 | xargs {self.cli} rm -f")
|
||||
allImagesSize[image] = 'N/A -- Build Failed'
|
||||
cmd.run(f"{self.cli} ps --quiet --filter \"status=exited\" -n1 | xargs --no-run-if-empty {self.cli} rm -f")
|
||||
allImagesSize[name] = 'N/A -- Build Failed'
|
||||
break
|
||||
else:
|
||||
result = re.search('Size *= *(?P<size>[0-9\-]+) *bytes', cmd.getBefore())
|
||||
if result is not None:
|
||||
size = float(result.group("size")) / 1000000 # convert to MB
|
||||
imageSizeStr = f'{size:.1f}'
|
||||
logging.debug(f'\u001B[1m {image} size is {imageSizeStr} Mbytes\u001B[0m')
|
||||
allImagesSize[image] = f'{imageSizeStr} Mbytes'
|
||||
logging.debug(f'\u001B[1m {name} size is {imageSizeStr} Mbytes\u001B[0m')
|
||||
allImagesSize[name] = f'{imageSizeStr} Mbytes'
|
||||
else:
|
||||
logging.debug(f'{image} size is unknown')
|
||||
allImagesSize[image] = 'unknown'
|
||||
logging.debug(f'{name} size is unknown')
|
||||
allImagesSize[name] = 'unknown'
|
||||
# Now pruning dangling images in between target builds
|
||||
cmd.run(f"{self.cli} image prune --force")
|
||||
|
||||
# Remove all intermediate build images and clean up
|
||||
if self.ranAllowMerge and forceBaseImageBuild:
|
||||
cmd.run(f"{self.cli} image rm {baseImage}:{baseTag}")
|
||||
cmd.run(f"{self.cli} image rm ran-build:{imageTag}")
|
||||
cmd.run(f"{self.cli} image rm ran-build:{imageTag} ran-build-asan:{imageTag}")
|
||||
cmd.run(f"{self.cli} volume prune --force")
|
||||
|
||||
# create a zip with all logs
|
||||
@@ -695,10 +707,11 @@ class Containerize():
|
||||
orgTag = 'develop'
|
||||
if self.ranAllowMerge:
|
||||
orgTag = 'ci-temp'
|
||||
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup']
|
||||
for image in imageNames:
|
||||
for image in IMAGES:
|
||||
tagToUse = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||
mySSH.command(f'docker image tag {image}:{orgTag} {imagePrefix}/{tagToUse}', '\$', 5)
|
||||
if re.search('Error response from daemon: No such image:', mySSH.getBefore()) is not None:
|
||||
continue
|
||||
mySSH.command(f'docker push {imagePrefix}/{tagToUse}', '\$', 120)
|
||||
if re.search(': digest:', mySSH.getBefore()) is None:
|
||||
logging.debug(mySSH.getBefore())
|
||||
@@ -833,6 +846,7 @@ class Containerize():
|
||||
HELP.GenericHelp(CONST.Version)
|
||||
sys.exit('Insufficient Parameter')
|
||||
logging.debug('\u001B[1m Deploying OAI Object on server: ' + lIpAddr + '\u001B[0m')
|
||||
self.deployKind[self.eNB_instance] = True
|
||||
|
||||
mySSH = SSH.SSHConnection()
|
||||
mySSH.open(lIpAddr, lUserName, lPassWord)
|
||||
@@ -986,14 +1000,11 @@ class Containerize():
|
||||
for svcName in services:
|
||||
# head -n -1 suppresses the final "X exited with status code Y"
|
||||
filename = f'{svcName}-{HTML.testCase_id}.log'
|
||||
#mySSH.command(f'docker-compose -f ci-docker-compose.yml logs --no-log-prefix -- {svcName} | head -n -1 &> {lSourcePath}/cmake_targets/log/{filename}', '\$', 30)
|
||||
mySSH.command(f'docker-compose -f ci-docker-compose.yml logs --no-log-prefix -- {svcName} &> {lSourcePath}/cmake_targets/log/{filename}', '\$', 120)
|
||||
|
||||
mySSH.command('docker-compose -f ci-docker-compose.yml down', '\$', 5)
|
||||
# Cleaning any created tmp volume
|
||||
mySSH.command('docker volume prune --force', '\$', 20)
|
||||
|
||||
mySSH.command('docker-compose -f ci-docker-compose.yml down -v', '\$', 5)
|
||||
mySSH.close()
|
||||
|
||||
# Analyzing log file!
|
||||
files = ','.join([f'{s}-{HTML.testCase_id}' for s in services])
|
||||
if len(services) > 1:
|
||||
@@ -1038,6 +1049,7 @@ class Containerize():
|
||||
logging.debug('\u001B[1m Checking Services to deploy\u001B[0m')
|
||||
# Implicitly we are running locally
|
||||
myCmd = cls_cmd.LocalCmd(d = self.yamlPath[0])
|
||||
self.deployKind[0] = False
|
||||
cmd = 'docker-compose config --services'
|
||||
listServices = myCmd.run(cmd)
|
||||
if listServices.returncode != 0:
|
||||
@@ -1059,6 +1071,16 @@ class Containerize():
|
||||
imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup']
|
||||
for image in imageNames:
|
||||
tagToUse = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
|
||||
# In the scenario, for 5G images, we have the choice of either pulling normal images
|
||||
# or -asan images. We need to detect which kind we did pull.
|
||||
if image == 'oai-gnb' or image == 'oai-nr-ue' or image == 'oai-nr-cuup':
|
||||
ret = myCmd.run(f'docker image inspect oai-ci/{tagToUse}', reportNonZero=False, silent=self.displayedNewTags)
|
||||
if ret.returncode != 0:
|
||||
tagToUse = tagToUse.replace('oai-gnb', 'oai-gnb-asan')
|
||||
tagToUse = tagToUse.replace('oai-nr-ue', 'oai-nr-ue-asan')
|
||||
tagToUse = tagToUse.replace('oai-nr-cuup', 'oai-nr-cuup-asan')
|
||||
if not self.displayedNewTags:
|
||||
logging.debug(f'\u001B[1m Using sanitized version of {image} with {tagToUse}\u001B[0m')
|
||||
cmd = f'sed -i -e "s@oaisoftwarealliance/{image}:develop@oai-ci/{tagToUse}@" docker-compose-ci.yml'
|
||||
myCmd.run(cmd, silent=self.displayedNewTags)
|
||||
self.displayedNewTags = True
|
||||
@@ -1197,12 +1219,7 @@ class Containerize():
|
||||
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)
|
||||
for image in IMAGES:
|
||||
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
|
||||
myCmd.run(cmd)
|
||||
|
||||
# check which containers are running for log recovery later
|
||||
cmd = 'docker-compose -f docker-compose-ci.yml ps --all'
|
||||
@@ -1243,7 +1260,7 @@ class Containerize():
|
||||
fullStatus = True
|
||||
if anyLogs:
|
||||
# Analyzing log file(s)!
|
||||
listOfPossibleRanContainers = ['enb', 'gnb', 'cu', 'du']
|
||||
listOfPossibleRanContainers = ['enb*', 'gnb*', 'cu*', 'du*']
|
||||
for container in listOfPossibleRanContainers:
|
||||
filenames = './*-oai-' + container + '.log'
|
||||
cmd = f'ls {filenames}'
|
||||
@@ -1296,7 +1313,7 @@ class Containerize():
|
||||
|
||||
logging.debug('\u001B[1m Undeploying \u001B[0m')
|
||||
logging.debug(f'Working dir is back {self.yamlPath[0]}')
|
||||
cmd = 'docker-compose -f docker-compose-ci.yml down'
|
||||
cmd = 'docker-compose -f docker-compose-ci.yml down -v'
|
||||
deployStatus = myCmd.run(cmd, timeout=100)
|
||||
if deployStatus.returncode != 0:
|
||||
myCmd.close()
|
||||
@@ -1307,9 +1324,6 @@ class Containerize():
|
||||
return
|
||||
|
||||
self.deployedContainers = []
|
||||
# Cleaning any created tmp volume
|
||||
cmd = 'docker volume prune --force'
|
||||
deployStatus = myCmd.run(cmd, timeout=100, reportNonZero=False)
|
||||
myCmd.close()
|
||||
|
||||
if fullStatus:
|
||||
|
||||
@@ -43,7 +43,7 @@ import logging
|
||||
import datetime
|
||||
import signal
|
||||
import statistics as stat
|
||||
from multiprocessing import SimpleQueue
|
||||
from multiprocessing import SimpleQueue, Lock
|
||||
import concurrent.futures
|
||||
|
||||
#import our libs
|
||||
@@ -494,7 +494,7 @@ class OaiCiTest():
|
||||
messages = [f.result() for f in futures]
|
||||
HTML.CreateHtmlTestRowQueue('NA', 'OK', messages)
|
||||
|
||||
def Ping_common(self, EPC, ue, RAN):
|
||||
def Ping_common(self, EPC, ue, RAN, printLock):
|
||||
# Launch ping on the EPC side (true for ltebox and old open-air-cn)
|
||||
ping_status = 0
|
||||
ueIP = ue.getIP()
|
||||
@@ -519,6 +519,7 @@ class OaiCiTest():
|
||||
ping_cmd = f'{ue.getCmdPrefix()} ping {interface} {self.ping_args} 2>&1 | tee /tmp/{ping_log_file}'
|
||||
cmd = cls_cmd.getConnection(ue.getHost())
|
||||
response = cmd.run(ping_cmd, timeout=int(ping_time[0])*1.5)
|
||||
ue_header = f'UE {ue.getName()} ({ueIP})'
|
||||
if response.returncode != 0:
|
||||
message = ue_header + ': ping crashed: TIMEOUT?'
|
||||
logging.error('\u001B[1;37;41m ' + message + ' \u001B[0m')
|
||||
@@ -528,7 +529,6 @@ class OaiCiTest():
|
||||
cmd.copyin(src=f'/tmp/{ping_log_file}', tgt=local_ping_log_file)
|
||||
cmd.close()
|
||||
|
||||
ue_header = f'UE {ue.getName()} ({ueIP})'
|
||||
with open(local_ping_log_file, 'r') as f:
|
||||
ping_output = "".join(f.readlines())
|
||||
result = re.search(', (?P<packetloss>[0-9\.]+)% packet loss, time [0-9\.]+ms', ping_output)
|
||||
@@ -551,6 +551,8 @@ class OaiCiTest():
|
||||
avg_msg = f'RTT(Avg) : {rtt_avg} ms'
|
||||
max_msg = f'RTT(Max) : {rtt_max} ms'
|
||||
|
||||
# adding a lock for cleaner display in command line
|
||||
printLock.acquire()
|
||||
logging.info(f'\u001B[1;37;44m ping result for {ue_header} \u001B[0m')
|
||||
logging.info(f'\u001B[1;34m {pal_msg} \u001B[0m')
|
||||
logging.info(f'\u001B[1;34m {min_msg} \u001B[0m')
|
||||
@@ -563,6 +565,7 @@ class OaiCiTest():
|
||||
if float(packetloss) > float(self.ping_packetloss_threshold):
|
||||
message += '\nPacket Loss too high'
|
||||
logging.error(f'\u001B[1;37;41m Packet Loss too high; Target: {self.ping_packetloss_threshold}%\u001B[0m')
|
||||
printLock.release()
|
||||
return (False, message)
|
||||
elif float(packetloss) > 0:
|
||||
message += '\nPacket Loss is not 0%'
|
||||
@@ -573,7 +576,9 @@ class OaiCiTest():
|
||||
ping_rttavg_error_msg = f'RTT(Avg) too high: {rtt_avg} ms; Target: {self.ping_rttavg_threshold} ms'
|
||||
message += f'\n {ping_rttavg_error_msg}'
|
||||
logging.error('\u001B[1;37;41m'+ ping_rttavg_error_msg +' \u001B[0m')
|
||||
printLock.release()
|
||||
return (False, message)
|
||||
printLock.release()
|
||||
|
||||
return (True, message)
|
||||
|
||||
@@ -587,8 +592,9 @@ class OaiCiTest():
|
||||
|
||||
ues = [cls_module_ue.Module_UE(n.strip()) for n in self.ue_ids]
|
||||
logging.debug(ues)
|
||||
pingLock = Lock()
|
||||
with concurrent.futures.ThreadPoolExecutor() as executor:
|
||||
futures = [executor.submit(self.Ping_common, EPC, ue, RAN) for ue in ues]
|
||||
futures = [executor.submit(self.Ping_common, EPC, ue, RAN, pingLock) for ue in ues]
|
||||
results = [f.result() for f in futures]
|
||||
# each result in results is a tuple, first member goes to successes, second to messages
|
||||
successes, messages = map(list, zip(*results))
|
||||
@@ -1358,7 +1364,10 @@ class OaiCiTest():
|
||||
for instance in range(0, len(CONTAINERS.yamlPath)):
|
||||
if CONTAINERS.yamlPath[instance]!='':
|
||||
CONTAINERS.eNB_instance=instance
|
||||
CONTAINERS.UndeployObject(HTML,RAN)
|
||||
if CONTAINERS.deployKind[instance]:
|
||||
CONTAINERS.UndeployObject(HTML,RAN)
|
||||
else:
|
||||
CONTAINERS.UndeployGenObject(HTML,RAN, self)
|
||||
RAN.prematureExit=True
|
||||
|
||||
#this function is called only if eNB/gNB fails to start
|
||||
@@ -1385,7 +1394,10 @@ class OaiCiTest():
|
||||
for instance in range(0, len(CONTAINERS.yamlPath)):
|
||||
if CONTAINERS.yamlPath[instance]!='':
|
||||
CONTAINERS.eNB_instance=instance
|
||||
CONTAINERS.UndeployObject(HTML,RAN)
|
||||
if CONTAINERS.deployKind[instance]:
|
||||
CONTAINERS.UndeployObject(HTML,RAN)
|
||||
else:
|
||||
CONTAINERS.UndeployGenObject(HTML,RAN,self)
|
||||
RAN.prematureExit=True
|
||||
|
||||
def IdleSleep(self,HTML):
|
||||
|
||||
@@ -98,6 +98,15 @@ class PhySim:
|
||||
for line in g:
|
||||
if 'decoding time' in line:
|
||||
runResultsT1.append(line)
|
||||
|
||||
# In case the T1 board does work properly, there is no statistics
|
||||
if len(runResultsT1) == 0:
|
||||
logging.error('no statistics')
|
||||
HTML.CreateHtmlTestRowQueue(self.runargs, 'KO', ['no statistics'])
|
||||
self.exitStatus = 1
|
||||
os.system('mv '+self.__runLogFile+' '+ self.__runLogPath+'/.')
|
||||
return HTML
|
||||
|
||||
info = runResultsT1[0][15:-13]
|
||||
result = int(''.join(filter(str.isdigit, info)))/100
|
||||
#once parsed move the local logfile to its folder for tidiness
|
||||
|
||||
@@ -106,7 +106,8 @@ class PhySim:
|
||||
if self.ranCommitID != '':
|
||||
mySSH.command('git checkout -f ' + self.ranCommitID, '\$', 30)
|
||||
if self.ranAllowMerge:
|
||||
imageTag = f'{self.ranBranch}-{self.ranCommitID[0:8]}'
|
||||
branchName = self.ranBranch.replace('/','-')
|
||||
imageTag = f'{branchName}-{self.ranCommitID[0:8]}'
|
||||
if self.ranTargetBranch == '':
|
||||
if (self.ranBranch != 'develop') and (self.ranBranch != 'origin/develop'):
|
||||
mySSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 30)
|
||||
@@ -160,7 +161,7 @@ class PhySim:
|
||||
isRunning = False
|
||||
count = 0
|
||||
# Check whether the containers are in Running state or not under 2 mins
|
||||
while(count < 2 and isRunning == False):
|
||||
while(count < 5 and isRunning == False):
|
||||
time.sleep(60)
|
||||
mySSH.command('oc get pods -o wide -l app=physim | tee -a cmake_targets/log/physim_pods_summary.txt', '\$', 30, resync=True)
|
||||
running_count = mySSH.getBefore().count('Running')
|
||||
|
||||
@@ -283,7 +283,7 @@ class StaticCodeAnalysis():
|
||||
if re.search('=== Files with incorrect define protection ===', str(line)) is not None:
|
||||
circularHeaderDependency = True
|
||||
if circularHeaderDependency:
|
||||
if re.search('Removing intermediate container', str(line)) is not None:
|
||||
if re.search('DONE', str(line)) is not None:
|
||||
circularHeaderDependency = False
|
||||
elif re.search('Running in|Files with incorrect define protection', str(line)) is not None:
|
||||
pass
|
||||
@@ -293,7 +293,7 @@ class StaticCodeAnalysis():
|
||||
if re.search('=== Files with a GNU GPL licence Banner ===', str(line)) is not None:
|
||||
gnuGplLicence = True
|
||||
if gnuGplLicence:
|
||||
if re.search('Removing intermediate container', str(line)) is not None:
|
||||
if re.search('DONE', str(line)) is not None:
|
||||
gnuGplLicence = False
|
||||
elif re.search('Running in|Files with a GNU GPL licence Banner', str(line)) is not None:
|
||||
pass
|
||||
@@ -303,7 +303,7 @@ class StaticCodeAnalysis():
|
||||
if re.search('=== Files with a suspect Banner ===', str(line)) is not None:
|
||||
suspectLicence = True
|
||||
if suspectLicence:
|
||||
if re.search('Removing intermediate container', str(line)) is not None:
|
||||
if re.search('DONE', str(line)) is not None:
|
||||
suspectLicence = False
|
||||
elif re.search('Running in|Files with a suspect Banner', str(line)) is not None:
|
||||
pass
|
||||
@@ -340,7 +340,7 @@ class StaticCodeAnalysis():
|
||||
html_cell = f'Number of files not respecting: {len(gnuGplLicenceFiles)}\n'
|
||||
for nFile in gnuGplLicenceFiles:
|
||||
html_cell += str(nFile).strip() + '\n'
|
||||
HTML.CreateHtmlTestRowQueue('Files w/ GNU GPL License', 'KO', html_queue)
|
||||
HTML.CreateHtmlTestRowQueue('Files w/ GNU GPL License', 'KO', [html_cell])
|
||||
del(html_cell)
|
||||
finalStatus = -1
|
||||
|
||||
|
||||
@@ -19,7 +19,6 @@ gNBs =
|
||||
|
||||
|
||||
nr_cellid = 12345678L;
|
||||
force_256qam_off = 1;
|
||||
|
||||
tr_s_preference = "f1";
|
||||
|
||||
@@ -30,136 +29,7 @@ gNBs =
|
||||
local_s_portd = 2153;
|
||||
remote_s_portc = 500;
|
||||
remote_s_portd = 2153;
|
||||
min_rxtxtime = 6;
|
||||
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
#spCellConfigCommon
|
||||
|
||||
physCellId = 0;
|
||||
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP)
|
||||
absoluteFrequencySSB = 641280;
|
||||
dl_frequencyBand = 78;
|
||||
# this is 3600 MHz
|
||||
dl_absoluteFrequencyPointA = 640008;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_subcarrierSpacing = 1;
|
||||
dl_carrierBandwidth = 106;
|
||||
#initialDownlinkBWP
|
||||
#genericParameters
|
||||
# this is RBstart=27,L=48 (275*(L-1))+RBstart
|
||||
initialDLBWPlocationAndBandwidth = 28875; # 6366 12925 12956 28875 12952
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialDLBWPsubcarrierSpacing = 1;
|
||||
#pdcch-ConfigCommon
|
||||
initialDLBWPcontrolResourceSetZero = 11;
|
||||
initialDLBWPsearchSpaceZero = 0;
|
||||
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 78;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_subcarrierSpacing = 1;
|
||||
ul_carrierBandwidth = 106;
|
||||
pMax = 20;
|
||||
#initialUplinkBWP
|
||||
#genericParameters
|
||||
initialULBWPlocationAndBandwidth = 28875;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialULBWPsubcarrierSpacing = 1;
|
||||
#rach-ConfigCommon
|
||||
#rach-ConfigGeneric
|
||||
prach_ConfigurationIndex = 98;
|
||||
#prach_msg1_FDM
|
||||
#0 = one, 1=two, 2=four, 3=eight
|
||||
prach_msg1_FDM = 0;
|
||||
prach_msg1_FrequencyStart = 0;
|
||||
zeroCorrelationZoneConfig = 13;
|
||||
preambleReceivedTargetPower = -96;
|
||||
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
|
||||
preambleTransMax = 6;
|
||||
#powerRampingStep
|
||||
# 0=dB0,1=dB2,2=dB4,3=dB6
|
||||
powerRampingStep = 1;
|
||||
#ra_ReponseWindow
|
||||
#1,2,4,8,10,20,40,80
|
||||
ra_ResponseWindow = 4;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
ra_ContentionResolutionTimer = 7;
|
||||
rsrp_ThresholdSSB = 19;
|
||||
#prach-RootSequenceIndex_PR
|
||||
#1 = 839, 2 = 139
|
||||
prach_RootSequenceIndex_PR = 2;
|
||||
prach_RootSequenceIndex = 1;
|
||||
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
||||
#
|
||||
msg1_SubcarrierSpacing = 1,
|
||||
# restrictedSetConfig
|
||||
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
||||
restrictedSetConfig = 0,
|
||||
|
||||
msg3_DeltaPreamble = 1;
|
||||
p0_NominalWithGrant =-90;
|
||||
|
||||
# pucch-ConfigCommon setup :
|
||||
# pucchGroupHopping
|
||||
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 40;
|
||||
p0_nominal = -90;
|
||||
# ssb_PositionsInBurs_BitmapPR
|
||||
# 1=short, 2=medium, 3=long
|
||||
ssb_PositionsInBurst_PR = 2;
|
||||
ssb_PositionsInBurst_Bitmap = 1;
|
||||
|
||||
# ssb_periodicityServingCell
|
||||
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||
ssb_periodicityServingCell = 2;
|
||||
|
||||
# dmrs_TypeA_position
|
||||
# 0 = pos2, 1 = pos3
|
||||
dmrs_TypeA_Position = 0;
|
||||
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
subcarrierSpacing = 1;
|
||||
|
||||
|
||||
#tdd-UL-DL-ConfigurationCommon
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
referenceSubcarrierSpacing = 1;
|
||||
# pattern1
|
||||
# dl_UL_TransmissionPeriodicity
|
||||
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||
dl_UL_TransmissionPeriodicity = 6;
|
||||
nrofDownlinkSlots = 7;
|
||||
nrofDownlinkSymbols = 6;
|
||||
nrofUplinkSlots = 2;
|
||||
nrofUplinkSymbols = 4;
|
||||
|
||||
ssPBCH_BlockPower = -25;
|
||||
}
|
||||
|
||||
);
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
@@ -205,15 +75,11 @@ security = {
|
||||
drb_ciphering = "yes";
|
||||
drb_integrity = "no";
|
||||
};
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
hw_log_level ="info";
|
||||
phy_log_level ="info";
|
||||
mac_log_level ="info";
|
||||
rlc_log_level ="debug";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
f1ap_log_level ="debug";
|
||||
ngap_log_level ="debug";
|
||||
};
|
||||
|
||||
log_config : {
|
||||
global_log_level = "info";
|
||||
pdcp_log_level = "info";
|
||||
rrc_log_level = "info";
|
||||
f1ap_log_level = "info";
|
||||
ngap_log_level = "info";
|
||||
};
|
||||
|
||||
85
ci-scripts/conf_files/gnb-cu.sa.f1.conf
Normal file
85
ci-scripts/conf_files/gnb-cu.sa.f1.conf
Normal file
@@ -0,0 +1,85 @@
|
||||
Active_gNBs = ( "gNB-Eurecom-CU");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
Num_Threads_PUSCH = 8;
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe00;
|
||||
|
||||
# cell_type = "CELL_MACRO_GNB";
|
||||
|
||||
gNB_name = "gNB-Eurecom-CU";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ({ mcc = 222; mnc = 01; mnc_length = 2; snssaiList = ({ sst = 1, sd = 0xffffff }) });
|
||||
|
||||
|
||||
nr_cellid = 12345678L;
|
||||
|
||||
tr_s_preference = "f1";
|
||||
|
||||
local_s_if_name = "eth0";
|
||||
local_s_address = "192.168.68.194";
|
||||
remote_s_address = "192.168.68.195";
|
||||
local_s_portc = 501;
|
||||
local_s_portd = 2153;
|
||||
remote_s_portc = 500;
|
||||
remote_s_portd = 2153;
|
||||
|
||||
# ------- 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.16.137";
|
||||
ipv6 = "192:168:30::17";
|
||||
active = "yes";
|
||||
preference = "ipv4";
|
||||
}
|
||||
);
|
||||
|
||||
NETWORK_INTERFACES :
|
||||
{
|
||||
|
||||
GNB_INTERFACE_NAME_FOR_NG_AMF = "eth0";
|
||||
GNB_IPV4_ADDRESS_FOR_NG_AMF = "192.168.68.194";
|
||||
GNB_INTERFACE_NAME_FOR_NGU = "eth0";
|
||||
GNB_IPV4_ADDRESS_FOR_NGU = "192.168.68.194";
|
||||
GNB_PORT_FOR_S1U = 2152; # Spec 2152
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nea0, nea1, nea2, nea3
|
||||
ciphering_algorithms = ( "nea0" );
|
||||
|
||||
# preferred integrity algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nia0, nia1, nia2, nia3
|
||||
integrity_algorithms = ( "nia2", "nia0" );
|
||||
|
||||
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
|
||||
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
|
||||
drb_ciphering = "yes";
|
||||
drb_integrity = "no";
|
||||
};
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
f1ap_log_level ="info";
|
||||
ngap_log_level ="info";
|
||||
};
|
||||
@@ -8,7 +8,7 @@ gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_CU_ID = 0xe00;
|
||||
gNB_ID = 0xe00;
|
||||
|
||||
# cell_type = "CELL_MACRO_GNB";
|
||||
|
||||
@@ -20,7 +20,6 @@ gNBs =
|
||||
|
||||
|
||||
nr_cellid = 12345678L;
|
||||
force_256qam_off = 1;
|
||||
|
||||
tr_s_preference = "f1";
|
||||
|
||||
@@ -31,136 +30,7 @@ gNBs =
|
||||
local_s_portd = 2152;
|
||||
remote_s_portc = 500;
|
||||
remote_s_portd = 2152;
|
||||
ssb_SubcarrierOffset = 0;
|
||||
min_rxtxtime = 6;
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
#spCellConfigCommon
|
||||
|
||||
physCellId = 0;
|
||||
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP)
|
||||
absoluteFrequencySSB = 641280;
|
||||
dl_frequencyBand = 78;
|
||||
# this is 3600 MHz
|
||||
dl_absoluteFrequencyPointA = 640008;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_subcarrierSpacing = 1;
|
||||
dl_carrierBandwidth = 106;
|
||||
#initialDownlinkBWP
|
||||
#genericParameters
|
||||
# this is RBstart=27,L=48 (275*(L-1))+RBstart
|
||||
initialDLBWPlocationAndBandwidth = 28875; # 6366 12925 12956 28875 12952
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialDLBWPsubcarrierSpacing = 1;
|
||||
#pdcch-ConfigCommon
|
||||
initialDLBWPcontrolResourceSetZero = 11;
|
||||
initialDLBWPsearchSpaceZero = 0;
|
||||
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 78;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_subcarrierSpacing = 1;
|
||||
ul_carrierBandwidth = 106;
|
||||
pMax = 20;
|
||||
#initialUplinkBWP
|
||||
#genericParameters
|
||||
initialULBWPlocationAndBandwidth = 28875;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialULBWPsubcarrierSpacing = 1;
|
||||
#rach-ConfigCommon
|
||||
#rach-ConfigGeneric
|
||||
prach_ConfigurationIndex = 98;
|
||||
#prach_msg1_FDM
|
||||
#0 = one, 1=two, 2=four, 3=eight
|
||||
prach_msg1_FDM = 0;
|
||||
prach_msg1_FrequencyStart = 0;
|
||||
zeroCorrelationZoneConfig = 13;
|
||||
preambleReceivedTargetPower = -96;
|
||||
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
|
||||
preambleTransMax = 6;
|
||||
#powerRampingStep
|
||||
# 0=dB0,1=dB2,2=dB4,3=dB6
|
||||
powerRampingStep = 1;
|
||||
#ra_ReponseWindow
|
||||
#1,2,4,8,10,20,40,80
|
||||
ra_ResponseWindow = 4;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
ra_ContentionResolutionTimer = 7;
|
||||
rsrp_ThresholdSSB = 19;
|
||||
#prach-RootSequenceIndex_PR
|
||||
#1 = 839, 2 = 139
|
||||
prach_RootSequenceIndex_PR = 2;
|
||||
prach_RootSequenceIndex = 1;
|
||||
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
||||
#
|
||||
msg1_SubcarrierSpacing = 1,
|
||||
# restrictedSetConfig
|
||||
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
||||
restrictedSetConfig = 0,
|
||||
|
||||
msg3_DeltaPreamble = 1;
|
||||
p0_NominalWithGrant =-90;
|
||||
|
||||
# pucch-ConfigCommon setup :
|
||||
# pucchGroupHopping
|
||||
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 40;
|
||||
p0_nominal = -90;
|
||||
# ssb_PositionsInBurs_BitmapPR
|
||||
# 1=short, 2=medium, 3=long
|
||||
ssb_PositionsInBurst_PR = 2;
|
||||
ssb_PositionsInBurst_Bitmap = 1;
|
||||
|
||||
# ssb_periodicityServingCell
|
||||
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||
ssb_periodicityServingCell = 2;
|
||||
|
||||
# dmrs_TypeA_position
|
||||
# 0 = pos2, 1 = pos3
|
||||
dmrs_TypeA_Position = 0;
|
||||
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
subcarrierSpacing = 1;
|
||||
|
||||
|
||||
#tdd-UL-DL-ConfigurationCommon
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
referenceSubcarrierSpacing = 1;
|
||||
# pattern1
|
||||
# dl_UL_TransmissionPeriodicity
|
||||
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||
dl_UL_TransmissionPeriodicity = 6;
|
||||
nrofDownlinkSlots = 7;
|
||||
nrofDownlinkSymbols = 6;
|
||||
nrofUplinkSlots = 2;
|
||||
nrofUplinkSymbols = 4;
|
||||
|
||||
ssPBCH_BlockPower = -25;
|
||||
}
|
||||
|
||||
);
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
|
||||
@@ -8,7 +8,7 @@ gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_CU_ID = 0xe00;
|
||||
gNB_ID = 0xe00;
|
||||
|
||||
# cell_type = "CELL_MACRO_GNB";
|
||||
|
||||
@@ -20,7 +20,6 @@ gNBs =
|
||||
|
||||
|
||||
nr_cellid = 12345678L;
|
||||
force_256qam_off = 1;
|
||||
|
||||
tr_s_preference = "f1";
|
||||
|
||||
@@ -31,136 +30,7 @@ gNBs =
|
||||
local_s_portd = 2153;
|
||||
remote_s_portc = 500;
|
||||
remote_s_portd = 2153;
|
||||
ssb_SubcarrierOffset = 0;
|
||||
min_rxtxtime = 6;
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
#spCellConfigCommon
|
||||
|
||||
physCellId = 0;
|
||||
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP)
|
||||
absoluteFrequencySSB = 641280;
|
||||
dl_frequencyBand = 78;
|
||||
# this is 3600 MHz
|
||||
dl_absoluteFrequencyPointA = 640008;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_subcarrierSpacing = 1;
|
||||
dl_carrierBandwidth = 106;
|
||||
#initialDownlinkBWP
|
||||
#genericParameters
|
||||
# this is RBstart=27,L=48 (275*(L-1))+RBstart
|
||||
initialDLBWPlocationAndBandwidth = 28875; # 6366 12925 12956 28875 12952
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialDLBWPsubcarrierSpacing = 1;
|
||||
#pdcch-ConfigCommon
|
||||
initialDLBWPcontrolResourceSetZero = 11;
|
||||
initialDLBWPsearchSpaceZero = 0;
|
||||
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 78;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_subcarrierSpacing = 1;
|
||||
ul_carrierBandwidth = 106;
|
||||
pMax = 20;
|
||||
#initialUplinkBWP
|
||||
#genericParameters
|
||||
initialULBWPlocationAndBandwidth = 28875;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialULBWPsubcarrierSpacing = 1;
|
||||
#rach-ConfigCommon
|
||||
#rach-ConfigGeneric
|
||||
prach_ConfigurationIndex = 98;
|
||||
#prach_msg1_FDM
|
||||
#0 = one, 1=two, 2=four, 3=eight
|
||||
prach_msg1_FDM = 0;
|
||||
prach_msg1_FrequencyStart = 0;
|
||||
zeroCorrelationZoneConfig = 13;
|
||||
preambleReceivedTargetPower = -96;
|
||||
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
|
||||
preambleTransMax = 6;
|
||||
#powerRampingStep
|
||||
# 0=dB0,1=dB2,2=dB4,3=dB6
|
||||
powerRampingStep = 1;
|
||||
#ra_ReponseWindow
|
||||
#1,2,4,8,10,20,40,80
|
||||
ra_ResponseWindow = 4;
|
||||
#ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR
|
||||
#1=oneeighth,2=onefourth,3=half,4=one,5=two,6=four,7=eight,8=sixteen
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
|
||||
#oneHalf (0..15) 4,8,12,16,...60,64
|
||||
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 14;
|
||||
#ra_ContentionResolutionTimer
|
||||
#(0..7) 8,16,24,32,40,48,56,64
|
||||
ra_ContentionResolutionTimer = 7;
|
||||
rsrp_ThresholdSSB = 19;
|
||||
#prach-RootSequenceIndex_PR
|
||||
#1 = 839, 2 = 139
|
||||
prach_RootSequenceIndex_PR = 2;
|
||||
prach_RootSequenceIndex = 1;
|
||||
# SCS for msg1, can only be 15 for 30 kHz < 6 GHz, takes precendence over the one derived from prach-ConfigIndex
|
||||
#
|
||||
msg1_SubcarrierSpacing = 1,
|
||||
# restrictedSetConfig
|
||||
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
||||
restrictedSetConfig = 0,
|
||||
|
||||
msg3_DeltaPreamble = 1;
|
||||
p0_NominalWithGrant =-90;
|
||||
|
||||
# pucch-ConfigCommon setup :
|
||||
# pucchGroupHopping
|
||||
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 40;
|
||||
p0_nominal = -90;
|
||||
# ssb_PositionsInBurs_BitmapPR
|
||||
# 1=short, 2=medium, 3=long
|
||||
ssb_PositionsInBurst_PR = 2;
|
||||
ssb_PositionsInBurst_Bitmap = 1;
|
||||
|
||||
# ssb_periodicityServingCell
|
||||
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||
ssb_periodicityServingCell = 2;
|
||||
|
||||
# dmrs_TypeA_position
|
||||
# 0 = pos2, 1 = pos3
|
||||
dmrs_TypeA_Position = 0;
|
||||
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
subcarrierSpacing = 1;
|
||||
|
||||
|
||||
#tdd-UL-DL-ConfigurationCommon
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
referenceSubcarrierSpacing = 1;
|
||||
# pattern1
|
||||
# dl_UL_TransmissionPeriodicity
|
||||
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
|
||||
dl_UL_TransmissionPeriodicity = 6;
|
||||
nrofDownlinkSlots = 7;
|
||||
nrofDownlinkSymbols = 6;
|
||||
nrofUplinkSlots = 2;
|
||||
nrofUplinkSymbols = 4;
|
||||
|
||||
ssPBCH_BlockPower = -25;
|
||||
}
|
||||
|
||||
);
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
|
||||
@@ -7,7 +7,8 @@ gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_CU_ID = 0xe00;
|
||||
gNB_ID = 0xe00;
|
||||
gNB_CU_UP_ID = 0xe00;
|
||||
|
||||
# cell_type = "CELL_MACRO_GNB";
|
||||
|
||||
@@ -56,32 +57,9 @@ gNBs =
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nea0, nea1, nea2, nea3
|
||||
ciphering_algorithms = ( "nea0" );
|
||||
|
||||
# preferred integrity algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nia0, nia1, nia2, nia3
|
||||
integrity_algorithms = ( "nia2", "nia0" );
|
||||
|
||||
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
|
||||
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
|
||||
drb_ciphering = "yes";
|
||||
drb_integrity = "no";
|
||||
log_config : {
|
||||
global_log_level = "info";
|
||||
pdcp_log_level = "info";
|
||||
f1ap_log_level = "info";
|
||||
ngap_log_level = "info";
|
||||
};
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
hw_log_level ="info";
|
||||
phy_log_level ="info";
|
||||
mac_log_level ="info";
|
||||
rlc_log_level ="debug";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
f1ap_log_level ="info";
|
||||
ngap_log_level ="debug";
|
||||
};
|
||||
|
||||
|
||||
@@ -7,7 +7,8 @@ gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_CU_ID = 0xe00;
|
||||
gNB_ID = 0xe00;
|
||||
gNB_CU_UP_ID = 0xe00;
|
||||
|
||||
# cell_type = "CELL_MACRO_GNB";
|
||||
|
||||
@@ -56,23 +57,6 @@ gNBs =
|
||||
}
|
||||
);
|
||||
|
||||
security = {
|
||||
# preferred ciphering algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nea0, nea1, nea2, nea3
|
||||
ciphering_algorithms = ( "nea0" );
|
||||
|
||||
# preferred integrity algorithms
|
||||
# the first one of the list that an UE supports in chosen
|
||||
# valid values: nia0, nia1, nia2, nia3
|
||||
integrity_algorithms = ( "nia2", "nia0" );
|
||||
|
||||
# setting 'drb_ciphering' to "no" disables ciphering for DRBs, no matter
|
||||
# what 'ciphering_algorithms' configures; same thing for 'drb_integrity'
|
||||
drb_ciphering = "yes";
|
||||
drb_integrity = "no";
|
||||
};
|
||||
|
||||
log_config: {
|
||||
global_log_level = "info";
|
||||
};
|
||||
|
||||
@@ -7,6 +7,7 @@ gNBs =
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe00;
|
||||
gNB_DU_ID = 0xe00;
|
||||
|
||||
# cell_type = "CELL_MACRO_GNB";
|
||||
|
||||
@@ -22,7 +23,6 @@ gNBs =
|
||||
////////// Physical parameters:
|
||||
|
||||
min_rxtxtime = 6;
|
||||
force_256qam_off = 1;
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
@@ -218,7 +218,7 @@ THREAD_STRUCT = (
|
||||
|
||||
rfsimulator: {
|
||||
serveraddr = "server";
|
||||
serverport = "4043";
|
||||
serverport = 4043;
|
||||
options = (); #("saviq"); or/and "chanmod"
|
||||
modelname = "AWGN";
|
||||
IQfile = "/tmp/rfsimulator.iqs"
|
||||
|
||||
218
ci-scripts/conf_files/gnb-du.sa.band1.52prb.usrpb210.conf
Normal file
218
ci-scripts/conf_files/gnb-du.sa.band1.52prb.usrpb210.conf
Normal file
@@ -0,0 +1,218 @@
|
||||
Active_gNBs = ( "gNB-Eurecom-DU");
|
||||
# Asn1_verbosity, choice in: none, info, annoying
|
||||
Asn1_verbosity = "none";
|
||||
|
||||
gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe00;
|
||||
gNB_DU_ID = 0xe00;
|
||||
|
||||
# cell_type = "CELL_MACRO_GNB";
|
||||
|
||||
gNB_name = "gNB-Eurecom-DU";
|
||||
|
||||
// Tracking area code, 0x0000 and 0xfffe are reserved values
|
||||
tracking_area_code = 1;
|
||||
plmn_list = ({ mcc = 222; mnc = 01; mnc_length = 2; snssaiList = ({ sst = 1, sd = 0xffffff }) });
|
||||
|
||||
|
||||
nr_cellid = 12345678L;
|
||||
|
||||
////////// Physical parameters:
|
||||
|
||||
min_rxtxtime = 6;
|
||||
|
||||
|
||||
servingCellConfigCommon = (
|
||||
{
|
||||
#spCellConfigCommon
|
||||
|
||||
physCellId = 0;
|
||||
|
||||
# downlinkConfigCommon
|
||||
#frequencyInfoDL
|
||||
# this is 3600 MHz + 43 PRBs@30kHz SCS (same as initial BWP)
|
||||
absoluteFrequencySSB = 423130;
|
||||
dl_frequencyBand = 1;
|
||||
# this is 3600 MHz
|
||||
dl_absoluteFrequencyPointA = 422194;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
dl_subcarrierSpacing = 0;
|
||||
dl_carrierBandwidth = 52;
|
||||
#initialDownlinkBWP
|
||||
#genericParameters
|
||||
# this is RBstart=27,L=48 (275*(L-1))+RBstart
|
||||
initialDLBWPlocationAndBandwidth = 14025; # 6366 12925 12956 28875 12952
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialDLBWPsubcarrierSpacing = 0;
|
||||
#pdcch-ConfigCommon
|
||||
initialDLBWPcontrolResourceSetZero = 7;
|
||||
initialDLBWPsearchSpaceZero = 0;
|
||||
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 1;
|
||||
ul_absoluteFrequencyPointA = 384194;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
ul_subcarrierSpacing = 0;
|
||||
ul_carrierBandwidth = 52;
|
||||
pMax = 20;
|
||||
#initialUplinkBWP
|
||||
#genericParameters
|
||||
initialULBWPlocationAndBandwidth = 14025;
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialULBWPsubcarrierSpacing = 0;
|
||||
#rach-ConfigCommon
|
||||
#rach-ConfigGeneric
|
||||
prach_ConfigurationIndex = 98;
|
||||
#prach_msg1_FDM
|
||||
#0 = one, 1=two, 2=four, 3=eight
|
||||
prach_msg1_FDM = 0;
|
||||
prach_msg1_FrequencyStart = 0;
|
||||
zeroCorrelationZoneConfig = 12;
|
||||
preambleReceivedTargetPower = -90;
|
||||
#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 = 0,
|
||||
# restrictedSetConfig
|
||||
# 0=unrestricted, 1=restricted type A, 2=restricted type B
|
||||
restrictedSetConfig = 0,
|
||||
|
||||
msg3_DeltaPreamble = 1;
|
||||
p0_NominalWithGrant =-90;
|
||||
|
||||
# pucch-ConfigCommon setup :
|
||||
# pucchGroupHopping
|
||||
# 0 = neither, 1= group hopping, 2=sequence hopping
|
||||
pucchGroupHopping = 0;
|
||||
hoppingId = 40;
|
||||
p0_nominal = -70;
|
||||
n_TimingAdvanceOffset = 0;
|
||||
# ssb_PositionsInBurs_BitmapPR
|
||||
# 1=short, 2=medium, 3=long
|
||||
ssb_PositionsInBurst_PR = 2;
|
||||
ssb_PositionsInBurst_Bitmap = 1;
|
||||
|
||||
# ssb_periodicityServingCell
|
||||
# 0 = ms5, 1=ms10, 2=ms20, 3=ms40, 4=ms80, 5=ms160, 6=spare2, 7=spare1
|
||||
ssb_periodicityServingCell = 2;
|
||||
|
||||
# dmrs_TypeA_position
|
||||
# 0 = pos2, 1 = pos3
|
||||
dmrs_TypeA_Position = 0;
|
||||
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
subcarrierSpacing = 0;
|
||||
|
||||
|
||||
#tdd-UL-DL-ConfigurationCommon
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
referenceSubcarrierSpacing = 0;
|
||||
ssPBCH_BlockPower = -25;
|
||||
}
|
||||
|
||||
);
|
||||
|
||||
|
||||
# ------- SCTP definitions
|
||||
SCTP :
|
||||
{
|
||||
# Number of streams to use in input/output
|
||||
SCTP_INSTREAMS = 2;
|
||||
SCTP_OUTSTREAMS = 2;
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
MACRLCs = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_s_preference = "local_L1";
|
||||
tr_n_preference = "f1";
|
||||
local_n_if_name = "eth0";
|
||||
local_n_address = "192.168.68.195";
|
||||
remote_n_address = "192.168.68.194";
|
||||
local_n_portc = 500;
|
||||
local_n_portd = 2153;
|
||||
remote_n_portc = 501;
|
||||
remote_n_portd = 2153;
|
||||
pusch_TargetSNRx10 = 200;
|
||||
pucch_TargetSNRx10 = 200;
|
||||
ulsch_max_frame_inactivity = 1;
|
||||
}
|
||||
);
|
||||
|
||||
L1s = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "local_mac";
|
||||
prach_dtx_threshold = 200;
|
||||
pucch0_dtx_threshold = 150;
|
||||
ofdm_offset_divisor = 8; #set this to UINT_MAX for offset 0
|
||||
}
|
||||
);
|
||||
|
||||
RUs = (
|
||||
{
|
||||
local_rf = "yes"
|
||||
nb_tx = 1
|
||||
nb_rx = 1
|
||||
# The higher att for TX than RX is because we use a circulator (as for TDD),
|
||||
# while we should use a duplexer in the FDD case. However, it uses the same setup.
|
||||
att_tx = 18
|
||||
att_rx = 0;
|
||||
bands = [1];
|
||||
max_pdschReferenceSignalPower = -27;
|
||||
max_rxgain = 108;
|
||||
eNB_instances = [0];
|
||||
#beamforming 1x4 matrix:
|
||||
bf_weights = [0x00007fff, 0x0000, 0x0000, 0x0000];
|
||||
clock_src = "internal";
|
||||
}
|
||||
);
|
||||
|
||||
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";
|
||||
};
|
||||
@@ -7,6 +7,7 @@ gNBs =
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe00;
|
||||
gNB_DU_ID = 0xe00;
|
||||
|
||||
# cell_type = "CELL_MACRO_GNB";
|
||||
|
||||
@@ -217,21 +218,17 @@ THREAD_STRUCT = (
|
||||
);
|
||||
rfsimulator: {
|
||||
serveraddr = "server";
|
||||
serverport = "4043";
|
||||
serverport = 4043;
|
||||
options = (); #("saviq"); or/and "chanmod"
|
||||
modelname = "AWGN";
|
||||
IQfile = "/tmp/rfsimulator.iqs"
|
||||
}
|
||||
|
||||
log_config :
|
||||
{
|
||||
global_log_level ="info";
|
||||
hw_log_level ="info";
|
||||
phy_log_level ="info";
|
||||
mac_log_level ="info";
|
||||
rlc_log_level ="info";
|
||||
pdcp_log_level ="info";
|
||||
rrc_log_level ="info";
|
||||
f1ap_log_level ="debug";
|
||||
ngap_log_level ="debug";
|
||||
};
|
||||
log_config: {
|
||||
global_log_level = "info";
|
||||
hw_log_level = "info";
|
||||
phy_log_level = "info";
|
||||
mac_log_level = "info";
|
||||
rlc_log_level = "info";
|
||||
f1ap_log_level = "info";
|
||||
};
|
||||
|
||||
@@ -7,6 +7,7 @@ gNBs =
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_ID = 0xe00;
|
||||
gNB_DU_ID = 0xe00;
|
||||
|
||||
# cell_type = "CELL_MACRO_GNB";
|
||||
|
||||
@@ -22,7 +23,6 @@ gNBs =
|
||||
////////// Physical parameters:
|
||||
|
||||
min_rxtxtime = 6;
|
||||
force_256qam_off = 1;
|
||||
|
||||
|
||||
servingCellConfigCommon = (
|
||||
|
||||
@@ -63,6 +63,7 @@ gNBs =
|
||||
# subcarrierSpacing
|
||||
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
|
||||
initialULBWPsubcarrierSpacing = 1;
|
||||
initialDLBWPcontrolResourceSetZero = 0;
|
||||
#rach-ConfigCommon
|
||||
#rach-ConfigGeneric
|
||||
prach_ConfigurationIndex = 98;
|
||||
|
||||
@@ -32,7 +32,7 @@ gNBs =
|
||||
absoluteFrequencySSB = 432990;
|
||||
dl_frequencyBand = 66;
|
||||
# this is 3600 MHz
|
||||
dl_absoluteFrequencyPointA = 430000;
|
||||
dl_absoluteFrequencyPointA = 430002;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
@@ -53,7 +53,7 @@ gNBs =
|
||||
#uplinkConfigCommon
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 66;
|
||||
ul_absoluteFrequencyPointA = 350000;
|
||||
ul_absoluteFrequencyPointA = 350002;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
@@ -230,7 +230,7 @@ THREAD_STRUCT = (
|
||||
rfsimulator :
|
||||
{
|
||||
serveraddr = "server";
|
||||
serverport = "4043";
|
||||
serverport = 4043;
|
||||
options = (); #("saviq"); or/and "chanmod"
|
||||
modelname = "AWGN";
|
||||
IQfile = "/tmp/rfsimulator.iqs";
|
||||
|
||||
@@ -32,7 +32,7 @@ gNBs =
|
||||
absoluteFrequencySSB = 430590;
|
||||
dl_frequencyBand = 66;
|
||||
# this is 2150 MHz
|
||||
dl_absoluteFrequencyPointA = 430000;
|
||||
dl_absoluteFrequencyPointA = 430002;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
@@ -54,7 +54,7 @@ gNBs =
|
||||
#frequencyInfoUL
|
||||
ul_frequencyBand = 66;
|
||||
# this is 1750 MHz
|
||||
ul_absoluteFrequencyPointA = 350000;
|
||||
ul_absoluteFrequencyPointA = 350002;
|
||||
#scs-SpecificCarrierList
|
||||
ul_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
@@ -240,7 +240,7 @@ THREAD_STRUCT = (
|
||||
rfsimulator :
|
||||
{
|
||||
serveraddr = "server";
|
||||
serverport = "4043";
|
||||
serverport = 4043;
|
||||
options = (); #("saviq"); or/and "chanmod"
|
||||
modelname = "AWGN";
|
||||
IQfile = "/tmp/rfsimulator.iqs";
|
||||
|
||||
@@ -6,7 +6,7 @@ gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_CU_ID = 0xe00;
|
||||
gNB_ID = 0xe00;
|
||||
|
||||
gNB_name = "gNB-OAI";
|
||||
|
||||
@@ -220,7 +220,7 @@ RUs = (
|
||||
att_rx = 0;
|
||||
bands = [78];
|
||||
max_pdschReferenceSignalPower = -27;
|
||||
max_rxgain = 75;
|
||||
max_rxgain = 65;
|
||||
eNB_instances = [0];
|
||||
##beamforming 1x2 matrix: 1 layer x 2 antennas
|
||||
bf_weights = [0x00007fff, 0x0000];
|
||||
|
||||
@@ -232,7 +232,7 @@ THREAD_STRUCT = (
|
||||
rfsimulator :
|
||||
{
|
||||
serveraddr = "server";
|
||||
serverport = "4043";
|
||||
serverport = 4043;
|
||||
options = (); #("saviq"); or/and "chanmod"
|
||||
modelname = "AWGN";
|
||||
IQfile = "/tmp/rfsimulator.iqs";
|
||||
|
||||
@@ -10,7 +10,7 @@ gNBs =
|
||||
(
|
||||
{
|
||||
////////// Identification parameters:
|
||||
gNB_CU_ID = 0xe00;
|
||||
gNB_ID = 0xe00;
|
||||
|
||||
gNB_name = "gNB-Eurecom-n78_20";
|
||||
|
||||
@@ -22,7 +22,7 @@ gNBs =
|
||||
|
||||
////////// Physical parameters:
|
||||
pdsch_AntennaPorts_XP = 2;
|
||||
pusch_AntennaPorts = 2;
|
||||
pusch_AntennaPorts = 1;
|
||||
do_CSIRS = 1;
|
||||
do_SRS = 0;
|
||||
|
||||
@@ -75,7 +75,7 @@ gNBs =
|
||||
initialULBWPsubcarrierSpacing = 1;
|
||||
#rach-ConfigCommon
|
||||
#rach-ConfigGeneric
|
||||
prach_ConfigurationIndex = 98;
|
||||
prach_ConfigurationIndex = 100;
|
||||
#prach_msg1_FDM
|
||||
#0 = one, 1=two, 2=four, 3=eight
|
||||
prach_msg1_FDM = 0;
|
||||
@@ -220,7 +220,7 @@ RUs = (
|
||||
tr_preference = "udp_ecpri_if5"
|
||||
nb_tx = 2
|
||||
nb_rx = 2
|
||||
att_tx = 16
|
||||
att_tx = 18
|
||||
att_rx = 0;
|
||||
num_tp_cores = 4;
|
||||
rxfh_core_id = 9;
|
||||
|
||||
@@ -30,7 +30,7 @@ gNBs =
|
||||
absoluteFrequencySSB = 620736;
|
||||
dl_frequencyBand = 78;
|
||||
# this is 3300.30 MHz
|
||||
dl_absoluteFrequencyPointA = 620020;
|
||||
dl_absoluteFrequencyPointA = 620052;
|
||||
#scs-SpecificCarrierList
|
||||
dl_offstToCarrier = 0;
|
||||
# subcarrierSpacing
|
||||
|
||||
@@ -230,7 +230,7 @@ THREAD_STRUCT = (
|
||||
rfsimulator :
|
||||
{
|
||||
serveraddr = "server";
|
||||
serverport = "4043";
|
||||
serverport = 4043;
|
||||
options = (); #("saviq"); or/and "chanmod"
|
||||
modelname = "AWGN";
|
||||
IQfile = "/tmp/rfsimulator.iqs";
|
||||
|
||||
@@ -229,7 +229,7 @@ THREAD_STRUCT = (
|
||||
rfsimulator :
|
||||
{
|
||||
serveraddr = "server";
|
||||
serverport = "4043";
|
||||
serverport = 4043;
|
||||
options = (); #("saviq"); or/and "chanmod"
|
||||
modelname = "AWGN";
|
||||
IQfile = "/tmp/rfsimulator.iqs";
|
||||
|
||||
@@ -15,7 +15,7 @@ Ref :
|
||||
DLSCH encoding : 137.0
|
||||
L1 Rx processing : 345.0
|
||||
PUSCH inner-receiver : 210.0
|
||||
PUSCH decoding : 210.0
|
||||
PUSCH decoding : 2200.0
|
||||
Schedule Response : 48.0
|
||||
DL & UL scheduling timing : 13.0
|
||||
UL Indication : 60.0
|
||||
|
||||
@@ -8,14 +8,14 @@ ColNames :
|
||||
- Average vs Reference Deviation (Reference Value; Acceptability Threshold)
|
||||
Ref :
|
||||
feprx : 84.0
|
||||
feptx_prec : 11.0
|
||||
feptx_prec : 14.0
|
||||
feptx_ofdm : 35.0
|
||||
feptx_total : 100.0
|
||||
L1 Tx processing : 400.0
|
||||
DLSCH encoding : 177.0
|
||||
L1 Rx processing : 345.0
|
||||
PUSCH inner-receiver : 210.0
|
||||
PUSCH decoding : 210.0
|
||||
PUSCH decoding : 2200.0
|
||||
Schedule Response : 111.0
|
||||
DL & UL scheduling timing : 20.0
|
||||
UL Indication : 127.0
|
||||
|
||||
@@ -15,7 +15,7 @@ Ref :
|
||||
DLSCH encoding : 118.0
|
||||
L1 Rx processing : 305.0
|
||||
PUSCH inner-receiver : 150.0
|
||||
PUSCH decoding : 210.0
|
||||
PUSCH decoding : 2200.0
|
||||
Schedule Response : 30.0
|
||||
DL & UL scheduling timing : 10.0
|
||||
UL Indication : 40.0
|
||||
|
||||
@@ -1,92 +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
|
||||
# */
|
||||
#---------------------------------------------------------------------
|
||||
# Python for CI of OAI-eNB + COTS-UE
|
||||
#
|
||||
# Required Python Version
|
||||
# Python 3.x
|
||||
#
|
||||
# Required Python Package
|
||||
# pexpect
|
||||
#---------------------------------------------------------------------
|
||||
|
||||
|
||||
#-----------------------------------------------------------
|
||||
# Import Libs
|
||||
#-----------------------------------------------------------
|
||||
import sys # arg
|
||||
import re # reg
|
||||
import os
|
||||
import subprocess
|
||||
|
||||
|
||||
class SplitReport():
|
||||
def __init__(self):
|
||||
self.logfilename = ''
|
||||
self.destinationFolder = ''
|
||||
|
||||
def split(self):
|
||||
self.destinationFolder = self.logfilename.replace(".log","")
|
||||
if os.path.isfile(self.logfilename):
|
||||
newImageLog = open(self.logfilename + '.new', 'w')
|
||||
copyFlag = True
|
||||
with open(self.logfilename, 'r') as imageLog:
|
||||
for line in imageLog:
|
||||
header = False
|
||||
ret = re.search('====== Start of log for ([0-9\.A-Za-z\-\_]+) ======', line)
|
||||
if ret is not None:
|
||||
copyFlag = False
|
||||
header = True
|
||||
detailedLogFile = open(self.destinationFolder + '/' + ret.group(1), 'w')
|
||||
if copyFlag:
|
||||
newImageLog.write(line)
|
||||
ret = re.search('====== End of log for ([0-9\.A-Za-z\-\_]+) ======', line)
|
||||
if ret is not None:
|
||||
copyFlag = True
|
||||
detailedLogFile.close()
|
||||
elif not copyFlag and not header:
|
||||
detailedLogFile.write(line)
|
||||
imageLog.close()
|
||||
newImageLog.close()
|
||||
os.rename(self.logfilename + '.new', self.logfilename)
|
||||
else:
|
||||
print('Cannot split unfound file')
|
||||
|
||||
#--------------------------------------------------------------------------------------------------------
|
||||
#
|
||||
# Start of main
|
||||
#
|
||||
#--------------------------------------------------------------------------------------------------------
|
||||
|
||||
argvs = sys.argv
|
||||
argc = len(argvs)
|
||||
|
||||
SP = SplitReport()
|
||||
|
||||
while len(argvs) > 1:
|
||||
myArgv = argvs.pop(1)
|
||||
if re.match('^\-\-logfilename=(.+)$', myArgv, re.IGNORECASE):
|
||||
matchReg = re.match('^\-\-logfilename=(.+)$', myArgv, re.IGNORECASE)
|
||||
SP.logfilename = matchReg.group(1)
|
||||
|
||||
SP.split()
|
||||
|
||||
sys.exit(0)
|
||||
@@ -679,7 +679,7 @@ class EPCManagement():
|
||||
mySSH.copyout(self.IPAddress, self.UserName, self.Password, './' + self.yamlPath + '/mme.conf', self.SourceCodePath + '/scripts')
|
||||
mySSH.command('chmod 775 entrypoint.sh', '\$', 60)
|
||||
mySSH.command('wget --quiet --tries=3 --retry-connrefused https://raw.githubusercontent.com/OPENAIRINTERFACE/openair-hss/develop/src/hss_rel14/db/oai_db.cql', '\$', 30)
|
||||
mySSH.command('docker-compose down', '\$', 60)
|
||||
mySSH.command('docker-compose down -v', '\$', 60)
|
||||
mySSH.command('docker-compose up -d db_init', '\$', 60)
|
||||
# databases take time...
|
||||
time.sleep(10)
|
||||
@@ -831,8 +831,7 @@ class EPCManagement():
|
||||
listOfContainers += ' prod-trf-gen'
|
||||
nbContainers += 1
|
||||
|
||||
mySSH.command('docker-compose down', '\$', 60)
|
||||
mySSH.command('docker volume prune --force || true', '\$', 60)
|
||||
mySSH.command('docker-compose down -v', '\$', 60)
|
||||
mySSH.command('docker inspect --format=\'{{.State.Health.Status}}\' ' + listOfContainers, '\$', 10)
|
||||
noMoreContainerNb = mySSH.getBefore().count('No such object')
|
||||
mySSH.command('docker inspect --format=\'{{.Name}}\' prod-oai-public-net prod-oai-private-net', '\$', 10)
|
||||
|
||||
@@ -750,7 +750,6 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
|
||||
elif action == 'WaitEndBuild_eNB':
|
||||
RAN.WaitBuildeNBisFinished(HTML)
|
||||
elif action == 'Custom_Command':
|
||||
logging.info(f"Executing custom command")
|
||||
RAN.CustomCommand(HTML)
|
||||
if RAN.prematureExit:
|
||||
CiTestObj.AutoTerminateeNB(HTML,RAN,EPC,CONTAINERS)
|
||||
|
||||
@@ -260,6 +260,7 @@ class RANManagement():
|
||||
self.checkBuildeNB(lIpAddr, lUserName, lPassWord, lSourcePath, self.backgroundBuildTestId[int(self.eNB_instance)], HTML)
|
||||
|
||||
def CustomCommand(self, HTML):
|
||||
logging.info(f"Executing custom command on {self.node}")
|
||||
cmd = cls_cmd.getConnection(self.node)
|
||||
ret = cmd.run(self.command)
|
||||
cmd.close()
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<eNB_instance>1</eNB_instance>
|
||||
<eNB_serverId>1</eNB_serverId>
|
||||
<forced_workspace_cleanup>True</forced_workspace_cleanup>
|
||||
<proxy_commit>a2fa216</proxy_commit>
|
||||
<proxy_commit>b64d9bce986b38ca59e8582864ade3fcdd05c0dc</proxy_commit>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
000001
|
||||
000002
|
||||
000003
|
||||
000011
|
||||
000004
|
||||
200000
|
||||
020001
|
||||
020002
|
||||
@@ -82,10 +82,10 @@
|
||||
<nb_healthy>10</nb_healthy>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000011">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>10</idle_sleep_time_in_sec>
|
||||
<testCase id="000004">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE</desc>
|
||||
<id>l2sim4g_ue</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
<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-cuup oai-nr-ue</images_to_pull>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-cuup-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000020">
|
||||
|
||||
@@ -32,9 +32,8 @@
|
||||
000022
|
||||
000023
|
||||
000024
|
||||
000025
|
||||
020021
|
||||
020022
|
||||
030021
|
||||
100021
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
@@ -43,7 +42,7 @@
|
||||
<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>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000020">
|
||||
@@ -72,33 +71,33 @@
|
||||
|
||||
<testCase id="000023">
|
||||
<class>DeployGenObject</class>
|
||||
<desc>Deploy OAI 5G DU RF sim SA</desc>
|
||||
<desc>Deploy 3 OAI 5G DUs RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_f1_rfsimulator</yaml_path>
|
||||
<services>oai-du</services>
|
||||
<nb_healthy>8</nb_healthy>
|
||||
<services>oai-du oai-du2 oai-du3</services>
|
||||
<nb_healthy>10</nb_healthy>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000024">
|
||||
<class>DeployGenObject</class>
|
||||
<desc>Deploy OAI 5G NR-UE RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_f1_rfsimulator</yaml_path>
|
||||
<services>oai-nr-ue</services>
|
||||
<nb_healthy>9</nb_healthy>
|
||||
<services>oai-nr-ue oai-nr-ue2</services>
|
||||
<nb_healthy>12</nb_healthy>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000025">
|
||||
<class>DeployGenObject</class>
|
||||
<desc>Deploy OAI 5G NR-UE RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_f1_rfsimulator</yaml_path>
|
||||
<services>oai-nr-ue3</services>
|
||||
<nb_healthy>13</nb_healthy>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020021">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
<id>rfsim5g_ue</id>
|
||||
<ping_args> -c 20 192.168.72.135</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020022">
|
||||
<class>Ping</class>
|
||||
<desc>Ping NR-UE from ext-dn</desc>
|
||||
<id>rfsim5g_ext_dn</id>
|
||||
<ping_args>-c 20 12.1.1.2</ping_args>
|
||||
<desc>Ping ext-dn from all NR-UEs</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3</id>
|
||||
<ping_args> -c 20 192.168.72.135 -i0.25</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<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>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000010">
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
000001
|
||||
000002
|
||||
000003
|
||||
000011
|
||||
000004
|
||||
200000
|
||||
020001
|
||||
020002
|
||||
@@ -45,7 +45,7 @@
|
||||
<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>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000000">
|
||||
@@ -80,10 +80,10 @@
|
||||
<nb_healthy>9</nb_healthy>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000011">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>10</idle_sleep_time_in_sec>
|
||||
<testCase id="000004">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach OAI UE</desc>
|
||||
<id>l2sim5g_ue</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
|
||||
@@ -33,10 +33,15 @@
|
||||
000002
|
||||
000003
|
||||
000004
|
||||
000005
|
||||
000006
|
||||
000007
|
||||
020001
|
||||
020002
|
||||
020003
|
||||
020004
|
||||
020105
|
||||
444445
|
||||
030001
|
||||
030002
|
||||
444444
|
||||
@@ -44,7 +49,7 @@
|
||||
020005
|
||||
444444
|
||||
333333
|
||||
020005
|
||||
020006
|
||||
100001
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
@@ -53,7 +58,7 @@
|
||||
<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>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000000">
|
||||
@@ -96,6 +101,30 @@
|
||||
<nb_healthy>9</nb_healthy>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000005">
|
||||
<class>DeployGenObject</class>
|
||||
<desc>Deploy OAI 5G NR-UEs (#3, #4, #5) RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
|
||||
<services>oai-nr-ue3 oai-nr-ue4 oai-nr-ue5</services>
|
||||
<nb_healthy>12</nb_healthy>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000006">
|
||||
<class>DeployGenObject</class>
|
||||
<desc>Deploy OAI 5G NR-UEs (#6, #7, #8) RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
|
||||
<services>oai-nr-ue6 oai-nr-ue7 oai-nr-ue8</services>
|
||||
<nb_healthy>15</nb_healthy>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000007">
|
||||
<class>DeployGenObject</class>
|
||||
<desc>Deploy OAI 5G NR-UEs (#9, #10) RF sim SA</desc>
|
||||
<yaml_path>yaml_files/5g_rfsimulator</yaml_path>
|
||||
<services>oai-nr-ue9 oai-nr-ue10</services>
|
||||
<nb_healthy>17</nb_healthy>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020001">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from NR-UE</desc>
|
||||
@@ -136,6 +165,22 @@
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020006">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from both UEs</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2</id>
|
||||
<ping_args>-c 20 192.168.72.135</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="020105">
|
||||
<class>Ping</class>
|
||||
<desc>Ping ext-dn from all UEs</desc>
|
||||
<id>rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10</id>
|
||||
<ping_args>-c 100 192.168.72.135 -i 0.2 -s 1016</ping_args>
|
||||
<ping_packetloss_threshold>5</ping_packetloss_threshold>
|
||||
</testCase>
|
||||
|
||||
<testCase id="030001">
|
||||
<class>IperfFromContainer</class>
|
||||
<desc>Iperf UDP Downlink</desc>
|
||||
@@ -166,6 +211,12 @@
|
||||
<id>rfsim5g_ue rfsim5g_ue2</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="444445">
|
||||
<class>Detach_UE</class>
|
||||
<desc>Detach OAI UE 2 to 10</desc>
|
||||
<id>rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100001">
|
||||
<class>UndeployGenObject</class>
|
||||
<desc>Undeploy all OAI 5G stack</desc>
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<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>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000000">
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<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>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000000">
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100011
|
||||
004000
|
||||
000010
|
||||
000011
|
||||
020011
|
||||
@@ -42,7 +43,14 @@
|
||||
<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>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="004000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Clean-Up any residual volume</desc>
|
||||
<node>localhost</node>
|
||||
<command>docker volume rm 5g_rfsimulator_fdd_phytest_rrc.config</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000010">
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
<htmlTabIcon>trash</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
100012
|
||||
004000
|
||||
222222
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
@@ -36,6 +37,13 @@
|
||||
<yaml_path>yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
|
||||
</testCase>
|
||||
|
||||
<testCase id="004000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Clean-Up any residual volume</desc>
|
||||
<node>localhost</node>
|
||||
<command>docker volume rm 5g_rfsimulator_fdd_phytest_rrc.config</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100001
|
||||
004000
|
||||
000000
|
||||
000001
|
||||
020001
|
||||
@@ -40,7 +41,14 @@
|
||||
<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>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="004000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Clean-Up any residual volume</desc>
|
||||
<node>localhost</node>
|
||||
<command>docker volume rm 5g_rfsimulator_fr2_32prb_rrc.config</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000000">
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
<htmlTabIcon>trash</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
100002
|
||||
004000
|
||||
222222
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
@@ -36,6 +37,13 @@
|
||||
<yaml_path>yaml_files/5g_rfsimulator_fr2_32prb</yaml_path>
|
||||
</testCase>
|
||||
|
||||
<testCase id="004000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Clean-Up any residual volume</desc>
|
||||
<node>localhost</node>
|
||||
<command>docker volume rm 5g_rfsimulator_fr2_32prb_rrc.config</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
<TestCaseRequestedList>
|
||||
111111
|
||||
100001
|
||||
004000
|
||||
000000
|
||||
000001
|
||||
020001
|
||||
@@ -40,7 +41,14 @@
|
||||
<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>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="004000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Clean-Up any residual volume</desc>
|
||||
<node>localhost</node>
|
||||
<command>docker volume rm 5g_rfsimulator_tdd_dora_rrc.config</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000000">
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
<htmlTabIcon>trash</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
100002
|
||||
004000
|
||||
222222
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
@@ -36,6 +37,13 @@
|
||||
<yaml_path>yaml_files/5g_rfsimulator_tdd_dora</yaml_path>
|
||||
</testCase>
|
||||
|
||||
<testCase id="004000">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Clean-Up any residual volume</desc>
|
||||
<node>localhost</node>
|
||||
<command>docker volume rm 5g_rfsimulator_tdd_dora_rrc.config</command>
|
||||
</testCase>
|
||||
|
||||
<testCase id="222222">
|
||||
<class>Clean_Test_Server_Images</class>
|
||||
<desc>Clean Test Images on Test Server</desc>
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
<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>
|
||||
<images_to_pull>oai-gnb-asan oai-nr-ue-asan</images_to_pull>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000000">
|
||||
|
||||
41
ci-scripts/xml_files/container_image_build_cross.xml
Normal file
41
ci-scripts/xml_files/container_image_build_cross.xml
Normal file
@@ -0,0 +1,41 @@
|
||||
<!--
|
||||
|
||||
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>build-tab</htmlTabRef>
|
||||
<htmlTabName>Build Container Images</htmlTabName>
|
||||
<htmlTabIcon>wrench</htmlTabIcon>
|
||||
<TestCaseRequestedList>
|
||||
000001
|
||||
</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="000001">
|
||||
<class>Build_Image</class>
|
||||
<desc>Cross-Compile for ARM64</desc>
|
||||
<kind>build_cross_arm64</kind>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<forced_workspace_cleanup>True</forced_workspace_cleanup>
|
||||
</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>a2fa216</proxy_commit>
|
||||
<proxy_commit>b64d9bce986b38ca59e8582864ade3fcdd05c0dc</proxy_commit>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
|
||||
@@ -35,6 +35,11 @@
|
||||
002003
|
||||
002004
|
||||
002005
|
||||
002006
|
||||
002007
|
||||
002008
|
||||
002009
|
||||
002010
|
||||
000100
|
||||
000010
|
||||
000020
|
||||
@@ -97,12 +102,42 @@
|
||||
<id>amarisoft_ue_5</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="002006">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE</desc>
|
||||
<id>amarisoft_ue_6</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="002007">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE</desc>
|
||||
<id>amarisoft_ue_7</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="002008">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE</desc>
|
||||
<id>amarisoft_ue_8</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="002009">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE</desc>
|
||||
<id>amarisoft_ue_9</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="002010">
|
||||
<class>Attach_UE</class>
|
||||
<desc>Attach UE</desc>
|
||||
<id>amarisoft_ue_10</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000010">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (DL/20Mbps/UDP)(30 sec)(multi-ue profile)</desc>
|
||||
<iperf_args>-u -b 60M -t 30 -i 1 -R</iperf_args>
|
||||
<desc>iperf (DL/7Mbps/UDP)(30 sec)(multi-ue profile)</desc>
|
||||
<iperf_args>-u -b 70M -t 30 -i 1 -R</iperf_args>
|
||||
<direction>IPERF3</direction>
|
||||
<id>amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3</id>
|
||||
<id>amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10</id>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
<iperf_profile>balanced</iperf_profile>
|
||||
@@ -110,10 +145,10 @@
|
||||
|
||||
<testCase id="000020">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (UL/5Mbps/UDP)(30 sec)(multi-ue profile)</desc>
|
||||
<iperf_args>-u -b 15M -t 30 -i 1 </iperf_args>
|
||||
<desc>iperf (UL/2Mbps/UDP)(30 sec)(multi-ue profile)</desc>
|
||||
<iperf_args>-u -b 20M -t 30 -i 1 </iperf_args>
|
||||
<direction>IPERF3</direction>
|
||||
<id>amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3</id>
|
||||
<id>amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10</id>
|
||||
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
|
||||
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
|
||||
<iperf_profile>balanced</iperf_profile>
|
||||
@@ -122,7 +157,7 @@
|
||||
<testCase id="000100">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 20pings in 20sec, multi-ue</desc>
|
||||
<id>amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5</id>
|
||||
<id>amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10</id>
|
||||
<ping_args>-c 20 %cn_ip%</ping_args>
|
||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
||||
<ping_rttavg_threshold>25</ping_rttavg_threshold>
|
||||
@@ -131,7 +166,7 @@
|
||||
<testCase id="000200">
|
||||
<class>Ping</class>
|
||||
<desc>Ping: 100pings in 20sec, multi-ue</desc>
|
||||
<id>amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5</id>
|
||||
<id>amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10</id>
|
||||
<ping_args>-c 100 -i 0.2 %cn_ip%</ping_args>
|
||||
<ping_packetloss_threshold>1</ping_packetloss_threshold>
|
||||
<ping_rttavg_threshold>30</ping_rttavg_threshold>
|
||||
@@ -140,7 +175,7 @@
|
||||
<testCase id="003000">
|
||||
<class>Detach_UE</class>
|
||||
<desc>Detach UE</desc>
|
||||
<id>amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5</id>
|
||||
<id>amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10</id>
|
||||
</testCase>
|
||||
|
||||
<testCase id="004000">
|
||||
|
||||
@@ -111,7 +111,7 @@
|
||||
<testCase id="000002">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>20</idle_sleep_time_in_sec>
|
||||
<idle_sleep_time_in_sec>10</idle_sleep_time_in_sec>
|
||||
</testCase>
|
||||
|
||||
|
||||
@@ -168,14 +168,14 @@
|
||||
<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>echo ci force_reestab | nc -N 192.168.68.194 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} 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>echo ci get_reestab_count | nc -N 192.168.68.194 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1'</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
-->
|
||||
<testCaseList>
|
||||
<htmlTabRef>TEST-SA-FR1-F1-B200</htmlTabRef>
|
||||
<htmlTabName>40 MHz TDD F1 SA</htmlTabName>
|
||||
<htmlTabName>10 MHz FDD F1 SA</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>
|
||||
@@ -39,6 +39,10 @@
|
||||
110011
|
||||
110001
|
||||
150001
|
||||
160001
|
||||
100002
|
||||
160002
|
||||
150001
|
||||
110011
|
||||
110001
|
||||
150000
|
||||
@@ -85,11 +89,11 @@
|
||||
|
||||
<testCase id="130102">
|
||||
<class>Deploy_Object</class>
|
||||
<desc>Deploy gNB-DU (TDD/Band78/40MHz/B200) in a container</desc>
|
||||
<desc>Deploy gNB-DU (FDD/Band1/10MHz/B200) in a container</desc>
|
||||
<yaml_path>ci-scripts/yaml_files/sa_f1_b200_gnb</yaml_path>
|
||||
<eNB_instance>0</eNB_instance>
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<services>gnb_du_tdd</services>
|
||||
<services>gnb_du_fdd</services>
|
||||
</testCase>
|
||||
|
||||
<testCase id="100000">
|
||||
@@ -114,7 +118,7 @@
|
||||
<testCase id="100002">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>20</idle_sleep_time_in_sec>
|
||||
<idle_sleep_time_in_sec>10</idle_sleep_time_in_sec>
|
||||
</testCase>
|
||||
|
||||
<testCase id="150000">
|
||||
@@ -155,8 +159,8 @@
|
||||
|
||||
<testCase id="170000">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (DL/80Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 80M -t 30 -i 1 -fm</iperf_args>
|
||||
<desc>iperf (DL/50Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 50M -t 30 -i 1 -fm</iperf_args>
|
||||
<direction>DL</direction>
|
||||
<id>idefix</id>
|
||||
<iperf_packetloss_threshold>10</iperf_packetloss_threshold>
|
||||
@@ -166,8 +170,8 @@
|
||||
|
||||
<testCase id="170001">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (UL/8Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 8M -t 30 -i 1 -fm</iperf_args>
|
||||
<desc>iperf (UL/25Mbps/UDP)(30 sec)</desc>
|
||||
<iperf_args>-u -b 25M -t 30 -i 1 -fm</iperf_args>
|
||||
<direction>UL</direction>
|
||||
<id>idefix</id>
|
||||
<iperf_packetloss_threshold>1</iperf_packetloss_threshold>
|
||||
@@ -177,13 +181,28 @@
|
||||
|
||||
<testCase id="170002">
|
||||
<class>Iperf</class>
|
||||
<desc>iperf (BIDIR TCP)(20 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-t 20 --bidir</iperf_args>
|
||||
<desc>iperf (BIDIR TCP)(60 sec)(single-ue profile)</desc>
|
||||
<iperf_args>-t 60 --bidir</iperf_args>
|
||||
<direction>BIDIR</direction>
|
||||
<id>idefix</id>
|
||||
<iperf_profile>single-ue</iperf_profile>
|
||||
</testCase>
|
||||
|
||||
<testCase id="160001">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Trigger Reestablishment (on DU)</desc>
|
||||
<node>ofqot</node>
|
||||
<command>echo ci force_reestab | nc -N 192.168.68.195 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment'</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
<testCase id="160002">
|
||||
<class>Custom_Command</class>
|
||||
<desc>Verify Reestablishment (on CU)</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'</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
|
||||
<testCase id="130201">
|
||||
<class>Undeploy_Object</class>
|
||||
<desc>Undeploy CU-DU</desc>
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
<testCase id="200002">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
<idle_sleep_time_in_sec>20</idle_sleep_time_in_sec>
|
||||
<idle_sleep_time_in_sec>10</idle_sleep_time_in_sec>
|
||||
</testCase>
|
||||
|
||||
|
||||
@@ -162,14 +162,14 @@
|
||||
<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>echo ci force_reestab | nc -N 192.168.68.194 9090 | grep -E 'Reset RLC counters of UE RNTI [0-9a-f]{4} to trigger reestablishment'</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
<testCase id="260002">
|
||||
<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>echo ci get_reestab_count | nc -N 192.168.68.194 9090 | grep -E 'UE RNTI [0-9a-f]{4} reestab 1'</command>
|
||||
<command_fail>yes</command_fail>
|
||||
</testCase>
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
<testCase id="090102">
|
||||
<class>Initialize_OAI_UE</class>
|
||||
<desc>Initialize NR UE USRP</desc>
|
||||
<Initialize_OAI_UE_args>--phy-test --usrp-args "addr=192.168.30.2,second_addr=192.168.50.2,clock_source=external,time_source=external" --ue-rxgain 50 --rrc_config_path . --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
|
||||
<Initialize_OAI_UE_args>--phy-test --usrp-args "addr=192.168.30.2,second_addr=192.168.50.2,clock_source=external,time_source=external" --ue-rxgain 50 --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
|
||||
<air_interface>NR</air_interface>
|
||||
</testCase>
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
<testCase id="090104">
|
||||
<class>Initialize_OAI_UE</class>
|
||||
<desc>Initialize NR UE USRP</desc>
|
||||
<Initialize_OAI_UE_args>--phy-test --usrp-args "addr=192.168.30.2,second_addr=192.168.50.2,clock_source=external,time_source=external" --ue-rxgain 75 --rrc_config_path . --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
|
||||
<Initialize_OAI_UE_args>--phy-test --usrp-args "addr=192.168.30.2,second_addr=192.168.50.2,clock_source=external,time_source=external" --ue-rxgain 75 --log_config.global_log_options level,nocolor,time</Initialize_OAI_UE_args>
|
||||
<air_interface>NR</air_interface>
|
||||
</testCase>
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
<mode>TesteNB</mode>
|
||||
<class>Build_eNB</class>
|
||||
<desc>Build gNB (USRP)</desc>
|
||||
<Build_eNB_args>--gNB -w USRP --ninja -c -P --build-lib "ldpc_cuda ldpc_t1" --cmake-opt -DASN1C_EXEC=/opt/asn1c/bin/asn1c</Build_eNB_args>
|
||||
<Build_eNB_args>--gNB -w USRP --ninja -c -P --build-lib "ldpc_cuda" --cmake-opt -DASN1C_EXEC=/opt/asn1c/bin/asn1c</Build_eNB_args>
|
||||
<forced_workspace_cleanup>True</forced_workspace_cleanup>
|
||||
</testCase>
|
||||
|
||||
|
||||
@@ -1,102 +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-t1-offload</htmlTabRef>
|
||||
<htmlTabName>Test T1 Offload</htmlTabName>
|
||||
<htmlTabIcon>tasks</htmlTabIcon>
|
||||
<repeatCount>1</repeatCount>
|
||||
<TestCaseRequestedList>000111 000112 000121 000122 000131 000132 000211 000212 000221 000222 000231 000232</TestCaseRequestedList>
|
||||
<TestCaseExclusionList></TestCaseExclusionList>
|
||||
|
||||
<testCase id="000111">
|
||||
<class>Run_LDPCt1Test</class>
|
||||
<desc>Run nr_ulsim with CPU</desc>
|
||||
<physim_run_args>-n100 -s30 -m5 -r106 -R106 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000112">
|
||||
<class>Run_LDPCt1Test</class>
|
||||
<desc>Run nr_ulsim with T1 LDPC offload</desc>
|
||||
<physim_run_args>-n100 -s30 -m5 -r106 -R106 -o -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000121">
|
||||
<class>Run_LDPCt1Test</class>
|
||||
<desc>Run nr_ulsim with CPU</desc>
|
||||
<physim_run_args>-n100 -s30 -m15 -r106 -R106 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000122">
|
||||
<class>Run_LDPCt1Test</class>
|
||||
<desc>Run nr_ulsim with T1 LDPC offload</desc>
|
||||
<physim_run_args>-n100 -s30 -m15 -r106 -R106 -o -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000131">
|
||||
<class>Run_LDPCt1Test</class>
|
||||
<desc>Run nr_ulsim with CPU</desc>
|
||||
<physim_run_args>-n100 -s30 -m25 -r106 -R106 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000132">
|
||||
<class>Run_LDPCt1Test</class>
|
||||
<desc>Run nr_ulsim with T1 LDPC offload</desc>
|
||||
<physim_run_args>-n100 -s30 -m25 -r106 -R106 -o -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000211">
|
||||
<class>Run_LDPCt1Test</class>
|
||||
<desc>Run nr_ulsim with CPU</desc>
|
||||
<physim_run_args>-n100 -s30 -m5 -r273 -R273 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000212">
|
||||
<class>Run_LDPCt1Test</class>
|
||||
<desc>Run nr_ulsim with T1 LDPC offload</desc>
|
||||
<physim_run_args>-n100 -s30 -m5 -r273 -R273 -o -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000221">
|
||||
<class>Run_LDPCt1Test</class>
|
||||
<desc>Run nr_ulsim with CPU</desc>
|
||||
<physim_run_args>-n100 -s30 -m15 -r273 -R273 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000222">
|
||||
<class>Run_LDPCt1Test</class>
|
||||
<desc>Run nr_ulsim with T1 LDPC offload</desc>
|
||||
<physim_run_args>-n100 -s30 -m15 -r273 -R273 -o -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000231">
|
||||
<class>Run_LDPCt1Test</class>
|
||||
<desc>Run nr_ulsim with CPU</desc>
|
||||
<physim_run_args>-n100 -s30 -m25 -r273 -R273 -C10 -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000232">
|
||||
<class>Run_LDPCt1Test</class>
|
||||
<desc>Run nr_ulsim with T1 LDPC offload</desc>
|
||||
<physim_run_args>-n100 -s30 -m25 -r273 -R273 -o -P</physim_run_args>
|
||||
</testCase>
|
||||
|
||||
</testCaseList>
|
||||
@@ -410,16 +410,33 @@ in HSS config:
|
||||
NB_USERS: 10
|
||||
```
|
||||
|
||||
in UE config:
|
||||
All UE parameter values will be taken from the mounted config file, so modify
|
||||
the corresponding UE file to reflect the above changes
|
||||
|
||||
```yaml
|
||||
MCC: '208'
|
||||
MNC: '96'
|
||||
SHORT_IMSI: '0100000001'
|
||||
LTE_KEY: 'fec86ba6eb707ed08905757b1bb44b8f'
|
||||
OPC: 'c42449363bbad02b66d16bc975d77cc1'
|
||||
MSISDN: '001011234561010'
|
||||
HPLMN: 20896
|
||||
oai_ue0:
|
||||
[...]
|
||||
volumes:
|
||||
- ../../conf_files/lteue.usim-ci.conf:/opt/oai-lte-ue/etc/ue_usim.conf
|
||||
```
|
||||
|
||||
and in the UE file, you should have
|
||||
```
|
||||
PLMN: {
|
||||
PLMN0: {
|
||||
FULLNAME="OpenAirInterface";
|
||||
SHORTNAME="OAICN";
|
||||
MNC="96";
|
||||
MCC="208";
|
||||
};
|
||||
};
|
||||
[...]
|
||||
SIM: {
|
||||
MSIN="0100000001";
|
||||
USIM_API_K="fec86ba6eb707ed08905757b1bb44b8f";
|
||||
OPC="c42449363bbad02b66d16bc975d77cc1";
|
||||
MSISDN="001011234561010";
|
||||
};
|
||||
```
|
||||
|
||||
As you can see: `LTE_K` and `LTE_KEY` are the same value. And `OP_KEY` and `OPC` can be deduced from each other. Look in HSS logs.
|
||||
@@ -471,13 +488,19 @@ in SPGW-C/-U configs:
|
||||
REALM: openairinterface.org
|
||||
```
|
||||
|
||||
in eNB config:
|
||||
In eNB, all the parameter values will be taken from the mounted config file.
|
||||
|
||||
```yaml
|
||||
MCC: '208'
|
||||
MNC: '96'
|
||||
MNC_LENGTH: 2
|
||||
TAC: 1
|
||||
oai_enb0:
|
||||
[...]
|
||||
volumes:
|
||||
- ../../conf_files/enb.band7.25prb.rfsim.conf:/opt/oai-enb/etc/enb.conf
|
||||
```
|
||||
|
||||
with the eNB config reading:
|
||||
|
||||
```libconfig
|
||||
plmn_list = ( { mcc = 208; mnc = 96; mnc_length = 2; } );
|
||||
```
|
||||
|
||||
The values SHALL match, and `TAC` shall match `TAC_0` from MME.
|
||||
|
||||
@@ -168,6 +168,7 @@ services:
|
||||
container_name: rfsim5g-oai-cu
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-ext-dn
|
||||
networks:
|
||||
@@ -186,6 +187,7 @@ services:
|
||||
container_name: rfsim5g-oai-du
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-cu
|
||||
networks:
|
||||
@@ -198,12 +200,51 @@ services:
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-du2:
|
||||
image: oaisoftwarealliance/oai-gnb:develop
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-du2
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim --gNBs.[0].gNB_DU_ID 0xe01 --gNBs.[0].nr_cellid 87654321 --gNBs.[0].servingCellConfigCommon.[0].physCellId 1 --MACRLCs.[0].local_n_address 192.168.71.143 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-cu
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.143
|
||||
volumes:
|
||||
- ../../conf_files/gnb-du.sa.band78.106prb.rfsim.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-softmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-du3:
|
||||
image: oaisoftwarealliance/oai-gnb:develop
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-du3
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim --gNBs.[0].gNB_DU_ID 0xe02 --gNBs.[0].nr_cellid 11111111 --gNBs.[0].servingCellConfigCommon.[0].physCellId 2 --MACRLCs.[0].local_n_address 192.168.71.144 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-cu
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.144
|
||||
volumes:
|
||||
- ../../conf_files/gnb-du.sa.band78.106prb.rfsim.conf:/opt/oai-gnb/etc/gnb.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
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 106 --numerology 1 --uicc0.imsi 208990100001100 -C 3619200000 --rfsimulator.serveraddr 192.168.71.142 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-du
|
||||
networks:
|
||||
@@ -216,6 +257,44 @@ services:
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-nr-ue2:
|
||||
image: oaisoftwarealliance/oai-nr-ue:develop
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue2
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 106 --numerology 1 --uicc0.imsi 208990100001101 -C 3619200000 --rfsimulator.serveraddr 192.168.71.143 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-du2
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.151
|
||||
volumes:
|
||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-uesoftmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-nr-ue3:
|
||||
image: oaisoftwarealliance/oai-nr-ue:develop
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue3
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 106 --numerology 1 --uicc0.imsi 208990100001102 -C 3619200000 --rfsimulator.serveraddr 192.168.71.144 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-du3
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.152
|
||||
volumes:
|
||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-uesoftmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
networks:
|
||||
public_net:
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -168,6 +168,7 @@ services:
|
||||
container_name: rfsim5g-oai-gnb
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa -E --rfsim --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-ext-dn
|
||||
networks:
|
||||
@@ -185,7 +186,8 @@ services:
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 --uicc0.imsi 208990100001100 --band 66 -C 2169080000 --CO -400000000 --ssb 378 --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 --uicc0.imsi 208990100001100 --band 66 -C 2169090000 --CO -400000000 --ssb 378 --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
|
||||
@@ -12,18 +12,81 @@
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
This page is only valid for an `Ubuntu18` host.
|
||||
This page is valid for an `Ubuntu18` host.
|
||||
It is also valid for `Ubuntu 20.04`.
|
||||
|
||||
This tutorial is only valid once this file is merged into the `develop` branch.
|
||||
# 1. Adapt the `docker-compose` to your environment #
|
||||
The yaml file is in the following directory: `ci-scripts/yaml_files/5g_l2sim_tdd`
|
||||
|
||||
# 1. Retrieving the images on Docker-Hub #
|
||||
In the `SMF` section, provide your own DNS IP address:
|
||||
|
||||
```yaml
|
||||
DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100
|
||||
```
|
||||
gNB section:
|
||||
|
||||
All the parameter values will be taken from the mounted config file:
|
||||
|
||||
```yaml
|
||||
oai-gnb:
|
||||
[...]
|
||||
volumes:
|
||||
- ../../conf_files/gnb.sa.band78.106prb.l2sim.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
```
|
||||
|
||||
You need to provide your docker-host primary IP address and interface name: in our case `172.21.16.128` and `eno1`.
|
||||
The following refers to the contents of the previously mentioned .conf file
|
||||
|
||||
```yaml
|
||||
GNB_NGA_IF_NAME: eno1
|
||||
GNB_NGA_IP_ADDRESS: 172.21.16.128
|
||||
GNB_NGU_IF_NAME: eno1
|
||||
GNB_NGU_IP_ADDRESS: 172.21.16.128
|
||||
```
|
||||
|
||||
For the UE, all the parameter values will be taken from the mounted config
|
||||
file, in the section `oai-nr-ue0`:
|
||||
|
||||
```yaml
|
||||
oai-nr-ue0:
|
||||
[...]
|
||||
volumes:
|
||||
- ../../conf_files/nrue.band78.106prb.l2sim.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
- ../../../openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results:/opt/oai-nr-ue/openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results
|
||||
```
|
||||
|
||||
In this section, you need to set the proper values for `local_n_if_name` and `remote_n_address`
|
||||
where the UE configuration (mounted to `/opt/oai-nr-ue/etc/nr-ue.conf`) reads:
|
||||
|
||||
```libconfig
|
||||
MACRLCs = (
|
||||
{
|
||||
num_cc = 1;
|
||||
tr_n_preference = "nfapi";
|
||||
local_n_if_name = "eno1";
|
||||
remote_n_address = "127.0.0.1"; //Proxy IP
|
||||
local_n_address = "127.0.0.1";
|
||||
...
|
||||
```
|
||||
|
||||
This tutorial is a first draft. This nFAPI feature and the proxy are still under development.
|
||||
|
||||
At time of writing, we were able to run in `host-mode`, 1 `NR-UE` and just ping traffic.
|
||||
|
||||
|
||||
|
||||
|
||||
# 2. Retrieving the images on Docker-Hub #
|
||||
|
||||
Currently the images are hosted under the team account `oaisoftwarealliance`. They were previously hosted under the user account `rdefosseoai`.
|
||||
|
||||
Once again you may need to log on [docker-hub](https://hub.docker.com/) if your organization has reached pulling limit as `anonymous`.
|
||||
|
||||
```bash
|
||||
$ docker login
|
||||
docker login
|
||||
```
|
||||
```bash
|
||||
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
|
||||
Username:
|
||||
Password:
|
||||
@@ -32,33 +95,33 @@ Password:
|
||||
Now pull images.
|
||||
|
||||
```bash
|
||||
$ docker pull mysql:8.0
|
||||
$ docker pull oaisoftwarealliance/oai-amf:v1.5.0
|
||||
$ docker pull oaisoftwarealliance/oai-nrf:v1.5.0
|
||||
$ docker pull oaisoftwarealliance/oai-smf:v1.5.0
|
||||
$ docker pull oaisoftwarealliance/oai-spgwu-tiny:v1.5.0
|
||||
$ docker pull oaisoftwarealliance/trf-gen-cn5g:focal
|
||||
docker pull mysql:8.0
|
||||
docker pull oaisoftwarealliance/oai-amf:v1.5.0
|
||||
docker pull oaisoftwarealliance/oai-nrf:v1.5.0
|
||||
docker pull oaisoftwarealliance/oai-smf:v1.5.0
|
||||
docker pull oaisoftwarealliance/oai-spgwu-tiny:v1.5.0
|
||||
docker pull oaisoftwarealliance/trf-gen-cn5g:focal
|
||||
|
||||
$ docker pull oaisoftwarealliance/oai-gnb:develop
|
||||
$ docker pull oaisoftwarealliance/oai-nr-ue:develop
|
||||
$ docker pull oaisoftwarealliance/proxy:develop
|
||||
docker pull oaisoftwarealliance/oai-gnb:develop
|
||||
docker pull oaisoftwarealliance/oai-nr-ue:develop
|
||||
docker pull oaisoftwarealliance/proxy:develop
|
||||
```
|
||||
|
||||
And **re-tag** them for tutorials' docker-compose file to work.
|
||||
|
||||
```bash
|
||||
$ docker image tag oaisoftwarealliance/proxy:develop oai-lte-multi-ue-proxy:latest
|
||||
docker image tag oaisoftwarealliance/proxy:develop oai-lte-multi-ue-proxy:latest
|
||||
```
|
||||
|
||||
```bash
|
||||
$ docker logout
|
||||
docker logout
|
||||
```
|
||||
|
||||
Note that the proxy image is based on the source available at [https://github.com/EpiSci/oai-lte-5g-multi-ue-proxy](https://github.com/EpiSci/oai-lte-5g-multi-ue-proxy).
|
||||
|
||||
At time of writing, the `latest` tag corresponded to `56cfdc046a5f96d5e67d42a2fc2bf6ba2fe58b41` commit.
|
||||
|
||||
# 2. Deploy containers #
|
||||
# 3. Deploy containers #
|
||||
|
||||
**CAUTION: this SHALL be done in multiple steps.**
|
||||
|
||||
@@ -72,11 +135,13 @@ The `gNB`, `proxy` and `NR-UE` containers will be deployed in `host`-mode. It wi
|
||||
sudo ifconfig lo: 127.0.0.2 netmask 255.0.0.0 up
|
||||
```
|
||||
|
||||
## 2.1. Deploy OAI 5G Core Network ##
|
||||
## 3.1. Deploy OAI 5G Core Network ##
|
||||
|
||||
```bash
|
||||
$ cd ci-scripts/yaml_files/5g_l2sim_tdd
|
||||
$ docker-compose up -d mysql oai-nrf oai-amf oai-smf oai-spgwu oai-ext-dn
|
||||
cd ci-scripts/yaml_files/5g_l2sim_tdd
|
||||
docker-compose up -d mysql oai-nrf oai-amf oai-smf oai-spgwu oai-ext-dn
|
||||
```
|
||||
```bash
|
||||
Creating network "l2sim-oai-public-net" with driver "bridge"
|
||||
Creating network "l2sim-oai-traffic_net-net" with driver "bridge"
|
||||
Creating l2sim-oai-nrf ... done
|
||||
@@ -90,7 +155,9 @@ Creating l2sim-oai-ext-dn ... done
|
||||
Wait for a bit.
|
||||
|
||||
```bash
|
||||
$ docker-compose ps -a
|
||||
docker-compose ps -a
|
||||
```
|
||||
```bash
|
||||
Name Command State Ports
|
||||
-------------------------------------------------------------------------------------------------
|
||||
l2sim-mysql docker-entrypoint.sh mysqld Up (healthy) 3306/tcp, 33060/tcp
|
||||
@@ -104,7 +171,9 @@ l2sim-oai-spgwu /openair-spgwu-tiny/bin/en ... Up (healthy) 2152/udp, 880
|
||||
At this point, you can prepare a capture on the newly-created public docker bridges:
|
||||
|
||||
```bash
|
||||
$ ifconfig
|
||||
ifconfig
|
||||
```
|
||||
```bash
|
||||
...
|
||||
l2sim-public: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
|
||||
inet 192.168.71.129 netmask 255.255.255.192 broadcast 192.168.71.191
|
||||
@@ -124,16 +193,19 @@ l2sim-traffic: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
|
||||
TX packets 3999 bytes 23367972 (23.3 MB)
|
||||
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
||||
...
|
||||
|
||||
$ sudo nohup tshark -f "(host 192.168.72.135 and icmp) or (not host 192.168.72.135 and not arp and not port 53 and not port 2152 and not port 2153)" -i l2sim-public -i l2sim-traffic -w /tmp/capture_5g_l2sim_tdd.pcap > /tmp/tshark.log 2>&1 &
|
||||
```
|
||||
```bash
|
||||
sudo nohup tshark -f "(host 192.168.72.135 and icmp) or (not host 192.168.72.135 and not arp and not port 53 and not port 2152 and not port 2153)" -i l2sim-public -i l2sim-traffic -w /tmp/capture_5g_l2sim_tdd.pcap > /tmp/tshark.log 2>&1 &
|
||||
```
|
||||
|
||||
## 2.2. Deploy OAI gNB in Standalone Mode as a VNF ##
|
||||
## 3.2. Deploy OAI gNB in Standalone Mode as a VNF ##
|
||||
|
||||
**CAUTION: To execute this 2nd step, the whole `CN5G` SHALL be in `healthy` state (especially the `mysql` container).**
|
||||
|
||||
```bash
|
||||
$ docker-compose up -d oai-gnb
|
||||
docker-compose up -d oai-gnb
|
||||
```
|
||||
```bash
|
||||
l2sim-oai-nrf is up-to-date
|
||||
l2sim-oai-spgwu is up-to-date
|
||||
l2sim-oai-ext-dn is up-to-date
|
||||
@@ -144,6 +216,8 @@ Wait for a bit.
|
||||
|
||||
```bash
|
||||
$ docker-compose ps -a
|
||||
```
|
||||
```bash
|
||||
Name Command State Ports
|
||||
-------------------------------------------------------------------------------------------------
|
||||
l2sim-mysql docker-entrypoint.sh mysqld Up (healthy) 3306/tcp, 33060/tcp
|
||||
@@ -157,8 +231,10 @@ l2sim-oai-spgwu /openair-spgwu-tiny/bin/en ... Up (healthy) 2152/udp, 880
|
||||
|
||||
You can verify that the `gNB` is connected with the `AMF`:
|
||||
|
||||
```bagh
|
||||
$ docker logs rfsim5g-oai-amf
|
||||
```bash
|
||||
docker logs l2sim-oai-amf
|
||||
```
|
||||
```bash
|
||||
...
|
||||
[AMF] [amf_app] [info ] |----------------------------------------------------gNBs' information-------------------------------------------|
|
||||
[AMF] [amf_app] [info ] | Index | Status | Global ID | gNB Name | PLMN |
|
||||
@@ -167,10 +243,12 @@ $ docker logs rfsim5g-oai-amf
|
||||
...
|
||||
```
|
||||
|
||||
## 2.3. Deploy OAI NR-UE and proxy
|
||||
## 3.3. Deploy OAI NR-UE and proxy
|
||||
|
||||
```bash
|
||||
$ docker-compose up -d proxy oai-nr-ue0
|
||||
docker-compose up -d proxy oai-nr-ue
|
||||
```
|
||||
```bash
|
||||
l2sim-mysql is up-to-date
|
||||
l2sim-oai-nrf is up-to-date
|
||||
l2sim-oai-amf is up-to-date
|
||||
@@ -185,7 +263,9 @@ Creating l2sim-proxy ... done
|
||||
Wait for a bit.
|
||||
|
||||
```bash
|
||||
$ docker-compose ps -a
|
||||
docker-compose ps -a
|
||||
```
|
||||
```bash
|
||||
Name Command State Ports
|
||||
-------------------------------------------------------------------------------------------------
|
||||
l2sim-mysql docker-entrypoint.sh mysqld Up (healthy) 3306/tcp, 33060/tcp
|
||||
@@ -197,8 +277,11 @@ l2sim-oai-nrf /bin/bash /openair-nrf/bin ... Up (healthy) 80/tcp, 9090/
|
||||
l2sim-oai-smf /bin/bash /openair-smf/bin ... Up (healthy) 80/tcp, 8805/udp, 9090/tcp
|
||||
l2sim-oai-spgwu /openair-spgwu-tiny/bin/en ... Up (healthy) 2152/udp, 8805/udp
|
||||
l2sim-proxy /oai-lte-multi-ue-proxy/bi ... Up (healthy)
|
||||
|
||||
$ docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}} {{.MemUsage}}\t{{.MemPerc}}" l2sim-mysql l2sim-oai-amf l2sim-oai-ext-dn l2sim-oai-gnb l2sim-oai-nr-ue0 l2sim-oai-nrf l2sim-oai-smf l2sim-oai-spgwu l2sim-proxy
|
||||
```
|
||||
```bash
|
||||
docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}} {{.MemUsage}}\t{{.MemPerc}}" l2sim-mysql l2sim-oai-amf l2sim-oai-ext-dn l2sim-oai-gnb l2sim-oai-nr-ue0 l2sim-oai-nrf l2sim-oai-smf l2sim-oai-spgwu l2sim-proxy
|
||||
```
|
||||
```bash
|
||||
CONTAINER CPU % MEM USAGE / LIMIT MEM %
|
||||
l2sim-mysql 0.03% 206.7MiB / 62.54GiB 0.32%
|
||||
l2sim-oai-amf 4.05% 29.49MiB / 62.54GiB 0.05%
|
||||
@@ -216,7 +299,9 @@ l2sim-proxy 6.97% 290.4MiB / 62.54GiB 0.45%
|
||||
But the CPU speed matters; I am running on a fast server:
|
||||
|
||||
```bash
|
||||
$ lscpu
|
||||
lscpu
|
||||
```
|
||||
```bash
|
||||
Architecture: x86_64
|
||||
CPU(s): 16
|
||||
...
|
||||
@@ -239,7 +324,9 @@ We will work on this issue.
|
||||
Making sure the OAI UE is connected:
|
||||
|
||||
```bash
|
||||
$ docker exec -it l2sim-oai-nr-ue /bin/bash
|
||||
docker exec -it l2sim-oai-nr-ue0 /bin/bash
|
||||
```
|
||||
```bash
|
||||
root@bb4d400a832d:/opt/oai-nr-ue# ifconfig
|
||||
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
|
||||
inet 192.168.71.137 netmask 255.255.255.192 broadcast 192.168.71.191
|
||||
@@ -266,14 +353,19 @@ oaitun_ue1: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
|
||||
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
||||
```
|
||||
|
||||
# 3. Check traffic #
|
||||
# 4. Check traffic #
|
||||
|
||||
## 3.1. Check your Internet connectivity ##
|
||||
## 4.1. Check your Internet connectivity ##
|
||||
|
||||
You can also check with the `ext-dn` container (IP address is `192.168.72.135` in docker-compose)
|
||||
|
||||
```bash
|
||||
$ docker exec -it l2sim-oai-nr-ue /bin/bash
|
||||
docker exec -it l2sim-oai-nr-ue0 /bin/bash
|
||||
```
|
||||
```bash
|
||||
ping -I oaitun_ue1 -c 20 192.168.72.135
|
||||
```
|
||||
```bash
|
||||
root@bb4d400a832d# ping -I oaitun_ue1 -c 20 192.168.72.135
|
||||
PING 192.168.72.135 (192.168.72.135) from 12.1.1.2 oaitun_ue1: 56(84) bytes of data.
|
||||
64 bytes from 192.168.72.135: icmp_seq=1 ttl=63 time=65.1 ms
|
||||
@@ -287,10 +379,12 @@ PING 192.168.72.135 (192.168.72.135) from 12.1.1.2 oaitun_ue1: 56(84) bytes of d
|
||||
rtt min/avg/max/mdev = 16.413/120.639/209.673/57.159 ms
|
||||
```
|
||||
|
||||
# 4. Un-deployment #
|
||||
# 5. Un-deployment #
|
||||
|
||||
```bash
|
||||
$ docker-compose down
|
||||
docker-compose down
|
||||
```
|
||||
```bash
|
||||
Stopping l2sim-oai-nr-ue2 ... done
|
||||
Stopping l2sim-oai-nr-ue ... done
|
||||
Stopping l2sim-oai-gnb ... done
|
||||
@@ -313,35 +407,3 @@ Removing network l2sim-oai-public-net
|
||||
Removing network l2sim-oai-traffic-net
|
||||
```
|
||||
|
||||
# 5. Adapt the `docker-compose` to your environment #
|
||||
|
||||
In the `SMF` section, provide your own DNS IP address:
|
||||
|
||||
```yaml
|
||||
DEFAULT_DNS_IPV4_ADDRESS=172.21.3.100
|
||||
```
|
||||
|
||||
In the `gNB` section, provide your docker-host primary IP address and interface name: in our case `172.21.16.128` and `eno1`.
|
||||
|
||||
```yaml
|
||||
GNB_NGA_IF_NAME: eno1
|
||||
GNB_NGA_IP_ADDRESS: 172.21.16.128
|
||||
GNB_NGU_IF_NAME: eno1
|
||||
GNB_NGU_IP_ADDRESS: 172.21.16.128
|
||||
```
|
||||
|
||||
Same thing in the `nr-ue` section:
|
||||
|
||||
```yaml
|
||||
NR_UE_NFAPI_IF_NAME: eno1
|
||||
```
|
||||
|
||||
This tutorial is a first draft. This nFAPI feature and the proxy are still under development.
|
||||
|
||||
At time of writing, we were able to run in `host-mode`, 1 `NR-UE` and just ping traffic.
|
||||
|
||||
Later development will include:
|
||||
|
||||
- deploying `gNB-VNF`, `proxy` and `UE` in isolated containers (with their own IP address)
|
||||
- more UEs
|
||||
- more traffic (`UDP` and `TCP`)
|
||||
|
||||
@@ -170,6 +170,7 @@ services:
|
||||
environment:
|
||||
TZ: Europe/Paris
|
||||
USE_ADDITIONAL_OPTIONS: --sa --nfapi VNF --emulate-l1 --log_config.global_log_options level,time,thread_id,nocolor
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-spgwu
|
||||
- oai-amf
|
||||
@@ -206,6 +207,7 @@ services:
|
||||
TZ: Europe/Paris
|
||||
OPENAIR_DIR: /opt/oai-nr-ue
|
||||
USE_ADDITIONAL_OPTIONS: --nfapi STANDALONE_PNF --node-number 2 --sa --emulate-l1 --log_config.global_log_options level,time,thread_id,nocolor
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
volumes:
|
||||
- ../../conf_files/nrue.band78.106prb.l2sim.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
- ../../../openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results:/opt/oai-nr-ue/openair1/SIMULATION/LTE_PHY/BLER_SIMULATIONS/AWGN/AWGN_results
|
||||
|
||||
@@ -234,24 +234,23 @@ oaitun_ue1: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1500
|
||||
|
||||
## 2.4. Deploy Second OAI NR-UE in RF simulator mode and in Standalone Mode ##
|
||||
|
||||
```bash
|
||||
Create a entry for new IMSI (208990100001101) in oai_db.sql file
|
||||
Refer Section - [Making the NR-UE connect to the core network](#51-making-the-nr-ue-connect-to-the-core-network)
|
||||
Create a entry for new IMSI (208990100001101) in oai_db.sql file.
|
||||
For this, refer to section [Making the NR-UE connect to the core
|
||||
network](#51-making-the-nr-ue-connect-to-the-core-network)
|
||||
|
||||
Create entry for Second UE in docker-compose.yaml file as follows:
|
||||
Create the entry for the second UE in `docker-compose.yaml` file as follows:
|
||||
|
||||
```yaml
|
||||
oai-nr-ue2:
|
||||
image: oai-nr-ue:develop
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue2
|
||||
environment:
|
||||
FULL_IMSI: '208990100001101'
|
||||
FULL_KEY: 'fec86ba6eb707ed08905757b1bb44b8f'
|
||||
OPC: 'C42449363BBAD02B66D16BC975D77CC1'
|
||||
DNN: oai
|
||||
NSSAI_SST: 1
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 -C 3619200000 --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
volumes:
|
||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.151
|
||||
@@ -496,13 +495,31 @@ INSERT INTO `users` VALUES ('208990100001101','1','55000000000000',NULL,'PURGED'
|
||||
|
||||
As you can see, 2 other values shall match in the NR-UE section of `docker-compose.yaml`:
|
||||
|
||||
OAI UE - 1
|
||||
* `FULL_IMSI: '208990100001100'`
|
||||
* `FULL_KEY: 'fec86ba6eb707ed08905757b1bb44b8f'`
|
||||
All the values such as IMSI and KEY are taken from the configuration file mounted into the container. For the first UE, provision as usual through the config file
|
||||
|
||||
OAI UE - 2
|
||||
* `FULL_IMSI: '208990100001101'`
|
||||
* `FULL_KEY: 'fec86ba6eb707ed08905757b1bb44b8f'`
|
||||
```yaml
|
||||
oai-nr-ue:
|
||||
[...]
|
||||
volumes:
|
||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
```
|
||||
|
||||
with the config having:
|
||||
```libconfig
|
||||
uicc0 = {
|
||||
imsi = "208990100001100";
|
||||
key = "fec86ba6eb707ed08905757b1bb44b8f";
|
||||
opc= "C42449363BBAD02B66D16BC975D77CC1";
|
||||
dnn= "oai";
|
||||
nssai_sst=1;
|
||||
}
|
||||
```
|
||||
|
||||
The second UE's IMSI might be changed by either having the second UEs
|
||||
docker-compose entry mount another config, or add `--uicc0.imsi
|
||||
208990100001101` in `USE_ADDITIONAL_OPTIONS` entry. Note that the latter is a
|
||||
feature of the configuration module to overwrite any configuration option in
|
||||
the config file on the command line.
|
||||
|
||||
We are also using a dedicated `oai-smf.conf` for the `SMF` container: the `oai` DNN shall match the one in the NR-UE section of `docker-compose.yaml` (`DNN: oai`).
|
||||
|
||||
|
||||
@@ -168,6 +168,7 @@ services:
|
||||
container_name: rfsim5g-oai-gnb
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa -E --rfsim --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-ext-dn
|
||||
networks:
|
||||
@@ -184,8 +185,9 @@ services:
|
||||
image: oaisoftwarealliance/oai-nr-ue:develop
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue
|
||||
environment:
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 --uicc0.imsi 208990100001100 -C 3619200000 --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
@@ -198,13 +200,13 @@ services:
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
oai-nr-ue2:
|
||||
image: oaisoftwarealliance/oai-nr-ue:develop
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue2
|
||||
environment:
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 --uicc0.imsi 208990100001101 -C 3619200000 --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
@@ -217,6 +219,158 @@ services:
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-nr-ue3:
|
||||
image: oaisoftwarealliance/oai-nr-ue:develop
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue3
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 --uicc0.imsi 208990100001102 -C 3619200000 --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.152
|
||||
volumes:
|
||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-uesoftmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-nr-ue4:
|
||||
image: oaisoftwarealliance/oai-nr-ue:develop
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue4
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 --uicc0.imsi 208990100001103 -C 3619200000 --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.153
|
||||
volumes:
|
||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-uesoftmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-nr-ue5:
|
||||
image: oaisoftwarealliance/oai-nr-ue:develop
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue5
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 --uicc0.imsi 208990100001104 -C 3619200000 --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.154
|
||||
volumes:
|
||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-uesoftmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-nr-ue6:
|
||||
image: oaisoftwarealliance/oai-nr-ue:develop
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue6
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 --uicc0.imsi 208990100001105 -C 3619200000 --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.155
|
||||
volumes:
|
||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-uesoftmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-nr-ue7:
|
||||
image: oaisoftwarealliance/oai-nr-ue:develop
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue7
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 --uicc0.imsi 208990100001106 -C 3619200000 --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.156
|
||||
volumes:
|
||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-uesoftmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-nr-ue8:
|
||||
image: oaisoftwarealliance/oai-nr-ue:develop
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue8
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 --uicc0.imsi 208990100001107 -C 3619200000 --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.157
|
||||
volumes:
|
||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-uesoftmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-nr-ue9:
|
||||
image: oaisoftwarealliance/oai-nr-ue:develop
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue9
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 --uicc0.imsi 208990100001108 -C 3619200000 --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.158
|
||||
volumes:
|
||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-uesoftmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
oai-nr-ue10:
|
||||
image: oaisoftwarealliance/oai-nr-ue:develop
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue10
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: -E --sa --rfsim -r 106 --numerology 1 --uicc0.imsi 208990100001109 -C 3619200000 --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.159
|
||||
volumes:
|
||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
healthcheck:
|
||||
test: /bin/bash -c "pgrep nr-uesoftmodem"
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
networks:
|
||||
public_net:
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -168,6 +168,7 @@ services:
|
||||
container_name: rfsim5g-oai-gnb
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-ext-dn
|
||||
networks:
|
||||
@@ -186,6 +187,7 @@ services:
|
||||
container_name: rfsim5g-oai-nr-ue
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 24 --ssb 24 --numerology 1 -C 3604800000 --uicc0.imsi 208990100001100 --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
|
||||
@@ -168,6 +168,7 @@ services:
|
||||
container_name: rfsim5g-oai-gnb
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-ext-dn
|
||||
networks:
|
||||
@@ -187,6 +188,7 @@ services:
|
||||
container_name: rfsim5g-oai-nr-ue
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 106 --numerology 1 --band 78 -C 3319680000 --ue-nb-ant-tx 2 --uicc0.imsi 208990100001100 --ue-nb-ant-rx 2 --uecap_file /opt/oai-nr-ue/etc/uecap.xml --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
|
||||
@@ -170,6 +170,7 @@ services:
|
||||
container_name: rfsim5g-oai-cucp
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-ext-dn
|
||||
networks:
|
||||
@@ -190,8 +191,8 @@ services:
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-cuup
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim
|
||||
#--log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-cucp
|
||||
networks:
|
||||
@@ -213,6 +214,7 @@ services:
|
||||
container_name: rfsim5g-oai-du
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
networks:
|
||||
ran_net:
|
||||
ipv4_address: 192.168.72.142
|
||||
@@ -230,6 +232,7 @@ services:
|
||||
container_name: rfsim5g-oai-nr-ue
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 106 --numerology 1 -C 3619200000 --rfsimulator.serveraddr 192.168.72.142 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-du
|
||||
networks:
|
||||
|
||||
@@ -6,6 +6,7 @@ services:
|
||||
container_name: rfsim5g-oai-gnb
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --phy-test --rfsim --rfsimulator.wait_timeout 20 --noS1 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.140
|
||||
@@ -23,7 +24,8 @@ services:
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --phy-test --rfsim --noS1 --rrc_config_path etc/rrc/ --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --phy-test --rfsim --noS1 --reconfig-file etc/rrc/reconfig.raw --rbconfig-file etc/rrc/rbconfig.raw --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
volumes:
|
||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
- rrc.config:/opt/oai-nr-ue/etc/rrc/
|
||||
|
||||
@@ -6,6 +6,7 @@ services:
|
||||
container_name: rfsim5g-oai-gnb
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --rfsimulator.wait_timeout 20 --noS1 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.140
|
||||
@@ -23,7 +24,8 @@ services:
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --noS1 --rrc_config_path etc/rrc/ --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --noS1 --reconfig-file etc/rrc/reconfig.raw --rbconfig-file etc/rrc/rbconfig.raw --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
volumes:
|
||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
- rrc.config:/opt/oai-nr-ue/etc/rrc/
|
||||
|
||||
@@ -6,6 +6,7 @@ services:
|
||||
container_name: rfsim5g-oai-gnb
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --rfsimulator.wait_timeout 20 --noS1 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.71.140
|
||||
@@ -23,7 +24,8 @@ services:
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --noS1 --rrc_config_path etc/rrc/ --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --do-ra --rfsim --noS1 --reconfig-file etc/rrc/reconfig.raw --rbconfig-file etc/rrc/rbconfig.raw --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
volumes:
|
||||
- ../../conf_files/nrue.uicc.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
- rrc.config:/opt/oai-nr-ue/etc/rrc/
|
||||
|
||||
@@ -168,6 +168,7 @@ services:
|
||||
container_name: rfsim5g-oai-gnb
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-ext-dn
|
||||
networks:
|
||||
@@ -186,7 +187,8 @@ services:
|
||||
privileged: true
|
||||
container_name: rfsim5g-oai-nr-ue
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 25 --numerology 0 --uicc0.imsi 208990100001100 --band 66 -C 2152250000 --CO -400000000 --ssb 76 --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --sa --rfsim -r 25 --numerology 0 --uicc0.imsi 208990100001100 --band 66 -C 2152260000 --CO -400000000 --ssb 76 --rfsimulator.serveraddr 192.168.71.140 --log_config.global_log_options level,nocolor,time
|
||||
ASAN_OPTIONS: detect_leaks=0
|
||||
depends_on:
|
||||
- oai-gnb
|
||||
networks:
|
||||
|
||||
@@ -7,7 +7,7 @@ services:
|
||||
container_name: oai-gnb
|
||||
environment:
|
||||
TZ: Europe/Paris
|
||||
USE_ADDITIONAL_OPTIONS: --sa --tune-offset 20000000 --log_config.global_log_options level,nocolor,time
|
||||
USE_ADDITIONAL_OPTIONS: --sa --tune-offset 20000000 -A 45 --log_config.global_log_options level,nocolor,time
|
||||
volumes:
|
||||
- ../../conf_files/gnb.sa.band78.106prb.n310.7ds2u.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
healthcheck:
|
||||
|
||||
@@ -8,7 +8,7 @@ services:
|
||||
#entrypoint: /bin/bash -c "sleep infinity"
|
||||
environment:
|
||||
TZ: Europe/Paris
|
||||
USE_ADDITIONAL_OPTIONS: --usrp-args type=n3xx,name=ni-n3xx-31641B9,addr=192.168.20.2 -r 106 --numerology 1 --band 78 -C 3511200000 --sa --ue-fo-compensation --ue-rxgain 65 --tune-offset 20000000 --log_config.global_log_options level,nocolor,time --uicc0.imsi 208970000000111 --uicc0.nssai_sd 16777215
|
||||
USE_ADDITIONAL_OPTIONS: --usrp-args type=n3xx,name=ni-n3xx-31641B9,addr=192.168.20.2 -r 106 --numerology 1 --band 78 -C 3511200000 --sa --ue-fo-compensation --ue-rxgain 65 --tune-offset 20000000 -A 45 --log_config.global_log_options level,nocolor,time --uicc0.imsi 208970000000111 --uicc0.nssai_sd 16777215
|
||||
volumes:
|
||||
- ../../conf_files/ue.sa.conf:/opt/oai-nr-ue/etc/nr-ue.conf
|
||||
healthcheck:
|
||||
|
||||
@@ -43,7 +43,7 @@ services:
|
||||
container_name: sa-du-b200-gnb
|
||||
environment:
|
||||
USE_B2XX: 'yes'
|
||||
USE_ADDITIONAL_OPTIONS: --sa --RUs.[0].sdr_addrs serial=30C51D4 --continuous-tx -E --log_config.global_log_options level,nocolor,time,line_num,function --gNBs.[0].min_rxtxtime 2 --gNBs.[0].do_CSIRS 1 --gNBs.[0].do_SRS 1 --RUs.[0].att_rx 14 --RUs.[0].att_tx 14
|
||||
USE_ADDITIONAL_OPTIONS: --sa --RUs.[0].sdr_addrs serial=30C51D4 --continuous-tx -E --log_config.global_log_options level,nocolor,time,line_num,function --gNBs.[0].min_rxtxtime 2 --gNBs.[0].do_CSIRS 1 --gNBs.[0].do_SRS 1 --RUs.[0].att_rx 18 --RUs.[0].att_tx 18
|
||||
volumes:
|
||||
- ../../conf_files/gnb-du.sa.band78.106prb.usrpb200.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
- /dev:/dev
|
||||
|
||||
@@ -6,9 +6,9 @@ services:
|
||||
privileged: true
|
||||
container_name: sa-cu-gnb
|
||||
environment:
|
||||
USE_ADDITIONAL_OPTIONS: --sa --log_config.global_log_options level,nocolor,time,line_num,function
|
||||
USE_ADDITIONAL_OPTIONS: --sa --telnetsrv --telnetsrv.shrmod ci --log_config.global_log_options level,nocolor,time,line_num,function
|
||||
volumes:
|
||||
- ../../conf_files/gnb-cu.sa.band78.106prb.usrpb200.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
- ../../conf_files/gnb-cu.sa.f1.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
networks:
|
||||
public_net:
|
||||
ipv4_address: 192.168.68.194
|
||||
@@ -20,15 +20,15 @@ services:
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
gnb_du_tdd:
|
||||
gnb_du_fdd:
|
||||
image: oai-gnb:latest
|
||||
privileged: true
|
||||
container_name: sa-du-b200-gnb
|
||||
environment:
|
||||
USE_B2XX: 'yes'
|
||||
USE_ADDITIONAL_OPTIONS: --sa --RUs.[0].sdr_addrs serial=30C51D4 --continuous-tx -E --log_config.global_log_options level,nocolor,time,line_num,function --gNBs.[0].min_rxtxtime 2 --gNBs.[0].do_CSIRS 1 --gNBs.[0].do_SRS 1 --RUs.[0].att_rx 14 --RUs.[0].att_tx 14
|
||||
USE_ADDITIONAL_OPTIONS: --sa --RUs.[0].sdr_addrs serial=30C51D4 --telnetsrv --telnetsrv.shrmod ci --log_config.global_log_options level,nocolor,time,line_num,function --gNBs.[0].min_rxtxtime 2 --gNBs.[0].do_CSIRS 1 --gNBs.[0].do_SRS 0 --MACRLCs.[0].ul_max_mcs 28 --L1s.[0].max_ldpc_iterations 20
|
||||
volumes:
|
||||
- ../../conf_files/gnb-du.sa.band78.106prb.usrpb200.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
- ../../conf_files/gnb-du.sa.band1.52prb.usrpb210.conf:/opt/oai-gnb/etc/gnb.conf
|
||||
- /dev:/dev
|
||||
networks:
|
||||
public_net:
|
||||
|
||||
@@ -110,11 +110,11 @@
|
||||
</testCase>
|
||||
|
||||
<testCase id="nr_pbchsim.106rb">
|
||||
<desc>nr_pbchsim Test cases. (Test1: PBCH-only, 106 PRB),
|
||||
<desc>nr_pbchsim Test cases. (Test1: PBCH-only, 106 PRB, NID 2),
|
||||
(Test2: PBCH and synchronization, 106PBR),
|
||||
(Test3: PBCH and synchronization, 106PBR, SSB SC OFFSET 6)</desc>
|
||||
<main_exec>nr_pbchsim</main_exec>
|
||||
<main_exec_args>-s-11 -S-8 -n10 -R106
|
||||
<main_exec_args>-s-11 -S-8 -n10 -R106 -N2
|
||||
-s-11 -S-8 -n10 -o8000 -I -R106
|
||||
-s-11 -S-8 -n10 -R106 -O6</main_exec_args>
|
||||
<tags>test1 test2 test3</tags>
|
||||
@@ -200,8 +200,8 @@
|
||||
-n100 -e16 -s11 -S13
|
||||
-n100 -q1 -e26 -s30
|
||||
-n100 -e0 -t95 -S-1.0 -i 2 1 0
|
||||
-n10 -s20 -U 3 0 0 2 -gR -x1 -y4 -z4
|
||||
-n10 -s20 -U 3 0 0 2 -gR -x2 -y4 -z4
|
||||
-n10 -s20 -U 3 0 0 2 -gA -x1 -y4 -z4
|
||||
-n10 -s20 -U 3 0 0 2 -gA -x2 -y4 -z4
|
||||
-n10 -s20 -U 3 0 0 2 -x4 -y4 -z4</main_exec_args>
|
||||
<tags>test1 test2 test3 test4 test5 test6 test7</tags>
|
||||
<search_expr_true>PDSCH test OK</search_expr_true>
|
||||
|
||||
@@ -38,7 +38,6 @@ gen_nvram_path=$OPENAIR_DIR/cmake_targets/ran_build/build
|
||||
conf_nvram_path=$OPENAIR_DIR/openair3/NAS/TOOLS/ue_eurecom_test_sfr.conf
|
||||
|
||||
HW=""
|
||||
VERBOSE_CI=0
|
||||
VERBOSE_COMPILE=0
|
||||
RUN_GROUP=0
|
||||
TEST_CASE_GROUP=""
|
||||
@@ -47,7 +46,7 @@ BUILD_DOXYGEN=0
|
||||
DISABLE_HARDWARE_DEPENDENCY="False"
|
||||
CMAKE_BUILD_TYPE="RelWithDebInfo"
|
||||
CMAKE_CMD="$CMAKE"
|
||||
OPTIONAL_LIBRARIES="telnetsrv enbscope uescope nrscope nrqtscope ldpc_cuda ldpc_t1 websrv oai_iqplayer"
|
||||
OPTIONAL_LIBRARIES="telnetsrv enbscope uescope nrscope nrqtscope ldpc_cuda ldpc_t2 websrv oai_iqplayer"
|
||||
TARGET_LIST=""
|
||||
|
||||
function print_help() {
|
||||
@@ -110,8 +109,6 @@ Options:
|
||||
Adds a debgging facility to the binary files: GUI with major internal synchronization events
|
||||
-x | --xforms
|
||||
Will compile with software oscilloscope features
|
||||
--verbose-ci
|
||||
Compile with verbose instructions in CI Docker env
|
||||
--verbose-compile
|
||||
Shows detailed compilation instructions in makefile
|
||||
--build-doxygen
|
||||
@@ -161,6 +158,8 @@ Options:
|
||||
Enable the memory sanitizer on all targets. Requires clang, and is
|
||||
incompatible with ASan/UBSan. To build, issue:
|
||||
CC=/usr/bin/clang CXX=/usr/bin/clang++ ./build_oai ... --sanitize-memory
|
||||
--sanitize-thread | -fsanitize=thread
|
||||
Enable the thread sanitizer on all targets
|
||||
-h | --help
|
||||
Print this help"
|
||||
}
|
||||
@@ -336,19 +335,16 @@ function main() {
|
||||
-x | --xforms)
|
||||
echo_info "Will generate the software oscilloscope features"
|
||||
shift;;
|
||||
--verbose-ci)
|
||||
VERBOSE_CI=1
|
||||
echo_info "Will compile with verbose instructions in CI Docker env"
|
||||
shift;;
|
||||
--verbose-compile)
|
||||
VERBOSE_COMPILE=1
|
||||
echo_info "Will compile with verbose instructions"
|
||||
shift;;
|
||||
--build-doxygen)
|
||||
CMAKE_CMD="$CMAKE_CMD -DGENERATE_DOXYGEN=ON"
|
||||
BUILD_DOXYGEN=1
|
||||
echo_info "Will build doxygen support"
|
||||
shift;;
|
||||
CMAKE_CMD="$CMAKE_CMD -DGENERATE_DOXYGEN=ON"
|
||||
TARGET_LIST="$TARGET_LIST doc"
|
||||
BUILD_DOXYGEN=1
|
||||
echo_info "Will build doxygen support"
|
||||
shift;;
|
||||
--disable-T-Tracer)
|
||||
CMAKE_CMD="$CMAKE_CMD -DT_TRACER=False"
|
||||
echo_info "Disabling the T tracer"
|
||||
@@ -422,6 +418,9 @@ function main() {
|
||||
CMAKE_CMD="$CMAKE_CMD -DTRACE_ASN1C_ENC_DEC=ON"
|
||||
echo_info "Enabling asn1c internal traces via OAI logging system"
|
||||
shift 1;;
|
||||
--sanitize-thread | -fthread=address)
|
||||
CMAKE_CMD="$CMAKE_CMD -DSANITIZE_THREAD=True"
|
||||
shift;;
|
||||
-h | --help)
|
||||
print_help
|
||||
exit 1;;
|
||||
@@ -497,6 +496,12 @@ function main() {
|
||||
echo_info "Running \"$CMAKE_CMD\""
|
||||
eval $CMAKE_CMD
|
||||
compilations $BUILD_DIR all.txt $TARGET_LIST
|
||||
###################
|
||||
# Doxygen Support #
|
||||
###################
|
||||
if [ "$BUILD_DOXYGEN" = "1" ] ; then
|
||||
echo_info "Built Doxygen based documentation. The documentation file is located here: $OPENAIR_DIR/$BUILD_DIR/build/html/index.html"
|
||||
fi
|
||||
|
||||
if [ "$UE" = 1 ] ; then
|
||||
|
||||
@@ -520,18 +525,6 @@ function main() {
|
||||
fi
|
||||
fi
|
||||
|
||||
###################
|
||||
# Doxygen Support #
|
||||
###################
|
||||
if [ "$BUILD_DOXYGEN" = "1" ] ; then
|
||||
doxygen_log=$OPENAIR_DIR/cmake_targets/log/doxygen.log
|
||||
echo_info "Building Doxygen based documentation. The documentation file is located here: $OPENAIR_DIR/targets/DOCS/html/index.html"
|
||||
echo_info "Doxygen generation log is located here: $doxygen_log"
|
||||
echo_info "Generating Doxygen files....please wait"
|
||||
(
|
||||
cmake --build . --target doc
|
||||
) >& $doxygen_log
|
||||
fi
|
||||
|
||||
##############
|
||||
# Auto-tests #
|
||||
|
||||
16
cmake_targets/cross-arm.cmake
Normal file
16
cmake_targets/cross-arm.cmake
Normal file
@@ -0,0 +1,16 @@
|
||||
set(CMAKE_SYSTEM_NAME Linux)
|
||||
set(CMAKE_SYSTEM_PROCESSOR arm)
|
||||
|
||||
set(CMAKE_C_COMPILER /usr/bin/aarch64-linux-gnu-gcc-9)
|
||||
set(CMAKE_CXX_COMPILER /usr/bin/aarch64-linux-gnu-g++-9)
|
||||
|
||||
set(CROSS_COMPILE 1)
|
||||
set(bnProc_gen_128_DIR ${CMAKE_CURRENT_BINARY_DIR}/${NATIVE_DIR}) # /../build)
|
||||
set(bnProc_gen_avx2_DIR ${CMAKE_CURRENT_BINARY_DIR}/${NATIVE_DIR}) # /../build)
|
||||
set(bnProc_gen_avx512_DIR ${CMAKE_CURRENT_BINARY_DIR}/${NATIVE_DIR}) # /../build)
|
||||
set(cnProc_gen_128_DIR ${CMAKE_CURRENT_BINARY_DIR}/${NATIVE_DIR}) # /../build)
|
||||
set(cnProc_gen_avx2_DIR ${CMAKE_CURRENT_BINARY_DIR}/${NATIVE_DIR}) # /../build)
|
||||
set(cnProc_gen_avx512_DIR ${CMAKE_CURRENT_BINARY_DIR}/${NATIVE_DIR}) # /../build)
|
||||
set(genids_DIR ${CMAKE_CURRENT_BINARY_DIR}/${NATIVE_DIR}) # /../build)
|
||||
set(_check_vcd_DIR ${CMAKE_CURRENT_BINARY_DIR}/${NATIVE_DIR}) # /../build)
|
||||
|
||||
@@ -32,7 +32,7 @@ OS_DISTRO=$(grep "^ID=" /etc/os-release | sed "s/ID=//" | sed "s/\"//g")
|
||||
OS_RELEASE=$(grep "^VERSION_ID=" /etc/os-release | sed "s/VERSION_ID=//" | sed "s/\"//g")
|
||||
case "$OS_DISTRO" in
|
||||
fedora) OS_BASEDISTRO="fedora"; INSTALLER="dnf"; CMAKE="cmake" ;;
|
||||
rhel) OS_BASEDISTRO="fedora"; INSTALLER="dnf"; CMAKE="cmake" ;;
|
||||
rhel) OS_BASEDISTRO="fedora"; INSTALLER="dnf"; CMAKE="cmake3" ;;
|
||||
rocky) OS_BASEDISTRO="fedora"; INSTALLER="dnf"; CMAKE="cmake" ;;
|
||||
centos) OS_BASEDISTRO="centos"; INSTALLER="yum"; CMAKE="cmake3" ;;
|
||||
debian) OS_BASEDISTRO="debian"; INSTALLER="apt-get"; CMAKE="cmake" ;;
|
||||
@@ -54,16 +54,17 @@ fi
|
||||
###############################
|
||||
## echo and family
|
||||
###############################
|
||||
black='\E[30m'
|
||||
red='\E[31m'
|
||||
green='\E[32m'
|
||||
yellow='\E[33m'
|
||||
blue='\E[1;34m'
|
||||
magenta='\E[35m'
|
||||
cyan='\E[36m'
|
||||
white='\E[37m'
|
||||
reset_color='\E[00m'
|
||||
COLORIZE=1
|
||||
# only emit color if connected to a terminal, and if it supports colors
|
||||
if [ -t 1 ]; then
|
||||
num_colors=$(tput colors)
|
||||
if [ -n "$num_colors" ] && [ "$num_colors" -ge 8 ]; then
|
||||
red='\E[31m'
|
||||
green='\E[32m'
|
||||
yellow='\E[33m'
|
||||
blue='\E[1;34m'
|
||||
reset_color='\E[00m'
|
||||
fi
|
||||
fi
|
||||
|
||||
cecho() {
|
||||
# Color-echo
|
||||
@@ -72,8 +73,7 @@ cecho() {
|
||||
local default_msg="No Message."
|
||||
message=${1:-$default_msg}
|
||||
color=${2:-$green}
|
||||
[ "$COLORIZE" = "1" ] && message="$color$message$reset_color"
|
||||
echo -e "$message"
|
||||
echo -e "$color$message$reset_color"
|
||||
return
|
||||
}
|
||||
|
||||
@@ -226,18 +226,15 @@ compilations() {
|
||||
local verbose=$([ "$VERBOSE_COMPILE" == "1" ] && echo "-v" || echo "")
|
||||
echo cd $OPENAIR_DIR/cmake_targets/$dir/build
|
||||
cd $OPENAIR_DIR/cmake_targets/$dir/build
|
||||
echo_info "Running \"cmake --build . $verbose --target $targets -- -j$(nproc)\"" $green
|
||||
echo_info "Running \"$CMAKE --build . $verbose --target $targets -- -j$(nproc)\"" $green
|
||||
echo "Log file for compilation is being written to: $dlog/$logfile"
|
||||
set +e
|
||||
{
|
||||
cmake --build . $verbose --target $targets -- -j$(nproc)
|
||||
$CMAKE --build . $verbose --target $targets -- -j$(nproc)
|
||||
ret=$?
|
||||
} > $dlog/$logfile 2>&1
|
||||
if [ "$VERBOSE_CI" == "1" ]; then
|
||||
echo "====== Start of log for $logfile ======"
|
||||
cat $dlog/$logfile
|
||||
echo "====== End of log for $logfile ======"
|
||||
fi
|
||||
# Print the errors and warnings for CI purposes
|
||||
egrep -A3 "warning:|error:" $dlog/$logfile || true
|
||||
check_warnings "$dlog/$logfile"
|
||||
if [[ $ret -eq 0 ]]; then
|
||||
echo_success "$targets compiled"
|
||||
@@ -324,8 +321,7 @@ check_install_usrp_uhd_driver(){
|
||||
$SUDO apt-get remove libuhd3.15.0 -y || true
|
||||
local distribution=$(get_distribution_release)
|
||||
if [[ "$distribution" == "ubuntu18.04" || "$distribution" == "ubuntu20.04" || "$distribution" == "ubuntu22.04" ]]; then
|
||||
$SUDO apt-get remove libuhd4.0.0 -y || true
|
||||
$SUDO apt-get remove libuhd4.1.0 -y || true
|
||||
$SUDO apt-get remove libuhd4.?.? -y || true
|
||||
fi
|
||||
v=$(lsb_release -cs)
|
||||
$SUDO apt-add-repository --remove "deb http://files.ettus.com/binaries/uhd/repo/uhd/ubuntu/$v $v main"
|
||||
@@ -355,7 +351,7 @@ check_install_usrp_uhd_driver(){
|
||||
$SUDO apt-get -y install python-tk $boost_libs_ubuntu libusb-1.0-0-dev
|
||||
case "$(get_distribution_release)" in
|
||||
"ubuntu18.04" | "ubuntu20.04" | "ubuntu22.04")
|
||||
$SUDO apt-get -y install libuhd-dev libuhd4.4.0 uhd-host
|
||||
$SUDO apt-get -y install libuhd-dev libuhd4.5.0 uhd-host
|
||||
;;
|
||||
esac
|
||||
elif [[ "$OS_BASEDISTRO" == "fedora" ]]; then
|
||||
@@ -671,6 +667,8 @@ install_asn1c_from_source(){
|
||||
git clone https://github.com/mouse07410/asn1c /tmp/asn1c
|
||||
cd /tmp/asn1c
|
||||
git checkout vlm_master
|
||||
# Showing which version is used
|
||||
git log -n1
|
||||
autoreconf -iv
|
||||
./configure --prefix /opt/asn1c/
|
||||
make -j`nproc`
|
||||
@@ -689,6 +687,15 @@ install_simde_from_source(){
|
||||
$SUDO rm -rf /tmp/simde
|
||||
git clone https://github.com/simd-everywhere/simde-no-tests.git /tmp/simde
|
||||
cd /tmp/simde
|
||||
# we can specify a given version of SIMDE (sha-one or tag)
|
||||
if [[ -v SIMDE_VERSION ]]; then
|
||||
git checkout -f $SIMDE_VERSION
|
||||
else
|
||||
# At time of writing, last working commit for OAI
|
||||
git checkout 389f360a66d4a3bec62b7d71ad8be877487809ba
|
||||
fi
|
||||
# Showing which version is used
|
||||
git log -n1
|
||||
# brute force copy into /usr/include
|
||||
$SUDO \cp -rv ../simde /usr/include
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
The configuration module objectives are
|
||||
1. Allow easy parameters management in oai, helping the development of a flexible, modularized and fully configurable softmodem.
|
||||
1. Use a common configuration API in all oai modules
|
||||
1. Allow development of alternative configuration sources without modifying the oai code. Today the only delivered configuration source is the libconfig format configuration file.
|
||||
2. Use a common configuration API in all oai modules
|
||||
3. Allow development of alternative configuration sources without modifying the oai code. Today the only delivered configuration source is the libconfig format configuration file.
|
||||
|
||||
As a developer you may need to look at these sections:
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ paramdef_t someoptions[] = {
|
||||
{"opt1", "<help opt1>", 0, uptr:&varopt1, defuintval:0, TYPE_UINT, 0 },
|
||||
};
|
||||
|
||||
config_get( someoptions,sizeof(someoptions)/sizeof(paramdef_t),"somesection");
|
||||
config_get( someoptions,sizeofArray(someoptions),"somesection");
|
||||
|
||||
```
|
||||
new code:
|
||||
@@ -31,7 +31,7 @@ paramdef_t someoptions[] = {
|
||||
{"opt2", "<help opt2>", 0, strptr:&varopt2,defstrval:"",TYPE_STRING,0 },
|
||||
};
|
||||
|
||||
config_get( someoptions,sizeof(someoptions)/sizeof(paramdef_t),"somesection");
|
||||
config_get( someoptions,sizeofArray(someoptions),"somesection");
|
||||
|
||||
```
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
The configuration module maps a configuration file section to a `paramdef_t` structure array. One `config_get` call can be used to return the values of all the parameters described in the `paramdef_t` array.
|
||||
Retrieving a single occurence of a parameter set ( a group in the libconfig terminology) is just a two steps task:
|
||||
1. describe the parameters in a `paramdef_t` array
|
||||
1. call the `config_get` function
|
||||
2. call the `config_get` function
|
||||
|
||||
|
||||
[config_get example](../../config/devusage/addaparam.md)
|
||||
@@ -105,7 +105,7 @@ character string, used as a prefix for the section name. It has to be specified
|
||||
list to be read is under another section.
|
||||
*/
|
||||
config_getlist( &NbIoT_MacRLC_ParamList,NbIoT_MacRLC_Params,
|
||||
sizeof(NbIoT_MacRLC_Params)/sizeof(paramdef_t),
|
||||
sizeofArray(NbIoT_MacRLC_Params),
|
||||
NULL);
|
||||
|
||||
/*
|
||||
|
||||
@@ -1,9 +1,16 @@
|
||||
[[_TOC_]]
|
||||
|
||||
-O is the only mandatory command line option to start the eNodeb softmodem (lte-softmodem executable), it is used to specify the configuration source with the associated parameters:
|
||||
# General usage
|
||||
|
||||
`-O` is the only mandatory command line option to start the softmodems (4G/5G xNB, UEs). It is used to specify the configuration source with the associated parameters:
|
||||
```bash
|
||||
$ ./lte-softmodem -O <configsource>:<parameter1>:<parameter2>:...
|
||||
```
|
||||
The configuration module can also be used without a configuration source, ie to only parse the command line. In this case the -O switch is optional. This mode is used in the ue-softmodem executable and by the phy_simulators executables (ulsim, dlsim)
|
||||
The same applies for `nr-softmodem`, `lte-uesoftmodem`, `nr-uesoftmodem`.
|
||||
|
||||
The configuration module can also be used without a configuration source, ie to only parse the command line. In this case the -O switch is optional. This mode is typically used in the `lte-uesoftmodem` executable and by the physical simulator executables (`ulsim`, `dlsim`).
|
||||
|
||||
# Configuration sources
|
||||
|
||||
Currently the available config sources are:
|
||||
|
||||
@@ -13,6 +20,8 @@ $ ./lte-softmodem -O libconfig:<config>:dbgl<debuglevel>
|
||||
```
|
||||
- **cmdlineonly**: command line only, the default mode for lte-uesoftmodem and the phy simiulators. In this case -O may be used to specify the config module debug level.
|
||||
|
||||
# Detailed configuration information and debugging
|
||||
|
||||
The debug level is a mask:
|
||||
* bit 1: print parameters values
|
||||
* bit 2: print memory allocation/free performed by the config module
|
||||
@@ -32,8 +41,8 @@ bit 5 (dbgl32) can be useful to detect unused parameters from a config file or t
|
||||
|
||||
To get help on supported parameters you can use specific options:
|
||||
|
||||
* ---help: print help for command line only parameters and for parameters not defined in a specific section
|
||||
* ---help_< prefix > : print help for parameters defined under the section < prefix >
|
||||
* `--help`: print help for command line only parameters and for parameters not defined in a specific section
|
||||
* `--help_<prefix>` : print help for parameters defined under the section `<prefix>`
|
||||
|
||||
```
|
||||
./lte-softmodem -O libconfig:/usr/local/oai/conf/enb.nbiot.band7.tm1.50PRB.usrpb210.conf --help
|
||||
@@ -84,15 +93,16 @@ Getting ENBSParams
|
||||
--------------------------------------------------------------------
|
||||
|
||||
/usr/local/oai/issue390_configmodule_cmdlinebug/openairinterface5g/common/config/config_cmdline.c:224 config_process_cmdline() Exiting OAI softmodem: [CONFIG] Exiting after displaying help
|
||||
|
||||
```
|
||||
|
||||
For the lte-softmodem (the eNodeB) The config source parameter defaults to libconfig, preserving the initial -O option format. In this case you cannot specify the debug level.
|
||||
For the lte-softmodem (the eNodeB), the config source parameter defaults to libconfig, preserving the initial -O option format. In this case you cannot specify the debug level.
|
||||
|
||||
```bash
|
||||
$ ./lte-softmodem -O <config>
|
||||
```
|
||||
|
||||
# Configuration of the configuration module
|
||||
|
||||
Configuration file parameters, except for the configuration file path, can be specified in a **config** section in the configuration file:
|
||||
|
||||
```
|
||||
@@ -101,7 +111,12 @@ config:
|
||||
debugflags = 1;
|
||||
}
|
||||
```
|
||||
Configuration files examples can be found in the targets/PROJECTS/GENERIC-LTE-EPC/CONF sub-directory of the oai source tree. To minimize the number of configuration file to maintain, any parameter can also be specified on the command line. For example to modify the lte bandwidth to 20 MHz where the configuration file specifies 10MHz you can enter:
|
||||
|
||||
Configuration files examples can be found in the `targets/PROJECTS/GENERIC-LTE-EPC/CONF` sub-directory of the oai source tree.
|
||||
|
||||
# Overwriting config options from the command line
|
||||
|
||||
To minimize the number of configuration file to maintain, any parameter can also be specified on the command line. For example to modify the lte bandwidth to 20 MHz where the configuration file specifies 10MHz you can enter:
|
||||
|
||||
```bash
|
||||
$ ./lte-softmodem -O <config> --eNBs.[0].component_carriers.[0].N_RB_DL 100
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user