$Id: README 96799 2013-02-11 23:01:56Z stanleyk $

This program tests the following fault tolerant naming service implementation
use cases:

1) Failover: Validate that a client can seamlessly connect to the alternate
   server of a server naming server pair after the other server has been
   terminated.

2) Persistence: Validate that repository data written by the naming service is
   available upon startup.

3) Equivalence: Validate that a client can seamlessly invoke naming operations
   on either server instance.


================================================================================
Failover Test
================================================================================

<hostname> = <local_host>
<port1>    = <first unused port>
<port2>    = <second unused port>

1) Create empty NameService and GroupService directories

	cd $TAO_ROOT/orbsvcs/tests/FT_Naming/FaultTolerant
	mkdir NameService
	mkdir GroupService

2) Start primary tao_ft_naming process
	$TAO_ROOT/orbsvcs/FT_Naming_Service/tao_ft_naming --primary \
		-ORBListenEndPoints iiop://<hostname>:<port1> \
		-m 0 \
		-r NameService \
		-v GroupService &

3) Start backup tao_ft_naming process

	$TAO_ROOT/orbsvcs/FT_Naming_Service/tao_ft_naming --backup \
		-ORBListenEndPoints iiop://<hostname>:<port2> \
		-m 0 \
		-c $TAO_ROOT/orbsvcs/tests/FT_Naming/FaultTolerant/ns.ior \
		-g $TAO_ROOT/orbsvcs/tests/FT_Naming/FaultTolerant/nm.ior \
		-r NameService \
		-v GroupService &

4) Terminate primary tao_ft_naming process

5) Run client with failover argument

	client --failover \
	       -p file:///$TAO_ROOT/orbsvcs/tests/FT_Naming/FaultTolerant/ns.ior \
	       -r file://$TAO_ROOT/orbsvcs/tests/FT_Naming/FaultTolerant/nm.ior \
	       -b 4 -d 4

	==============================================================================
	Example Output:
	==============================================================================
	INFO: Failover Name Test OK
	INFO: nm1ref: file:///tmp/ramdisk/tmp/nm.ior
	INFO: Object Group Found In Repository
	INFO: Failover ObjectGroup Test OK

6) Cleanup

	rm -rf NameService
	rm -rf GroupService

================================================================================
Persistence Test
================================================================================

<hostname> = <local_host>
<port1>    = <unused port>

1) Create empty NameService and GroupService directories

	cd $TAO_ROOT/orbsvcs/tests/FT_Naming/FaultTolerant
	mkdir NameService
	mkdir GroupService

2) Start tao_ft_naming

	$TAO_ROOT/orbsvcs/FT_Naming_Service/tao_ft_naming \
		-ORBListenEndPoints iiop://<hostname>:<port1> \
		-g $TAO_ROOT/orbsvcs/tests/FT_Naming/FaultTolerant/nm.ior \
		-o $TAO_ROOT/orbsvcs/tests/FT_Naming/FaultTolerant/ns.ior \
		-v GroupService \
		-u NameService &

3) Start test object server

	server -ORBDefaultInitRef corbaloc:iiop:<hostname>:<port1> \
				 -o $TAO_ROOT/orbsvcs/tests/FT_Naming/FaultTolerant/srv.ior &

4) Run the test client with the persistence and create arguments

	client --persistence --create \
	       -p corbaloc:iiop:<hostname>:<port1>/NameService \
	       -r corbaloc:iiop:<hostname>:<port1>/NamingManager \
	       -b 4 -d 4

	==============================================================================
	Example Output:
	==============================================================================
	INFO: Persistence Creation Name Test OK
	INFO: Object Group BasicGroup Found In Repository
	INFO: validating group member location1
	INFO: object group member at location1 reports location1
	INFO: validating group member location2
	INFO: object group member at location2 reports location2
	INFO: validating group member location3
	INFO: object group member at location3 reports location3
	INFO: validating group member location4
	INFO: object group member at location4 reports location4
	INFO: validating group member location5
	INFO: object group member at location5 reports location5
	INFO: validating group member location6
	INFO: object group member at location6 reports location6
	INFO: Persistence Creation ObjectGroup Test OK


