diff --git a/test_remote_register/A.sh b/test_auto_prefix_propagate/A.sh
similarity index 88%
rename from test_remote_register/A.sh
rename to test_auto_prefix_propagate/A.sh
index 6de7719..ab82d7f 100755
--- a/test_remote_register/A.sh
+++ b/test_auto_prefix_propagate/A.sh
@@ -121,14 +121,15 @@
 }
 
 start_nfd() {
-    LOG "create nfd conf file with remote_register section specified for test"
+    LOG "create nfd conf file with auto_prefix_propagate section specified for test"
     [[ ! -f $systemNfdConf ]] && LOG "can not find nfd config file" && exit 1
 
     cp $systemNfdConf $nfdConf
-    infoedit -f $nfdConf -s rib.remote_register.cost -v 15
-    infoedit -f $nfdConf -s rib.remote_register.timeout -v 10000
-    infoedit -f $nfdConf -s rib.remote_register.retry -v 0
-    infoedit -f $nfdConf -s rib.remote_register.refresh_interval -v 15
+    infoedit -f $nfdConf -s rib.auto_prefix_propagate.cost -v 15
+    infoedit -f $nfdConf -s rib.auto_prefix_propagate.timeout -v 10000
+    infoedit -f $nfdConf -s rib.auto_prefix_propagate.base_retry_wait -v 50
+    infoedit -f $nfdConf -s rib.auto_prefix_propagate.max_retry_wait -v 3600
+    infoedit -f $nfdConf -s rib.auto_prefix_propagate.refresh_interval -v 15
 
     kill_process nfd
     LOG "start NFD"
@@ -158,17 +159,13 @@
     create_identity ndn:/Z/A/B/C ndn:/Z/A
     publish_default_cert ndn:/Z/A/B/C
 
-    LOG "create identity /Z/A/B/C/D/E/nrd and publish its cert"
-    create_identity ndn:/Z/A/B/C/D/E/rib ndn:/Z/A/B/C
-    publish_default_cert ndn:/Z/A/B/C/D/E/rib
-
     LOG "create identity /Z/F and publish its cert"
-    create_identity ndn:/Z/F ndn:/Z
+    create_identity ndn:/Z/F
     publish_default_cert ndn:/Z/F
 }
 
 generate_anchor() {
-    certFile='remote-register.hub.anchor.cert'
+    certFile='auto-propagate.anchor.cert'
     ndnsec-export -o $certFile $1 >>$testLog 2>&1
     cert=$(cat $certFile) && rm $certFile
     echo $cert
diff --git a/test_remote_register/B.sh b/test_auto_prefix_propagate/B.sh
similarity index 90%
rename from test_remote_register/B.sh
rename to test_auto_prefix_propagate/B.sh
index d8b6cf5..4784a31 100755
--- a/test_remote_register/B.sh
+++ b/test_auto_prefix_propagate/B.sh
@@ -1,7 +1,7 @@
 #!/usr/bin/env bash
 
 defaultIdentity=
-hubIdentity='/remote-register-test/hub'
+hubIdentity='/auto-prefix-propagate/hub'
 nfdConf='hub.nfd.conf'
 systemNfdConf='/usr/local/etc/ndn/nfd.conf'
 testLog='hub.test.log'
@@ -71,6 +71,9 @@
     # copy the config file to the working directory
     cp $systemNfdConf $nfdConf
 
+    # set UDP face timeout to 35 seconds
+    infoedit -f $nfdConf -s face_system.udp.idle_timeout -v 35
+
     # insert a rule section to validate Interest
     cat <<EOF | infoedit -f $nfdConf -a rib.localhop_security.rule
 id "NRD Prefix Registration Command Rule"
@@ -120,15 +123,16 @@
 EOF
 
     #delete remote_register section
-    infoedit -f $nfdConf -d rib.remote_register
+    infoedit -f $nfdConf -d rib.auto_prefix_propagate
 
     kill_process nfd
     LOG "start NFD"
     sudo -b nohup nfd --config $nfdConf >>$nfdLog 2>&1 &
     sleep 2
 
-    LOG "set autoreg prefix to ndn:/"
-    nfdc set-strategy ndn:/ ndn:/localhost/nfd/strategy/broadcast >>$testLog 2>&1
+    LOG "set multicast strategy for ndn:/"
+    nfdc set-strategy ndn:/ ndn:/localhost/nfd/strategy/multicast >>$testLog 2>&1
+    LOG "set autoreg prefix to /Z"
     nfd-autoreg --prefix=/Z >> $testLog 2>&1 &
 }
 
