Move power loop to generic tests

There's nothing sysmobts specific in this test so let's move it into
separate directory and run unconditionally. The test itself is unaltered
except for intro text.

Change-Id: I0d1957cd9cf5497826be095c7a42b7bb4fa10397
Related: OS#2223
This commit is contained in:
Max 2017-10-11 16:37:44 +02:00 committed by Harald Welte
parent 36fa0bd079
commit fe291a97c2
9 changed files with 114 additions and 63 deletions

1
.gitignore vendored
View File

@ -72,3 +72,4 @@ debian/*.substvars
debian/osmo-bts-trx-dbg/
debian/osmo-bts-trx/
debian/tmp/
/tests/power/power_test

View File

@ -178,5 +178,6 @@ AC_OUTPUT(
tests/misc/Makefile
tests/handover/Makefile
tests/tx_power/Makefile
tests/power/Makefile
tests/meas/Makefile
Makefile)

View File

@ -1,4 +1,4 @@
SUBDIRS = paging cipher agch misc handover tx_power meas
SUBDIRS = paging cipher agch misc handover tx_power power meas
if ENABLE_SYSMOBTS
SUBDIRS += sysmobts

9
tests/power/Makefile.am Normal file
View File

@ -0,0 +1,9 @@
AM_CPPFLAGS = $(all_includes) -I$(top_srcdir)/include
AM_CFLAGS = -Wall $(LIBOSMOCORE_CFLAGS) $(LIBOSMOCODEC_CFLAGS) $(LIBOSMOGSM_CFLAGS) $(LIBOSMOVTY_CFLAGS) $(LIBOSMOTRAU_CFLAGS) $(ORTP_CFLAGS)
LDADD = $(LIBOSMOCORE_LIBS) $(LIBOSMOCODEC_LIBS) $(LIBOSMOGSM_LIBS) $(LIBOSMOVTY_LIBS) $(LIBOSMOTRAU_LIBS) $(ORTP_LIBS)
noinst_PROGRAMS = power_test
EXTRA_DIST = power_test.ok
power_test_SOURCES = power_test.c $(srcdir)/../stubs.c
power_test_LDADD = $(top_builddir)/src/common/libbts.a $(LIBOSMOABIS_LIBS) $(LDADD)

93
tests/power/power_test.c Normal file
View File

@ -0,0 +1,93 @@
/*
* (C) 2013,2014 by Holger Hans Peter Freyther
*
* All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <osmo-bts/bts.h>
#include <osmo-bts/l1sap.h>
#include <osmo-bts/power_control.h>
#include <stdio.h>
static void test_power_loop(void)
{
struct gsm_bts bts;
struct gsm_bts_role_bts btsb;
struct gsm_bts_trx trx;
struct gsm_bts_trx_ts ts;
struct gsm_lchan *lchan;
int ret;
memset(&bts, 0, sizeof(bts));
memset(&btsb, 0, sizeof(btsb));
memset(&trx, 0, sizeof(trx));
memset(&ts, 0, sizeof(ts));
lchan = &ts.lchan[0];
lchan->ts = &ts;
ts.trx = &trx;
trx.bts = &bts;
bts.role = &btsb;
bts.band = GSM_BAND_1800;
trx.ms_power_control = 1;
btsb.ul_power_target = -75;
/* Simply clamping */
lchan->state = LCHAN_S_NONE;
lchan->ms_power_ctrl.current = ms_pwr_ctl_lvl(GSM_BAND_1800, 0);
OSMO_ASSERT(lchan->ms_power_ctrl.current == 15);
ret = lchan_ms_pwr_ctrl(lchan, lchan->ms_power_ctrl.current, -60);
OSMO_ASSERT(ret == 0);
OSMO_ASSERT(lchan->ms_power_ctrl.current == 15);
/*
* Now 15 dB too little and we should power it up. Could be a
* power level of 7 or 8 for 15 dBm
*/
ret = lchan_ms_pwr_ctrl(lchan, lchan->ms_power_ctrl.current, -90);
OSMO_ASSERT(ret == 1);
OSMO_ASSERT(lchan->ms_power_ctrl.current == 7);
/* It should be clamped to level 0 and 30 dBm */
ret = lchan_ms_pwr_ctrl(lchan, lchan->ms_power_ctrl.current, -100);
OSMO_ASSERT(ret == 1);
OSMO_ASSERT(lchan->ms_power_ctrl.current == 0);
/* Fix it and jump down */
lchan->ms_power_ctrl.fixed = 1;
ret = lchan_ms_pwr_ctrl(lchan, lchan->ms_power_ctrl.current, -60);
OSMO_ASSERT(ret == 0);
OSMO_ASSERT(lchan->ms_power_ctrl.current == 0);
/* And leave it again */
lchan->ms_power_ctrl.fixed = 0;
ret = lchan_ms_pwr_ctrl(lchan, lchan->ms_power_ctrl.current, -40);
OSMO_ASSERT(ret == 1);
OSMO_ASSERT(lchan->ms_power_ctrl.current == 15);
}
int main(int argc, char **argv)
{
printf("Testing power loop...\n");
test_power_loop();
printf("Power loop test OK\n");
return 0;
}

