neels has uploaded this change for review.

View Change

add startup config tests

Get a handle on how osmo-hnbgw currently auto-configures itself, by
running vty tests with a couple of config files that have various levels
of omitted config items that are to be auto-configured.

These tests serve to ensure continuity and compatibility by upcoming
cnpool patches. They will show how the configuration changes / doesn't
change in all the right ways.

Uncover one bug in osmo-hnbgw: local point-code setting is discarded by
osmo-hnbgw startup when there are no SCCP address book entries in use.
The error is fixed as side effect of an upcoming patch:
Iea1824f1c586723d989c80a909bae16bd2866e08

Related: SYS#6412
Change-Id: Ic8bb30e1dd73753c2ff255566382e241918414f7
---
M tests/Makefile.am
A tests/config/defaults.cfg
A tests/config/defaults.vty
A tests/config/one_cs7.cfg
A tests/config/one_cs7.vty
A tests/config/one_cs7_with_addrs.cfg
A tests/config/one_cs7_with_addrs.vty
A tests/config/one_cs7_with_iucs_addr.cfg
A tests/config/one_cs7_with_iucs_addr.vty
A tests/config/one_cs7_with_iups_addr.cfg
A tests/config/one_cs7_with_iups_addr.vty
11 files changed, 244 insertions(+), 0 deletions(-)

