You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2011/05/19 01:32:46 UTC

svn commit: r1124465 - in /labs/magma/trunk/database-mongodb/src/test/java/org/apache: magma/database/mongo/ magma/database/mongo/test/domain/ openjpa/ openjpa/persistence/

Author: simoneg
Date: Wed May 18 23:32:45 2011
New Revision: 1124465

URL: http://svn.apache.org/viewvc?rev=1124465&view=rev
Log:
Relevat tests

Added:
    labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/F1Team.java   (with props)
    labs/magma/trunk/database-mongodb/src/test/java/org/apache/openjpa/
    labs/magma/trunk/database-mongodb/src/test/java/org/apache/openjpa/persistence/
    labs/magma/trunk/database-mongodb/src/test/java/org/apache/openjpa/persistence/ElementDependent.java   (with props)
Modified:
    labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/BSONPieces.java
    labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/JpaParsingTest.java
    labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/ReadingTest.java
    labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/TransactionPartWritingTest.java
    labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/Person.java

Modified: labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/BSONPieces.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/BSONPieces.java?rev=1124465&r1=1124464&r2=1124465&view=diff
==============================================================================
--- labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/BSONPieces.java (original)
+++ labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/BSONPieces.java Wed May 18 23:32:45 2011
@@ -1,5 +1,7 @@
 package org.apache.magma.database.mongo;
 
+import org.apache.magma.database.mongo.test.domain.Address;
+import org.apache.magma.database.mongo.test.domain.Car;
 import org.apache.magma.database.mongo.test.domain.City;
 import org.apache.magma.database.mongo.test.domain.Person;
 import org.apache.magma.database.mongo.test.utils.MongoTestCursor;
@@ -15,6 +17,8 @@ public class BSONPieces {
 	public static String simplePersonId = "2296e47076120002";
 	public static String complexPersonId = "2296e47076120012";
 	public static String cityId = "2296e47076130001";
+	public static String carId = "2296e47076130003";
+	public static String addressId = "2296e47076130005";
 	
 	public static DBObject simplePerson = (DBObject) JSON.parse(
 			"{" + 
@@ -68,4 +72,33 @@ public class BSONPieces {
 		assertThat(c.getNotes().get(0), equalTo("Beautiful monuments, horrible taffic jams"));
 	}
 	
+	public static DBObject car = (DBObject) JSON.parse(
+			"{" + 
+			"	\"_id\" : \"" + carId + "\"," + 
+			"   \"_jcl\" : \"Car\"," +
+			"   \"version\": 1," +
+			"	\"name\" : \"Buggy\"," + 
+			"	\"owner\" : \"" + simplePersonId + "\"" + 
+			"}" 
+		);
+	public static void assertCarLoaded(Car c) {
+		assertThat(c, notNullValue());
+		assertThat(c.getId(), equalTo(Long.parseLong(carId, 16)));
+		assertThat(c.getName(), equalTo("Buggy"));
+	}
+	
+	public static DBObject address = (DBObject) JSON.parse(
+			"{" + 
+			"	\"_id\" : \"" + addressId + "\"," + 
+			"   \"_jcl\" : \"Address\"," +
+			"   \"version\": 1," +
+			"	\"address\" : \"Via Tiburtina\"," + 
+			"}" 
+		);
+	public static void assertAddressLoaded(Address a) {
+		assertThat(a, notNullValue());
+		assertThat(a.getId(), equalTo(Long.parseLong(addressId, 16)));
+		assertThat(a.getAddress(), equalTo("Via Tiburtina"));
+	}
+	
 }

Modified: labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/JpaParsingTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/JpaParsingTest.java?rev=1124465&r1=1124464&r2=1124465&view=diff
==============================================================================
--- labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/JpaParsingTest.java (original)
+++ labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/JpaParsingTest.java Wed May 18 23:32:45 2011
@@ -53,6 +53,14 @@ public class JpaParsingTest {
 		assertThat(friendsp.getJpaCascadeType()[0], equalTo(CascadeType.PERSIST));
 		assertThat(friendsp.isSubEntity(), equalTo(false));
 		assertThat(friendsp.isMongoPersisted(), equalTo(true));
+
+		PropertyInfo carp = bd.getProperty("car");
+		assertThat(carp, notNullValue());
+		assertThat(carp.getJpaCascadeType(), notNullValue());
+		assertThat(carp.getJpaCascadeType()[0], equalTo(CascadeType.PERSIST));
+		assertThat(carp.isSubEntity(), equalTo(false));
+		assertThat(carp.isMongoPersisted(), equalTo(true));
+		assertThat(carp.isJpaDeleteOrphans(), equalTo(true));
 		
 		List<PropertyInfo> basic = bd.getJpaBasicFields();
 		assertTrue(basic.contains(namep));

Modified: labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/ReadingTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/ReadingTest.java?rev=1124465&r1=1124464&r2=1124465&view=diff
==============================================================================
--- labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/ReadingTest.java (original)
+++ labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/ReadingTest.java Wed May 18 23:32:45 2011
@@ -3,9 +3,11 @@ package org.apache.magma.database.mongo;
 import static org.hamcrest.CoreMatchers.*;
 import static org.junit.Assert.*;
 
+import java.util.Collection;
 import java.util.List;
 import java.util.Set;
 
+import org.apache.magma.database.mongo.test.domain.Car;
 import org.apache.magma.database.mongo.test.domain.ImportantPerson;
 import org.apache.magma.database.mongo.test.domain.Person;
 import org.apache.magma.database.mongo.test.domain.Person.PersonType;
@@ -58,6 +60,9 @@ public class ReadingTest extends MongoDb
 		Set<Person> friends = p.getFriends();
 		
 		mdb.checkAll();
+		assertThat(p.isLoaded("friends"), equalTo(true));
+		assertThat(p.getLoaded("friends"), notNullValue());
+		assertThat(p.getLoaded("friends").size(), equalTo(1));
 		assertThat(friends, notNullValue());
 		assertThat(friends.size(), equalTo(1));
 		Person friend = friends.iterator().next();
@@ -65,6 +70,7 @@ public class ReadingTest extends MongoDb
 		assertThat(friend.isDirty(), equalTo(false));
 		assertThat(friend.isFromDb(), equalTo(true));
 		assertThat(friend.isOnDb(), equalTo(true));
+		assertThat(p.getLoaded("friends").iterator().next(), sameInstance((MongoEntity)friend));
 	}
 	
 	@Test
@@ -165,12 +171,51 @@ public class ReadingTest extends MongoDb
 		
 	}
 	
