changeset 43:7392f7ed45d2

added SimpleIncNodeID SimpleIncNodeIDTest
author shoshi
date Fri, 21 Jan 2011 16:33:41 +0900
parents ba136d01f304
children cc66b6933d44
files src/treecms/proto/cassandra/test/CassGetSliceTest.java src/treecms/proto/id/DecrementalNodeID.java src/treecms/proto/id/IncrementalNodeID.java src/treecms/proto/id/test/IncrementalNodeIDTest1.java src/treecms/proto/marge/ReplaceMarger.java src/treecms/proto/simple/SimpleBrowser.java src/treecms/proto/simple/SimpleDecNodeID.java src/treecms/proto/simple/SimpleIncNodeID.java src/treecms/proto/simple/test/SimpleIncNodeIDTest.java
diffstat 9 files changed, 240 insertions(+), 169 deletions(-) [+]
line wrap: on
line diff
--- a/src/treecms/proto/cassandra/test/CassGetSliceTest.java	Fri Jan 21 03:03:54 2011 +0900
+++ b/src/treecms/proto/cassandra/test/CassGetSliceTest.java	Fri Jan 21 16:33:41 2011 +0900
@@ -1,7 +1,12 @@
 package treecms.proto.cassandra.test;
 
+/*
+ * Cassandra get_slice , get_range_slice test
+ * 
+ * 2011/01/19 Shoshi TAMAKI
+ */
+
 import java.util.List;
-
 import org.apache.cassandra.thrift.Cassandra;
 import org.apache.cassandra.thrift.ColumnOrSuperColumn;
 import org.apache.cassandra.thrift.ColumnParent;
--- a/src/treecms/proto/id/DecrementalNodeID.java	Fri Jan 21 03:03:54 2011 +0900
+++ b/src/treecms/proto/id/DecrementalNodeID.java	Fri Jan 21 16:33:41 2011 +0900
@@ -18,6 +18,12 @@
 
 	@Override
 	public abstract String getVersion();
+	
+	@Override
+	public String toString()
+	{
+		return getUUID()+"@"+getVersion();
+	}
 
 	@Override
 	public boolean isFamily(NodeID id)
--- a/src/treecms/proto/id/IncrementalNodeID.java	Fri Jan 21 03:03:54 2011 +0900
+++ b/src/treecms/proto/id/IncrementalNodeID.java	Fri Jan 21 16:33:41 2011 +0900
@@ -4,60 +4,33 @@
 import java.util.UUID;
 import java.util.concurrent.atomic.AtomicLong;
 
