Group Membership Service (GMS) Protocol ======================================= Hopefully these tests can be automated some time in the future. Currently it takes too much time to write automatic tests. The tests should be executed before releasing a new version of JGroups. - All the tests use the JGroups/Demos/Draw program - All tests should be run with both FD and FD_SOCK - All test should be run with FLUSH (flush-udp.xml) and without FLUSH (udp.xml) When *FD only* is used make sure that timeout and max_tries are relatively low. For example, timeout="2000" and max_tries="3" are good reference values. These settings are important for tests 9,10 and 12. 'Leave' means exit the demo program gracefully, ie. through "Leave&Exit". 'Kill' means just kill the process id Test 1 ------ - Start A, B - Leave B --> B should leave and window should disappear --> A should show 1 member Test 2 ------ - Start A, B - Kill B --> B should be suspected --> A should show 1 member (run with FD_SOCK first, then with FD only) Test 3 ------ - Test 3 - Repeatedly start B and kill B --> A should always show the correct mbrship Test 4 ------ - Start A, B - Leave A --> A should leave and window should disappear --> B should be new coordinator --> B should show 1 member Test 4.1 -------- - Start A, B, C - Leave A - Leave B - Leave C - Everyone should be able to leave gracefully, no error messages such as "FD_SOCK.up(): I was suspected by 192.168.5.2:1466; ignoring the SUSPECT message" Test 5 ------ - Start A, B - Kill A --> A should be suspected --> B should become new coordinator --> B should show 1 member Test 6 ------ - Start A, B, C, D - Kill B and C --> A and D should show 2 members Test 7 ------ - Start A, B, C, D - Kill A, B, C simultaneously --> D should become new coordinator --> D should show 1 member Test 8 ------ - Start A - Leave A --> A should leave in a short time (no hangs) Test 9 ------ - Start A and B concurrently - They should form a group of 2 Test 10 ------- - Start 20 instances - Mbrship should be 20 - Kill and leave members randomly - Last member should show mbrship=1 Test 10a -------- - Start 10 instances in shell #1 - Start 1 instance in shell #2 - Kill shell #1 - The view of the only surviving instance should be 1 Test 11 ------- - Start A, B - Suspend A (CTRL-Z) - Wait until B shows membershiop of 1, then resume A (fg) - A and B needs to merge back into a group of 2 Pull-the-plug scenarios ======================= - Run Draw with udp.xml, tcp.xml and tcp-nio.xml, those configurations may need to be adjusted to use the IP addresses of the 2 nodes - Make sure loopback=true in UDP/TCP/TCP_NIO if running on Windows - 2 nodes, node 1 and node 2, connected to a switch Test 12 ------- - Pull the plug on node 2 - Node 1 and node 2 should each show 1 member - Put the plug back in - Nodes 1 and 2 should merge into a group of 2 Test 13 ------- - Pull the plug on node 1 and node 2 - Node 1 and node 2 should each show 1 member - Put the plugs back in - Nodes 1 and 2 should merge into a group of 2 Test 14 ------- - Pull the plug of nodes 1 and 2 *on the switch side* - Node 1 and node 2 should each show 1 member - Put the plugs back in - Nodes 1 and 2 should merge into a group of 2 Test 15 ------- - Kill the switch (pull the power) - Node 1 and node 2 should each show 1 member - Power the switch back up - Nodes 1 and 2 should merge into a group of 2 Test 16 ------- - Kill the switch (or pull the plugs on all nodes) - Power up the switch (or reinsert the plugs) - After the merge: - Leave the new coordinator - The leave should immediately install a new view (bug: http://jira.jboss.com/jira/browse/JGRP-350) Test 17 ------- - Run tests 16-20 with 3 nodes Test 18 ------- - Run Test 16 with DrawMultiplexer with "tcp" stack