Categories:
Audio (13)
Biotech (29)
Bytecode (36)
Database (77)
Framework (7)
Game (7)
General (507)
Graphics (53)
I/O (35)
IDE (2)
JAR Tools (101)
JavaBeans (21)
JDBC (121)
JDK (426)
JSP (20)
Logging (108)
Mail (58)
Messaging (8)
Network (84)
PDF (97)
Report (7)
Scripting (84)
Security (32)
Server (121)
Servlet (26)
SOAP (24)
Testing (54)
Web (15)
XML (309)
Collections:
Other Resources:
Apache ZooKeeper IT Source Code
Apache ZooKeeper is an open-source server which enables highly reliable distributed coordination.
Apache ZooKeeper IT Source Code files are provided in the source package file, apache-zookeeper-3.8.0.tar.gz.
You can download apache-zookeeper-3.8.0.tar.gz as described in the previous tutorial and go to the "zookeeper-it" sub-folder to view Apache ZooKeeper IT Source Code files.
You can also browse Apache ZooKeeper IT Source Code below:
✍: FYIcenter.com
⏎ org/apache/zookeeper/test/system/SimpleSysTest.java
/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.zookeeper.test.system; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooKeeper; import org.apache.zookeeper.KeeperException.ConnectionLossException; import org.apache.zookeeper.KeeperException.NoNodeException; import org.apache.zookeeper.Watcher.Event.KeeperState; import org.apache.zookeeper.ZooDefs.Ids; import org.apache.zookeeper.ZooKeeper.States; import org.apache.zookeeper.data.Stat; import org.junit.Assert; import org.junit.Test; import org.apache.zookeeper.common.Time; /** * This does a basic system test. It starts up an ensemble of servers and a set of clients. * It makes sure that all the clients come up. It kills off servers while making a change and * then ensures that all clients see the change. And then signals the clients to die and * watches them disappear. * */ public class SimpleSysTest extends BaseSysTest implements Watcher { int maxTries = 10; boolean connected; final private static Logger LOG = LoggerFactory.getLogger(SimpleSysTest.class); synchronized private boolean waitForConnect(ZooKeeper zk, long timeout) throws InterruptedException { connected = (zk.getState() == States.CONNECTED); long end = Time.currentElapsedTime() + timeout; while(!connected && end > Time.currentElapsedTime()) { wait(timeout); connected = (zk.getState() == States.CONNECTED); } return connected; } /** * This test checks the following: * 1) All clients connect successfully * 2) Half of the servers die (assuming odd number) and a write succeeds * 3) All servers are restarted and cluster stays alive * 4) Clients see a change by the server * 5) Clients' ephemeral nodes are cleaned up * * @throws Exception */ @Test public void testSimpleCase() throws Exception { configureServers(serverCount); configureClients(clientCount, SimpleClient.class, getHostPort()); Stat stat = new Stat(); startServers(); LOG.debug("Connecting to " + getHostPort()); ZooKeeper zk = new ZooKeeper(getHostPort(), 15000, this); waitForConnect(zk, 10000); zk.create("/simpleCase", "orig".getBytes(), Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT); startClients(); // Check that all clients connect properly for(int i = 0; i < getClientCount(); i++) { for(int j = 0; j < maxTries; j++) { try { byte b[] = zk.getData("/simpleCase/" + i, false, stat); Assert.assertEquals("orig", new String(b)); } catch(NoNodeException e) { if (j+1 == maxTries) { Assert.fail("Max tries exceeded on client " + i); } Thread.sleep(1000); } } } // Kill half the servers, make a change, restart the dead // servers, and then bounce the other servers one by one for(int i = 0; i < getServerCount(); i++) { stopServer(i); if (i+1 > getServerCount()/2) { startServer(i); } else if (i+1 == getServerCount()/2) { Assert.assertTrue("Connection didn't recover", waitForConnect(zk, 10000)); try { zk.setData("/simpleCase", "new".getBytes(), -1); } catch(ConnectionLossException e) { Assert.assertTrue("Connection didn't recover", waitForConnect(zk, 10000)); zk.setData("/simpleCase", "new".getBytes(), -1); } for(int j = 0; j < i; j++) { LOG.info("Starting server " + j); startServer(i); } } } Thread.sleep(100); // wait for things to stabilize Assert.assertTrue("Servers didn't bounce", waitForConnect(zk, 15000)); try { zk.getData("/simpleCase", false, stat); } catch(ConnectionLossException e) { Assert.assertTrue("Servers didn't bounce", waitForConnect(zk, 15000)); } // check that the change has propagated to everyone for(int i = 0; i < getClientCount(); i++) { for(int j = 0; j < maxTries; j++) { byte[] data = zk.getData("/simpleCase/" + i, false, stat); if (new String(data).equals("new")) { break; } if (j+1 == maxTries) { Assert.fail("max tries exceeded for " + i); } Thread.sleep(1000); } } // send out the kill signal zk.setData("/simpleCase", "die".getBytes(), -1); // watch for everyone to die for(int i = 0; i < getClientCount(); i++) { try { for(int j = 0; j < maxTries; j++) { zk.getData("/simpleCase/" + i, false, stat); if (j+1 == maxTries) { Assert.fail("max tries exceeded waiting for child " + i + " to die"); } Thread.sleep(200); } } catch(NoNodeException e) { // Great this is what we were hoping for! } } stopClients(); stopServers(); } public void process(WatchedEvent event) { if (event.getState() == KeeperState.SyncConnected) { synchronized(this) { connected = true; notifyAll(); } } else if (event.getState() == KeeperState.Disconnected) { synchronized(this) { connected = false; notifyAll(); } } } }
⏎ org/apache/zookeeper/test/system/SimpleSysTest.java
Or download all of them as a single archive file:
File name: zookeeper-it-3.8.0-fyi.zip File size: 30377 bytes Release date: 2022-02-25 Download
⇒ Download Apache ZooKeeper 3.7.0 Binary Package
⇐ Apache ZooKeeper Jute Source Code
2022-11-16, 939👍, 0💬
Popular Posts:
JDOM provides a solution for using XML from Java that is as simple as Java itself. There is no compe...
Oracle Business Intelligence (BI) Beans enables developers to productively build business intelligen...
What Is commons-logging-1.2.jar? commons-logging-1.2.jar is the JAR file for Apache Commons Logging ...
How to download and install JDK (Java Development Kit) 7? If you want to write Java applications, yo...
JDK 11 java.naming.jmod is the JMOD file for JDK 11 Naming module. JDK 11 Naming module compiled cla...