annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
230
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.junglenetwork;
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
2
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
3 import jp.ac.u_ryukyu.ie.cr.jungle.Jungle;
331
74401cc27a96 fix log again
suruga
parents: 329
diff changeset
4 import jp.ac.u_ryukyu.ie.cr.jungle.tree.JungleTree;
74401cc27a96 fix log again
suruga
parents: 329
diff changeset
5 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.jungleTreeEditor.JungleTreeEditor;
230
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
6 import jp.ac.u_ryukyu.ie.cr.jungle.core.Children;
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
7 import jp.ac.u_ryukyu.ie.cr.jungle.persistent.ChangeList;
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.jungle.persistent.ChangeListReader;
263
tatsuki
parents: 231
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.jungle.store.nodepath.NodePath;
331
74401cc27a96 fix log again
suruga
parents: 329
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.editor.treeEditor.DefaultTreeEditor;
265
b3a04bc21b23 add UnDefineNode
tatsuki
parents: 263
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode;
230
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.jungle.traverser.DefaultTraverser;
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
329
2a0cb1f0ba4e rename Error package
kono
parents: 325
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.jungle.util.jungleError.Error;
230
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.jungleNetwork.operations.NetworkNodePath;
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
16 import jp.ac.u_ryukyu.ie.cr.jungleNetwork.persistent.PersistentJournal;
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
17 import jp.ac.u_ryukyu.ie.cr.jungleNetwork.persistent.PersistentJungle;
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
18 import jp.ac.u_ryukyu.ie.cr.jungleNetwork.transaction.JungleUpdater;
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
19 import org.junit.Assert;
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
20 import org.junit.Test;
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
21
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
22 import java.io.File;
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
23 import java.io.IOException;
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
24 import java.nio.ByteBuffer;
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
25 import java.util.Iterator;
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
26
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
27 public class DataWriteBufferTest {
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
28 ByteBuffer value = ByteBuffer.wrap("value".getBytes());
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
29 String key = "key";
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
30 int pos = 0;
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
31
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
32 @Test
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
33 public void DataWriteBufferTest() throws IOException {
331
74401cc27a96 fix log again
suruga
parents: 329
diff changeset
34 PersistentJournal journal1 = new PersistentJournal("commit.log");
74401cc27a96 fix log again
suruga
parents: 329
diff changeset
35 Jungle jungle = new PersistentJungle(journal1, "uuid",new DefaultTraverser());
230
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
36 jungle.createNewTree("hoge");
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
37 JungleTree tree1 = jungle.getTreeByName("hoge");
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
38 tree1.setBufferSize(10);
263
tatsuki
parents: 231
diff changeset
39 JungleTreeEditor editor = tree1.getJungleTreeEditor();
230
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
40 NetworkNodePath path = new NetworkNodePath();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
41 Either<Error, JungleTreeEditor> either = editor.addNewChildAt(path, pos);
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
42 NodePath childPath = path.add(pos);
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
43 Assert.assertFalse(either.isA());
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
44 editor = either.b();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
45 either = editor.putAttribute(childPath, key, value);
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
46 JungleTreeEditor editor2 = either.b();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
47 either = editor2.success();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
48 Assert.assertFalse(either.isA());
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
49
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
50 PersistentJournal journal2 = new PersistentJournal();
331
74401cc27a96 fix log again
suruga
parents: 329
diff changeset
51 journal2.setInputFile(new File( journal1.getLogName()));
74401cc27a96 fix log again
suruga
parents: 329
diff changeset
52 journal2.setOutputFile(new File( journal1.getLogName()));
230
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
53 ChangeListReader reader = journal2.getReader();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
54 Iterator<ChangeList> iterator = reader.iterator();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
55 Assert.assertFalse(iterator.hasNext());
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
56
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
57 for (int count = 0; count < 9; count++) {
263
tatsuki
parents: 231
diff changeset
58 editor = tree1.getJungleTreeEditor();
230
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
59 either = editor.addNewChildAt(path, pos);
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
60 childPath = path.add(pos);
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
61 Assert.assertFalse(either.isA());
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
62 editor = either.b();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
63 either = editor.putAttribute(childPath, key, value);
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
64 editor2 = either.b();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
65 either = editor2.success();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
66 Assert.assertFalse(either.isA());
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
67 }
263
tatsuki
parents: 231
diff changeset
68 editor = tree1.getJungleTreeEditor();
231
48907bf43043 add PersistentJungleTreeEditor.java
tatsuki
parents: 230
diff changeset
69 either = editor.flushSuccess();
230
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
70 Assert.assertFalse(either.isA());
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
71
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
72 PersistentJournal journal3 = new PersistentJournal();
331
74401cc27a96 fix log again
suruga
parents: 329
diff changeset
73 journal3.setInputFile(new File( journal1.getLogName()));
74401cc27a96 fix log again
suruga
parents: 329
diff changeset
74 journal3.setOutputFile(new File( journal1.getLogName()));
74401cc27a96 fix log again
suruga
parents: 329
diff changeset
75 Jungle jungle2 = new PersistentJungle(journal1, "uuid3",new DefaultTraverser());
230
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
76 ChangeListReader reader2 = journal3.getReader();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
77 for (ChangeList chList : reader2) {
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
78 String treeName = chList.getTreeName();
231
48907bf43043 add PersistentJungleTreeEditor.java
tatsuki
parents: 230
diff changeset
79 JungleTree tree2 = jungle2.getTreeByName(treeName);
230
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
80 if (tree2 == null) {
231
48907bf43043 add PersistentJungleTreeEditor.java
tatsuki
parents: 230
diff changeset
81 tree2 = jungle2.createNewTree(treeName);
230
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
82 }
263
tatsuki
parents: 231
diff changeset
83 editor2 = tree2.getJungleTreeEditor();
331
74401cc27a96 fix log again
suruga
parents: 329
diff changeset
84 Either<Error, JungleTreeEditor> either2 = JungleUpdater.edit(editor2, chList);
230
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
85 Assert.assertFalse(either2.isA());
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
86 editor2 = either2.b();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
87 editor2.success();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
88 }
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
89
231
48907bf43043 add PersistentJungleTreeEditor.java
tatsuki
parents: 230
diff changeset
90 JungleTree tree2 = jungle2.getTreeByName("hoge");
230
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
91 TreeNode node1 = tree1.getRootNode();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
92 TreeNode node2 = tree2.getRootNode();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
93 Children child1 = node1.getChildren();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
94 Children child2 = node2.getChildren();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
95 Assert.assertEquals(child1.size(), child2.size());
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
96 Either<Error, TreeNode> either1 = child1.at(pos);
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
97 Either<Error, TreeNode> either2 = child1.at(pos);
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
98 Assert.assertFalse(either1.isA());
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
99 Assert.assertFalse(either2.isA());
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
100
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
101 TreeNode nodeA = either1.b();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
102 TreeNode nodeB = either2.b();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
103 ByteBuffer bb1 = nodeA.getAttributes().get(key);
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
104 ByteBuffer bb2 = nodeB.getAttributes().get(key);
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
105 String strA = new String(bb1.array());
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
106 String strB = new String(bb2.array());
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
107 Assert.assertTrue(strA.equals(strB));
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
108 journal1.close();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
109 journal2.close();
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
110 }
a202f84bda52 add data write buffering
tatsuki
parents:
diff changeset
111 }