we previously mixed component specific and component agnostic APIs (stdout vs. log file for example) for setting and retrieving KPI.
This patch propose to use a single abstract get_kpis() method for all components that can be enriched with component-specific stuff as desired.
In the case of srsLTE blocks, the main implementation will remain in srslte_common() and is shared among srsENB/srsUE/srsEPC.
The KPI analyzer in srslte_common() extract and also manages all three KPI sources (log, csv and stdout) independently.
In addition to the get_kpis() method that always returns a flat dictionary, it also exposes get_kpi_tree() that return a dict of KPI dicts that will be used for the Junit.xml generation.
we've provided only all_log_level so far but sometimes it's needed to select the level per layer. This patch adds the ability to do so for the NAS layer in the UE.
Despite open5gs allowing to change the GTP ports in the config file, in reality changing those values to something else than the standard prot will fail. Hence, we must use the standard port. As a result, we must use different IP addresses in each process to avoid ip+port collisions. Let's use some loopback addresses which shouldn't require extra configuration on the host, and still only requiring 1 run_node as per existing EPCs, with the limitation that only 1 open5gs EPC instance can be run at one in a given run_node.