-public class IncrementalNodeID implements NodeID
+public abstract class IncrementalNodeID implements NodeID
 {
-	private String m_inheritedID;
-	private long m_version;
-	
-	private AtomicLong m_tip;
-	
-	public IncrementalNodeID()
-	{
-		this(UUID.randomUUID().toString());
-		m_tip = new AtomicLong();
-		m_version = 0;
-	}
-	
-	private IncrementalNodeID(String _id)
-	{
-		m_inheritedID = _id;
-	}
+	@Override
+	public abstract NodeID create();
 	
 	@Override
-	public NodeID create()
-	{
-		return new IncrementalNodeID();
-	}
+	public abstract NodeID update();
 	
 	@Override
-	public NodeID update()
-	{
-		IncrementalNodeID id = new IncrementalNodeID(m_inheritedID);
-		id.m_tip = m_tip;
-		id.m_version = m_tip.incrementAndGet();
-		return id;
-	}
-	
+	public abstract NodeID getTip();
+
 	@Override
-	public NodeID getTip()
-	{
-		IncrementalNodeID id = new IncrementalNodeID(m_inheritedID);
-		id.m_tip = m_tip;
-		id.m_version = m_tip.get();
-		return id;
-	}
+	public abstract String getUUID();
+
+	@Override
+	public abstract String getVersion();
 	
 	@Override
 	public String toString()
 	{
-		return m_inheritedID + "@" + m_version;
+		return getUUID()+"@"+getVersion();
 	}
 
 	@Override
 	public boolean equals(NodeID _id)
 	{
-		IncrementalNodeID id = (IncrementalNodeID)_id;
-		if(isFamily(id) && m_version == id.m_version){
+		if(isFamily(_id) && getVersion() == _id.getVersion()){
 			return true;
 		}
 		return false;
@@ -66,8 +39,7 @@
 	@Override
 	public boolean isFamily(NodeID _id)
 	{
-		IncrementalNodeID id = (IncrementalNodeID)_id;
-		if(m_inheritedID.equals(id.m_inheritedID)){
+		if(getUUID().equals(_id.getUUID())){
 			return true;
 		}
 		return false;
@@ -76,22 +48,9 @@
 	@Override
 	public boolean isOrderThen(NodeID _id)
 	{
-		IncrementalNodeID id = (IncrementalNodeID)_id;
-		if(isFamily(id) && m_version > id.m_version){
+		if(isFamily(_id) && Long.parseLong(getVersion()) > Long.parseLong(_id.getVersion())){
 			return true;
 		}
 		return false;
 	}
-
-	@Override
-	public String getUUID()
-	{
-		return m_inheritedID;
-	}
-
-	@Override
-	public String getVersion()
-	{
-		return Long.toString(m_version);
-	}
 }
--- a/src/treecms/proto/id/test/IncrementalNodeIDTest1.java	Fri Jan 21 03:03:54 2011 +0900
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,109 +0,0 @@
-package treecms.proto.id.test;
-
-/**
- * IncrementalNodeIDTest1
- * 
- * testIDstartsWithZero()
- * 	the id must be start from zero.
- * 
- * testUpdateIDFromLatestID()
- * 	check that id able to update correctly from latest node id.
- * 
- * testUpdateIDFromOldID()
- *  check that id able to update correctly from old node id.
- *  
- * testMultiThreadUpdateID()
- *  execute concurrent update using shared object.
- */
-
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-import org.junit.Test;
-import org.junit.Assert;
-import org.junit.runner.JUnitCore;
-import treecms.proto.api.NodeID;
-import treecms.proto.id.IncrementalNodeID;
-import treecms.proto.test.NodeIDTest;
-
-public class IncrementalNodeIDTest1 extends NodeIDTest
-{
-	public static void main(String _args[])
-	{
-		JUnitCore.main(IncrementalNodeIDTest1.class.getName());
-	}
-	
-	public IncrementalNodeIDTest1()
-	{
-		super(new IncrementalNodeID());
-	}
-	
-	@Test
-	public void testIDstartsWithZero()
-	{
-		NodeID id = new IncrementalNodeID();
-		long ver = Long.parseLong(id.toString().split("@")[1]);
-		Assert.assertEquals(ver,0);
-	}
-	
-	@Test
-	public void testUpdateIDFromLatestID()
-	{
-		int count = 100;
-		NodeID id = new IncrementalNodeID();
-		
-		for(int i = 1;i <= count;i ++){
-			id = id.update();
-			long ver = Long.parseLong(id.toString().split("@")[1]);
-			Assert.assertEquals(ver,i);
-		}
-	}
-	
-	@Test
-	public void testUpdateIDFromOldID()
-	{
-		int count = 100;
-		NodeID id0 = new IncrementalNodeID();
-		
-		for(int i = 1;i <= count;i ++){
-			NodeID id = id0.update();
-			long ver = Long.parseLong(id.toString().split("@")[1]);
-			Assert.assertEquals(ver,i);
-		}
-	}
-	
-	@Test
-	public void testMultiThreadedUpdateID()
-	{
-		final int threads = 10; //number of threads
-		final int count = 100; //modification count
-		ExecutorService service = Executors.newFixedThreadPool(threads);
-		
-		final NodeID id = new IncrementalNodeID();
-		
-		for(int i = 0;i < threads;i ++){
-			service.execute(new Runnable(){
-				@Override
-				public void run()
-				{
-					for(int j = 0;j < count;j ++){
-						id.update();
-					}
-				}
-			});
-		}
-		
-		service.shutdown();
-		
-		try {
-			service.awaitTermination(Long.MAX_VALUE,TimeUnit.DAYS);
-		} catch (InterruptedException e) {
-			e.printStackTrace();
-		}
-		
-		//check id
-		NodeID tip = id.update();
-		long ver = Long.parseLong(tip.toString().split("@")[1]);
-		Assert.assertEquals(ver,threads*count + 1);
-	}
-}
--- a/src/treecms/proto/marge/ReplaceMarger.java	Fri Jan 21 03:03:54 2011 +0900
+++ b/src/treecms/proto/marge/ReplaceMarger.java	Fri Jan 21 16:33:41 2011 +0900
@@ -8,7 +8,8 @@
 	@Override
 	public Node merge(Node _from, Node _to)
 	{
-		return _from;
+		Node newRoot = _from.cloneNode();
+		return newRoot;
 	}
 
 }
--- a/src/treecms/proto/simple/SimpleBrowser.java	Fri Jan 21 03:03:54 2011 +0900
+++ b/src/treecms/proto/simple/SimpleBrowser.java	Fri Jan 21 16:33:41 2011 +0900
@@ -46,7 +46,7 @@
 	
 	public SimpleNode createNode()
 	{
-		SimpleNode node = new SimpleNode(new IncrementalNodeID());
+		SimpleNode node = new SimpleNode(new SimpleDecNodeID());
 		m_table.put(node.getID().toString(),node);
 		return node;
 	}
@@ -69,7 +69,7 @@
 	
 	public SimpleLink createLink(Node _target)
 	{
-		SimpleLink link = new SimpleLink(new IncrementalNodeID(),_target);
+		SimpleLink link = new SimpleLink(new SimpleDecNodeID(),_target);
 		m_table.put(link.getID().toString(),link);
 		return link;
 	}
--- a/src/treecms/proto/simple/SimpleDecNodeID.java	Fri Jan 21 03:03:54 2011 +0900
+++ b/src/treecms/proto/simple/SimpleDecNodeID.java	Fri Jan 21 16:33:41 2011 +0900
@@ -63,5 +63,5 @@
 	{
 		return new SimpleDecNodeID(m_uuid,m_tip,false);
 	}
-	
+
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/treecms/proto/simple/SimpleIncNodeID.java	Fri Jan 21 16:33:41 2011 +0900
@@ -0,0 +1,99 @@
+package treecms.proto.simple;
+
+import treecms.proto.api.NodeID;
+import treecms.proto.id.IncrementalNodeID;
+
+import java.util.UUID;
+import java.util.concurrent.atomic.AtomicLong;
+
+public class SimpleIncNodeID extends IncrementalNodeID
+{
+	private String m_inheritedID;
+	private long m_version;
+	
+	private AtomicLong m_tip;
+	
+	public SimpleIncNodeID()
+	{
+		this(UUID.randomUUID().toString());
+		m_tip = new AtomicLong();
+		m_version = 0;
+	}
+	
+	private SimpleIncNodeID(String _id)
+	{
+		m_inheritedID = _id;
+	}
+	
+	@Override
+	public NodeID create()
+	{
+		return new SimpleIncNodeID();
+	}
+	
+	@Override
+	public NodeID update()
+	{
+		SimpleIncNodeID id = new SimpleIncNodeID(m_inheritedID);
+		id.m_tip = m_tip;
+		id.m_version = m_tip.incrementAndGet();
+		return id;
+	}
+	
+	@Override
+	public NodeID getTip()
+	{
+		SimpleIncNodeID id = new SimpleIncNodeID(m_inheritedID);
+		id.m_tip = m_tip;
+		id.m_version = m_tip.get();
+		return id;
+	}
+	
+	@Override
+	public String toString()
+	{
+		return m_inheritedID + "@" + m_version;
+	}
+
+	@Override
+	public boolean equals(NodeID _id)
+	{
+		SimpleIncNodeID id = (SimpleIncNodeID)_id;
+		if(isFamily(id) && m_version == id.m_version){
+			return true;
+		}
+		return false;
+	}
+
+	@Override
+	public boolean isFamily(NodeID _id)
+	{
+		SimpleIncNodeID id = (SimpleIncNodeID)_id;
+		if(m_inheritedID.equals(id.m_inheritedID)){
+			return true;
+		}
+		return false;
+	}
+
+	@Override
+	public boolean isOrderThen(NodeID _id)
+	{
+		SimpleIncNodeID id = (SimpleIncNodeID)_id;
+		if(isFamily(id) && m_version > id.m_version){
+			return true;
+		}
+		return false;
+	}
+
+	@Override
+	public String getUUID()
+	{
+		return m_inheritedID;
+	}
+
+	@Override
+	public String getVersion()
+	{
+		return Long.toString(m_version);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/treecms/proto/simple/test/SimpleIncNodeIDTest.java	Fri Jan 21 16:33:41 2011 +0900
@@ -0,0 +1,110 @@
+package treecms.proto.simple.test;
+
+/**
+ * IncrementalNodeIDTest1
+
+ * 
+ * testIDstartsWithZero()
+ * 	the id must be start from zero.
+ * 
+ * testUpdateIDFromLatestID()
+ * 	check that id able to update correctly from latest node id.
+ * 
+ * testUpdateIDFromOldID()
+ *  check that id able to update correctly from old node id.
+ *  
+ * testMultiThreadUpdateID()
+ *  execute concurrent update using shared object.
+ */
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+import org.junit.Test;
+import org.junit.Assert;
+import org.junit.runner.JUnitCore;
+import treecms.proto.api.NodeID;
+import treecms.proto.simple.SimpleIncNodeID;
+import treecms.proto.test.NodeIDTest;
+
+public class SimpleIncNodeIDTest extends NodeIDTest
+{
+	public static void main(String _args[])
+	{
+		JUnitCore.main(SimpleIncNodeIDTest.class.getName());
+	}
+	
+	public SimpleIncNodeIDTest()
+	{
+		super(new SimpleIncNodeID());
+	}
+	
+	@Test
+	public void testIDstartsWithZero()
+	{
+		NodeID id = new SimpleIncNodeID();
+		long ver = Long.parseLong(id.toString().split("@")[1]);
+		Assert.assertEquals(ver,0);
+	}
+	
+	@Test
+	public void testUpdateIDFromLatestID()
+	{
+		int count = 100;
+		NodeID id = new SimpleIncNodeID();
+		
+		for(int i = 1;i <= count;i ++){
+			id = id.update();
+			long ver = Long.parseLong(id.toString().split("@")[1]);
+			Assert.assertEquals(ver,i);
+		}
+	}
+	
+	@Test
+	public void testUpdateIDFromOldID()
+	{
+		int count = 100;
+		NodeID id0 = new SimpleIncNodeID();
+		
+		for(int i = 1;i <= count;i ++){
+			NodeID id = id0.update();
+			long ver = Long.parseLong(id.toString().split("@")[1]);
+			Assert.assertEquals(ver,i);
+		}
+	}
+	
+	@Test
+	public void testMultiThreadedUpdateID()
+	{
+		final int threads = 10; //number of threads
+		final int count = 100; //modification count
+		ExecutorService service = Executors.newFixedThreadPool(threads);
+		
+		final NodeID id = new SimpleIncNodeID();
+		
+		for(int i = 0;i < threads;i ++){
+			service.execute(new Runnable(){
+				@Override
+				public void run()
+				{
+					for(int j = 0;j < count;j ++){
+						id.update();
+					}
+				}
+			});
+		}
+		
+		service.shutdown();
+		
+		try {
+			service.awaitTermination(Long.MAX_VALUE,TimeUnit.DAYS);
+		} catch (InterruptedException e) {
+			e.printStackTrace();
+		}
+		
+		//check id
+		NodeID tip = id.update();
+		long ver = Long.parseLong(tip.toString().split("@")[1]);
+		Assert.assertEquals(ver,threads*count + 1);
+	}
+}