annotate src/test/java/ip/ac/u_ryukyu/ie/cr/tatsuki/jungle/index/IndexCommitTest.java @ 132:ba5370090393

index commit Prototype
author one
date Sun, 19 Oct 2014 09:15:38 +0900
parents b2c1fd513feb
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
127
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
1 package ip.ac.u_ryukyu.ie.cr.tatsuki.jungle.index;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
2
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
3 import java.util.Iterator;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
4
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
5 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode;
132
ba5370090393 index commit Prototype
one
parents: 127
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.IndexJungleTreeEditor;
127
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
19 import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.IndexPushThread;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
20 import junit.framework.Assert;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
22
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
23 import java.nio.ByteBuffer;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
24
132
ba5370090393 index commit Prototype
one
parents: 127
diff changeset
25 import javax.swing.tree.DefaultTreeCellEditor.EditorContainer;
ba5370090393 index commit Prototype
one
parents: 127
diff changeset
26
127
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
27 import org.junit.Test;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
28 import org.junit.experimental.theories.suppliers.TestedOn;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
29
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
30 import fj.data.List;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
31 import fj.data.Option;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
32 import fj.data.TreeMap;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
33
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
34 public class IndexCommitTest {
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
35
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
36 @Test
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
37 public void IndexCommitTest() throws InterruptedException {
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
38
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
39 Jungle jungle = new DefaultJungle(null, "hogehoge",
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
40 new DefaultTreeEditor(new DefaultTraverser()));
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
41 jungle.createNewTree("tree");
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
42 JungleTree tree = jungle.getTreeByName("tree");
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
43 createTree(tree);
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
44 tree.getRootNode();
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
45 InterfaceTraverser ifTraverser = tree.getTraverser();
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
46
132
ba5370090393 index commit Prototype
one
parents: 127
diff changeset
47 ifTraverser.find((TreeNode node) -> {
127
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
48 ByteBuffer attribute = node.getAttributes().get(key);
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
49 if (attribute != null) {
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
50 byte[] byteAttribute = attribute.array();
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
51 String str = new String(byteAttribute);
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
52 System.out.println("attribute = " + str);
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
53 return str.equals("<-1,0,1>");
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
54 }
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
55 return false;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
56 }, key, "<-1,0,1>");
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
57
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
58 //check index
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
59 TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> index = ifTraverser.getIndex();
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
60 Option<TreeMap<String, List<Pair<TreeNode, NodePath>>>> opIndex = index.get(key);
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
61 Assert.assertTrue(!opIndex.isNone());
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
62 TreeMap<String, List<Pair<TreeNode, NodePath>>> innerIndex = opIndex.some();
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
63 Assert.assertTrue(!innerIndex.get("<-1,0,0>").isNone());
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
64
132
ba5370090393 index commit Prototype
one
parents: 127
diff changeset
65 JungleTreeEditor editor = tree.getTreeEditor();
ba5370090393 index commit Prototype
one
parents: 127
diff changeset
66 Either<Error, JungleTreeEditor> either = editor.addNewChildAt(new DefaultNodePath(), 0);
ba5370090393 index commit Prototype
one
parents: 127
diff changeset
67 editor = either.b();
ba5370090393 index commit Prototype
one
parents: 127
diff changeset
68 editor.success();
ba5370090393 index commit Prototype
one
parents: 127
diff changeset
69
ba5370090393 index commit Prototype
one
parents: 127
diff changeset
70 ifTraverser.commitIndex();
127
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
71 JungleTree newTree = jungle.getTreeByName("tree");
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
72 InterfaceTraverser newIfTraverser = newTree.getTraverser();
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
73 TreeMap<String, TreeMap<String, List<Pair<TreeNode, NodePath>>>> newIndex = newIfTraverser.getIndex();
132
ba5370090393 index commit Prototype
one
parents: 127
diff changeset
74 Assert.assertTrue(newIndex.isEmpty());
ba5370090393 index commit Prototype
one
parents: 127
diff changeset
75
ba5370090393 index commit Prototype
one
parents: 127
diff changeset
76
127
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
77
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
78 }
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
79
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
80 public boolean compare(TreeNode compareNode, String compareAttribute) {
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
81 String labName = compareNode.getAttributes().getString(key);
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
82 if (labName.equals(compareAttribute))
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
83 return true;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
84 return false;
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
85 }
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
86
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
87 public static String key = "KEY";
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
88 public static DefaultTreeNode factory = new DefaultTreeNode();
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
89
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
90 public void createTree(JungleTree tree) {
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
91 NodePath root = new DefaultNodePath();
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
92 createChildren(tree, root, 0);
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
93
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
94 for (int x = 0; x < 2; x++) {
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
95 createChildren(tree, root.add(0), x);
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
96 for (int y = 0; y < 2; y++) {
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
97 createChildren(tree, root.add(0).add(x), y);
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
98 }
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
99 }
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
100
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
101 }
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
102
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
103 public void createChildren(JungleTree tree, NodePath root, int num) {
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
104 JungleTreeEditor editor = tree.getTreeEditor();// Treeのeditorを作成
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
105 Either<Error, JungleTreeEditor> either = editor
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
106 .addNewChildAt(root, num); // 新しく入れるところへのパス
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
107 if (either.isA()) {
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
108 Assert.fail();
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
109 }
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
110 editor = either.b();
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
111 either = editor.success();
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
112 if (either.isA()) {
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
113 Assert.fail();
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
114 }
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
115 NodePath childPath = root.add(num);
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
116 editor = tree.getTreeEditor();
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
117 NodePath attribute = root.add(num);
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
118 System.out.println(attribute.toString());
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
119 either = editor.putAttribute(childPath, key,
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
120 ByteBuffer.wrap(attribute.toString().getBytes()));
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
121 if (either.isA()) {
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
122 Assert.fail();
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
123 }
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
124 editor = either.b();
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
125 either = editor.success();
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
126 }
b2c1fd513feb push index thread add read log
one
parents:
diff changeset
127 }