View File

@ -0,0 +1,2 @@
Testing power loop...
Power loop test OK

View File

@ -182,72 +182,12 @@ static void test_sysmobts_cipher(void)
* this happens asynchronously on the other side of the l1sap queue */
}
static void test_sysmobts_loop(void)
{
struct gsm_bts bts;
struct gsm_bts_role_bts btsb;
struct gsm_bts_trx trx;
struct gsm_bts_trx_ts ts;
struct gsm_lchan *lchan;
int ret;
memset(&bts, 0, sizeof(bts));
memset(&btsb, 0, sizeof(btsb));
memset(&trx, 0, sizeof(trx));
memset(&ts, 0, sizeof(ts));
lchan = &ts.lchan[0];
lchan->ts = &ts;
ts.trx = &trx;
trx.bts = &bts;
bts.role = &btsb;
bts.band = GSM_BAND_1800;
trx.ms_power_control = 1;
btsb.ul_power_target = -75;
printf("Testing sysmobts power control\n");
/* Simply clamping */
lchan->state = LCHAN_S_NONE;
lchan->ms_power_ctrl.current = ms_pwr_ctl_lvl(GSM_BAND_1800, 0);
OSMO_ASSERT(lchan->ms_power_ctrl.current == 15);
ret = lchan_ms_pwr_ctrl(lchan, lchan->ms_power_ctrl.current, -60);
OSMO_ASSERT(ret == 0);
OSMO_ASSERT(lchan->ms_power_ctrl.current == 15);
/*
* Now 15 dB too little and we should power it up. Could be a
* power level of 7 or 8 for 15 dBm
*/
ret = lchan_ms_pwr_ctrl(lchan, lchan->ms_power_ctrl.current, -90);
OSMO_ASSERT(ret == 1);
OSMO_ASSERT(lchan->ms_power_ctrl.current == 7);
/* It should be clamped to level 0 and 30 dBm */
ret = lchan_ms_pwr_ctrl(lchan, lchan->ms_power_ctrl.current, -100);
OSMO_ASSERT(ret == 1);
OSMO_ASSERT(lchan->ms_power_ctrl.current == 0);
/* Fix it and jump down */
lchan->ms_power_ctrl.fixed = 1;
ret = lchan_ms_pwr_ctrl(lchan, lchan->ms_power_ctrl.current, -60);
OSMO_ASSERT(ret == 0);
OSMO_ASSERT(lchan->ms_power_ctrl.current == 0);
/* And leave it again */
lchan->ms_power_ctrl.fixed = 0;
ret = lchan_ms_pwr_ctrl(lchan, lchan->ms_power_ctrl.current, -40);
OSMO_ASSERT(ret == 1);
OSMO_ASSERT(lchan->ms_power_ctrl.current == 15);
}
int main(int argc, char **argv)
{
printf("Testing sysmobts routines\n");
test_sysmobts_auto_band();
test_sysmobts_cipher();
test_sysmobts_loop();
return 0;
}

View File

@ -17,4 +17,3 @@ Checking PCS to PCS
PCS to PCS band(1) arfcn(512) want(3) got(3)
PCS to PCS band(8) arfcn(128) want(0) got(0)
PCS to PCS band(2) arfcn(438) want(-1) got(-1)
Testing sysmobts power control

View File

@ -31,6 +31,12 @@ cat $abs_srcdir/handover/handover_test.ok > expout
AT_CHECK([$abs_top_builddir/tests/handover/handover_test], [], [expout], [ignore])
AT_CLEANUP
AT_SETUP([power])
AT_KEYWORDS([power])
cat $abs_srcdir/power/power_test.ok > expout
AT_CHECK([$abs_top_builddir/tests/power/power_test], [], [expout], [ignore])
AT_CLEANUP
AT_SETUP([tx_power])
AT_KEYWORDS([tx_power])
cat $abs_srcdir/tx_power/tx_power_test.ok > expout