+	@Test
+	public void lazyOne() throws Exception {
+		DBObject cloneDbo = cloneDbo(BSONPieces.simplePerson);
+		cloneDbo.put("car", BSONPieces.carId);
+		
+		mdb.getCollection("test", "person")
+			.expectFindOne(dbObject("{'_id':'" + BSONPieces.simplePersonId + "'}"), cloneDbo);
+		
+		Person p = db.load(Person.class, BSONPieces.simplePersonId);
+		
+		mdb.checkAll();
+		BSONPieces.assertSimplePersonLoaded(p);
+
+		mdb.getCollection("test", "car")
+			.expectFindOne(dbObject("{'_id':'" + BSONPieces.carId + "'}"), BSONPieces.car);
+		
+		Car car = p.getCar();
+		
+		mdb.checkAll();
+		BSONPieces.assertCarLoaded(car);
+		
+		Collection<MongoEntity> loaded = p.getLoaded("car");
+		assertThat(loaded, notNullValue());
+		assertThat(loaded.size(), equalTo(1));
+		assertThat(loaded.iterator().next(), sameInstance((MongoEntity)car));
+		
+		Person p2 = car.getOwner();
+		mdb.checkAll();
+		assertThat(p2,notNullValue());
+		assertThat(p2,sameInstance(p));
+		
+		Car c1 = new Car();
+		c1.setName("BMW");
+		
+		p.setCar(c1);
+		
+		loaded = p.getLoaded("car");
+		assertThat(loaded, notNullValue());
+		assertThat(loaded.size(), equalTo(1));
+		assertThat(loaded.iterator().next(), sameInstance((MongoEntity)car));
+	}
 	
 	// TODO test map loading
 	
 	// TODO test lazy map loading
 	
-	// TODO test reading of lazy one-to-one
-	
 	
 }

Modified: labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/TransactionPartWritingTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/TransactionPartWritingTest.java?rev=1124465&r1=1124464&r2=1124465&view=diff
==============================================================================
--- labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/TransactionPartWritingTest.java (original)
+++ labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/TransactionPartWritingTest.java Wed May 18 23:32:45 2011
@@ -4,12 +4,18 @@ import static org.hamcrest.CoreMatchers.
 import static org.junit.Assert.*;
 import static org.apache.magma.database.mongo.test.utils.DBObjectMatcher.*;
 