git pull ssh://gerrit.osmocom.org:29418/osmo-hnbgw refs/changes/91/32991/1
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 58d6592..770c072 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -26,6 +26,8 @@
$(TESTSUITE) \
osmo-hnbgw-vty-test.cfg \
osmo-hnbgw.vty \
+ config/*.cfg \
+ config/*.vty \
$(NULL)

TESTSUITE = $(srcdir)/testsuite
@@ -37,6 +39,7 @@
if ENABLE_EXT_TESTS
python-tests:
$(MAKE) vty-test
+ $(MAKE) config-tests
osmotestvty.py -p $(abs_top_srcdir) -w $(abs_top_builddir) -v
osmotestconfig.py -p $(abs_top_srcdir) -w $(abs_top_builddir) -v
else
@@ -57,6 +60,13 @@
-c $(srcdir)/osmo-hnbgw-vty-test.cfg" \
$(U) $(srcdir)/$(VTY_TEST)

+# Test each config/*.cfg file with the corresponding config/*.vty transcript test
+.PHONY: %.config-test
+%.config-test: $(srcdir)/config/%.vty
+ osmo_verify_transcript_vty.py -v -n OsmoHNBGW -p 4261 -r "$(top_builddir)/src/osmo-hnbgw/osmo-hnbgw -c $(patsubst %.vty,%.cfg,$<)" $< $U
+.PHONY: config-tests
+config-tests: $(patsubst $(srcdir)/config/%.vty,%.config-test,$(wildcard $(srcdir)/config/*.vty))
+
check-local: atconfig $(TESTSUITE)
$(SHELL) '$(TESTSUITE)' $(TESTSUITEFLAGS)
$(MAKE) $(AM_MAKEFLAGS) python-tests
diff --git a/tests/config/defaults.cfg b/tests/config/defaults.cfg
new file mode 100644
index 0000000..b4e37fb
--- /dev/null
+++ b/tests/config/defaults.cfg
@@ -0,0 +1 @@
+# configure nothing, to get purely the implicit default config
diff --git a/tests/config/defaults.vty b/tests/config/defaults.vty
new file mode 100644
index 0000000..282c080
--- /dev/null
+++ b/tests/config/defaults.vty
@@ -0,0 +1,31 @@
+OsmoHNBGW> ### Config file was empty, everything we see here is the default auto configuration
+
+OsmoHNBGW> enable
+
+OsmoHNBGW# show cs7 config
+cs7 instance 0
+ point-code 0.23.5
+ asp asp-clnt-OsmoHNBGW 2905 0 m3ua
+ local-ip localhost
+ remote-ip localhost
+ sctp-role client
+ as as-clnt-OsmoHNBGW m3ua
+ asp asp-clnt-OsmoHNBGW
+ routing-key 0 0.23.5
+
+OsmoHNBGW# show cnlink
+IuCS: OsmoHNBGW:RI=SSN_PC,PC=0.23.5,SSN=RANAP <-> RI=SSN_PC,PC=0.23.1,SSN=RANAP
+ SS7 route: pc=0=0.0.0 mask=0x0=0.0.0 via AS as-clnt-OsmoHNBGW proto=m3ua ASP asp-clnt-OsmoHNBGW
+IuPS: OsmoHNBGW:RI=SSN_PC,PC=0.23.5,SSN=RANAP <-> RI=SSN_PC,PC=0.23.4,SSN=RANAP
+ SS7 route: pc=0=0.0.0 mask=0x0=0.0.0 via AS as-clnt-OsmoHNBGW proto=m3ua ASP asp-clnt-OsmoHNBGW
+
+OsmoHNBGW# show running-config
+...
+cs7 instance 0
+ point-code 0.23.5
+hnbgw
+ rnc-id 23
+ log-prefix hnb-id
+ iuh
+ mgw 0
+...
diff --git a/tests/config/one_cs7.cfg b/tests/config/one_cs7.cfg
new file mode 100644
index 0000000..83862d8
--- /dev/null
+++ b/tests/config/one_cs7.cfg
@@ -0,0 +1,3 @@
+# auto-configuration will pick up cs7 instance 0. Configure only the local point-code.
+cs7 instance 0
+ point-code 1.1.1
diff --git a/tests/config/one_cs7.vty b/tests/config/one_cs7.vty
new file mode 100644
index 0000000..7011c83
--- /dev/null
+++ b/tests/config/one_cs7.vty
@@ -0,0 +1,28 @@
+OsmoHNBGW> enable
+
+OsmoHNBGW# ### ERROR: 'one_cs7.cfg' sets 'cs7 instance 0' / 'point-code 1.1.1', but osmo-hnbgw uses 0.23.5
+OsmoHNBGW# show cs7 config
+cs7 instance 0
+ point-code 0.23.5
+ asp asp-clnt-OsmoHNBGW 2905 0 m3ua
+ local-ip localhost
+ remote-ip localhost
+ sctp-role client
+ as as-clnt-OsmoHNBGW m3ua
+ asp asp-clnt-OsmoHNBGW
+ routing-key 0 0.23.5
+
+OsmoHNBGW# ### ERROR: 'one_cs7.cfg' sets 'cs7 instance 0' / 'point-code 1.1.1', but osmo-hnbgw uses 0.23.5
+OsmoHNBGW# show cnlink
+IuCS: OsmoHNBGW:RI=SSN_PC,PC=0.23.5,SSN=RANAP <-> RI=SSN_PC,PC=0.23.1,SSN=RANAP
+ SS7 route: pc=0=0.0.0 mask=0x0=0.0.0 via AS as-clnt-OsmoHNBGW proto=m3ua ASP asp-clnt-OsmoHNBGW
+IuPS: OsmoHNBGW:RI=SSN_PC,PC=0.23.5,SSN=RANAP <-> RI=SSN_PC,PC=0.23.4,SSN=RANAP
+ SS7 route: pc=0=0.0.0 mask=0x0=0.0.0 via AS as-clnt-OsmoHNBGW proto=m3ua ASP asp-clnt-OsmoHNBGW
+
+OsmoHNBGW# ### ERROR: 'one_cs7.cfg' sets 'cs7 instance 0' / 'point-code 1.1.1', but osmo-hnbgw uses 0.23.5
+OsmoHNBGW# show running-config
+...
+cs7 instance 0
+ point-code 0.23.5
+hnbgw
+...
diff --git a/tests/config/one_cs7_with_addrs.cfg b/tests/config/one_cs7_with_addrs.cfg
new file mode 100644
index 0000000..0369bd4
--- /dev/null
+++ b/tests/config/one_cs7_with_addrs.cfg
@@ -0,0 +1,12 @@
+# explicitly point at cs7 instance 0 via two address book entries for CS and PS. Leave ASP and AS to auto-configuration.
+cs7 instance 0
+ point-code 1.1.1
+ sccp-address my-msc
+ point-code 1.2.3
+ sccp-address my-sgsn
+ point-code 1.4.2
+hnbgw
+ iucs
+ remote-addr my-msc
+ iups
+ remote-addr my-sgsn
diff --git a/tests/config/one_cs7_with_addrs.vty b/tests/config/one_cs7_with_addrs.vty
new file mode 100644
index 0000000..59b1b76
--- /dev/null
+++ b/tests/config/one_cs7_with_addrs.vty
@@ -0,0 +1,46 @@
+OsmoHNBGW> enable
+
+OsmoHNBGW# ### ASP and AS were auto-configured
+OsmoHNBGW# show cs7 config
+cs7 instance 0
+ point-code 1.1.1
+ asp asp-clnt-OsmoHNBGW 2905 0 m3ua
+ local-ip localhost
+ remote-ip localhost
+ sctp-role client
+ as as-clnt-OsmoHNBGW m3ua
+ asp asp-clnt-OsmoHNBGW
+ routing-key 0 1.1.1
+ sccp-address my-msc
+ routing-indicator PC
+ point-code 1.2.3
+ sccp-address my-sgsn
+ routing-indicator PC
+ point-code 1.4.2
+
+OsmoHNBGW# ### IuCS and IuPS were explicitly pointed to specific remote point-codes, using cs7 instance 0 addresses
+OsmoHNBGW# show cnlink
+IuCS: OsmoHNBGW:RI=SSN_PC,PC=1.1.1,SSN=RANAP <-> my-msc:RI=SSN_PC,PC=1.2.3,SSN=RANAP
+ SS7 route: pc=0=0.0.0 mask=0x0=0.0.0 via AS as-clnt-OsmoHNBGW proto=m3ua ASP asp-clnt-OsmoHNBGW
+IuPS: OsmoHNBGW:RI=SSN_PC,PC=1.1.1,SSN=RANAP <-> my-sgsn:RI=SSN_PC,PC=1.4.2,SSN=RANAP
+ SS7 route: pc=0=0.0.0 mask=0x0=0.0.0 via AS as-clnt-OsmoHNBGW proto=m3ua ASP asp-clnt-OsmoHNBGW
+
+OsmoHNBGW# show running-config
+...
+cs7 instance 0
+ point-code 1.1.1
+ sccp-address my-msc
+ routing-indicator PC
+ point-code 1.2.3
+ sccp-address my-sgsn
+ routing-indicator PC
+ point-code 1.4.2
+hnbgw
+ rnc-id 23
+ log-prefix hnb-id
+ iuh
+ iucs
+ remote-addr my-msc
+ iups
+ remote-addr my-sgsn
+...
diff --git a/tests/config/one_cs7_with_iucs_addr.cfg b/tests/config/one_cs7_with_iucs_addr.cfg
new file mode 100644
index 0000000..9e0207e
--- /dev/null
+++ b/tests/config/one_cs7_with_iucs_addr.cfg
@@ -0,0 +1,8 @@
+# only set an explicit remote address for IuCS, let IuPS be auto-configured
+cs7 instance 0
+ point-code 1.1.1
+ sccp-address my-msc
+ point-code 1.2.3
+hnbgw
+ iucs
+ remote-addr my-msc
diff --git a/tests/config/one_cs7_with_iucs_addr.vty b/tests/config/one_cs7_with_iucs_addr.vty
new file mode 100644
index 0000000..2e57ea1
--- /dev/null
+++ b/tests/config/one_cs7_with_iucs_addr.vty
@@ -0,0 +1,37 @@
+OsmoHNBGW> enable
+
+OsmoHNBGW# show cs7 config
+cs7 instance 0
+ point-code 1.1.1
+ asp asp-clnt-OsmoHNBGW 2905 0 m3ua
+ local-ip localhost
+ remote-ip localhost
+ sctp-role client
+ as as-clnt-OsmoHNBGW m3ua
+ asp asp-clnt-OsmoHNBGW
+ routing-key 0 1.1.1
+ sccp-address my-msc
+ routing-indicator PC
+ point-code 1.2.3
+
+OsmoHNBGW# ### only IuCS was configured to go to remote-PC = 1.2.3, IuPS auto-configured to remote-PC = 0.23.4
+OsmoHNBGW# show cnlink
+IuCS: OsmoHNBGW:RI=SSN_PC,PC=1.1.1,SSN=RANAP <-> my-msc:RI=SSN_PC,PC=1.2.3,SSN=RANAP
+ SS7 route: pc=0=0.0.0 mask=0x0=0.0.0 via AS as-clnt-OsmoHNBGW proto=m3ua ASP asp-clnt-OsmoHNBGW
+IuPS: OsmoHNBGW:RI=SSN_PC,PC=1.1.1,SSN=RANAP <-> RI=SSN_PC,PC=0.23.4,SSN=RANAP
+ SS7 route: pc=0=0.0.0 mask=0x0=0.0.0 via AS as-clnt-OsmoHNBGW proto=m3ua ASP asp-clnt-OsmoHNBGW
+
+OsmoHNBGW# show running-config
+...
+cs7 instance 0
+ point-code 1.1.1
+ sccp-address my-msc
+ routing-indicator PC
+ point-code 1.2.3
+hnbgw
+ rnc-id 23
+ log-prefix hnb-id
+ iuh
+ iucs
+ remote-addr my-msc
+...
diff --git a/tests/config/one_cs7_with_iups_addr.cfg b/tests/config/one_cs7_with_iups_addr.cfg
new file mode 100644
index 0000000..96e7afa
--- /dev/null
+++ b/tests/config/one_cs7_with_iups_addr.cfg
@@ -0,0 +1,8 @@
+# only set an explicit remote address for IuPS, let IuCS be auto-configured
+cs7 instance 0
+ point-code 1.1.1
+ sccp-address my-sgsn
+ point-code 1.4.2
+hnbgw
+ iups
+ remote-addr my-sgsn
diff --git a/tests/config/one_cs7_with_iups_addr.vty b/tests/config/one_cs7_with_iups_addr.vty
new file mode 100644
index 0000000..1e4346f
--- /dev/null
+++ b/tests/config/one_cs7_with_iups_addr.vty
@@ -0,0 +1,37 @@
+OsmoHNBGW> enable
+
+OsmoHNBGW# show cs7 config
+cs7 instance 0
+ point-code 1.1.1
+ asp asp-clnt-OsmoHNBGW 2905 0 m3ua
+ local-ip localhost
+ remote-ip localhost
+ sctp-role client
+ as as-clnt-OsmoHNBGW m3ua
+ asp asp-clnt-OsmoHNBGW
+ routing-key 0 1.1.1
+ sccp-address my-sgsn
+ routing-indicator PC
+ point-code 1.4.2
+
+OsmoHNBGW# ### only IuPS was configured to go to remote-PC = 1.4.2, IuCS auto-configured to remote-PC = 0.23.1
+OsmoHNBGW# show cnlink
+IuCS: OsmoHNBGW:RI=SSN_PC,PC=1.1.1,SSN=RANAP <-> RI=SSN_PC,PC=0.23.1,SSN=RANAP
+ SS7 route: pc=0=0.0.0 mask=0x0=0.0.0 via AS as-clnt-OsmoHNBGW proto=m3ua ASP asp-clnt-OsmoHNBGW
+IuPS: OsmoHNBGW:RI=SSN_PC,PC=1.1.1,SSN=RANAP <-> my-sgsn:RI=SSN_PC,PC=1.4.2,SSN=RANAP
+ SS7 route: pc=0=0.0.0 mask=0x0=0.0.0 via AS as-clnt-OsmoHNBGW proto=m3ua ASP asp-clnt-OsmoHNBGW
+
+OsmoHNBGW# show running-config
+...
+cs7 instance 0
+ point-code 1.1.1
+ sccp-address my-sgsn
+ routing-indicator PC
+ point-code 1.4.2
+hnbgw
+ rnc-id 23
+ log-prefix hnb-id
+ iuh
+ iups
+ remote-addr my-sgsn
+...

To view, visit change 32991. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: osmo-hnbgw
Gerrit-Branch: master
Gerrit-Change-Id: Ic8bb30e1dd73753c2ff255566382e241918414f7
Gerrit-Change-Number: 32991
Gerrit-PatchSet: 1
Gerrit-Owner: neels <nhofmeyr@sysmocom.de>
Gerrit-MessageType: newchange