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