<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
<span class="sourceLineNo">009</span> *<a name="line.9"></a>
<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
<span class="sourceLineNo">011</span> *<a name="line.11"></a>
<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
<span class="sourceLineNo">017</span> */<a name="line.17"></a>
<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.zookeeper;<a name="line.18"></a>
<span class="sourceLineNo">019</span><a name="line.19"></a>
<span class="sourceLineNo">020</span>import static org.junit.Assert.assertEquals;<a name="line.20"></a>
<span class="sourceLineNo">021</span>import static org.junit.Assert.assertNotEquals;<a name="line.21"></a>
<span class="sourceLineNo">022</span>import static org.junit.Assert.assertTrue;<a name="line.22"></a>
<span class="sourceLineNo">023</span><a name="line.23"></a>
<span class="sourceLineNo">024</span>import java.util.ArrayList;<a name="line.24"></a>
<span class="sourceLineNo">025</span>import java.util.Arrays;<a name="line.25"></a>
<span class="sourceLineNo">026</span>import java.util.Collections;<a name="line.26"></a>
<span class="sourceLineNo">027</span>import java.util.LinkedList;<a name="line.27"></a>
<span class="sourceLineNo">028</span>import java.util.List;<a name="line.28"></a>
<span class="sourceLineNo">029</span><a name="line.29"></a>
<span class="sourceLineNo">030</span>import org.apache.hadoop.conf.Configuration;<a name="line.30"></a>
<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.Abortable;<a name="line.31"></a>
<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.32"></a>
<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseZKTestingUtil;<a name="line.33"></a>
<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.34"></a>
<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.testclassification.ZKTests;<a name="line.35"></a>
<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.36"></a>
<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil.ZKUtilOp;<a name="line.37"></a>
<span class="sourceLineNo">038</span>import org.apache.zookeeper.CreateMode;<a name="line.38"></a>
<span class="sourceLineNo">039</span>import org.apache.zookeeper.KeeperException;<a name="line.39"></a>
<span class="sourceLineNo">040</span>import org.apache.zookeeper.Op;<a name="line.40"></a>
<span class="sourceLineNo">041</span>import org.apache.zookeeper.ZooDefs.Ids;<a name="line.41"></a>
<span class="sourceLineNo">042</span>import org.junit.AfterClass;<a name="line.42"></a>
<span class="sourceLineNo">043</span>import org.junit.BeforeClass;<a name="line.43"></a>
<span class="sourceLineNo">044</span>import org.junit.ClassRule;<a name="line.44"></a>
<span class="sourceLineNo">045</span>import org.junit.Test;<a name="line.45"></a>
<span class="sourceLineNo">046</span>import org.junit.experimental.categories.Category;<a name="line.46"></a>
<span class="sourceLineNo">047</span>import org.slf4j.Logger;<a name="line.47"></a>
<span class="sourceLineNo">048</span>import org.slf4j.LoggerFactory;<a name="line.48"></a>
<span class="sourceLineNo">049</span><a name="line.49"></a>
<span class="sourceLineNo">050</span>/**<a name="line.50"></a>
<span class="sourceLineNo">051</span> * Test ZooKeeper multi-update functionality.<a name="line.51"></a>
<span class="sourceLineNo">052</span> */<a name="line.52"></a>
<span class="sourceLineNo">053</span>@Category({ ZKTests.class, MediumTests.class })<a name="line.53"></a>
<span class="sourceLineNo">054</span>public class TestZKMulti {<a name="line.54"></a>
<span class="sourceLineNo">055</span>  @ClassRule<a name="line.55"></a>
<span class="sourceLineNo">056</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.56"></a>
<span class="sourceLineNo">057</span>      HBaseClassTestRule.forClass(TestZKMulti.class);<a name="line.57"></a>
<span class="sourceLineNo">058</span><a name="line.58"></a>
<span class="sourceLineNo">059</span>  private static final Logger LOG = LoggerFactory.getLogger(TestZKMulti.class);<a name="line.59"></a>
<span class="sourceLineNo">060</span>  private final static HBaseZKTestingUtil TEST_UTIL = new HBaseZKTestingUtil();<a name="line.60"></a>
<span class="sourceLineNo">061</span>  private static ZKWatcher zkw = null;<a name="line.61"></a>
<span class="sourceLineNo">062</span><a name="line.62"></a>
<span class="sourceLineNo">063</span>  private static class ZKMultiAbortable implements Abortable {<a name="line.63"></a>
<span class="sourceLineNo">064</span>    @Override<a name="line.64"></a>
<span class="sourceLineNo">065</span>    public void abort(String why, Throwable e) {<a name="line.65"></a>
<span class="sourceLineNo">066</span>      LOG.info(why, e);<a name="line.66"></a>
<span class="sourceLineNo">067</span>    }<a name="line.67"></a>
<span class="sourceLineNo">068</span><a name="line.68"></a>
<span class="sourceLineNo">069</span>    @Override<a name="line.69"></a>
<span class="sourceLineNo">070</span>    public boolean isAborted() {<a name="line.70"></a>
<span class="sourceLineNo">071</span>      return false;<a name="line.71"></a>
<span class="sourceLineNo">072</span>    }<a name="line.72"></a>
<span class="sourceLineNo">073</span>  }<a name="line.73"></a>
<span class="sourceLineNo">074</span><a name="line.74"></a>
<span class="sourceLineNo">075</span>  @BeforeClass<a name="line.75"></a>
<span class="sourceLineNo">076</span>  public static void setUpBeforeClass() throws Exception {<a name="line.76"></a>
<span class="sourceLineNo">077</span>    TEST_UTIL.startMiniZKCluster();<a name="line.77"></a>
<span class="sourceLineNo">078</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.78"></a>
<span class="sourceLineNo">079</span>    Abortable abortable = new ZKMultiAbortable();<a name="line.79"></a>
<span class="sourceLineNo">080</span>    zkw = new ZKWatcher(conf,<a name="line.80"></a>
<span class="sourceLineNo">081</span>      "TestZKMulti", abortable, true);<a name="line.81"></a>
<span class="sourceLineNo">082</span>  }<a name="line.82"></a>
<span class="sourceLineNo">083</span><a name="line.83"></a>
<span class="sourceLineNo">084</span>  @AfterClass<a name="line.84"></a>
<span class="sourceLineNo">085</span>  public static void tearDownAfterClass() throws Exception {<a name="line.85"></a>
<span class="sourceLineNo">086</span>    TEST_UTIL.shutdownMiniZKCluster();<a name="line.86"></a>
<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
<span class="sourceLineNo">088</span><a name="line.88"></a>
<span class="sourceLineNo">089</span>  @Test<a name="line.89"></a>
<span class="sourceLineNo">090</span>  public void testSimpleMulti() throws Exception {<a name="line.90"></a>
<span class="sourceLineNo">091</span>    // null multi<a name="line.91"></a>
<span class="sourceLineNo">092</span>    ZKUtil.multiOrSequential(zkw, null, false);<a name="line.92"></a>
<span class="sourceLineNo">093</span><a name="line.93"></a>
<span class="sourceLineNo">094</span>    // empty multi<a name="line.94"></a>
<span class="sourceLineNo">095</span>    ZKUtil.multiOrSequential(zkw, new LinkedList&lt;&gt;(), false);<a name="line.95"></a>
<span class="sourceLineNo">096</span><a name="line.96"></a>
<span class="sourceLineNo">097</span>    // single create<a name="line.97"></a>
<span class="sourceLineNo">098</span>    String path = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "testSimpleMulti");<a name="line.98"></a>
<span class="sourceLineNo">099</span>    LinkedList&lt;ZKUtilOp&gt; singleCreate = new LinkedList&lt;&gt;();<a name="line.99"></a>
<span class="sourceLineNo">100</span>    singleCreate.add(ZKUtilOp.createAndFailSilent(path, new byte[0]));<a name="line.100"></a>
<span class="sourceLineNo">101</span>    ZKUtil.multiOrSequential(zkw, singleCreate, false);<a name="line.101"></a>
<span class="sourceLineNo">102</span>    assertTrue(ZKUtil.checkExists(zkw, path) != -1);<a name="line.102"></a>
<span class="sourceLineNo">103</span><a name="line.103"></a>
<span class="sourceLineNo">104</span>    // single setdata<a name="line.104"></a>
<span class="sourceLineNo">105</span>    LinkedList&lt;ZKUtilOp&gt; singleSetData = new LinkedList&lt;&gt;();<a name="line.105"></a>
<span class="sourceLineNo">106</span>    byte [] data = Bytes.toBytes("foobar");<a name="line.106"></a>
<span class="sourceLineNo">107</span>    singleSetData.add(ZKUtilOp.setData(path, data));<a name="line.107"></a>
<span class="sourceLineNo">108</span>    ZKUtil.multiOrSequential(zkw, singleSetData, false);<a name="line.108"></a>
<span class="sourceLineNo">109</span>    assertTrue(Bytes.equals(ZKUtil.getData(zkw, path), data));<a name="line.109"></a>
<span class="sourceLineNo">110</span><a name="line.110"></a>
<span class="sourceLineNo">111</span>    // single delete<a name="line.111"></a>
<span class="sourceLineNo">112</span>    LinkedList&lt;ZKUtilOp&gt; singleDelete = new LinkedList&lt;&gt;();<a name="line.112"></a>
<span class="sourceLineNo">113</span>    singleDelete.add(ZKUtilOp.deleteNodeFailSilent(path));<a name="line.113"></a>
<span class="sourceLineNo">114</span>    ZKUtil.multiOrSequential(zkw, singleDelete, false);<a name="line.114"></a>
<span class="sourceLineNo">115</span>    assertEquals(-1, ZKUtil.checkExists(zkw, path));<a name="line.115"></a>
<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
<span class="sourceLineNo">117</span><a name="line.117"></a>
<span class="sourceLineNo">118</span>  @Test<a name="line.118"></a>
<span class="sourceLineNo">119</span>  public void testComplexMulti() throws Exception {<a name="line.119"></a>
<span class="sourceLineNo">120</span>    String path1 = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "testComplexMulti1");<a name="line.120"></a>
<span class="sourceLineNo">121</span>    String path2 = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "testComplexMulti2");<a name="line.121"></a>
<span class="sourceLineNo">122</span>    String path3 = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "testComplexMulti3");<a name="line.122"></a>
<span class="sourceLineNo">123</span>    String path4 = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "testComplexMulti4");<a name="line.123"></a>
<span class="sourceLineNo">124</span>    String path5 = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "testComplexMulti5");<a name="line.124"></a>
<span class="sourceLineNo">125</span>    String path6 = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "testComplexMulti6");<a name="line.125"></a>
<span class="sourceLineNo">126</span>    // create 4 nodes that we'll setData on or delete later<a name="line.126"></a>
<span class="sourceLineNo">127</span>    LinkedList&lt;ZKUtilOp&gt; create4Nodes = new LinkedList&lt;&gt;();<a name="line.127"></a>
<span class="sourceLineNo">128</span>    create4Nodes.add(ZKUtilOp.createAndFailSilent(path1, Bytes.toBytes(path1)));<a name="line.128"></a>
<span class="sourceLineNo">129</span>    create4Nodes.add(ZKUtilOp.createAndFailSilent(path2, Bytes.toBytes(path2)));<a name="line.129"></a>
<span class="sourceLineNo">130</span>    create4Nodes.add(ZKUtilOp.createAndFailSilent(path3, Bytes.toBytes(path3)));<a name="line.130"></a>
<span class="sourceLineNo">131</span>    create4Nodes.add(ZKUtilOp.createAndFailSilent(path4, Bytes.toBytes(path4)));<a name="line.131"></a>
<span class="sourceLineNo">132</span>    ZKUtil.multiOrSequential(zkw, create4Nodes, false);<a name="line.132"></a>
<span class="sourceLineNo">133</span>    assertTrue(Bytes.equals(ZKUtil.getData(zkw, path1), Bytes.toBytes(path1)));<a name="line.133"></a>
<span class="sourceLineNo">134</span>    assertTrue(Bytes.equals(ZKUtil.getData(zkw, path2), Bytes.toBytes(path2)));<a name="line.134"></a>
<span class="sourceLineNo">135</span>    assertTrue(Bytes.equals(ZKUtil.getData(zkw, path3), Bytes.toBytes(path3)));<a name="line.135"></a>
<span class="sourceLineNo">136</span>    assertTrue(Bytes.equals(ZKUtil.getData(zkw, path4), Bytes.toBytes(path4)));<a name="line.136"></a>
<span class="sourceLineNo">137</span><a name="line.137"></a>
<span class="sourceLineNo">138</span>    // do multiple of each operation (setData, delete, create)<a name="line.138"></a>
<span class="sourceLineNo">139</span>    LinkedList&lt;ZKUtilOp&gt; ops = new LinkedList&lt;&gt;();<a name="line.139"></a>
<span class="sourceLineNo">140</span>    // setData<a name="line.140"></a>
<span class="sourceLineNo">141</span>    ops.add(ZKUtilOp.setData(path1, Bytes.add(Bytes.toBytes(path1), Bytes.toBytes(path1))));<a name="line.141"></a>
<span class="sourceLineNo">142</span>    ops.add(ZKUtilOp.setData(path2, Bytes.add(Bytes.toBytes(path2), Bytes.toBytes(path2))));<a name="line.142"></a>
<span class="sourceLineNo">143</span>    // delete<a name="line.143"></a>
<span class="sourceLineNo">144</span>    ops.add(ZKUtilOp.deleteNodeFailSilent(path3));<a name="line.144"></a>
<span class="sourceLineNo">145</span>    ops.add(ZKUtilOp.deleteNodeFailSilent(path4));<a name="line.145"></a>
<span class="sourceLineNo">146</span>    // create<a name="line.146"></a>
<span class="sourceLineNo">147</span>    ops.add(ZKUtilOp.createAndFailSilent(path5, Bytes.toBytes(path5)));<a name="line.147"></a>
<span class="sourceLineNo">148</span>    ops.add(ZKUtilOp.createAndFailSilent(path6, Bytes.toBytes(path6)));<a name="line.148"></a>
<span class="sourceLineNo">149</span>    ZKUtil.multiOrSequential(zkw, ops, false);<a name="line.149"></a>
<span class="sourceLineNo">150</span>    assertTrue(Bytes.equals(ZKUtil.getData(zkw, path1),<a name="line.150"></a>
<span class="sourceLineNo">151</span>      Bytes.add(Bytes.toBytes(path1), Bytes.toBytes(path1))));<a name="line.151"></a>
<span class="sourceLineNo">152</span>    assertTrue(Bytes.equals(ZKUtil.getData(zkw, path2),<a name="line.152"></a>
<span class="sourceLineNo">153</span>      Bytes.add(Bytes.toBytes(path2), Bytes.toBytes(path2))));<a name="line.153"></a>
<span class="sourceLineNo">154</span>    assertEquals(-1, ZKUtil.checkExists(zkw, path3));<a name="line.154"></a>
<span class="sourceLineNo">155</span>    assertEquals(-1, ZKUtil.checkExists(zkw, path4));<a name="line.155"></a>
<span class="sourceLineNo">156</span>    assertTrue(Bytes.equals(ZKUtil.getData(zkw, path5), Bytes.toBytes(path5)));<a name="line.156"></a>
<span class="sourceLineNo">157</span>    assertTrue(Bytes.equals(ZKUtil.getData(zkw, path6), Bytes.toBytes(path6)));<a name="line.157"></a>
<span class="sourceLineNo">158</span>  }<a name="line.158"></a>
<span class="sourceLineNo">159</span><a name="line.159"></a>
<span class="sourceLineNo">160</span>  @Test<a name="line.160"></a>
<span class="sourceLineNo">161</span>  public void testSingleFailure() throws Exception {<a name="line.161"></a>
<span class="sourceLineNo">162</span>    // try to delete a node that doesn't exist<a name="line.162"></a>
<span class="sourceLineNo">163</span>    boolean caughtNoNode = false;<a name="line.163"></a>
<span class="sourceLineNo">164</span>    String path = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "testSingleFailureZ");<a name="line.164"></a>
<span class="sourceLineNo">165</span>    LinkedList&lt;ZKUtilOp&gt; ops = new LinkedList&lt;&gt;();<a name="line.165"></a>
<span class="sourceLineNo">166</span>    ops.add(ZKUtilOp.deleteNodeFailSilent(path));<a name="line.166"></a>
<span class="sourceLineNo">167</span>    try {<a name="line.167"></a>
<span class="sourceLineNo">168</span>      ZKUtil.multiOrSequential(zkw, ops, false);<a name="line.168"></a>
<span class="sourceLineNo">169</span>    } catch (KeeperException.NoNodeException nne) {<a name="line.169"></a>
<span class="sourceLineNo">170</span>      caughtNoNode = true;<a name="line.170"></a>
<span class="sourceLineNo">171</span>    }<a name="line.171"></a>
<span class="sourceLineNo">172</span>    assertTrue(caughtNoNode);<a name="line.172"></a>
<span class="sourceLineNo">173</span><a name="line.173"></a>
<span class="sourceLineNo">174</span>    // try to setData on a node that doesn't exist<a name="line.174"></a>
<span class="sourceLineNo">175</span>    caughtNoNode = false;<a name="line.175"></a>
<span class="sourceLineNo">176</span>    ops = new LinkedList&lt;&gt;();<a name="line.176"></a>
<span class="sourceLineNo">177</span>    ops.add(ZKUtilOp.setData(path, Bytes.toBytes(path)));<a name="line.177"></a>
<span class="sourceLineNo">178</span>    try {<a name="line.178"></a>
<span class="sourceLineNo">179</span>      ZKUtil.multiOrSequential(zkw, ops, false);<a name="line.179"></a>
<span class="sourceLineNo">180</span>    } catch (KeeperException.NoNodeException nne) {<a name="line.180"></a>
<span class="sourceLineNo">181</span>      caughtNoNode = true;<a name="line.181"></a>
<span class="sourceLineNo">182</span>    }<a name="line.182"></a>
<span class="sourceLineNo">183</span>    assertTrue(caughtNoNode);<a name="line.183"></a>
<span class="sourceLineNo">184</span><a name="line.184"></a>
<span class="sourceLineNo">185</span>    // try to create on a node that already exists<a name="line.185"></a>
<span class="sourceLineNo">186</span>    boolean caughtNodeExists = false;<a name="line.186"></a>
<span class="sourceLineNo">187</span>    ops = new LinkedList&lt;&gt;();<a name="line.187"></a>
<span class="sourceLineNo">188</span>    ops.add(ZKUtilOp.createAndFailSilent(path, Bytes.toBytes(path)));<a name="line.188"></a>
<span class="sourceLineNo">189</span>    ZKUtil.multiOrSequential(zkw, ops, false);<a name="line.189"></a>
<span class="sourceLineNo">190</span>    try {<a name="line.190"></a>
<span class="sourceLineNo">191</span>      ZKUtil.multiOrSequential(zkw, ops, false);<a name="line.191"></a>
<span class="sourceLineNo">192</span>    } catch (KeeperException.NodeExistsException nee) {<a name="line.192"></a>
<span class="sourceLineNo">193</span>      caughtNodeExists = true;<a name="line.193"></a>
<span class="sourceLineNo">194</span>    }<a name="line.194"></a>
<span class="sourceLineNo">195</span>    assertTrue(caughtNodeExists);<a name="line.195"></a>
<span class="sourceLineNo">196</span>  }<a name="line.196"></a>
<span class="sourceLineNo">197</span><a name="line.197"></a>
<span class="sourceLineNo">198</span>  @Test<a name="line.198"></a>
<span class="sourceLineNo">199</span>  public void testSingleFailureInMulti() throws Exception {<a name="line.199"></a>
<span class="sourceLineNo">200</span>    // try a multi where all but one operation succeeds<a name="line.200"></a>
<span class="sourceLineNo">201</span>    String pathA = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "testSingleFailureInMultiA");<a name="line.201"></a>
<span class="sourceLineNo">202</span>    String pathB = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "testSingleFailureInMultiB");<a name="line.202"></a>
<span class="sourceLineNo">203</span>    String pathC = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "testSingleFailureInMultiC");<a name="line.203"></a>
<span class="sourceLineNo">204</span>    LinkedList&lt;ZKUtilOp&gt; ops = new LinkedList&lt;&gt;();<a name="line.204"></a>
<span class="sourceLineNo">205</span>    ops.add(ZKUtilOp.createAndFailSilent(pathA, Bytes.toBytes(pathA)));<a name="line.205"></a>
<span class="sourceLineNo">206</span>    ops.add(ZKUtilOp.createAndFailSilent(pathB, Bytes.toBytes(pathB)));<a name="line.206"></a>
<span class="sourceLineNo">207</span>    ops.add(ZKUtilOp.deleteNodeFailSilent(pathC));<a name="line.207"></a>
<span class="sourceLineNo">208</span>    boolean caughtNoNode = false;<a name="line.208"></a>
<span class="sourceLineNo">209</span>    try {<a name="line.209"></a>
<span class="sourceLineNo">210</span>      ZKUtil.multiOrSequential(zkw, ops, false);<a name="line.210"></a>
<span class="sourceLineNo">211</span>    } catch (KeeperException.NoNodeException nne) {<a name="line.211"></a>
<span class="sourceLineNo">212</span>      caughtNoNode = true;<a name="line.212"></a>
<span class="sourceLineNo">213</span>    }<a name="line.213"></a>
<span class="sourceLineNo">214</span>    assertTrue(caughtNoNode);<a name="line.214"></a>
<span class="sourceLineNo">215</span>    // assert that none of the operations succeeded<a name="line.215"></a>
<span class="sourceLineNo">216</span>    assertEquals(-1, ZKUtil.checkExists(zkw, pathA));<a name="line.216"></a>
<span class="sourceLineNo">217</span>    assertEquals(-1, ZKUtil.checkExists(zkw, pathB));<a name="line.217"></a>
<span class="sourceLineNo">218</span>    assertEquals(-1, ZKUtil.checkExists(zkw, pathC));<a name="line.218"></a>
<span class="sourceLineNo">219</span>  }<a name="line.219"></a>
<span class="sourceLineNo">220</span><a name="line.220"></a>
<span class="sourceLineNo">221</span>  @Test<a name="line.221"></a>
<span class="sourceLineNo">222</span>  public void testMultiFailure() throws Exception {<a name="line.222"></a>
<span class="sourceLineNo">223</span>    String pathX = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "testMultiFailureX");<a name="line.223"></a>
<span class="sourceLineNo">224</span>    String pathY = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "testMultiFailureY");<a name="line.224"></a>
<span class="sourceLineNo">225</span>    String pathZ = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "testMultiFailureZ");<a name="line.225"></a>
<span class="sourceLineNo">226</span>    // create X that we will use to fail create later<a name="line.226"></a>
<span class="sourceLineNo">227</span>    LinkedList&lt;ZKUtilOp&gt; ops = new LinkedList&lt;&gt;();<a name="line.227"></a>
<span class="sourceLineNo">228</span>    ops.add(ZKUtilOp.createAndFailSilent(pathX, Bytes.toBytes(pathX)));<a name="line.228"></a>
<span class="sourceLineNo">229</span>    ZKUtil.multiOrSequential(zkw, ops, false);<a name="line.229"></a>
<span class="sourceLineNo">230</span><a name="line.230"></a>
<span class="sourceLineNo">231</span>    // fail one of each create ,setData, delete<a name="line.231"></a>
<span class="sourceLineNo">232</span>    String pathV = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "testMultiFailureV");<a name="line.232"></a>
<span class="sourceLineNo">233</span>    String pathW = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "testMultiFailureW");<a name="line.233"></a>
<span class="sourceLineNo">234</span>    ops = new LinkedList&lt;&gt;();<a name="line.234"></a>
<span class="sourceLineNo">235</span>    ops.add(ZKUtilOp.createAndFailSilent(pathX, Bytes.toBytes(pathX))); // fail  -- already exists<a name="line.235"></a>
<span class="sourceLineNo">236</span>    ops.add(ZKUtilOp.setData(pathY, Bytes.toBytes(pathY))); // fail -- doesn't exist<a name="line.236"></a>
<span class="sourceLineNo">237</span>    ops.add(ZKUtilOp.deleteNodeFailSilent(pathZ)); // fail -- doesn't exist<a name="line.237"></a>
<span class="sourceLineNo">238</span>    ops.add(ZKUtilOp.createAndFailSilent(pathX, Bytes.toBytes(pathV))); // pass<a name="line.238"></a>
<span class="sourceLineNo">239</span>    ops.add(ZKUtilOp.createAndFailSilent(pathX, Bytes.toBytes(pathW))); // pass<a name="line.239"></a>
<span class="sourceLineNo">240</span>    boolean caughtNodeExists = false;<a name="line.240"></a>
<span class="sourceLineNo">241</span>    try {<a name="line.241"></a>
<span class="sourceLineNo">242</span>      ZKUtil.multiOrSequential(zkw, ops, false);<a name="line.242"></a>
<span class="sourceLineNo">243</span>    } catch (KeeperException.NodeExistsException nee) {<a name="line.243"></a>
<span class="sourceLineNo">244</span>      // check first operation that fails throws exception<a name="line.244"></a>
<span class="sourceLineNo">245</span>      caughtNodeExists = true;<a name="line.245"></a>
<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
<span class="sourceLineNo">247</span>    assertTrue(caughtNodeExists);<a name="line.247"></a>
<span class="sourceLineNo">248</span>    // check that no modifications were made<a name="line.248"></a>
<span class="sourceLineNo">249</span>    assertNotEquals(-1, ZKUtil.checkExists(zkw, pathX));<a name="line.249"></a>
<span class="sourceLineNo">250</span>    assertEquals(-1, ZKUtil.checkExists(zkw, pathY));<a name="line.250"></a>
<span class="sourceLineNo">251</span>    assertEquals(-1, ZKUtil.checkExists(zkw, pathZ));<a name="line.251"></a>
<span class="sourceLineNo">252</span>    assertEquals(-1, ZKUtil.checkExists(zkw, pathW));<a name="line.252"></a>
<span class="sourceLineNo">253</span>    assertEquals(-1, ZKUtil.checkExists(zkw, pathV));<a name="line.253"></a>
<span class="sourceLineNo">254</span><a name="line.254"></a>
<span class="sourceLineNo">255</span>    // test that with multiple failures, throws an exception corresponding to first failure in list<a name="line.255"></a>
<span class="sourceLineNo">256</span>    ops = new LinkedList&lt;&gt;();<a name="line.256"></a>
<span class="sourceLineNo">257</span>    ops.add(ZKUtilOp.setData(pathY, Bytes.toBytes(pathY))); // fail -- doesn't exist<a name="line.257"></a>
<span class="sourceLineNo">258</span>    ops.add(ZKUtilOp.createAndFailSilent(pathX, Bytes.toBytes(pathX))); // fail -- exists<a name="line.258"></a>
<span class="sourceLineNo">259</span>    boolean caughtNoNode = false;<a name="line.259"></a>
<span class="sourceLineNo">260</span>    try {<a name="line.260"></a>
<span class="sourceLineNo">261</span>      ZKUtil.multiOrSequential(zkw, ops, false);<a name="line.261"></a>
<span class="sourceLineNo">262</span>    } catch (KeeperException.NoNodeException nne) {<a name="line.262"></a>
<span class="sourceLineNo">263</span>      // check first operation that fails throws exception<a name="line.263"></a>
<span class="sourceLineNo">264</span>      caughtNoNode = true;<a name="line.264"></a>
<span class="sourceLineNo">265</span>    }<a name="line.265"></a>
<span class="sourceLineNo">266</span>    assertTrue(caughtNoNode);<a name="line.266"></a>
<span class="sourceLineNo">267</span>    // check that no modifications were made<a name="line.267"></a>
<span class="sourceLineNo">268</span>    assertNotEquals(-1, ZKUtil.checkExists(zkw, pathX));<a name="line.268"></a>
<span class="sourceLineNo">269</span>    assertEquals(-1, ZKUtil.checkExists(zkw, pathY));<a name="line.269"></a>
<span class="sourceLineNo">270</span>    assertEquals(-1, ZKUtil.checkExists(zkw, pathZ));<a name="line.270"></a>
<span class="sourceLineNo">271</span>    assertEquals(-1, ZKUtil.checkExists(zkw, pathW));<a name="line.271"></a>
<span class="sourceLineNo">272</span>    assertEquals(-1, ZKUtil.checkExists(zkw, pathV));<a name="line.272"></a>
<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
<span class="sourceLineNo">274</span><a name="line.274"></a>
<span class="sourceLineNo">275</span>  @Test<a name="line.275"></a>
<span class="sourceLineNo">276</span>  public void testRunSequentialOnMultiFailure() throws Exception {<a name="line.276"></a>
<span class="sourceLineNo">277</span>    String path1 = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "runSequential1");<a name="line.277"></a>
<span class="sourceLineNo">278</span>    String path2 = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "runSequential2");<a name="line.278"></a>
<span class="sourceLineNo">279</span>    String path3 = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "runSequential3");<a name="line.279"></a>
<span class="sourceLineNo">280</span>    String path4 = ZNodePaths.joinZNode(zkw.getZNodePaths().baseZNode, "runSequential4");<a name="line.280"></a>
<span class="sourceLineNo">281</span><a name="line.281"></a>
<span class="sourceLineNo">282</span>    // create some nodes that we will use later<a name="line.282"></a>
<span class="sourceLineNo">283</span>    LinkedList&lt;ZKUtilOp&gt; ops = new LinkedList&lt;&gt;();<a name="line.283"></a>
<span class="sourceLineNo">284</span>    ops.add(ZKUtilOp.createAndFailSilent(path1, Bytes.toBytes(path1)));<a name="line.284"></a>
<span class="sourceLineNo">285</span>    ops.add(ZKUtilOp.createAndFailSilent(path2, Bytes.toBytes(path2)));<a name="line.285"></a>
<span class="sourceLineNo">286</span>    ZKUtil.multiOrSequential(zkw, ops, false);<a name="line.286"></a>
<span class="sourceLineNo">287</span><a name="line.287"></a>
<span class="sourceLineNo">288</span>    // test that, even with operations that fail, the ones that would pass will pass<a name="line.288"></a>
<span class="sourceLineNo">289</span>    // with runSequentialOnMultiFailure<a name="line.289"></a>
<span class="sourceLineNo">290</span>    ops = new LinkedList&lt;&gt;();<a name="line.290"></a>
<span class="sourceLineNo">291</span>    ops.add(ZKUtilOp.setData(path1, Bytes.add(Bytes.toBytes(path1), Bytes.toBytes(path1)))); // pass<a name="line.291"></a>
<span class="sourceLineNo">292</span>    ops.add(ZKUtilOp.deleteNodeFailSilent(path2)); // pass<a name="line.292"></a>
<span class="sourceLineNo">293</span>    ops.add(ZKUtilOp.deleteNodeFailSilent(path3)); // fail -- node doesn't exist<a name="line.293"></a>
<span class="sourceLineNo">294</span>    ops.add(ZKUtilOp.createAndFailSilent(path4,<a name="line.294"></a>
<span class="sourceLineNo">295</span>      Bytes.add(Bytes.toBytes(path4), Bytes.toBytes(path4)))); // pass<a name="line.295"></a>
<span class="sourceLineNo">296</span>    ZKUtil.multiOrSequential(zkw, ops, true);<a name="line.296"></a>
<span class="sourceLineNo">297</span>    assertTrue(Bytes.equals(ZKUtil.getData(zkw, path1),<a name="line.297"></a>
<span class="sourceLineNo">298</span>      Bytes.add(Bytes.toBytes(path1), Bytes.toBytes(path1))));<a name="line.298"></a>
<span class="sourceLineNo">299</span>    assertEquals(-1, ZKUtil.checkExists(zkw, path2));<a name="line.299"></a>
<span class="sourceLineNo">300</span>    assertEquals(-1, ZKUtil.checkExists(zkw, path3));<a name="line.300"></a>
<span class="sourceLineNo">301</span>    assertNotEquals(-1, ZKUtil.checkExists(zkw, path4));<a name="line.301"></a>
<span class="sourceLineNo">302</span>  }<a name="line.302"></a>
<span class="sourceLineNo">303</span><a name="line.303"></a>
<span class="sourceLineNo">304</span>  /**<a name="line.304"></a>
<span class="sourceLineNo">305</span>   * Verifies that for the given root node, it should delete all the child nodes<a name="line.305"></a>
<span class="sourceLineNo">306</span>   * recursively using multi-update api.<a name="line.306"></a>
<span class="sourceLineNo">307</span>   */<a name="line.307"></a>
<span class="sourceLineNo">308</span>  @Test<a name="line.308"></a>
<span class="sourceLineNo">309</span>  public void testdeleteChildrenRecursivelyMulti() throws Exception {<a name="line.309"></a>
<span class="sourceLineNo">310</span>    String parentZNode = "/testRootMulti";<a name="line.310"></a>
<span class="sourceLineNo">311</span>    createZNodeTree(parentZNode);<a name="line.311"></a>
<span class="sourceLineNo">312</span><a name="line.312"></a>
<span class="sourceLineNo">313</span>    ZKUtil.deleteChildrenRecursivelyMultiOrSequential(zkw, true, parentZNode);<a name="line.313"></a>
<span class="sourceLineNo">314</span><a name="line.314"></a>
<span class="sourceLineNo">315</span>    assertTrue("Wrongly deleted parent znode!",<a name="line.315"></a>
<span class="sourceLineNo">316</span>        ZKUtil.checkExists(zkw, parentZNode) &gt; -1);<a name="line.316"></a>
<span class="sourceLineNo">317</span>    List&lt;String&gt; children = zkw.getRecoverableZooKeeper().getChildren(<a name="line.317"></a>
<span class="sourceLineNo">318</span>        parentZNode, false);<a name="line.318"></a>
<span class="sourceLineNo">319</span>    assertEquals("Failed to delete child znodes!", 0, children.size());<a name="line.319"></a>
<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
<span class="sourceLineNo">321</span><a name="line.321"></a>
<span class="sourceLineNo">322</span>  /**<a name="line.322"></a>
<span class="sourceLineNo">323</span>   * Verifies that for the given root node, it should delete all the nodes recursively using<a name="line.323"></a>
<span class="sourceLineNo">324</span>   * multi-update api.<a name="line.324"></a>
<span class="sourceLineNo">325</span>   */<a name="line.325"></a>
<span class="sourceLineNo">326</span>  @Test<a name="line.326"></a>
<span class="sourceLineNo">327</span>  public void testDeleteNodeRecursivelyMulti() throws Exception {<a name="line.327"></a>
<span class="sourceLineNo">328</span>    String parentZNode = "/testdeleteNodeRecursivelyMulti";<a name="line.328"></a>
<span class="sourceLineNo">329</span>    createZNodeTree(parentZNode);<a name="line.329"></a>
<span class="sourceLineNo">330</span><a name="line.330"></a>
<span class="sourceLineNo">331</span>    ZKUtil.deleteNodeRecursively(zkw, parentZNode);<a name="line.331"></a>
<span class="sourceLineNo">332</span>    assertEquals("Parent znode should be deleted.", -1, ZKUtil.checkExists(zkw, parentZNode));<a name="line.332"></a>
<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
<span class="sourceLineNo">334</span><a name="line.334"></a>
<span class="sourceLineNo">335</span>  @Test<a name="line.335"></a>
<span class="sourceLineNo">336</span>  public void testDeleteNodeRecursivelyMultiOrSequential() throws Exception {<a name="line.336"></a>
<span class="sourceLineNo">337</span>    String parentZNode1 = "/testdeleteNode1";<a name="line.337"></a>
<span class="sourceLineNo">338</span>    String parentZNode2 = "/testdeleteNode2";<a name="line.338"></a>
<span class="sourceLineNo">339</span>    String parentZNode3 = "/testdeleteNode3";<a name="line.339"></a>
<span class="sourceLineNo">340</span>    createZNodeTree(parentZNode1);<a name="line.340"></a>
<span class="sourceLineNo">341</span>    createZNodeTree(parentZNode2);<a name="line.341"></a>
<span class="sourceLineNo">342</span>    createZNodeTree(parentZNode3);<a name="line.342"></a>
<span class="sourceLineNo">343</span><a name="line.343"></a>
<span class="sourceLineNo">344</span>    ZKUtil.deleteNodeRecursivelyMultiOrSequential(zkw, false, parentZNode1, parentZNode2,<a name="line.344"></a>
<span class="sourceLineNo">345</span>      parentZNode3);<a name="line.345"></a>
<span class="sourceLineNo">346</span>    assertEquals("Parent znode 1 should be deleted.", -1, ZKUtil.checkExists(zkw, parentZNode1));<a name="line.346"></a>
<span class="sourceLineNo">347</span>    assertEquals("Parent znode 2 should be deleted.", -1, ZKUtil.checkExists(zkw, parentZNode2));<a name="line.347"></a>
<span class="sourceLineNo">348</span>    assertEquals("Parent znode 3 should be deleted.", -1, ZKUtil.checkExists(zkw, parentZNode3));<a name="line.348"></a>
<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
<span class="sourceLineNo">350</span><a name="line.350"></a>
<span class="sourceLineNo">351</span>  @Test<a name="line.351"></a>
<span class="sourceLineNo">352</span>  public void testDeleteChildrenRecursivelyMultiOrSequential() throws Exception {<a name="line.352"></a>
<span class="sourceLineNo">353</span>    String parentZNode1 = "/testdeleteChildren1";<a name="line.353"></a>
<span class="sourceLineNo">354</span>    String parentZNode2 = "/testdeleteChildren2";<a name="line.354"></a>
<span class="sourceLineNo">355</span>    String parentZNode3 = "/testdeleteChildren3";<a name="line.355"></a>
<span class="sourceLineNo">356</span>    createZNodeTree(parentZNode1);<a name="line.356"></a>
<span class="sourceLineNo">357</span>    createZNodeTree(parentZNode2);<a name="line.357"></a>
<span class="sourceLineNo">358</span>    createZNodeTree(parentZNode3);<a name="line.358"></a>
<span class="sourceLineNo">359</span><a name="line.359"></a>
<span class="sourceLineNo">360</span>    ZKUtil.deleteChildrenRecursivelyMultiOrSequential(zkw, true, parentZNode1, parentZNode2,<a name="line.360"></a>
<span class="sourceLineNo">361</span>      parentZNode3);<a name="line.361"></a>
<span class="sourceLineNo">362</span><a name="line.362"></a>
<span class="sourceLineNo">363</span>    assertTrue("Wrongly deleted parent znode 1!", ZKUtil.checkExists(zkw, parentZNode1) &gt; -1);<a name="line.363"></a>
<span class="sourceLineNo">364</span>    List&lt;String&gt; children = zkw.getRecoverableZooKeeper().getChildren(parentZNode1, false);<a name="line.364"></a>
<span class="sourceLineNo">365</span>    assertEquals("Failed to delete child znodes of parent znode 1!", 0, children.size());<a name="line.365"></a>
<span class="sourceLineNo">366</span><a name="line.366"></a>
<span class="sourceLineNo">367</span>    assertTrue("Wrongly deleted parent znode 2!", ZKUtil.checkExists(zkw, parentZNode2) &gt; -1);<a name="line.367"></a>
<span class="sourceLineNo">368</span>    children = zkw.getRecoverableZooKeeper().getChildren(parentZNode2, false);<a name="line.368"></a>
<span class="sourceLineNo">369</span>    assertEquals("Failed to delete child znodes of parent znode 1!", 0, children.size());<a name="line.369"></a>
<span class="sourceLineNo">370</span><a name="line.370"></a>
<span class="sourceLineNo">371</span>    assertTrue("Wrongly deleted parent znode 3!", ZKUtil.checkExists(zkw, parentZNode3) &gt; -1);<a name="line.371"></a>
<span class="sourceLineNo">372</span>    children = zkw.getRecoverableZooKeeper().getChildren(parentZNode3, false);<a name="line.372"></a>
<span class="sourceLineNo">373</span>    assertEquals("Failed to delete child znodes of parent znode 1!", 0, children.size());<a name="line.373"></a>
<span class="sourceLineNo">374</span>  }<a name="line.374"></a>
<span class="sourceLineNo">375</span><a name="line.375"></a>
<span class="sourceLineNo">376</span>  @Test<a name="line.376"></a>
<span class="sourceLineNo">377</span>  public void testBatchedDeletesOfWideZNodes() throws Exception {<a name="line.377"></a>
<span class="sourceLineNo">378</span>    // Batch every 50bytes<a name="line.378"></a>
<span class="sourceLineNo">379</span>    final int batchSize = 50;<a name="line.379"></a>
<span class="sourceLineNo">380</span>    Configuration localConf = new Configuration(TEST_UTIL.getConfiguration());<a name="line.380"></a>
<span class="sourceLineNo">381</span>    localConf.setInt("zookeeper.multi.max.size", batchSize);<a name="line.381"></a>
<span class="sourceLineNo">382</span>    try (ZKWatcher customZkw = new ZKWatcher(localConf,<a name="line.382"></a>
<span class="sourceLineNo">383</span>      "TestZKMulti_Custom", new ZKMultiAbortable(), true)) {<a name="line.383"></a>
<span class="sourceLineNo">384</span><a name="line.384"></a>
<span class="sourceLineNo">385</span>      // With a parent znode like this, we'll get batches of 2-3 elements<a name="line.385"></a>
<span class="sourceLineNo">386</span>      final String parent1 = "/batchedDeletes1";<a name="line.386"></a>
<span class="sourceLineNo">387</span>      final String parent2 = "/batchedDeletes2";<a name="line.387"></a>
<span class="sourceLineNo">388</span>      final byte[] EMPTY_BYTES = new byte[0];<a name="line.388"></a>
<span class="sourceLineNo">389</span><a name="line.389"></a>
<span class="sourceLineNo">390</span>      // Write one node<a name="line.390"></a>
<span class="sourceLineNo">391</span>      List&lt;Op&gt; ops = new ArrayList&lt;&gt;();<a name="line.391"></a>
<span class="sourceLineNo">392</span>      ops.add(Op.create(parent1, EMPTY_BYTES, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT));<a name="line.392"></a>
<span class="sourceLineNo">393</span>      for (int i = 0; i &lt; batchSize * 2; i++) {<a name="line.393"></a>
<span class="sourceLineNo">394</span>        ops.add(Op.create(<a name="line.394"></a>
<span class="sourceLineNo">395</span>            parent1 + "/" + i, EMPTY_BYTES, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT));<a name="line.395"></a>
<span class="sourceLineNo">396</span>      }<a name="line.396"></a>
<span class="sourceLineNo">397</span>      customZkw.getRecoverableZooKeeper().multi(ops);<a name="line.397"></a>
<span class="sourceLineNo">398</span><a name="line.398"></a>
<span class="sourceLineNo">399</span>      // Write into a second node<a name="line.399"></a>
<span class="sourceLineNo">400</span>      ops.clear();<a name="line.400"></a>
<span class="sourceLineNo">401</span>      ops.add(Op.create(parent2, EMPTY_BYTES, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT));<a name="line.401"></a>
<span class="sourceLineNo">402</span>      for (int i = 0; i &lt; batchSize * 4; i++) {<a name="line.402"></a>
<span class="sourceLineNo">403</span>        ops.add(Op.create(<a name="line.403"></a>
<span class="sourceLineNo">404</span>            parent2 + "/" + i, EMPTY_BYTES, Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT));<a name="line.404"></a>
<span class="sourceLineNo">405</span>      }<a name="line.405"></a>
<span class="sourceLineNo">406</span>      customZkw.getRecoverableZooKeeper().multi(ops);<a name="line.406"></a>
<span class="sourceLineNo">407</span><a name="line.407"></a>
<span class="sourceLineNo">408</span>      // These should return successfully<a name="line.408"></a>
<span class="sourceLineNo">409</span>      ZKUtil.deleteChildrenRecursively(customZkw, parent1);<a name="line.409"></a>
<span class="sourceLineNo">410</span>      ZKUtil.deleteChildrenRecursively(customZkw, parent2);<a name="line.410"></a>
<span class="sourceLineNo">411</span>    }<a name="line.411"></a>
<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
<span class="sourceLineNo">413</span><a name="line.413"></a>
<span class="sourceLineNo">414</span>  @Test<a name="line.414"></a>
<span class="sourceLineNo">415</span>  public void testListPartitioning() {<a name="line.415"></a>
<span class="sourceLineNo">416</span>    // 10 Bytes<a name="line.416"></a>
<span class="sourceLineNo">417</span>    ZKUtilOp tenByteOp = ZKUtilOp.deleteNodeFailSilent("/123456789");<a name="line.417"></a>
<span class="sourceLineNo">418</span><a name="line.418"></a>
<span class="sourceLineNo">419</span>    // Simple, single element case<a name="line.419"></a>
<span class="sourceLineNo">420</span>    assertEquals(Collections.singletonList(Collections.singletonList(tenByteOp)),<a name="line.420"></a>
<span class="sourceLineNo">421</span>        ZKUtil.partitionOps(Collections.singletonList(tenByteOp), 15));<a name="line.421"></a>
<span class="sourceLineNo">422</span><a name="line.422"></a>
<span class="sourceLineNo">423</span>    // Simple case where we exceed the limit, but must make the list<a name="line.423"></a>
<span class="sourceLineNo">424</span>    assertEquals(Collections.singletonList(Collections.singletonList(tenByteOp)),<a name="line.424"></a>
<span class="sourceLineNo">425</span>        ZKUtil.partitionOps(Collections.singletonList(tenByteOp), 5));<a name="line.425"></a>
<span class="sourceLineNo">426</span><a name="line.426"></a>
<span class="sourceLineNo">427</span>    // Each gets its own bucket<a name="line.427"></a>
<span class="sourceLineNo">428</span>    assertEquals(<a name="line.428"></a>
<span class="sourceLineNo">429</span>        Arrays.asList(Collections.singletonList(tenByteOp), Collections.singletonList(tenByteOp),<a name="line.429"></a>
<span class="sourceLineNo">430</span>            Collections.singletonList(tenByteOp)),<a name="line.430"></a>
<span class="sourceLineNo">431</span>        ZKUtil.partitionOps(Arrays.asList(tenByteOp, tenByteOp, tenByteOp), 15));<a name="line.431"></a>
<span class="sourceLineNo">432</span><a name="line.432"></a>
<span class="sourceLineNo">433</span>    // Test internal boundary<a name="line.433"></a>
<span class="sourceLineNo">434</span>    assertEquals(<a name="line.434"></a>
<span class="sourceLineNo">435</span>        Arrays.asList(Arrays.asList(tenByteOp,tenByteOp), Collections.singletonList(tenByteOp)),<a name="line.435"></a>
<span class="sourceLineNo">436</span>        ZKUtil.partitionOps(Arrays.asList(tenByteOp, tenByteOp, tenByteOp), 20));<a name="line.436"></a>
<span class="sourceLineNo">437</span><a name="line.437"></a>
<span class="sourceLineNo">438</span>    // Plenty of space for one partition<a name="line.438"></a>
<span class="sourceLineNo">439</span>    assertEquals(<a name="line.439"></a>
<span class="sourceLineNo">440</span>        Collections.singletonList(Arrays.asList(tenByteOp, tenByteOp, tenByteOp)),<a name="line.440"></a>
<span class="sourceLineNo">441</span>        ZKUtil.partitionOps(Arrays.asList(tenByteOp, tenByteOp, tenByteOp), 50));<a name="line.441"></a>
<span class="sourceLineNo">442</span>  }<a name="line.442"></a>
<span class="sourceLineNo">443</span><a name="line.443"></a>
<span class="sourceLineNo">444</span>  private void createZNodeTree(String rootZNode) throws KeeperException,<a name="line.444"></a>
<span class="sourceLineNo">445</span>      InterruptedException {<a name="line.445"></a>
<span class="sourceLineNo">446</span>    List&lt;Op&gt; opList = new ArrayList&lt;&gt;();<a name="line.446"></a>
<span class="sourceLineNo">447</span>    opList.add(Op.create(rootZNode, new byte[0], Ids.OPEN_ACL_UNSAFE,<a name="line.447"></a>
<span class="sourceLineNo">448</span>        CreateMode.PERSISTENT));<a name="line.448"></a>
<span class="sourceLineNo">449</span>    int level = 0;<a name="line.449"></a>
<span class="sourceLineNo">450</span>    String parentZNode = rootZNode;<a name="line.450"></a>
<span class="sourceLineNo">451</span>    while (level &lt; 10) {<a name="line.451"></a>
<span class="sourceLineNo">452</span>      // define parent node<a name="line.452"></a>
<span class="sourceLineNo">453</span>      parentZNode = parentZNode + "/" + level;<a name="line.453"></a>
<span class="sourceLineNo">454</span>      opList.add(Op.create(parentZNode, new byte[0], Ids.OPEN_ACL_UNSAFE,<a name="line.454"></a>
<span class="sourceLineNo">455</span>          CreateMode.PERSISTENT));<a name="line.455"></a>
<span class="sourceLineNo">456</span>      int elements = 0;<a name="line.456"></a>
<span class="sourceLineNo">457</span>      // add elements to the parent node<a name="line.457"></a>
<span class="sourceLineNo">458</span>      while (elements &lt; level) {<a name="line.458"></a>
<span class="sourceLineNo">459</span>        opList.add(Op.create(parentZNode + "/" + elements, new byte[0],<a name="line.459"></a>
<span class="sourceLineNo">460</span>            Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT));<a name="line.460"></a>
<span class="sourceLineNo">461</span>        elements++;<a name="line.461"></a>
<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
<span class="sourceLineNo">463</span>      level++;<a name="line.463"></a>
<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
<span class="sourceLineNo">465</span>    zkw.getRecoverableZooKeeper().multi(opList);<a name="line.465"></a>
<span class="sourceLineNo">466</span>  }<a name="line.466"></a>
<span class="sourceLineNo">467</span>}<a name="line.467"></a>




























































</pre>
</div>
</body>
</html>
