Clustering tests
The whole Tigase server development is oriented around automatic tests we run using Tigase Test Suite. Our aim is to not release new stuff before it is tested using automated tests. Only this way we can be sure all the server features work the same way for every release. The drawback is that we first need to create tests, then we can run them to test the server. It is a bit like double development effort.
The suite evolves together with the server. At the beginning I was running only functional tests executing test cases sequentially. Then I added performance tests which required running many tests concurrently on a separate connections and stability tests which in turn required lower resources consumption and..... stability. Every new addition required slightly new features set.
A few months back when I was running load tests that was another challenge to run the test suite from multiple machines and again I had to lower resources consumption to be able to open more than 60k user connections from each test suite instance.
We extensively use Bosh in a few Tigase installations so to provide decent support for web clients I have added Bosh tests which required a different way to maintain connections to the server because the Bosh client can send each request on a separate TCP/IP connection.
Now the clustering in Tigase. We have working clustering mode in the server for a few months already but we decided not to release a new version before it is well tested using automatic tests. New challenge - open multiple connections from the test suite and each connection must end up on a different cluster node.
Today I am happy to announce all the cluster tests have passed. This is a big step for us in our preparation for publishing Tigase 4.0. Now we can focus on those countless tiny bits required to prepare binary packages for the new version.
Below is a copy of the clustering tests report, for those who are interested in more details.
The tests have been run on the cluster installation with 3 nodes in domain: xmpp-test.tigase.org. If you look carefully you may notice uneven times for some tests depending on the node used. This is because we don't have 3 identical machines to do our tests. One of the node is QuadCore quite recent box while others are an old IBM laptop and 7 years old P4. Therefore these tests results can not be used as the performance indication. They are functional tests for the Tigase server working in the cluster mode.
Server version info:
| Name: | Tigase | ||
| Version: | 4.0.0-b1182 | ||
| OS: | Linux-amd64-2.6.23-gentoo-r8, Java HotSpot(TM) 64-Bit Server VM-10.0-b22-Sun Microsystems Inc. | ||
| Local IP: | 81.143.149.100 | ||
| Remote IP: | 81.143.149.98 |
Server basic configuration parameters:
| sess-man: | admins | kobit@xmpp-test.tigase.org | |
| sess-man: | anonymous-domains | xmpp-test.tigase.org, test-domain | |
| sess-man: | auth-repo-class | tigase.db.jdbc.DrupalAuth | |
| sess-man: | auth-repo-url | jdbc:mysql://localhost/xmpp_test?user=xxxx&password=xxxxxx&online_status=true | |
| sess-man: | component-id | sess-man@veloci.tigase.org | |
| sess-man: | def-hostname | veloci.tigase.org | |
| sess-man: | hostnames | xmpp-test.tigase.org, test-domain | |
| sess-man: | max-queue-size | 10000 | |
| sess-man: | plugins | jabber:iq:auth, urn:ietf:params:xml:ns:xmpp-sasl, urn:ietf:params:xml:ns:xmpp-bind, urn:ietf:params:xml:ns:xmpp-session, roster-presence, jabber:iq:privacy, msgoffline, jabber:iq:version, http://jabber.org/protocol/stats, starttls, vcard-temp, http://jabber.org/protocol/commands, jabber:iq:private, urn:xmpp:ping, http://jabber.org/protocol/pubsub | |
| sess-man: | trusted | admin@xmpp-test.tigase.org, admin@test-domain | |
| sess-man: | user-repo-class | tigase.db.jdbc.JDBCRepository | |
| sess-man: | user-repo-url | jdbc:mysql://localhost/xmpp_test?user=drupal&password=drupal12&autoCreateUser=true |
Tests results:
| Test name | Result | Total time | OK | Average | Description | History |
|---|---|---|---|---|---|---|
| Version | success | 0 sec | 1 | 22 ms | Get server version | Version |
| Configuration | success | 0 sec | 1 | 56 ms | Server configuration | Configuration |
| Statistics | success | 0 sec | 1 | 48 ms | Server statistics | Statistics |
| Test 1 | success | 0 sec | 3 | 7 ms | Socket connect to all cluster nodes. | Test 1 |
| Test 2 | success | 0 sec | 3 | 17 ms | Stream open to all cluster nodes. | Test 2 |
| Test 3 | success | 1 sec | 3 | 392 ms | TLS connection open to all cluster nodes. | Test 3 |
| Test 4 | success | 0 sec | 3 | 146 ms | SASL authorization to all cluster nodes to different accounts. | Test 4 |
| Test 5 | success | 0 sec | 3 | 121 ms | SASL authorization to all cluster nodes to the same account 'tester'. | Test 5 |
| Test 6 | success | 0 sec | 3 | 66 ms | Message send within one node to self user. | Test 6 |
| Test 7 | success | 1 sec | 3 | 215 ms | Message send within 'veloci.tigase.org' node from 'admin' and from 'all-xmpp-test_1'to 'tester' and wait for a response. | Test 7 |
| Test 8 | success | 1 sec | 3 | 259 ms | Message send within 'shell2.tigase.org' node from 'admin' and from 'all-xmpp-test_1'to 'tester' and wait for a response. | Test 8 |
| Test 9 | success | 1 sec | 3 | 226 ms | Message send within 'test-i.tigase.org' node from 'admin' and from 'all-xmpp-test_1'to 'tester' and wait for a response. | Test 9 |
| Test 10 | success | 1 sec | 3 | 262 ms | Message send beetwen 3 nodes: from 'shell2.tigase.org', user 'admin' and from 'test-i.tigase.org', user 'all-xmpp-test_1' to user 'tester-1' on 'veloci.tigase.org' and wait for a response. | Test 10 |
| Test 11 | success | 1 sec | 3 | 232 ms | Message send beetwen 3 nodes: from 'test-i.tigase.org', user 'admin' and from 'veloci.tigase.org', user 'all-xmpp-test_1' to user 'tester-2' on 'shell2.tigase.org' and wait for a response. | Test 11 |
| Test 12 | success | 1 sec | 3 | 264 ms | Message send beetwen 3 nodes: from 'veloci.tigase.org', user 'admin' and from 'shell2.tigase.org', user 'all-xmpp-test_1' to user 'tester-3' on 'test-i.tigase.org' and wait for a response. | Test 12 |
| Test 13 | success | 0 sec | 2 | 169 ms | 2 user connections, each using a different resource on 'veloci.tigase.org' node. | Test 13 |
| Test 14 | success | 0 sec | 2 | 213 ms | 2 user connections, each using a different resource on 'shell2.tigase.org' node. | Test 14 |
| Test 15 | success | 0 sec | 2 | 180 ms | 2 user connections, each using a different resource on 'test-i.tigase.org' node. | Test 15 |
| Test 16 | success | 1 sec | 2 | 274 ms | 2 user connections, on node 'veloci.tigase.org' and 'shell2.tigase.org'. | Test 16 |
| Test 17 | success | 0 sec | 2 | 241 ms | 2 user connections, on node 'shell2.tigase.org' and 'test-i.tigase.org'. | Test 17 |
| Test 18 | success | 0 sec | 2 | 192 ms | 2 user connections, on node 'veloci.tigase.org' and 'test-i.tigase.org'. | Test 18 |
| Test 19 | success | 0 sec | 3 | 19 ms | XEP-0092 get-version - 3 user connections, each using a different node. | Test 19 |
| Test 20 | success | 1 sec | 3 | 92 ms | XEP-0039 Statistics Gathering - 3 user connections, each using a different node. | Test 20 |
| Test 21 | success | 1 sec | 3 | 79 ms | Test for feature-not-implemented error - 3 user connections, each using a different node. | Test 21 |
| Test 22 | success | 0 sec | 3 | 113 ms | XEP-0199: XMPP Ping - 3 user connections, each using a different node. | Test 22 |
| Test 23 | success | 0 sec | 3 | 81 ms | XEP-0030: XMPP Service Discovery - 3 user connections, each using a different node. | Test 23 |
| Bosh 1 | success | 0 sec | 3 | 4 ms | Socket connect to all cluster nodes. | Bosh 1 |
| Bosh 2 | success | 0 sec | 3 | 31 ms | Stream open to all cluster nodes. | Bosh 2 |
| Bosh 3 | success | 0 sec | 3 | 73 ms | SASL authorization to all cluster nodes to different accounts. | Bosh 3 |
| Bosh 4 | success | 0 sec | 3 | 74 ms | SASL authorization to all cluster nodes to the same account 'tester'. | Bosh 4 |
| Bosh 5 | success | 0 sec | 3 | 117 ms | Message send within one node to self user. | Bosh 5 |
| Bosh 6 | success | 1 sec | 3 | 236 ms | Message send within one node from 'admin' to 'tester' and wait for a response. | Bosh 6 |
| Bosh 7 | success | 2 sec | 3 | 468 ms | Message send within 'shell2.tigase.org' node from 'admin' and from 'all-xmpp-test_1'to 'tester' and wait for a response. | Bosh 7 |
| Bosh 8 | success | 2 sec | 3 | 417 ms | Message send within 'test-i.tigase.org' node from 'admin' and from 'all-xmpp-test_1'to 'tester' and wait for a response. | Bosh 8 |
| Bosh 9 | success | 2 sec | 3 | 443 ms | Message send beetwen 3 nodes: from 'shell2.tigase.org', user 'admin' and from 'test-i.tigase.org', user 'all-xmpp-test_1' to user 'tester' on 'veloci.tigase.org' and wait for a response. | Bosh 9 |
| Bosh 10 | success | 1 sec | 3 | 264 ms | Message send beetwen 3 nodes: from 'test-i.tigase.org', user 'admin' and from 'veloci.tigase.org', user 'all-xmpp-test_1' to user 'tester' on 'shell2.tigase.org' and wait for a response. | Bosh 10 |
| Bosh 11 | success | 1 sec | 3 | 289 ms | Message send beetwen 3 nodes: from 'veloci.tigase.org', user 'admin' and from 'shell2.tigase.org', user 'all-xmpp-test_1' to user 'tester' on 'test-i.tigase.org' and wait for a response. | Bosh 11 |
| Bosh 12 | success | 0 sec | 2 | 186 ms | 2 user connections, each using a different resource on 'veloci.tigase.org' node. | Bosh 12 |
| Bosh 13 | success | 0 sec | 2 | 240 ms | 2 user connections, each using a different resource on 'shell2.tigase.org' node. | Bosh 13 |
| Bosh 14 | success | 0 sec | 2 | 209 ms | 2 user connections, each using a different resource on 'test-i.tigase.org' node. | Bosh 14 |
| Bosh 15 | success | 1 sec | 2 | 286 ms | 2 user connections, on node 'veloci.tigase.org' and 'shell2.tigase.org'. | Bosh 15 |
| Bosh 16 | success | 1 sec | 2 | 294 ms | 2 user connections, on node 'shell2.tigase.org' and 'test-i.tigase.org'. | Bosh 16 |
| Bosh 17 | success | 1 sec | 2 | 282 ms | 2 user connections, on node 'veloci.tigase.org' and 'test-i.tigase.org'. | Bosh 17 |
| Bosh 18 | success | 0 sec | 3 | 43 ms | XEP-0092 get-version - 3 user connections, each using a different node. | Bosh 18 |
| Bosh 19 | success | 0 sec | 3 | 163 ms | XEP-0039 Statistics Gathering - 3 user connections, each using a different node. | Bosh 19 |
| Bosh 20 | success | 0 sec | 3 | 124 ms | Test for feature-not-implemented error - 3 user connections, each using a different node. | Bosh 20 |
| Bosh 21 | success | 0 sec | 3 | 136 ms | XEP-0199: XMPP Ping - 3 user connections, each using a different node. | Bosh 21 |
| Bosh 22 | success | 0 sec | 3 | 137 ms | XEP-0030: XMPP Service Discovery - 3 user connections, each using a different node. | Bosh 22 |
| Prep 1 | success | 0 sec | 1 | 0 ms | Setup a user daemon wating for messages | Prep 1 |
| Multi 1 | success | 0 sec | 30 | 23 ms | Multi-thread test of server Version info on node 'veloci.tigase.org' | Multi 1 |
| Multi 2 | success | 3 sec | 30 | 131 ms | Multi-thread test of server Version info on node 'shell2.tigase.org' | Multi 2 |
| Multi 3 | success | 1 sec | 30 | 42 ms | Multi-thread test of server Version info on node 'test-i.tigase.org' | Multi 3 |
| Multi 4 | success | 0 sec | 30 | 30 ms | Multi-thread test of server Version info on all nodes: 'veloci.tigase.org', 'shell2.tigase.org' and 'test-i.tigase.org' | Multi 4 |
| Multi 5 | success | 2 sec | 30 | 84 ms | Multi-thread test of server Statistics info on node 'veloci.tigase.org' | Multi 5 |
| Multi 6 | success | 17 sec | 30 | 576 ms | Multi-thread test of server Statistics info on node 'shell2.tigase.org' | Multi 6 |
| Multi 7 | success | 7 sec | 30 | 240 ms | Multi-thread test of server Statistics info on node 'test-i.tigase.org' | Multi 7 |
| Multi 8 | success | 3 sec | 30 | 128 ms | Multi-thread test of server Statistics info on all nodes: 'veloci.tigase.org', 'shell2.tigase.org' and 'test-i.tigase.org' | Multi 8 |
| Multi 9 | success | 37 sec | 90 | 415 ms | Multi-thread test of server Statistics info. Each user makes 3 connection, each on a different node and different resource: 'veloci.tigase.org', 'shell2.tigase.org' and 'test-i.tigase.org' | Multi 9 |
| Multi 10 | success | 4 sec | 30 | 163 ms | Multi-thread test Roster management functions on node 'veloci.tigase.org' | Multi 10 |
| Multi 11 | success | 26 sec | 30 | 886 ms | Multi-thread test Roster management functions on node 'shell2.tigase.org' | Multi 11 |
| Multi 12 | success | 12 sec | 30 | 412 ms | Multi-thread test Roster management functions on node 'test-i.tigase.org' | Multi 12 |
| Multi 13 | success | 6 sec | 30 | 228 ms | Multi-thread test Roster management functions on all nodes: 'veloci.tigase.org', 'shell2.tigase.org' and 'test-i.tigase.org' | Multi 13 |
| Multi 14 | success | 9 sec | 30 | 331 ms | Multi-thread test privacy lists management on node 'veloci.tigase.org' | Multi 14 |
| Multi 15 | success | 41 sec | 30 | 1391 ms | Multi-thread test privacy lists management on node 'shell2.tigase.org' | Multi 15 |
| Multi 16 | success | 21 sec | 30 | 709 ms | Multi-thread test privacy lists management on node 'test-i.tigase.org' | Multi 16 |
| Multi 17 | success | 10 sec | 30 | 334 ms | Multi-thread test privacy lists management on all nodes: 'veloci.tigase.org', 'shell2.tigase.org' and 'test-i.tigase.org' | Multi 17 |
| Multi 18 | success | 2 sec | 30 | 77 ms | Multi-thread test of message send to daemon user on node 'veloci.tigase.org' | Multi 18 |
| Multi 19 | success | 12 sec | 30 | 414 ms | Multi-thread test of message send to daemon user on node 'shell2.tigase.org' | Multi 19 |
| Multi 20 | success | 29 sec | 30 | 973 ms | Multi-thread test of message send to daemon user on node 'test-i.tigase.org' | Multi 20 |
| Multi 21 | success | 4 sec | 30 | 141 ms | Multi-thread test of message send to daemon user on all nodes: 'veloci.tigase.org', 'shell2.tigase.org' and 'test-i.tigase.org' | Multi 21 |
| Multi 22 | success | 26 sec | 90 | 274 ms | Multi-thread test of message send to daemon user. Each user makes 3 connections to all cluster nodes using different resources: 'veloci.tigase.org', 'shell2.tigase.org' and 'test-i.tigase.org' | Multi 22 |
Test end time: Oct 21, 2008 12:46:40 AM
Trackback URL for this post:
- kobit's blog
- Add new comment
- 1261 reads






Recent comments
1 day 8 hours ago
1 day 13 hours ago
2 days 13 hours ago
3 days 2 hours ago
3 days 3 hours ago
2 weeks 5 days ago
2 weeks 5 days ago
3 weeks 2 days ago
3 weeks 2 days ago
7 weeks 4 days ago