From 2936fd1cac4835d1c0bf677609bc605eb9b0e0a4 Mon Sep 17 00:00:00 2001 From: weili1988 Date: Thu, 29 Sep 2016 04:29:37 +0000 Subject: [PATCH 1/3] MNEMONIC-97: Adding buffer data type for test case --- .../apache/mnemonic/DurablePersonNGTest.java | 33 +++++++++++++++++-- .../test/java/org/apache/mnemonic/Person.java | 13 +++++++- 2 files changed, 43 insertions(+), 3 deletions(-) diff --git a/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonNGTest.java b/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonNGTest.java index e66c66f6..de2cbbac 100644 --- a/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonNGTest.java +++ b/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonNGTest.java @@ -25,7 +25,7 @@ import java.nio.ByteBuffer; import java.util.Random; import java.util.UUID; - +import org.testng.Assert; import org.testng.annotations.Test; public class DurablePersonNGTest { @@ -63,7 +63,7 @@ public boolean reclaim(Long mres, Long sz) { long keyidx = 0; long val; - + MemBufferHolder mbh; try { while (true) { // if (keyidx >= KEYCAPACITY) break; @@ -78,25 +78,54 @@ public boolean reclaim(Long mres, Long sz) { } person = PersonFactory.create(act); + int size = rand.nextInt(1024 * 1024) + 1024 * 1024; +/////////////////////////if size is smaller than remaining act capacity//// + + mbh = act.createBuffer(size); + if (mbh != null) { + Assert.assertNotNull(mbh); + for (int i = 0; i < size; i++) { + mbh.get().put((byte) rand.nextInt(255)); + } + person.setNamebuffer(mbh, true); + mbh.destroy(); + } person.setAge((short) rand.nextInt(50)); person.setName(String.format("Name: [%s]", UUID.randomUUID().toString()), true); person.setName(String.format("Name: [%s]", UUID.randomUUID().toString()), true); person.setName(String.format("Name: [%s]", UUID.randomUUID().toString()), true); person.setName(String.format("Name: [%s]", UUID.randomUUID().toString()), true); + //person.setNamebuffer(mbh, true); + +// mbh.destroy(); act.setHandler(keyidx, person.getHandler()); for (int deep = 0; deep < rand.nextInt(100); ++deep) { mother = PersonFactory.create(act); + mbh = act.createBuffer(size); + if (mbh != null) { + Assert.assertNotNull(mbh); + for (int i = 0; i < size; i++) { + mbh.get().put((byte) rand.nextInt(255)); + } + mother.setNamebuffer(mbh, true); + + mbh.destroy(); + } + //mother = PersonFactory.create(act); mother.setAge((short) (50 + rand.nextInt(50))); mother.setName(String.format("Name: [%s]", UUID.randomUUID().toString()), true); +// mother.setNamebuffer(mbh, true); person.setMother(mother, true); person = mother; +// mbh.destroy(); } +// mbh.destroy(); ++keyidx; } } finally { diff --git a/mnemonic-core/src/test/java/org/apache/mnemonic/Person.java b/mnemonic-core/src/test/java/org/apache/mnemonic/Person.java index fa2b564d..49a3d5a7 100644 --- a/mnemonic-core/src/test/java/org/apache/mnemonic/Person.java +++ b/mnemonic-core/src/test/java/org/apache/mnemonic/Person.java @@ -16,7 +16,7 @@ */ package org.apache.mnemonic; - +//import java.nio.ByteBuffer; /** * * @@ -54,6 +54,10 @@ public int compareTo(Person anotherPerson) { if (0 == ret) { ret = getName().compareTo(anotherPerson.getName()); } + if (0 == ret) { + ret = (int) (getNamebuffer().getSize() - anotherPerson.getNamebuffer().getSize()); + } + return ret; } @@ -70,6 +74,13 @@ public int compareTo(Person anotherPerson) { public abstract void setName(String name, boolean destroy) throws OutOfHybridMemory, RetrieveDurableEntityError; + @DurableGetter + public abstract MemBufferHolder getNamebuffer(); + + @DurableSetter + public abstract void setNamebuffer(MemBufferHolder mbh, boolean destroy); + + @DurableGetter public abstract Person getMother() throws RetrieveDurableEntityError; From 6d7c5b10de15b10c03f225138b9f948e2a07658f Mon Sep 17 00:00:00 2001 From: weili1988 Date: Sun, 2 Oct 2016 13:27:31 +0000 Subject: [PATCH 2/3] MNEMONIC97: adding data type to given test case for person class --- .../apache/mnemonic/DurablePersonNGTest.java | 29 +++++++++++++++---- .../test/java/org/apache/mnemonic/Person.java | 25 +++++++++++++--- 2 files changed, 45 insertions(+), 9 deletions(-) diff --git a/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonNGTest.java b/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonNGTest.java index de2cbbac..9ccf1646 100644 --- a/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonNGTest.java +++ b/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonNGTest.java @@ -64,6 +64,7 @@ public boolean reclaim(Long mres, Long sz) { long keyidx = 0; long val; MemBufferHolder mbh; + MemChunkHolder mch; try { while (true) { // if (keyidx >= KEYCAPACITY) break; @@ -87,17 +88,26 @@ public boolean reclaim(Long mres, Long sz) { for (int i = 0; i < size; i++) { mbh.get().put((byte) rand.nextInt(255)); } - person.setNamebuffer(mbh, true); + person.setPicture(mbh, true); mbh.destroy(); } + mch = act.createChunk(size); + if (mch != null) { + Assert.assertNotNull(mch); + /* for (int i = 0; i < size; i++) { + mch.get().put((byte) rand.nextInt(255)); + }*/ + person.setFingerprint(mch, true); + mch.destroy(); + } person.setAge((short) rand.nextInt(50)); person.setName(String.format("Name: [%s]", UUID.randomUUID().toString()), true); person.setName(String.format("Name: [%s]", UUID.randomUUID().toString()), true); person.setName(String.format("Name: [%s]", UUID.randomUUID().toString()), true); person.setName(String.format("Name: [%s]", UUID.randomUUID().toString()), true); - //person.setNamebuffer(mbh, true); -// mbh.destroy(); + + act.setHandler(keyidx, person.getHandler()); @@ -110,15 +120,24 @@ public boolean reclaim(Long mres, Long sz) { for (int i = 0; i < size; i++) { mbh.get().put((byte) rand.nextInt(255)); } - mother.setNamebuffer(mbh, true); + mother.setPicture(mbh, true); mbh.destroy(); } //mother = PersonFactory.create(act); + mch = act.createChunk(size); + if (mch != null) { + Assert.assertNotNull(mch); + /* for (int i = 0; i < size; i++) { + mch.get().put((byte) rand.nextInt(255)); + }*/ + mother.setFingerprint(mch, true); + mch.destroy(); + } mother.setAge((short) (50 + rand.nextInt(50))); mother.setName(String.format("Name: [%s]", UUID.randomUUID().toString()), true); -// mother.setNamebuffer(mbh, true); + person.setMother(mother, true); person = mother; diff --git a/mnemonic-core/src/test/java/org/apache/mnemonic/Person.java b/mnemonic-core/src/test/java/org/apache/mnemonic/Person.java index 49a3d5a7..d599f2ad 100644 --- a/mnemonic-core/src/test/java/org/apache/mnemonic/Person.java +++ b/mnemonic-core/src/test/java/org/apache/mnemonic/Person.java @@ -16,7 +16,9 @@ */ package org.apache.mnemonic; -//import java.nio.ByteBuffer; +import java.nio.ByteBuffer; +import java.util.zip.CRC32; +import java.util.zip.Checksum; /** * * @@ -44,6 +46,13 @@ public void setupGenericInfo(EntityFactoryProxy[] efproxies, DurableType[] gftyp public void testOutput() throws RetrieveDurableEntityError { System.out.printf("Person %s, Age: %d ( %s ) \n", getName(), getAge(), null == getMother() ? "No Recorded Mother" : "Has Recorded Mother"); + ByteBuffer mres = (ByteBuffer) getPicture().get(); + byte bytes[] = new byte[mres.capacity()]; + mres.get(bytes, 0, bytes.length); + Checksum checksum = new CRC32(); + checksum.update(bytes, 0, bytes.length); + long checksumValue = checksum.getValue(); + System.out.println("Size of Picture buffer: " + checksumValue); } public int compareTo(Person anotherPerson) { @@ -55,7 +64,10 @@ public int compareTo(Person anotherPerson) { ret = getName().compareTo(anotherPerson.getName()); } if (0 == ret) { - ret = (int) (getNamebuffer().getSize() - anotherPerson.getNamebuffer().getSize()); + ret = (int) (getPicture().getSize() - anotherPerson.getPicture().getSize()); + } + if (0 == ret) { + ret = (int) (getFingerprint().getSize() - anotherPerson.getFingerprint().getSize()); } return ret; @@ -75,11 +87,16 @@ public abstract void setName(String name, boolean destroy) throws OutOfHybridMemory, RetrieveDurableEntityError; @DurableGetter - public abstract MemBufferHolder getNamebuffer(); + public abstract MemBufferHolder getPicture(); @DurableSetter - public abstract void setNamebuffer(MemBufferHolder mbh, boolean destroy); + public abstract void setPicture(MemBufferHolder mbh, boolean destroy); + @DurableGetter + public abstract MemChunkHolder getFingerprint(); + + @DurableSetter + public abstract void setFingerprint(MemChunkHolder mch, boolean destroy); @DurableGetter public abstract Person getMother() throws RetrieveDurableEntityError; From b08fbd09f741222d2e77c5979657733b5d4dc376 Mon Sep 17 00:00:00 2001 From: weili1988 Date: Mon, 10 Oct 2016 14:24:23 +0000 Subject: [PATCH 3/3] MNEMONIC97: Adding new data feature to test case person --- .../apache/mnemonic/DurablePersonNGTest.java | 19 ++++++++------ .../test/java/org/apache/mnemonic/Person.java | 25 +++++++++++++------ 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonNGTest.java b/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonNGTest.java index 9ccf1646..fe830130 100644 --- a/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonNGTest.java +++ b/mnemonic-core/src/test/java/org/apache/mnemonic/DurablePersonNGTest.java @@ -27,12 +27,13 @@ import java.util.UUID; import org.testng.Assert; import org.testng.annotations.Test; +import sun.misc.Unsafe; public class DurablePersonNGTest { private long cKEYCAPACITY; @Test(expectedExceptions = { OutOfHybridMemory.class }) - public void testGenPeople() throws OutOfHybridMemory, RetrieveDurableEntityError { + public void testGenPeople() throws OutOfHybridMemory, RetrieveDurableEntityError, Exception { Random rand = Utils.createRandom(); NonVolatileMemAllocator act = new NonVolatileMemAllocator(Utils.getNonVolatileMemoryAllocatorService("pmalloc"), 1024 * 1024 * 8, "./pobj_person.dat", true); @@ -89,16 +90,18 @@ public boolean reclaim(Long mres, Long sz) { mbh.get().put((byte) rand.nextInt(255)); } person.setPicture(mbh, true); - mbh.destroy(); +// mbh.destroy(); } + Unsafe unsafe = Utils.getUnsafe(); mch = act.createChunk(size); if (mch != null) { Assert.assertNotNull(mch); - /* for (int i = 0; i < size; i++) { - mch.get().put((byte) rand.nextInt(255)); - }*/ + for (int i = 0; i < mch.getSize(); i++) { + //mch.get().put((byte) rand.nextInt(255)); + unsafe.putByte(mch.get() + i, (byte) rand.nextInt(255)); + } person.setFingerprint(mch, true); - mch.destroy(); +// mch.destroy(); } person.setAge((short) rand.nextInt(50)); person.setName(String.format("Name: [%s]", UUID.randomUUID().toString()), true); @@ -122,7 +125,7 @@ public boolean reclaim(Long mres, Long sz) { } mother.setPicture(mbh, true); - mbh.destroy(); +// mbh.destroy(); } //mother = PersonFactory.create(act); mch = act.createChunk(size); @@ -132,7 +135,7 @@ public boolean reclaim(Long mres, Long sz) { mch.get().put((byte) rand.nextInt(255)); }*/ mother.setFingerprint(mch, true); - mch.destroy(); +// mch.destroy(); } mother.setAge((short) (50 + rand.nextInt(50))); mother.setName(String.format("Name: [%s]", UUID.randomUUID().toString()), true); diff --git a/mnemonic-core/src/test/java/org/apache/mnemonic/Person.java b/mnemonic-core/src/test/java/org/apache/mnemonic/Person.java index d599f2ad..651eb177 100644 --- a/mnemonic-core/src/test/java/org/apache/mnemonic/Person.java +++ b/mnemonic-core/src/test/java/org/apache/mnemonic/Person.java @@ -19,7 +19,7 @@ import java.nio.ByteBuffer; import java.util.zip.CRC32; import java.util.zip.Checksum; -/** +/* * * */ @@ -46,13 +46,22 @@ public void setupGenericInfo(EntityFactoryProxy[] efproxies, DurableType[] gftyp public void testOutput() throws RetrieveDurableEntityError { System.out.printf("Person %s, Age: %d ( %s ) \n", getName(), getAge(), null == getMother() ? "No Recorded Mother" : "Has Recorded Mother"); - ByteBuffer mres = (ByteBuffer) getPicture().get(); - byte bytes[] = new byte[mres.capacity()]; - mres.get(bytes, 0, bytes.length); - Checksum checksum = new CRC32(); - checksum.update(bytes, 0, bytes.length); - long checksumValue = checksum.getValue(); - System.out.println("Size of Picture buffer: " + checksumValue); + if (null != getPicture()) { + System.err.println("getPicture"); + ByteBuffer mres = (ByteBuffer) getPicture().get(); + System.err.println("getPicture().get()"); + byte bytes[] = new byte[mres.capacity()]; + System.err.println("mres.capacity()"); + mres.get(bytes, 0, bytes.length); + System.err.println("mres.get()"); + Checksum checksum = new CRC32(); + System.err.println("CRC32()"); + checksum.update(bytes, 0, bytes.length); + System.err.println("checksum.updates()"); + long checksumValue = checksum.getValue(); + System.err.println("checksum.getValue()"); + System.out.println("CRC code of this person's buffer: \n" + checksumValue); + } } public int compareTo(Person anotherPerson) {