You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by cu...@apache.org on 2012/10/03 23:35:32 UTC

svn commit: r1393779 - in /openjpa/trunk/openjpa-integration/daytrader/src/test: java/org/apache/openjpa/integration/daytrader/ resources/META-INF/

Author: curtisr7
Date: Wed Oct  3 21:35:31 2012
New Revision: 1393779

URL: http://svn.apache.org/viewvc?rev=1393779&view=rev
Log:
Removed OpenJPA references from daytrader-integration module and added a EM pool-ish feature to daytrader-integrat test.

Modified:
    openjpa/trunk/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TestDaytrader.java
    openjpa/trunk/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeAction.java
    openjpa/trunk/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeJPADirect.java
    openjpa/trunk/openjpa-integration/daytrader/src/test/resources/META-INF/persistence.xml

Modified: openjpa/trunk/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TestDaytrader.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TestDaytrader.java?rev=1393779&r1=1393778&r2=1393779&view=diff
==============================================================================
--- openjpa/trunk/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TestDaytrader.java (original)
+++ openjpa/trunk/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TestDaytrader.java Wed Oct  3 21:35:31 2012
@@ -18,68 +18,60 @@
  */
 package org.apache.openjpa.integration.daytrader;
 
-import java.math.BigDecimal;
-import java.sql.Timestamp;
 import java.util.HashMap;
 import java.util.Map;
 
 import javax.persistence.EntityManager;
-import javax.persistence.Query;
-
-// import org.apache.geronimo.samples.daytrader.beans.AccountDataBean;
-// import org.apache.geronimo.samples.daytrader.beans.AccountProfileDataBean;
-// import org.apache.geronimo.samples.daytrader.beans.HoldingDataBean;
-// import org.apache.geronimo.samples.daytrader.beans.OrderDataBean;
-// import org.apache.geronimo.samples.daytrader.beans.QuoteDataBean;
-// import org.apache.geronimo.samples.daytrader.core.FinancialUtils;
-// import org.apache.geronimo.samples.daytrader.util.TradeConfig;
-// import org.apache.geronimo.samples.daytrader.web.TradeBuildDB;
+import javax.persistence.EntityManagerFactory;
+import javax.persistence.Persistence;
 
 import org.apache.openjpa.lib.log.Log;
-import org.apache.openjpa.persistence.OpenJPAEntityManagerFactorySPI;
+import org.apache.openjpa.lib.log.LogFactoryImpl;
 import org.apache.openjpa.persistence.test.AbstractPersistenceTestCase;
-//import org.apache.openjpa.persistence.test.SingleEMFTestCase;
 
 /**
- * Uses a modified version of Apache Geronimo Daytrader to stress test OpenJPA.
+ * Uses a modified version of Apache Geronimo Daytrader to stress test JPA.
  *
  * @version $Rev$ $Date$
  */
 public class TestDaytrader extends AbstractPersistenceTestCase {
-    private static final int TEST_USERS = 50;
-    OpenJPAEntityManagerFactorySPI emf = null;
+
+    private static final int TEST_USERS = 500;
+    EntityManagerFactory emf = null;
+
     Log log = null;
     private TradeAction trade = null;
     
     @Override
     public void setUp() {
-        /*
-        super.setUp(DROP_TABLES, AccountDataBean.class,
-            AccountProfileDataBean.class, HoldingDataBean.class,
-            OrderDataBean.class, QuoteDataBean.class);
-        if (emf == null) {
-            emf = (OpenJPAEntityManagerFactorySPI)OpenJPAPersistence.createEntityManagerFactory(
-                "daytrader", "persistence.xml");
-            assertNotNull(emf);
-        }
-        */
+        // Mimic EM pooling
+        boolean poolEm = true;
+        
         Map<String, Object> map = new HashMap<String, Object>();
-        map.put("openjpa.DynamicEnhancementAgent", "false");
         map.put("openjpa.jdbc.SynchronizeMappings", "buildSchema(ForeignKeys=true,"
             + "SchemaAction='add,deleteTableContents')");
-        emf = createNamedEMF("daytrader", map);
+        emf = createEmf("daytrader", map);
         assertNotNull(emf);
-        log = emf.getConfiguration().getLog("test");
+        EntityManager em = emf.createEntityManager();
+        em.getTransaction().begin();
+        em.createQuery("DELETE FROM orderejb").executeUpdate();
+        em.createQuery("DELETE FROM quoteejb").executeUpdate();
+        em.createQuery("DELETE FROM accountejb").executeUpdate();
+        em.createQuery("DELETE FROM accountprofileejb").executeUpdate();
+        em.getTransaction().commit();
+        
+        
+        log = new LogFactoryImpl().getLog("test");
         TradeConfig.setRunTimeMode(TradeConfig.JPA);
         TradeConfig.setLog(log);
-        trade = new TradeAction(emf.getConfiguration().getLog("test"), emf);
+        trade = new TradeAction(log, emf, poolEm);
     }
     
     @Override
     public void tearDown() throws Exception {
         trade = null;
         log = null;
-        closeEMF(emf);
+        emf.close();
         emf = null;
         super.tearDown();
     }
@@ -109,5 +101,18 @@ public class TestDaytrader extends Abstr
         }
         log.info("TestDaytrader.testTrade() completed");
     }