5) Terminate tao_ft_naming and then restart it with the original arguments

	kill `pidof $TAO_ROOT/orbsvcs/FT_Naming_Service/tao_ft_naming`

	$TAO_ROOT/orbsvcs/FT_Naming_Service/tao_ft_naming \
		-ORBListenEndPoints iiop://<hostname>:<port1> \
		-g $TAO_ROOT/orbsvcs/tests/FT_Naming/FaultTolerant/nm.ior \
		-o $TAO_ROOT/orbsvcs/tests/FT_Naming/FaultTolerant/ns.ior \
		-v GroupService \
		-u NameService &

6) Now run the test client with the persistence and valdiate arguments

	client --persistence --validate \
		-p corbaloc:iiop:<hostname>:<port1>/NameService \
		-r corbaloc:iiop:<hostname>:<port1>/NamingManager \
		-b 4 -d 4

	==============================================================================
	Example Output:
	==============================================================================
	INFO: Persistence Validation Name Test OK
	INFO: Object Group BasicGroup Found In Repository
	INFO: validating group member location1
	INFO: object group member at location1 reports location1
	INFO: validating group member location2
	INFO: object group member at location2 reports location2
	INFO: validating group member location3
	INFO: object group member at location3 reports location3
	INFO: validating group member location4
	INFO: object group member at location4 reports location4
	INFO: validating group member location5
	INFO: object group member at location5 reports location5
	INFO: validating group member location6
	INFO: object group member at location6 reports location6
	INFO: Persistence Validation ObjectGroup Test OK

7) Cleanup

	rm -rf NameService
	rm -rf GroupService


================================================================================
Redundant Equivalancy Test
================================================================================

<hostname> = <local_host>
<port1>    = <first unused port>
<port2>    = <second unused port>

1) Create empty NameService and GroupService directories

	cd $TAO_ROOT/orbsvcs/tests/FT_Naming/FaultTolerant
	mkdir NameService
	mkdir GroupService

2) Start primary tao_ft_naming process

	$TAO_ROOT/orbsvcs/FT_Naming_Service/tao_ft_naming \
	  --primary \
		-ORBListenEndPoints iiop://<hostname>:<port1> \
		-o /tmp/ns_primary.ior \
		-h /tmp/nm_primary.ior \
		-r NameService \
		-v GroupService &

3) Start backup tao_ft_naming process

	$TAO_ROOT/orbsvcs/FT_Naming_Service/tao_ft_naming \
	  --backup \
		-ORBListenEndPoints iiop://<hostname>:<port2> \
		-o /tmp/ns_backup.ior \
		-h /tmp/nm_backup.ior \
		-c /tmp/ns_multi_profile.ior \
		-g /tmp/nm_multi_profile.ior \
		-r NameService \
		-v GroupService &

4) Now run the test client with the equivalence argument

	client --equivalence \
		-p file:///tmp/ns_primary.ior \
		-q file:///tmp/ns_backup.ior \
		-r file:///tmp/nm_primary.ior \
		-s file:///tmp/nm_backup.ior \
		-b 4 -d 4

	==============================================================================
	Example Output:
	==============================================================================
	INFO: ns1ref is not equivalent to ns2ref
	INFO: ns1ref profile count: 1
	INFO: ns2ref profile count: 1
	INFO: Equivalence Name Test OK
	INFO: nm1ref: file:///tmp/nm_primary.ior
	INFO: nm2ref: file:///tmp/nm_backup.ior
	INFO: nm1ref is not equivalent to nm2ref
	INFO: nm1ref profile count: 1
	INFO: nm2ref profile count: 1
	INFO: Primary Found Object Group test_group_1 Created By Primary In Repository
	INFO: Backup Found Object Group test_group_2 Created By Backup In Repository
	INFO: Primary Found Object Group test_group_2 Created By Backup In Repository
	INFO: Backup Found Object Group test_group_1 Created By Primary In Repository
	INFO: Equivalence ObjectGroup Test OK

5) Cleanup

	rm -rf NameService
	rm -rf GroupService