diff --git a/test_auto_prefix_propagate/README.md b/test_auto_prefix_propagate/README.md
new file mode 100644
index 0000000..065918a
--- /dev/null
+++ b/test_auto_prefix_propagate/README.md
@@ -0,0 +1,69 @@
+Test Case - automatic prefix propagation test scenario
+=====================
+
+## Topology
+A--B
+
+A is a NDN host while B is the remote hub / gateway router.
+IPv4 udp tunnel is used.
+
+Script is invoked on host A. It can control B via ssh
+
+## Description
+The script test automatic prefix propagation procedure.
+In case of a failure, the detailed log can be found under:
+test_auto_prefix_propagate/logs/auto_prefix_propagate.log
+
+## Steps
+1. generate certificates on A for these identities, in RIB daemon's KeyChain:
+    ndn:/Z/A self-signed
+    ndn:/Z/A/nrd signed by ndn:/Z/A
+    ndn:/Z/A/B/C signed by ndn:/Z/A
+    ndn:/Z/F self-signed
+
+2. configure NFD on A:
+    enable automatic prefix propagation
+    set automatic prefix propagation refresh time to 15 seconds
+    put all certificates generated in step 1 except ndn:/Z/A into NFD's KeyChain
+
+3. configure NFD on B:
+    set UDP face timeout to 35 seconds
+    enable acceptance of prefix registration using ndn:/localhop/nfd/rib command prefix
+    make ndn:/Z/A the trust anchor for prefix registration using ndn:/localhop/nfd/rib command prefix
+    set multicast strategy for ndn:/
+
+4. start NFD on A,B
+
+5. start repo-ng on A to listen on ndn:/ prefix, and put all certificates generated in step 1 into this repo via TCP bulk insert protocol
+
+6. start nfd-autoreg --prefix=/Z on B
+
+7. execute nfdc on A to create a face toward B over UDP
+
+8. start ndnpingserver for ndn:/Z/A/G on A, defer 5 seconds
+9. inspect RIB on B, fail the test case if route for ndn:/Z/A toward A exists
+
+10. execute nfdc on A to register a route for ndn:/localhop/nfd on the
+face created in step 7, defer 5 seconds
+11. inspect RIB on B, fail the test case if route for ndn:/Z/A toward A does not exist
+
+12. start ndnpingserver for ndn:/Z/A/H on A, defer 5 seconds
+13. inspect RIB on B, fail the test case if route for ndn:/Z/A toward A does not exist
+
+14. stop ndnpingserver from step 8, defer 5 seconds
+15. inspect RIB on B, fail the test case if route for ndn:/Z/A toward A does not exist
+
+16. stop ndnpingserver from step 13, defer 5 seconds
+17. inspect RIB on B, fail the test case if route for ndn:/Z/A toward A exists
+
+18. start ndnpingserver for ndn:/Z/A/B/C/D on A, defer 5 seconds
+19. inspect RIB on B, fail the test case if route for ndn:/Z/A/B/C toward A exists, fail the test case if route for ndn:/Z/A toward A does not exist
+
+20. defer 80 seconds
+21. inspect RIB on B, fail the test case if route for ndn:/Z/A toward A does not exist
+
+22. start ndnpingserver for ndn:/Z/F/I on A, defer 5 seconds
+23. inspect RIB on B, fail the test case if route for ndn:/Z/F toward A exists
+
+## Return value
+PASS of all tests finished successfully.
diff --git a/test_auto_prefix_propagate/auto-prefix-propagate-test.sh b/test_auto_prefix_propagate/auto-prefix-propagate-test.sh
new file mode 100755
index 0000000..eb7e8db
--- /dev/null
+++ b/test_auto_prefix_propagate/auto-prefix-propagate-test.sh
@@ -0,0 +1,127 @@
+#!/usr/bin/env bash
+source ../multi-host.conf
+workDir=$(pwd)
+logDir=$workDir/logs
+hubIP=$CTRL_B
+testLog=$logDir/auto-prefix-propagate.log
+hostSh=A.sh
+hubSh=B.sh
+
+echo "TEST AUTOMATIC PREFIX PROPAGATE START" > $testLog
+
+LOG () {
+    echo $1; echo $1 >>$testLog
+}
+
+run_hub_cmd () {
+    ssh $hubIP "$1" 2>&1
+}
+
+run_scp_to_hub () {
+    scp $1 $hubIP:$workDir/$1 2>&1
+}
+
+set_hub_trust_anchor () {
+    LOG "set the trust anchor to $1 on the hub."
+    anchor=$(sh $hostSh -a $1)
+    echo $anchor > anchor.cert
+    run_scp_to_hub anchor.cert && rm anchor.cert
+}
+
+run_host_ping_server() {
+    ndnpingserver $1 >>$testLog 2>&1 &
+}
+
+end_test() {
+    scp $hubIP:$workDir/hub.nfd.log hub.nfd.log 2>&1
+    scp $hubIP:$workDir/hub.test.log hub.test.log 2>&1
+    cat host.nfd.log hub.nfd.log > nfd.log
+    cat host.test.log hub.test.log > test.log
+    cat nfd.log test.log >> $testLog
+
+    bash $hostSh -c && run_hub_cmd "cd $workDir && bash $hubSh -c"
+    run_hub_cmd "[[ -d $workDir ]] && sudo rm -rf $workDir"
+    rm *.log
+
+    [[ $# -gt 0 ]] && LOG "$1" && exit 1 || exit 0
+}
+
+inspect_hub_rib_exist() {
+    record=$(run_hub_cmd "nfd-status -r" | grep "$1 route")
+    if [[ -z "$record" ]]; then
+        end_test "Fail test $2"
+    fi
+}
+
+inspect_hub_rib_none() {
+    record=$(run_hub_cmd "nfd-status -r" | grep "$1 route")
+    if [[ ! -z "$record" ]]; then
+        end_test "Fail test $2. the matched record: $record"
+    fi
+}
+
+run_test() {
+    faceUri=udp4://$hubIP:6363
+    nfdc create $faceUri >> $testLog
+
+    defer_time=5
+
+    LOG "run test case: 1"
+    run_host_ping_server ndn:/Z/A/G && p1=$! && sleep $defer_time
+    inspect_hub_rib_none /Z/A "1: route of /Z/A exists, but propagation should not be active \
+as the /localhop/nfd prefix has not been registered to the local RIB now."
+
+    LOG "run test case: 2"
+    nfdc register ndn:/localhop/nfd $faceUri >> $testLog && sleep $defer_time
+    inspect_hub_rib_exist /Z/A "2: route of /Z/A does not exist, but it should exist because \
+automatic prefix propagation is active (/localhop/nfd prefix has been registered), Z/A/G is \
+present in local RIB and /Z/A has been configured as an identity in NFD's keychain."
+    inspect_hub_none /Z/A/G "2: route of /Z/A/G exists, but it should not exist because \
+/Z/A is shorter and should be adopted for propagation."
+
+    LOG "run test case: 3"
+    run_host_ping_server ndn:/Z/A/H && p2=$! && sleep $defer_time
+    inspect_hub_rib_exist /Z/A "3: route of /Z/A does not exist, but it should exist because \
+/Z/A has already been propagated."
+    inspect_hub_none /Z/A/H "3: route of /Z/A/H exists, but it should not exist because \
+/Z/A is shorter and should be adopted for propagation."
+
+    LOG "run test case: 4"
+    sudo kill $p1 1>> $testLog 2>&1 && sleep $defer_time
+    inspect_hub_rib_exist /Z/A "4: route of /Z/A was unregistered, it should be kept for \
+local RIB entry /Z/A/H."
+
+    LOG "run test case: 5"
+    sudo kill $p2 1>> $testLog 2>&1 && sleep $defer_time
+    inspect_hub_rib_none /Z/A "5: route of /Z/A still exists, but it should have been \
+automatically unregistered, because all /Z/H/* prefixes have been unregistered locally."
+
+    LOG "run test case: 6"
+    run_host_ping_server ndn:/Z/A/B/C/D && p3=$! && sleep $defer_time
+    inspect_hub_rib_none /Z/A/B/C "6: route of /Z/A/B/C exist, but it should not be \
+propagated because /Z/A is a better choice."
+    inspect_hub_rib_exist /Z/A "6: route of /Z/A does not exist, but it should have \
+been propagated."
+
+    LOG "run test case: 7"
+    sleep 80
+    inspect_hub_rib_exist /Z/A "7: route of /Z/A/ does not exist, it should have been \
+refreshed periodically."
+
+    LOG "run test case: 8"
+    run_host_ping_server ndn:/Z/F/I && sleep $defer_time
+    inspect_hub_rib_none /Z/F "8: route of /Z/F exist, but automatic prefix propagation \
+should not be active becuase there are no configured keys for the covering namespace."
+}
+
+LOG "set environment in the host."
+bash $hostSh -c -p
+
+LOG "set environment in the hub."
+run_hub_cmd "[[ -d $workDir ]] || mkdir -p $workDir"
+run_scp_to_hub $hubSh
+set_hub_trust_anchor ndn:/Z/A
+run_hub_cmd "cd $workDir && bash $hubSh -c -p"
+
+LOG "run test"
+run_test && end_test
diff --git a/test_auto_prefix_propagate/test_auto_prefix_propagate.py b/test_auto_prefix_propagate/test_auto_prefix_propagate.py
new file mode 100644
index 0000000..5819d1f
--- /dev/null
+++ b/test_auto_prefix_propagate/test_auto_prefix_propagate.py
@@ -0,0 +1,28 @@
+#!/usr/bin/python2
+
+import os
+import unittest
+import subprocess
+
+class test_auto_prefix_propagate(unittest.TestCase):
+    """Test case for testing NDN Automatic Prefix Propagation"""
+
+    def setUp(self):
+        print "\nTesting NDN automatic prefix propagation"
+        print "*****************************"
+        os.chdir("test_auto_prefix_propagate")
+        os.system("mkdir -p logs")
+
+    def tearDown(self):
+        print "********************************"
+        os.chdir("..")
+
+    def test_remote_register(self):
+        print ">>> test automatic prefix propagation <<<"
+
+        ret = subprocess.call(['./auto-prefix-propagate-test.sh'], shell=True)
+
+        if (ret != 0):
+            self.fail(" >> TEST AUTOMATIC PROPAGATE PROCEDURE FAILED")
+        else:
+            print ">> TEST AUTOMATIC PROPAGATE PROCEDURE PASSED SUCCESSFULLY"
diff --git a/test_remote_register/README.md b/test_remote_register/README.md
deleted file mode 100644
index dca5242..0000000
--- a/test_remote_register/README.md
+++ /dev/null
@@ -1,84 +0,0 @@
-Test Case - remote prefix registration test scenario
-=====================
-
-## Topology
-A--B
-
-A is a NDN host while B is the remote hub / gateway router.
-IPv4 udp tunnel is used.
-
-Script is invoked on host A. It can control B via ssh
-
-## Description
-The script test remote prefix registration procedure.
-In case of a failure, the detailed log can be found under:
-test_remote_register/logs/remote_register.log
-
-## Steps
-1. generate certificates on A for these identities, in RIB daemon's KeyChain:
-    ndn:/Z/A self-signed
-    ndn:/Z/A/nrd signed by ndn:/Z/A
-    ndn:/Z/A/B/C signed by ndn:/Z/A
-    ndn:/Z/A/B/C/D/E/nrd signed by ndn:/Z/A/B/C
-    ndn:/Z/F self-signed
-
-2. configure NFD on A:
-    enable remote prefix registration
-    set remote registration refreshing time to 15 seconds
-
-3. configure NFD on B:
-    set UDP face timeout to 35 seconds
-    enable acceptance of prefix registration using ndn:/localhop/nfd/rib command prefix
-    make ndn:/Z/A a trust anchor for prefix registration using ndn:/localhop/nfd/rib command prefix
-    set broadcast strategy for ndn:/
-
-4. start NFD (including RIB Daemon) on A,B
-
-5. start repo-ng on A to listen on ndn:/ prefix, and put all certificates generated in step 1 into this repo via TCP bulk insert protocol
-
-6. start nfd-autoreg --prefix=/Z on B
-
-7. execute nfdc on A to create a face toward B over UDP
-
-8. start ndnpingserver for ndn:/Z/A/G on A, defer 5 seconds
-
-9. inspect RIB on B, fail the test case if Route for ndn:/Z/A toward A exists
-
-10. execute nfdc on A to register a Route for ndn:/localhop/nfd on the face created in step 7
-
-11. defer 5 seconds
-
-12. inspect RIB on B, fail the test case if Route for ndn:/Z/A toward A does not exist
-
-13. start ndnpingserver for ndn:/Z/A/H on A, defer 5 seconds
-
-14. inspect RIB on B, fail the test case if Route for ndn:/Z/A toward A does not exist
-
-15. stop ndnpingserver from step 8, defer 5 seconds
-
-16. inspect RIB on B, fail the test case if Route for ndn:/Z/A toward A does not exist
-
-17. stop ndnpingserver from step 13, defer 5 seconds
-
-18. inspect RIB on B, fail the test case if Route for ndn:/Z/A toward A exists
-
-19. start ndnpingserver for ndn:/Z/A/B/C/D on A, defer 5 seconds
-
-20. inspect RIB on B, fail the test case if Route for ndn:/Z/A toward A exists, fail the test case if Route for ndn:/Z/A/B/C toward A does not exist
-
-21. stop ndnpingserver from step 19
-
-22. start ndnpingserver for ndn:/Z/A/B/C/D/E on A, defer 5 seconds
-
-23. inspect RIB on B, fail the test case if Route for ndn:/Z/A toward A exists, fail the test case if Route for ndn:/Z/A/B/C toward A exists, fail the test case if Route for ndn:/Z/A/B/C/D/E toward A does not exist
-
-24. defer 80 seconds
-
-25. inspect RIB on B, fail the test case if Route for ndn:/Z/A/B/C/D/E toward A does not exist
-
-26. start ndnpingserver for ndn:/Z/F/I on A, defer 5 seconds
-
-27. inspect RIB on B, fail the test case if Route for ndn:/Z/F toward A exists
-
-## Return value
-PASS of all tests finished successfully.
diff --git a/test_remote_register/remote-register-test.sh b/test_remote_register/remote-register-test.sh
deleted file mode 100755
index 543a5f5..0000000
--- a/test_remote_register/remote-register-test.sh
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/usr/bin/env bash
-source ../multi-host.conf
-testCase=$1
-workDir=$(pwd)
-logDir=$workDir/logs
-hostIP=$IP4_A1
-hubIP=$IP4_B1
-testLog=$logDir/remote-register.log
-hostSh=A.sh
-hubSh=B.sh
-
-echo "TEST REMOTE REGISTER START" >$testLog
-
-LOG () {
-    echo $1; echo $1 >>$testLog
-}
-
-run_hub_cmd () {
-    ssh $hubIP "$1" 2>&1
-}
-
-run_scp_to_hub () {
-    scp $1 $hubIP:$workDir/$1 2>&1
-}
-
-set_hub_trust_anchor () {
-    LOG "set the trust anchor to $1 on the hub."
-    anchor=$(sh $hostSh -a $1)
-    echo $anchor > anchor.cert
-    run_scp_to_hub anchor.cert && rm anchor.cert
-}
-
-run_host_ping_server() {
-    ndnpingserver $1 >>$testLog 2>&1 &
-}
-
-end_test() {
-    scp $hubIP:$workDir/hub.nfd.log hub.nfd.log 2>&1
-    scp $hubIP:$workDir/hub.test.log hub.test.log 2>&1
-    cat host.nfd.log hub.nfd.log > nfd.log
-    cat host.test.log hub.test.log > test.log
-    cat nfd.log test.log >> $testLog
-
-    bash $hostSh -c && run_hub_cmd "cd $workDir && bash $hubSh -c"
-    run_hub_cmd "[[ -d $workDir ]] && sudo rm -rf $workDir"
-    rm *.log
-
-    [[ $# -gt 0 ]] && LOG "$1" && exit 1 || exit 0
-}
-
-inspect_hub_rib_exist() {
-    record=$(run_hub_cmd "nfd-status -r" | grep "$1 route")
-    if [[ -z "$record" ]]; then
-        end_test "Fail test $2"
-    fi
-}
-
-inspect_hub_rib_none() {
-    record=$(run_hub_cmd "nfd-status -r" | grep "$1 route")
-    if [[ ! -z "$record" ]]; then
-        end_test "Fail test $2. the matched record: $record"
-    fi
-}
-
-run_test() {
-    faceUri=udp4://$hubIP:6363
-    nfdc create $faceUri >> $testLog
-
-    defer_time=5 && test_case=0
-
-    test_case=`expr $test_case + 1` && LOG "run test case: $test_case" #1
-    run_host_ping_server ndn:/Z/A/G && p1=$! && sleep $defer_time
-    inspect_hub_rib_none /Z/A "$test_case: route of /Z/A exists."
-
-    test_case=`expr $test_case + 1` && LOG "run test case: $test_case" #2
-    nfdc register ndn:/localhop/nfd $faceUri >> $testLog
-    # the route of /Z/A is expected to exist. But due to BUG 2413, it will not
-    inspect_hub_rib_none /Z/A "$test_case: route of /Z/A does not exist."
-
-    test_case=`expr $test_case + 1` && LOG "run test case: $test_case" #3
-    run_host_ping_server ndn:/Z/A/H && p2=$! && sleep $defer_time
-    inspect_hub_rib_exist /Z/A "$test_case: route of /Z/A does not exist."
-
-    test_case=`expr $test_case + 1` && LOG "run test case: $test_case" #4
-    sudo kill $p1 && sleep $defer_time
-    inspect_hub_rib_exist /Z/A "$test_case: route of /Z/A was unregistered."
-
-    test_case=`expr $test_case + 1` && LOG "run test case: $test_case" #5
-    sudo kill $p2 && sleep $defer_time
-    inspect_hub_rib_none /Z/A "$test_case: route of /Z/A still exists."
-
-    test_case=`expr $test_case + 1` && LOG "run test case: $test_case" #6
-    run_host_ping_server ndn:/Z/A/B/C/D && p3=$! && sleep $defer_time
-    inspect_hub_rib_none /Z/A "$test_case: route of /Z/A exists."
-    inspect_hub_rib_exist /Z/A/B/C "$test_case: route of /Z/A/B/C does not exist."
-
-    test_case=`expr $test_case + 1` && LOG "run test case: $test_case" #7
-    sudo kill $p3 && run_host_ping_server ndn:/Z/A/B/C/D/E && sleep $defer_time
-    inspect_hub_rib_none /Z/A "$test_case: route of /Z/A exists."
-    inspect_hub_rib_none /Z/A/B/C "$test_case: route of /Z/A/B/C exists."
-    inspect_hub_rib_exist /Z/A/B/C/D/E "$test_case: route of /Z/A/B/C/D/E does not exist."
-
-    test_case=`expr $test_case + 1` && LOG "run test case: $test_case" #8
-    sleep 80
-    inspect_hub_rib_exist /Z/A/B/C/D/E "$test_case: route of /Z/A/B/C/D/E does not exist."
-
-    test_case=`expr $test_case + 1` && LOG "run test case: $test_case" #9
-    run_host_ping_server ndn:/Z/F/I && sleep $defer_time
-    inspect_hub_rib_none /Z/F "$test_case: route of /Z/F exist."
-}
-
-LOG "set environment in the host."
-bash $hostSh -c -p
-
-LOG "set environment in the hub."
-run_hub_cmd "[[ -d $workDir ]] || mkdir -p $workDir"
-run_scp_to_hub $hubSh
-set_hub_trust_anchor ndn:/Z/A
-run_hub_cmd "cd $workDir && bash $hubSh -c -p"
-
-LOG "run test"
-run_test && end_test
diff --git a/test_remote_register/test_remote_register.py b/test_remote_register/test_remote_register.py
deleted file mode 100644
index 44f5abd..0000000
--- a/test_remote_register/test_remote_register.py
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/usr/bin/python2
-
-import os
-import unittest
-import subprocess
-
-class test_remote_register(unittest.TestCase):
-    """Test case for testing NDN Remote Prefix Registration"""
-
-    def setUp(self):
-        print "\nTesting NDN remote prefix registration"
-        print "*****************************"
-        os.chdir("test_remote_register")
-        os.system("mkdir -p logs")
-
-    def tearDown(self):
-        print "********************************"
-        os.chdir("..")
-
-    def test_remote_register(self):
-        print ">>> test remote prefix registration <<<"
-
-        ret = subprocess.call(['./remote-register-test.sh'], shell=True)
-
-        if (ret != 0):
-            self.fail(" >> TEST REMOTE REGISTER PROCEDURE FAILED")
-        else:
-            print ">> TEST REMOTE REGISTER PROCEDURE PASSED SUCCESSFULLY"
