Module: sip-router
Branch: mariuszbihlei/p_usrloc
Commit: 0f03e95b9b7798946db82e2ef32ef08bddf5e08d
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=0f03e95b9b7798946db82e2ef32ef08bddf5e08d

Author: Marius Zbihlei <[email protected]>
Committer: Marius Zbihlei <[email protected]>
Date:   Mon Jan 10 12:27:22 2011 +0200

test:unit : Basic test for partitioned registration (work in progress)

---

 test/unit/50.cfg |   86 +++++++++++++++++++++++++
 test/unit/50.sh  |  186 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 272 insertions(+), 0 deletions(-)

diff --git a/test/unit/50.cfg b/test/unit/50.cfg
new file mode 100644
index 0000000..7a414a9
--- /dev/null
+++ b/test/unit/50.cfg
@@ -0,0 +1,86 @@
+# ----------- global configuration parameters ------------------------
+debug=3
+fork=yes
+log_stderror=no
+children=1
+disable_tcp=yes
+
+# ------------------ module loading ----------------------------------
+loadpath "../../modules/:../../modules_k/"
+loadmodule "tm"
+loadmodule "sl"
+loadmodule "rr"
+loadmodule "maxfwd"
+loadmodule "textops"
+loadmodule "xlog"
+loadmodule "pv"
+loadmodule "../../modules/db_mysql/db_mysql.so"
+
+loadmodule "mi_fifo"
+modparam("mi_fifo", "fifo_name", "/tmp/kamailio_fifo")
+
+loadmodule "p_usrloc"
+modparam("p_usrloc", "db_mode", 3)
+modparam("p_usrloc", "db_url", "mysql://ser:s...@localhost/ser")
+modparam("p_usrloc", "read_db_url", "mysql://ser:s...@localhost/ser")
+modparam("p_usrloc", "write_db_url", "mysql://ser:s...@localhost/ser")
+
+modparam("p_usrloc", "write_on_db", 1)
+#modparam("p_usrloc", "write_on_master_db", 1)
+modparam("p_usrloc", "alg_location", 1)
+
+modparam("p_usrloc", "reg_db_table", "locdb")
+
+loadmodule "registrar"
+modparam("registrar", "min_expires", 5)
+modparam("p_usrloc", "timer_interval", 2)
+
+#-------------------------  request routing logic -------------------
+route{
+
+       if (!mf_process_maxfwd_header("10")) {
+               sl_send_reply("483","Too Many Hops");
+               exit;
+       }
+
+       if (msg:len >=  2048 ) {
+               sl_send_reply("513", "Message Too Large");
+               exit;
+       }
+
+       if (!method=="REGISTER")
+               record_route();
+
+       if (loose_route()) {
+               # mark routing logic in request
+               append_hf("P-hint: rr-enforced\r\n");
+               route(1);
+       }
+
+       if (!uri==myself) {
+               append_hf("P-hint: outbound\r\n");
+               route(1);
+       }
+
+       if (uri==myself) {
+               if (method=="REGISTER") {
+                       save("location");
+                       exit;
+               }
+               if (!lookup("location")) {
+                       sl_send_reply("404", "Not Found");
+                       exit;
+               }
+               append_hf("P-hint: usrloc applied\r\n");
+       }
+
+       route(1);
+}
+
+route[1] {
+       if (!t_relay()) {
+               sl_reply_error();
+       }
+       exit;
+}
+
diff --git a/test/unit/50.sh b/test/unit/50.sh
new file mode 100755
index 0000000..5865794
--- /dev/null
+++ b/test/unit/50.sh
@@ -0,0 +1,186 @@
+#!/bin/bash
+# database access and persistent storage for registrar on mysql
+
+# Copyright (C) 2010 [email protected]
+#
+# This file is part of Kamailio, a free SIP server.
+#
+# Kamailio is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version
+#
+# Kamailio 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 General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
USA.
+
+source include/common
+source include/require
+source include/database
+
+CFG=50.cfg
+
+if ! (check_sipsak && check_kamailio && check_module "db_mysql" && 
check_mysql); then
+       exit 0
+fi ;
+
+cp $CFG $CFG.bak
+
+#$BIN -w . -f $CFG > /dev/null
+ret=$?
+
+sleep 1
+
+# register two contacts
+echo "adding new contacts"
+sipsak -U -C sip:foo...@localhost -s sip:49721123456...@localhost -H localhost 
&> /dev/null
+sipsak -U -C sip:foob...@localhost -s sip:49721123456...@localhost -H 
localhost &> /dev/null
+ret=$?
+
+sleep 100
+
+if [ "$ret" -eq 0 ]; then
+       $CTL ul show | grep "AOR:: 49721123456789" &> /dev/null
+       ret=$?
+fi;
+
+if [ "$ret" -eq 0 ]; then
+       TMP=`$MYSQL "select COUNT(*) from location where 
username='49721123456789';" | tail -n 1`
+       if [ "$TMP" -eq 0 ] ; then
+               ret=1
+       fi;
+fi;
+
+if [ "$ret" -eq 0 ]; then
+       # check if the contact is registered
+       sipsak -U -C empty -s sip:[email protected] -H localhost -q 
"Contact: <sip:foo...@localhost>" &> /dev/null
+       ret=$?
+fi;
+
+if [ "$ret" -eq 0 ]; then
+       # update the registration
+       sipsak -U -C sip:foo...@localhost -s sip:49721123456...@localhost -H 
localhost &> /dev/null
+       ret=$?
+fi;
+
+if [ "$ret" -eq 0 ]; then
+       # check if we get a hint when we try to unregister a non-existent 
conctact
+       sipsak -U -C "sip:foob...@localhost" -s sip:[email protected] -H 
localhost -x 0 -q "Contact: <sip:foo...@localhost>" &> /dev/null
+       ret=$?
+fi;
+
+if [ "$ret" -eq 0 ]; then
+       # unregister the contact
+       sipsak -U -C "sip:foo...@localhost" -s sip:[email protected] -H 
localhost -x 0 &> /dev/null
+       ret=$?
+fi;
+
+if [ "$ret" -eq 0 ]; then
+       # unregister the user again should not fail
+       sipsak -U -C "sip:foo...@localhost" -s sip:[email protected] -H 
localhost -x 0 &> /dev/null
+       ret=$?
+fi;
+
+if [ "$ret" -eq 0 ]; then
+       # check if the other contact is still registered
+       sipsak -U -C empty -s sip:[email protected] -H localhost -q 
"Contact: <sip:foob...@localhost>" &> /dev/null
+       ret=$?
+fi;
+
+if [ "$ret" -eq 0 ]; then
+       # register the other again
+       sipsak -U -C sip:foo...@localhost -s sip:49721123456...@localhost -H 
localhost &> /dev/null
+       ret=$?
+fi;
+
+if [ "$ret" -eq 0 ]; then
+       # unregister all contacts
+       sipsak -U -C "*" -s sip:[email protected] -H localhost -x 0 &> 
/dev/null
+       ret=$?
+fi;
+
+if [ "$ret" -eq 0 ]; then
+       $CTL ul show | grep "AOR:: 49721123456789" > /dev/null
+       ret=$?
+       if [ "$ret" -eq 0 ]; then
+               ret=1
+       else
+               ret=0
+       fi;
+fi ;
+
+if [ "$ret" -eq 0 ]; then
+       ret=`$MYSQL "select COUNT(*) from location where 
username='49721123456789';" | tail -n 1`
+fi;
+
+if [ "$ret" -eq 0 ]; then
+       # test min_expires functionality
+       sipsak -U -C sip:foo...@localhost -s sip:49721123456...@localhost -H 
localhost -x 2 &> /dev/null
+       ret=$?
+fi;
+
+if [ "$ret" -eq 0 ]; then
+       sleep 3
+       # check if the contact is still registered
+       sipsak -U -C empty -s sip:[email protected] -H localhost -q 
"Contact: <sip:foo...@localhost>" &> /dev/null
+       ret=$?
+fi;
+
+if [ "$ret" -eq 0 ]; then
+       # register a few more contacts
+       sipsak -U -e 9 -s sip:49721123456...@localhost -H localhost &> /dev/null
+fi;
+
+if [ "$ret" -eq 0 ]; then
+       # let the timer cleanup the previous registrations
+       sleep 3
+       # and check
+       TMP=`$MYSQL "select COUNT(*) from location where username like 
'49721123456789%';" | tail -n 1`
+       if [ "$TMP" -eq 10 ] ; then
+               ret=0
+       else
+               ret=1
+       fi;
+fi;
+
+$MYSQL "delete from location where username like '49721123456789%';"
+
+if [ "$ret" -eq 0 ]; then
+       # register again
+       sipsak -U -C sip:foo...@localhost -s sip:49721123456...@localhost -H 
localhost &> /dev/null
+       ret=$?
+fi;
+
+$KILL
+
+# restart to test preload_udomain functionality
+$BIN -w . -f $CFG > /dev/null
+ret=$?
+
+sleep 1
+
+if [ "$ret" -eq 0 ]; then
+       # check if the contact is still registered
+       sipsak -U -C empty -s sip:[email protected] -H localhost -q 
"Contact: <sip:foo...@localhost>" &> /dev/null
+       ret=$?
+fi;
+
+# check if the methods value is correct
+if [ "$ret" -eq 0 ]; then
+       $CTL ul show | grep "Methods:: 4294967295" &> /dev/null
+       ret=$?
+fi;
+
+# cleanup
+$MYSQL "delete from location where username like '49721123456789%';"
+
+$KILL
+
+mv $CFG.bak $CFG
+
+exit $ret
\ No newline at end of file


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to