+    
+    private EntityManagerFactory createEmf(final String pu, Object... props) {
+        Map<String, Object> map = getPropertiesMap(props);
+        EntityManagerFactory emf = null;
+        Map<Object, Object> config = new HashMap<Object, Object>(System.getProperties());
+        config.putAll(map);
+        emf = Persistence.createEntityManagerFactory(pu, config);
+        if (emf == null) {
+            throw new NullPointerException("Expected an entity manager factory " + "for the persistence unit named: \""
+                + pu + "\"");
+        }
+        return emf;
+    }
 
 }

Modified: openjpa/trunk/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeAction.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeAction.java?rev=1393779&r1=1393778&r2=1393779&view=diff
==============================================================================
--- openjpa/trunk/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeAction.java (original)
+++ openjpa/trunk/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeAction.java Wed Oct  3 21:35:31 2012
@@ -38,8 +38,8 @@ import org.apache.openjpa.lib.log.Log;
  */
 public class TradeAction extends TradeJPADirect {
 
-    public TradeAction(Log log, EntityManagerFactory emf) {
-        super(log, emf);
+    public TradeAction(Log log, EntityManagerFactory emf, boolean poolEm) {
+        super(log, emf, poolEm);
     }
 
     /**

Modified: openjpa/trunk/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeJPADirect.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeJPADirect.java?rev=1393779&r1=1393778&r2=1393779&view=diff
==============================================================================
--- openjpa/trunk/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeJPADirect.java (original)
+++ openjpa/trunk/openjpa-integration/daytrader/src/test/java/org/apache/openjpa/integration/daytrader/TradeJPADirect.java Wed Oct  3 21:35:31 2012
@@ -68,12 +68,34 @@ public class TradeJPADirect {
     private static boolean initialized = false;
 
     protected static Log log = null;
+    boolean _poolEm = true;
+    
+    EntityManager _em;
+    
+    public EntityManager getEm(EntityManagerFactory emf) {
+        if (_poolEm) {
+            if (_em == null)
+                _em = emf.createEntityManager();
+            return _em;
+        }
+        return emf.createEntityManager();
+    }
+    
+    public void putEm(EntityManager em){
+        if(_poolEm)
+            em.clear();
+        else{
+            if(em.isOpen())
+                em.close();
+        }
+    }
     
 
     // constructor for OpenJPA junit tests
-    public TradeJPADirect(Log log, EntityManagerFactory emf) {
+    public TradeJPADirect(Log log, EntityManagerFactory emf, boolean poolEm) {
         this.log = log;
         this.emf = emf;
+        _poolEm = poolEm;
         if (initialized == false)
             init();
     }
@@ -81,14 +103,8 @@ public class TradeJPADirect {
     public static synchronized void init() {
         if (initialized)
             return;
-        //if (Log.isTraceEnabled())
-        //    Log.trace("TradeJPADirect:init -- *** initializing");
 
         TradeConfig.setPublishQuotePriceChange(false);
-
-        //if (Log.isTraceEnabled())
-        //    Log.trace("TradeJPADirect:init -- +++ initialized");
-
         initialized = true;
     }
 
@@ -110,7 +126,7 @@ public class TradeJPADirect {
         /*
          * Creating entiManager
          */
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
 
         try {
             if (log.isTraceEnabled())
@@ -162,7 +178,7 @@ public class TradeJPADirect {
             log.error("TradeJPADirect:getMarketSummary", e);
             throw new RuntimeException("TradeJPADirect:getMarketSummary -- error ", e);
         } finally {
-            entityManager.close();
+            putEm(entityManager);
         }
 
         return marketSummaryData;
@@ -174,7 +190,7 @@ public class TradeJPADirect {
         /*
          * creating entitymanager
          */
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
 
         try {
             if (log.isTraceEnabled())
@@ -214,7 +230,7 @@ public class TradeJPADirect {
             throw new RuntimeException(e);
         } finally {
             if (entityManager != null) {
-                entityManager.close();
+                putEm(entityManager);
                 entityManager = null;
             }
         }
@@ -226,7 +242,7 @@ public class TradeJPADirect {
 
     public OrderDataBean sell(String userID, Integer holdingID,
                               int orderProcessingMode) {
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
 
         OrderDataBean order = null;
         BigDecimal total;
@@ -289,8 +305,7 @@ public class TradeJPADirect {
             throw new RuntimeException("TradeJPADirect:sell(" + userID + "," + holdingID + ")", e);
         } finally {
             if (entityManager != null) {
-                entityManager.close();
-                entityManager = null;
+                putEm(entityManager);
             }
         }
 
@@ -308,7 +323,7 @@ public class TradeJPADirect {
 
     public OrderDataBean completeOrder(Integer orderID, boolean twoPhase)
     throws Exception {
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
         OrderDataBean order = null;
 
         if (log.isTraceEnabled())
@@ -391,8 +406,7 @@ public class TradeJPADirect {
                 entityManager.getTransaction().rollback();
         } finally {
             if (entityManager != null) {
-                entityManager.close();
-                entityManager = null;
+                putEm(entityManager);
             }
         }
 
@@ -400,7 +414,7 @@ public class TradeJPADirect {
     }
 
     public void cancelOrder(Integer orderID, boolean twoPhase) {
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
 
         if (log.isTraceEnabled())
             log.trace("TradeJPADirect:cancelOrder - orderId=" + orderID + " twoPhase=" + twoPhase);
@@ -417,7 +431,7 @@ public class TradeJPADirect {
         catch (Exception e) {
             entityManager.getTransaction().rollback();
         } finally {
-            entityManager.close();
+            putEm(entityManager);
         }
     }
 
@@ -429,11 +443,11 @@ public class TradeJPADirect {
     public Collection<OrderDataBean> getOrders(String userID) {
         if (log.isTraceEnabled())
             log.trace("TradeJPADirect:getOrders - userID=" + userID);
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
         AccountProfileDataBean profile = entityManager.find(
                                                            AccountProfileDataBean.class, userID);
         AccountDataBean account = profile.getAccount();
-        entityManager.close();
+        putEm(entityManager);
         return account.getOrders();
     }
 
@@ -441,7 +455,7 @@ public class TradeJPADirect {
 
         if (log.isTraceEnabled())
             log.trace("TradeJPADirect:getClosedOrders - userID=" + userID);
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
 
         try {
 
@@ -480,8 +494,7 @@ public class TradeJPADirect {
                 }
                 catch (Exception e) {
                     entityManager.getTransaction().rollback();
-                    entityManager.close();
-                    entityManager = null;
+                    putEm(entityManager);
                 }
             }
             else if (TradeConfig.jpaLayer == TradeConfig.HIBERNATE) {
@@ -513,27 +526,24 @@ public class TradeJPADirect {
                 updateStatus.executeUpdate();
             }
             if (entityManager != null) {
-                entityManager.close();
-                entityManager = null;
+                putEm(entityManager);
             }
             return results;
         } catch (Exception e) {
             log.error("TradeJPADirect.getClosedOrders", e);
-            entityManager.close();
-            entityManager = null;
+            putEm(entityManager);
             throw new RuntimeException("TradeJPADirect.getClosedOrders - error", e);
 
         } finally {
             if (entityManager != null) {
-                entityManager.close();
-                entityManager = null;
+                putEm(entityManager);
             }
         }
     }
 
     public QuoteDataBean createQuote(String symbol, String companyName,
                                      BigDecimal price) {
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
         QuoteDataBean quote = null;
         try {
             quote = new QuoteDataBean(symbol, companyName, 0, price, price, price, price, 0);
@@ -554,8 +564,7 @@ public class TradeJPADirect {
             throw new RuntimeException(e);
         } finally {
             if (entityManager != null) {
-                entityManager.close();
-                entityManager = null;
+                putEm(entityManager);
             }
         }
 
@@ -564,13 +573,12 @@ public class TradeJPADirect {
     public QuoteDataBean getQuote(String symbol) {
         if (log.isTraceEnabled())
             log.trace("TradeJPADirect:getQuote - symbol=" + symbol);
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
 
         QuoteDataBean qdb = entityManager.find(QuoteDataBean.class, symbol);
 
         if (entityManager != null) {
-            entityManager.close();
-            entityManager = null;
+            putEm(entityManager);
         }
         return qdb;
     }
@@ -578,13 +586,12 @@ public class TradeJPADirect {
     public Collection<QuoteDataBean> getAllQuotes() {
         if (log.isTraceEnabled())
             log.trace("TradeJPADirect:getAllQuotes");
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
 
         Query query = entityManager.createNamedQuery("quoteejb.allQuotes");
 
         if (entityManager != null) {
-            entityManager.close();
-            entityManager = null;
+            putEm(entityManager);
 
         }
         return query.getResultList();
@@ -603,7 +610,7 @@ public class TradeJPADirect {
          * DB2Dialect and MySQL5Dialect do not work with annotated query
          * "quoteejb.quoteForUpdate" defined in QuoteDatabean
          */
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
         QuoteDataBean quote = null;
         if (TradeConfig.jpaLayer == TradeConfig.HIBERNATE) {
             quote = entityManager.find(QuoteDataBean.class, symbol);
@@ -641,8 +648,7 @@ public class TradeJPADirect {
             entityManager.getTransaction().rollback();
         } finally {
             if (entityManager != null) {
-                entityManager.close();
-                entityManager = null;
+                putEm(entityManager);
             }
         }
 
@@ -654,7 +660,7 @@ public class TradeJPADirect {
     public Collection<HoldingDataBean> getHoldings(String userID) {
         if (log.isTraceEnabled())
             log.trace("TradeJPADirect:getHoldings - userID=" + userID);
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
         /*
          * managed transaction
          */
@@ -673,8 +679,7 @@ public class TradeJPADirect {
             ((HoldingDataBean) itr.next()).getQuote();
         }
 
-        entityManager.close();
-        entityManager = null;
+        putEm(entityManager);
         return holdings;
     }
 
@@ -682,9 +687,9 @@ public class TradeJPADirect {
         if (log.isTraceEnabled())
             log.trace("TradeJPADirect:getHolding - holdingID=" + holdingID);
         HoldingDataBean holding;
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
         holding = entityManager.find(HoldingDataBean.class, holdingID);
-        entityManager.close();
+        putEm(entityManager);
         return holding;
     }
 
@@ -692,7 +697,7 @@ public class TradeJPADirect {
         if (log.isTraceEnabled())
             log.trace("TradeJPADirect:getAccountData - userID=" + userID);
 
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
 
         AccountProfileDataBean profile = entityManager.find(AccountProfileDataBean.class, userID);
         /*
@@ -703,8 +708,7 @@ public class TradeJPADirect {
 
         // Added to populate transient field for account
         account.setProfileID(profile.getUserID());
-        entityManager.close();
-        entityManager = null;
+        putEm(entityManager);
 
         return account;
     }
@@ -712,17 +716,16 @@ public class TradeJPADirect {
     public AccountProfileDataBean getAccountProfileData(String userID) {
         if (log.isTraceEnabled())
             log.trace("TradeJPADirect:getProfileData - userID=" + userID);
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
 
         AccountProfileDataBean apb = entityManager.find(AccountProfileDataBean.class, userID);
-        entityManager.close();
-        entityManager = null;
+        putEm(entityManager);
         return apb;
     }
 
     public AccountProfileDataBean updateAccountProfile(AccountProfileDataBean profileData) {
 
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
 
         if (log.isTraceEnabled())
             log.trace("TradeJPADirect:updateAccountProfileData - profileData=" + profileData);
@@ -758,7 +761,7 @@ public class TradeJPADirect {
         catch (Exception e) {
             entityManager.getTransaction().rollback();
         } finally {
-            entityManager.close();
+            putEm(entityManager);
         }
 
         return temp;
@@ -767,7 +770,7 @@ public class TradeJPADirect {
     public AccountDataBean login(String userID, String password)
     throws Exception {
 
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
 
         AccountProfileDataBean profile = entityManager.find(AccountProfileDataBean.class, userID);
 
@@ -789,14 +792,14 @@ public class TradeJPADirect {
         entityManager.getTransaction().commit();
         if (log.isTraceEnabled())
             log.trace("TradeJPADirect:login(" + userID + "," + password + ") success" + account);
-        entityManager.close();
+        putEm(entityManager);
         return account;
     }
 
     public void logout(String userID) {
         if (log.isTraceEnabled())
             log.trace("TradeJPADirect:logout - userID=" + userID);
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
 
         AccountProfileDataBean profile = entityManager.find(AccountProfileDataBean.class, userID);
         AccountDataBean account = profile.getAccount();
@@ -812,7 +815,7 @@ public class TradeJPADirect {
         catch (Exception e) {
             entityManager.getTransaction().rollback();
         } finally {
-            entityManager.close();
+            putEm(entityManager);
         }
 
         if (log.isTraceEnabled())
@@ -824,7 +827,7 @@ public class TradeJPADirect {
                                     BigDecimal openBalance) {
         AccountDataBean account = null;
         AccountProfileDataBean profile = null;
-        EntityManager entityManager = emf.createEntityManager();
+        EntityManager entityManager = getEm(emf);
 
         if (log.isTraceEnabled()) {
             //Log.trace("TradeJPADirect:register", userID, password, fullname, address, email, creditcard, openBalance);
@@ -857,7 +860,7 @@ public class TradeJPADirect {
                 log.error("Failed to create account and profile for userId=" + userID, e);
                 entityManager.getTransaction().rollback();
             } finally {
-                entityManager.close();
+                putEm(entityManager);
             }
 
         }

Modified: openjpa/trunk/openjpa-integration/daytrader/src/test/resources/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-integration/daytrader/src/test/resources/META-INF/persistence.xml?rev=1393779&r1=1393778&r2=1393779&view=diff
==============================================================================
--- openjpa/trunk/openjpa-integration/daytrader/src/test/resources/META-INF/persistence.xml (original)
+++ openjpa/trunk/openjpa-integration/daytrader/src/test/resources/META-INF/persistence.xml Wed Oct  3 21:35:31 2012
@@ -21,7 +21,6 @@
 
     <persistence-unit name="daytrader">
         <description>PU for Daytrader tests</description>
-        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
         <class>org.apache.openjpa.integration.daytrader.AccountDataBean</class>
         <class>org.apache.openjpa.integration.daytrader.AccountProfileDataBean</class>
         <class>org.apache.openjpa.integration.daytrader.HoldingDataBean</class>
@@ -34,15 +33,6 @@
             <property name="openjpa.BrokerImpl" value="non-finalizing" />
             <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
             <property name="openjpa.Sequence" value="table(Table=OPENJPASEQ, Increment=100)"/>
-            <!--
-            <property name="openjpa.jdbc.UpdateManager" value="org.apache.openjpa.jdbc.kernel.OperationOrderUpdateManager(batchLimit=0)" /> 
-            <property name="openjpa.jdbc.DBDictionary" value="derby"/>
-            <property name="openjpa.ConnectionDriverName" value="org.apache.commons.dbcp.BasicDataSource"/>
-            <property name="openjpa.ConnectionDriverName" value="org.apache.derby.jdbc.EmbeddedDriver"/>
-            <property name="openjpa.ConnectionURL" value="jdbc:derby:tradedb;create=true"/>
-            <property name="openjpa.ConnectionProperties" value="DriverClassName=org.apache.derby.jdbc.EmbeddedDriver,Url=jdbc:derby:tradedb;create=true,MaxActive=50,MaxWait=10000,Username=,Password="/>
-             <property name="openjpa.jdbc.MappingDefaults" value="ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict"/>
-            -->
         </properties>
     </persistence-unit>
 </persistence>