+import java.util.List;
+
 import org.apache.magma.database.mongo.test.domain.Address;
 import org.apache.magma.database.mongo.test.domain.Car;
+import org.apache.magma.database.mongo.test.domain.F1Team;
 import org.apache.magma.database.mongo.test.domain.Person;
 import org.apache.magma.database.mongo.test.domain.Person.PersonType;
 import org.junit.Test;
 
+import com.mongodb.BasicDBList;
+import com.mongodb.DBObject;
+
 
 public class TransactionPartWritingTest extends MongoDbTestBase {
 
@@ -37,8 +43,6 @@ public class TransactionPartWritingTest 
 		
 	}
 	
-	// TODO test and implement exception cases
-	
 	@Test
 	public void writeUpdate() throws Exception {
 		
@@ -102,7 +106,7 @@ public class TransactionPartWritingTest 
 		db.commit();
 		
 		mdb.checkAll();
-
+		
 	}
 	
 	@Test
@@ -181,4 +185,112 @@ public class TransactionPartWritingTest 
 		
 	}
 	
+	@Test
+	public void updateOld() throws Exception {
+		DBObject pclone = cloneDbo(BSONPieces.simplePerson);
+		BasicDBList addresses = new BasicDBList();
+		addresses.add(BSONPieces.addressId);
+		pclone.put("addresses", addresses);
+		
+		mdb.getCollection("test", "person")
+			.expectFindOne(dbObject("{'_id':'" + BSONPieces.simplePersonId + "'}"), pclone);
+		mdb.getCollection("test", "address")
+			.expectFind(dbObject("{'_id':{'$in':['" + BSONPieces.addressId + "']}}"), cloneDbo(BSONPieces.address));
+		
+		Person p = db.load(Person.class, BSONPieces.simplePersonId);
+		List<Address> paddr = p.getAddresses();
+		
+		mdb.checkAll();
+		BSONPieces.assertSimplePersonLoaded(p);
+		assertThat(paddr, notNullValue());
+		assertThat(paddr.size(), equalTo(1));
+		Address olda = paddr.iterator().next();
+		BSONPieces.assertAddressLoaded(olda);
+
+		olda.setAddress("Altra via");
+		p.getAddresses().clear();
+		
+		db.save(p);
+
+		mdb.checkAll();
+		
+		mdb.getCollection("test", "person")
+			.expectUpdate(
+				dbObject("{'_id':'" + BSONPieces.simplePersonId + "', 'version' : 1}"),
+				dbObject("{'$push' : {'__transactions': {'__transactionId' : '" + tr.getId() + "', 'addresses' : [] } }, '$set' : {'version': 2}}")
+			);
+		mdb.getCollection("test", "address")
+			.expectUpdate(
+				dbObject("{'_id':'" + BSONPieces.addressId + "', 'version' : 1}"),
+				dbObject("{'$push' : {'__transactions': {'__transactionId' : '" + tr.getId() + "', 'address' : 'Altra via' } }, '$set' : {'version': 2}}")
+			);
+		
+		mdb.getCollection("test", "transactions")
+			.clearExpectations()
+			.expectInsert(dbObject("{'_id' : '" + tr.getId() + "', 'state':'R', 'entities' : {'person' : ['" + Long.toHexString(p.getId()) + "'], 'address' : ['" + BSONPieces.addressId + "']} }"))
+			.expectUpdate(dbObject("{'_id' : '" + tr.getId() + "'}"),dbObject("{'$set': {'state':'D'}}"));
+	
+		
+		db.commit();
+		mdb.checkAll();
+	}
+	
+	@Test
+	public void selfGeneratedPersisting() throws Exception {
+		F1Team f1t = new F1Team();
+		
+		Car c1 = f1t.hiddenGetCar();
+		Car c2 = f1t.getCar();
+		
+		assertThat(c2, notNullValue());
+		assertThat(c2, sameInstance(c1));
+		
+		db.save(f1t);
+
+		mdb.checkAll();
+		
+		mdb.getCollection("test", "f1team")
+			.expectInsert(dbObject("{'version': 1, '__transactions': [{'__transactionId' : '" + tr.getId() + "', 'car':'" + Long.toHexString(c1.getId()) + "','_jcl':'F1Team'}]}"));
+		mdb.getCollection("test", "car")
+			.expectInsert(dbObject("{'version': 1, '__transactions': [{'__transactionId' : '" + tr.getId() + "', '_jcl':'Car'}]}"));
+	
+		mdb.getCollection("test", "transactions")
+			.clearExpectations()
+			.expectInsert(dbObject("{'_id' : '" + tr.getId() + "', 'state':'R', 'entities' : {'f1team' : ['" + Long.toHexString(f1t.getId()) + "'], 'car': ['" + Long.toHexString(c2.getId()) + "']} }"))
+			.expectUpdate(dbObject("{'_id' : '" + tr.getId() + "'}"),dbObject("{'$set': {'state':'D'}}"));
+			
+		
+		db.commit();
+		mdb.checkAll();
+	}
+
+	@Test
+	public void constructorGeneratedPersisting() throws Exception {
+		Car c1 = new Car();
+		F1Team f1t = new F1Team(c1);
+		
+		db.save(f1t);
+
+		mdb.checkAll();
+		
+		mdb.getCollection("test", "f1team")
+			.expectInsert(dbObject("{'version': 1, '__transactions': [{'__transactionId' : '" + tr.getId() + "', 'car':'" + Long.toHexString(c1.getId()) + "','_jcl':'F1Team'}]}"));
+		mdb.getCollection("test", "car")
+			.expectInsert(dbObject("{'version': 1, '__transactions': [{'__transactionId' : '" + tr.getId() + "', '_jcl':'Car'}]}"));
+	
+		mdb.getCollection("test", "transactions")
+			.clearExpectations()
+			.expectInsert(dbObject("{'_id' : '" + tr.getId() + "', 'state':'R', 'entities' : {'f1team' : ['" + Long.toHexString(f1t.getId()) + "'], 'car': ['" + Long.toHexString(c1.getId()) + "']} }"))
+			.expectUpdate(dbObject("{'_id' : '" + tr.getId() + "'}"),dbObject("{'$set': {'state':'D'}}"));
+			
+		
+		db.commit();
+		mdb.checkAll();
+	}
+	
+	// TODO test delete orphans
+	
+	// TODO test and implement exception cases
+	
+	
 }

