Mercurial > hg > Members > shoshi > jungle > jungle-core
view src/test/java/jp/ac/u_ryukyu/ie/cr/junglenetwork/DataWriteBufferTest.java @ 331:74401cc27a96
fix log again
author | suruga |
---|---|
date | Sat, 08 Jul 2017 21:46:53 +0900 |
parents | 2a0cb1f0ba4e |
children |
line wrap: on
line source
package jp.ac.u_ryukyu.ie.cr.junglenetwork; import jp.ac.u_ryukyu.ie.cr.jungle.Jungle; import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.core.Children; import jp.ac.u_ryukyu.ie.cr.jungle.persistent.ChangeList; import jp.ac.u_ryukyu.ie.cr.jungle.persistent.ChangeListReader; import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.treeEditor.DefaultTreeEditor; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.jungleError.Error; import jp.ac.u_ryukyu.ie.cr.jungleNetwork.operations.NetworkNodePath; import jp.ac.u_ryukyu.ie.cr.jungleNetwork.persistent.PersistentJournal; import jp.ac.u_ryukyu.ie.cr.jungleNetwork.persistent.PersistentJungle; import jp.ac.u_ryukyu.ie.cr.jungleNetwork.transaction.JungleUpdater; import org.junit.Assert; import org.junit.Test; import java.io.File; import java.io.IOException; import java.nio.ByteBuffer; import java.util.Iterator; public class DataWriteBufferTest { ByteBuffer value = ByteBuffer.wrap("value".getBytes()); String key = "key"; int pos = 0; @Test public void DataWriteBufferTest() throws IOException { PersistentJournal journal1 = new PersistentJournal("commit.log"); Jungle jungle = new PersistentJungle(journal1, "uuid",new DefaultTraverser()); jungle.createNewTree("hoge"); JungleTree tree1 = jungle.getTreeByName("hoge"); tree1.setBufferSize(10); JungleTreeEditor editor = tree1.getJungleTreeEditor(); NetworkNodePath path = new NetworkNodePath(); Either<Error, JungleTreeEditor> either = editor.addNewChildAt(path, pos); NodePath childPath = path.add(pos); Assert.assertFalse(either.isA()); editor = either.b(); either = editor.putAttribute(childPath, key, value); JungleTreeEditor editor2 = either.b(); either = editor2.success(); Assert.assertFalse(either.isA()); PersistentJournal journal2 = new PersistentJournal(); journal2.setInputFile(new File( journal1.getLogName())); journal2.setOutputFile(new File( journal1.getLogName())); ChangeListReader reader = journal2.getReader(); Iterator<ChangeList> iterator = reader.iterator(); Assert.assertFalse(iterator.hasNext()); for (int count = 0; count < 9; count++) { editor = tree1.getJungleTreeEditor(); either = editor.addNewChildAt(path, pos); childPath = path.add(pos); Assert.assertFalse(either.isA()); editor = either.b(); either = editor.putAttribute(childPath, key, value); editor2 = either.b(); either = editor2.success(); Assert.assertFalse(either.isA()); } editor = tree1.getJungleTreeEditor(); either = editor.flushSuccess(); Assert.assertFalse(either.isA()); PersistentJournal journal3 = new PersistentJournal(); journal3.setInputFile(new File( journal1.getLogName())); journal3.setOutputFile(new File( journal1.getLogName())); Jungle jungle2 = new PersistentJungle(journal1, "uuid3",new DefaultTraverser()); ChangeListReader reader2 = journal3.getReader(); for (ChangeList chList : reader2) { String treeName = chList.getTreeName(); JungleTree tree2 = jungle2.getTreeByName(treeName); if (tree2 == null) { tree2 = jungle2.createNewTree(treeName); } editor2 = tree2.getJungleTreeEditor(); Either<Error, JungleTreeEditor> either2 = JungleUpdater.edit(editor2, chList); Assert.assertFalse(either2.isA()); editor2 = either2.b(); editor2.success(); } JungleTree tree2 = jungle2.getTreeByName("hoge"); TreeNode node1 = tree1.getRootNode(); TreeNode node2 = tree2.getRootNode(); Children child1 = node1.getChildren(); Children child2 = node2.getChildren(); Assert.assertEquals(child1.size(), child2.size()); Either<Error, TreeNode> either1 = child1.at(pos); Either<Error, TreeNode> either2 = child1.at(pos); Assert.assertFalse(either1.isA()); Assert.assertFalse(either2.isA()); TreeNode nodeA = either1.b(); TreeNode nodeB = either2.b(); ByteBuffer bb1 = nodeA.getAttributes().get(key); ByteBuffer bb2 = nodeB.getAttributes().get(key); String strA = new String(bb1.array()); String strB = new String(bb2.array()); Assert.assertTrue(strA.equals(strB)); journal1.close(); journal2.close(); } }