Search in sources :

Example 1 with PathTrie

use of org.apache.zookeeper.common.PathTrie in project zookeeper by apache.

the class DataTreeTest method testPathTrieClearOnDeserialize.

@Test(timeout = 60000)
public void testPathTrieClearOnDeserialize() throws Exception {
    // Create a DataTree with quota nodes so PathTrie get updated
    DataTree dserTree = new DataTree();
    dserTree.createNode("/bug", new byte[20], null, -1, 1, 1, 1);
    dserTree.createNode(Quotas.quotaZookeeper + "/bug", null, null, -1, 1, 1, 1);
    dserTree.createNode(Quotas.quotaPath("/bug"), new byte[20], null, -1, 1, 1, 1);
    dserTree.createNode(Quotas.statPath("/bug"), new byte[20], null, -1, 1, 1, 1);
    // deserialize a DataTree; this should clear the old /bug nodes and pathTrie
    DataTree tree = new DataTree();
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    BinaryOutputArchive oa = BinaryOutputArchive.getArchive(baos);
    tree.serialize(oa, "test");
    baos.flush();
    ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
    BinaryInputArchive ia = BinaryInputArchive.getArchive(bais);
    dserTree.deserialize(ia, "test");
    Field pfield = DataTree.class.getDeclaredField("pTrie");
    pfield.setAccessible(true);
    PathTrie pTrie = (PathTrie) pfield.get(dserTree);
    // Check that the node path is removed from pTrie
    Assert.assertEquals("/bug is still in pTrie", "", pTrie.findMaxPrefix("/bug"));
}
Also used : BinaryInputArchive(org.apache.jute.BinaryInputArchive) BinaryOutputArchive(org.apache.jute.BinaryOutputArchive) PathTrie(org.apache.zookeeper.common.PathTrie) ByteArrayInputStream(java.io.ByteArrayInputStream) ByteArrayOutputStream(java.io.ByteArrayOutputStream) Test(org.junit.Test)

Aggregations

ByteArrayInputStream (java.io.ByteArrayInputStream)1 ByteArrayOutputStream (java.io.ByteArrayOutputStream)1 BinaryInputArchive (org.apache.jute.BinaryInputArchive)1 BinaryOutputArchive (org.apache.jute.BinaryOutputArchive)1 PathTrie (org.apache.zookeeper.common.PathTrie)1 Test (org.junit.Test)1