automatic prefix propagation test scenario
Change-Id: I515981054466f656602cc47ae02355ee264330fa
refs: #3218
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"