aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am2
-rw-r--r--tests/power/Makefile.am9
-rw-r--r--tests/power/power_test.c93
-rw-r--r--tests/power/power_test.ok2
-rw-r--r--tests/sysmobts/sysmobts_test.c62
-rw-r--r--tests/sysmobts/sysmobts_test.ok1
-rw-r--r--tests/testsuite.at6
7 files changed, 112 insertions, 63 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index d2b41819..18b8ce67 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -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
diff --git a/tests/power/Makefile.am b/tests/power/Makefile.am
new file mode 100644
index 00000000..3cb8d152
--- /dev/null
+++ b/tests/power/Makefile.am
@@ -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)
diff --git a/tests/power/power_test.c b/tests/power/power_test.c
new file mode 100644
index 00000000..c1d6a5a1
--- /dev/null
+++ b/tests/power/power_test.c
@@ -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;
+}
diff --git a/tests/power/power_test.ok b/tests/power/power_test.ok
new file mode 100644
index 00000000..6bf508b2
--- /dev/null
+++ b/tests/power/power_test.ok
@@ -0,0 +1,2 @@
+Testing power loop...
+Power loop test OK
diff --git a/tests/sysmobts/sysmobts_test.c b/tests/sysmobts/sysmobts_test.c
index 6ae76232..32d6e958 100644
--- a/tests/sysmobts/sysmobts_test.c
+++ b/tests/sysmobts/sysmobts_test.c
@@ -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;
}
diff --git a/tests/sysmobts/sysmobts_test.ok b/tests/sysmobts/sysmobts_test.ok
index 07d79fd3..1f534172 100644
--- a/tests/sysmobts/sysmobts_test.ok
+++ b/tests/sysmobts/sysmobts_test.ok
@@ -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
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 0efd3332..2d1cefd3 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -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