| To run the system test we need to create processing containers that we can |
| spawn tasks, called Instances, in. (how is that for a dangling preposition!?!) |
| Start up InstanceContainers first. Then run the system test. The system test |
| finds the InstanceContainers and directs them through ZooKeeper, so you are |
| going to need an instance of ZooKeeper running that they can all access. |
| The easiest way to do all of this is to use the zookeeper fat jar. |
| |
| Steps to run system test |
| ------------------------ |
| 1) build and transfer the fatjar from the `zookeeper-contrib/zookeeper-contrib-fatjar/target` |
| directory to all systems participating in the test |
| |
| Command to build fatjar without executing the tests: |
| |
| `mvn clean install -P fatjar -DskipTests` |
| |
| 2) run a zookeeper standalone instance (cluster is ok too) |
| |
| e.g. java -jar zookeeper-<version>-fatjar.jar server <zoo.cfg> |
| |
| Note: you must provide zoo.cfg, see sample in conf directory |
| |
| 3) on each host start the system test container |
| |
| e.g. java -jar zookeeper-<version>-fatjar.jar ic <name> <zkHostPort> /sysTest |
| |
| name : name of the test container - must be unique |
| typically it's a good idea to name after the host to aid debugging |
| |
| zkHostPort : the host:port of the server from step 2) |
| |
| 4) initiate the system test using the fatjar: |
| |
| java -jar build/contrib/fatjar/zookeeper-<version>-fatjar.jar systest org.apache.zookeeper.test.system.SimpleSysTest |
| |
| by default it will access the zk server started in 2) on localhost:2181 |
| |
| or you can specify a remote host:port using |
| -DsysTest.zkHostPort=<host>:<port>,<host>:<port>,... |
| |
| java -DsysTest.zkHostPort=hostA:2181 -jar build/contrib/fatjar/zookeeper-<version>-fatjar.jar systest org.apache.zookeeper.test.system.SimpleSysTest |
| |
| where hostA is running the zk server started in step 2) above |
| |
| InstanceContainers can also be used to run a the saturation benchmark. The |
| first two steps are the same as the system test. Step 3 is almost the same: |
| |
| 3) start the InstanceContainer on each host: |
| |
| e.g. java -jar zookeeper-<version>-fatjar.jar ic <name> <zkHostPort> <prefix> |
| |
| note prefix can be /sysTest or any other path. If you do use /sysTest, make |
| sure the system test isn't running when you run the benchmark. |
| |
| 4) run GenerateLoad using the following |
| |
| java -jar build/contrib/fatjar/zookeeper-<version>-fatjar.jar generateLoad <zkHostPort> <prefix> #servers #clients |
| |
| Once GenerateLoad is started, it will read commands from stdin. Usually |
| the only command you need to know is "percentage" which sets the percentage |
| of writes to use in the requests. Once a percentage is set, the benchmark |
| will start. "percentage 0" will cause only reads to be issued and |
| "percentage 100" will cause only writes to be issued. |