Added: labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/F1Team.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/F1Team.java?rev=1124465&view=auto
==============================================================================
--- labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/F1Team.java (added)
+++ labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/F1Team.java Wed May 18 23:32:45 2011
@@ -0,0 +1,33 @@
+package org.apache.magma.database.mongo.test.domain;
+
+import javax.persistence.Entity;
+import javax.persistence.OneToOne;
+
+import org.apache.magma.beans.MagmaBean;
+
+@Entity
+@MagmaBean
+public class F1Team {
+
+	private Car car = new Car();
+	
+	public F1Team() {}
+	
+	public F1Team(Car c) {
+		this.car = c;
+	}
+
+	@OneToOne
+	public Car getCar() {
+		return car;
+	}
+	public void setCar(Car car) {
+		this.car = car;
+	}
+	
+	public Car hiddenGetCar() {
+		return car;
+	}
+	
+	
+}

Propchange: labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/F1Team.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/Person.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/Person.java?rev=1124465&r1=1124464&r2=1124465&view=diff
==============================================================================
--- labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/Person.java (original)
+++ labs/magma/trunk/database-mongodb/src/test/java/org/apache/magma/database/mongo/test/domain/Person.java Wed May 18 23:32:45 2011
@@ -14,6 +14,7 @@ import javax.persistence.OneToOne;
 import javax.persistence.Transient;
 
 import org.apache.magma.database.LogicallyNamed;
+import org.apache.openjpa.persistence.ElementDependent;
 
 @Entity
 public class Person implements LogicallyNamed {
@@ -91,6 +92,7 @@ public class Person implements Logically
 	}
 	
 	@OneToOne(cascade={CascadeType.PERSIST, CascadeType.REMOVE})
+	@ElementDependent
 	public Car getCar() {
 		return car;
 	}

Added: labs/magma/trunk/database-mongodb/src/test/java/org/apache/openjpa/persistence/ElementDependent.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/database-mongodb/src/test/java/org/apache/openjpa/persistence/ElementDependent.java?rev=1124465&view=auto
==============================================================================
--- labs/magma/trunk/database-mongodb/src/test/java/org/apache/openjpa/persistence/ElementDependent.java (added)
+++ labs/magma/trunk/database-mongodb/src/test/java/org/apache/openjpa/persistence/ElementDependent.java Wed May 18 23:32:45 2011
@@ -0,0 +1,12 @@
+package org.apache.openjpa.persistence;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.METHOD)
+public @interface ElementDependent {
+
+}

Propchange: labs/magma/trunk/database-mongodb/src/test/java/org/apache/openjpa/persistence/ElementDependent.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org