[hibernate-commits] Hibernate SVN: r14370 - in core/trunk/cache-jbosscache2/src/test/java/org/hibernate/test/cache/jbc2/functional: bulk and 1 other directory.

hibernate-commits at lists.jboss.org hibernate-commits at lists.jboss.org
Wed Feb 27 12:51:33 EST 2008


Author: bstansberry at jboss.com
Date: 2008-02-27 12:51:32 -0500 (Wed, 27 Feb 2008)
New Revision: 14370

Added:
   core/trunk/cache-jbosscache2/src/test/java/org/hibernate/test/cache/jbc2/functional/bulk/
   core/trunk/cache-jbosscache2/src/test/java/org/hibernate/test/cache/jbc2/functional/bulk/OptimisticBulkOperationsTest.java
   core/trunk/cache-jbosscache2/src/test/java/org/hibernate/test/cache/jbc2/functional/bulk/PessimisticBulkOperationsTest.java
Log:
Add tests of bulk deletes/updates

Added: core/trunk/cache-jbosscache2/src/test/java/org/hibernate/test/cache/jbc2/functional/bulk/OptimisticBulkOperationsTest.java
===================================================================
--- core/trunk/cache-jbosscache2/src/test/java/org/hibernate/test/cache/jbc2/functional/bulk/OptimisticBulkOperationsTest.java	                        (rev 0)
+++ core/trunk/cache-jbosscache2/src/test/java/org/hibernate/test/cache/jbc2/functional/bulk/OptimisticBulkOperationsTest.java	2008-02-27 17:51:32 UTC (rev 14370)
@@ -0,0 +1,57 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.hibernate.test.cache.jbc2.functional.bulk;
+
+
+/**
+ * Optimistic version of BulkOperationsUnitTestCase.
+ * 
+ * @author Brian Stansberry
+ *
+ */
+public class OptimisticBulkOperationsTest 
+   extends PessimisticBulkOperationsTest
+{
+
+   /**
+    * @param name
+    */
+   public OptimisticBulkOperationsTest(String name)
+   {
+      super(name);
+   }
+
+   @Override
+   protected String getEntityCacheConfigName()
+   {
+      return "optimistic-entity";
+   }
+
+   public void testBulkOperationsFailureExpected() throws Exception
+   {
+      super.testBulkOperations();
+   }
+   
+   
+
+}


Property changes on: core/trunk/cache-jbosscache2/src/test/java/org/hibernate/test/cache/jbc2/functional/bulk/OptimisticBulkOperationsTest.java
___________________________________________________________________
Name: svn:executable
   + *

Added: core/trunk/cache-jbosscache2/src/test/java/org/hibernate/test/cache/jbc2/functional/bulk/PessimisticBulkOperationsTest.java
===================================================================
--- core/trunk/cache-jbosscache2/src/test/java/org/hibernate/test/cache/jbc2/functional/bulk/PessimisticBulkOperationsTest.java	                        (rev 0)
+++ core/trunk/cache-jbosscache2/src/test/java/org/hibernate/test/cache/jbc2/functional/bulk/PessimisticBulkOperationsTest.java	2008-02-27 17:51:32 UTC (rev 14370)
@@ -0,0 +1,307 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.hibernate.test.cache.jbc2.functional.bulk;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.hibernate.FlushMode;
+import org.hibernate.cache.RegionFactory;
+import org.hibernate.cache.jbc2.MultiplexedJBossCacheRegionFactory;
+import org.hibernate.cache.jbc2.builder.MultiplexingCacheInstanceManager;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.classic.Session;
+import org.hibernate.test.cache.jbc2.functional.CacheTestCaseBase;
+import org.hibernate.test.cache.jbc2.functional.Contact;
+import org.hibernate.test.cache.jbc2.functional.Customer;
+import org.hibernate.test.tm.SimpleJtaTransactionManagerImpl;
+import org.hibernate.transaction.CMTTransactionFactory;
+
+/**
+ * Sample client for the jboss container.
+ *
+ * @author Brian Stansberry
+ * @version $Id: EntityUnitTestCase.java 60697 2007-02-20 05:08:31Z bstansberry at jboss.com $
+ */
+public class PessimisticBulkOperationsTest
+extends CacheTestCaseBase
+{
+   public PessimisticBulkOperationsTest(String name)
+   {
+      super(name);
+   } 
+
+   @Override
+   protected Class<? extends RegionFactory> getCacheRegionFactory()
+   {
+      return MultiplexedJBossCacheRegionFactory.class;
+   }
+
+   @Override
+   protected void configureCacheFactory(Configuration cfg)
+   {
+      cfg.setProperty(MultiplexingCacheInstanceManager.ENTITY_CACHE_RESOURCE_PROP, 
+                      getEntityCacheConfigName());
+   }
+
+   protected String getEntityCacheConfigName() {
+       return "pessimistic-entity";
+   }
+
+   @Override
+   protected boolean getUseQueryCache()
+   {
+      return false;
+   }
+
+   @Override
+   protected Class getTransactionFactoryClass() {
+       return CMTTransactionFactory.class;
+   }
+   
+   public void testBulkOperations() throws Exception
+   {
+      System.out.println("*** testBulkOperations()");
+      try
+      {
+         createContacts();
+         
+         List<Integer> rhContacts = getContactsByCustomer("Red Hat");
+         assertNotNull("Red Hat contacts exist", rhContacts);
+         assertEquals("Created expected number of Red Hat contacts", 10, rhContacts.size());
+         
+         assertEquals("Deleted all Red Hat contacts", 10, deleteContacts());
+         
+         List<Integer> jbContacts = getContactsByCustomer("JBoss");
+         assertNotNull("JBoss contacts exist", jbContacts);
+         assertEquals("JBoss contacts remain", 10, jbContacts.size());
+         
+         for (Integer id : rhContacts)
+         {
+            assertNull("Red Hat contact " + id + " cannot be retrieved",
+                       getContact(id));
+         }
+         rhContacts = getContactsByCustomer("Red Hat");
+         if (rhContacts != null)
+         {
+            assertEquals("No Red Hat contacts remain", 0, rhContacts.size());
+         }
+         
+         updateContacts("Kabir", "Updated");
+         for (Integer id : jbContacts)
+         {
+            Contact contact = getContact(id);
+            assertNotNull("JBoss contact " + id + " exists", contact);
+            String expected = ("Kabir".equals(contact.getName())) ? "Updated" : "2222";
+            assertEquals("JBoss contact " + id + " has correct TLF",
+                         expected, contact.getTlf());
+         }
+         
+         List<Integer> updated = getContactsByTLF("Updated");
+         assertNotNull("Got updated contacts", updated);
+         assertEquals("Updated contacts", 5, updated.size());
+      }
+      finally
+      {
+         // cleanup the db so we can run this test multiple times w/o restarting the cluster
+         cleanup();
+      }
+   }
+   
+   public void createContacts() throws Exception
+   {
+      SimpleJtaTransactionManagerImpl.getInstance().begin();
+      try {
+          for (int i = 0; i < 10; i++)
+              createCustomer(i);
+          SimpleJtaTransactionManagerImpl.getInstance().commit();
+      }
+      catch (Exception e) {
+         SimpleJtaTransactionManagerImpl.getInstance().rollback();
+         throw e;
+      }
+   }
+
+   public int deleteContacts() throws Exception
+   {
+      String deleteHQL = "delete Contact where customer in ";
+      deleteHQL += " (select customer FROM Customer as customer ";
+      deleteHQL += " where customer.name = :cName)";
+
+      SimpleJtaTransactionManagerImpl.getInstance().begin();
+      try {
+          
+          Session session = getSessions().getCurrentSession();
+          int rowsAffected = session.createQuery(deleteHQL)
+                                .setFlushMode(FlushMode.AUTO)
+                                .setParameter("cName", "Red Hat")
+                                .executeUpdate();
+          SimpleJtaTransactionManagerImpl.getInstance().commit();
+          return rowsAffected;
+      }
+      catch (Exception e) {
+          SimpleJtaTransactionManagerImpl.getInstance().rollback();
+          throw e;         
+      }
+   }
+   
+   public List<Integer> getContactsByCustomer(String customerName)
+       throws Exception
+   {
+      String selectHQL = "select contact.id from Contact contact";
+      selectHQL += " where contact.customer.name = :cName";
+
+      SimpleJtaTransactionManagerImpl.getInstance().begin();
+      try {
+          
+          Session session = getSessions().getCurrentSession();
+          List results = session.createQuery(selectHQL)
+                            .setFlushMode(FlushMode.AUTO)
+                            .setParameter("cName", customerName)
+                            .list();
+          SimpleJtaTransactionManagerImpl.getInstance().commit();
+          return results;  
+      }
+      catch (Exception e) {
+          SimpleJtaTransactionManagerImpl.getInstance().rollback();
+          throw e;         
+      }    
+   }
+   
+   public List<Integer> getContactsByTLF(String tlf) throws Exception
+   {
+      String selectHQL = "select contact.id from Contact contact";
+      selectHQL += " where contact.tlf = :cTLF";
+
+      SimpleJtaTransactionManagerImpl.getInstance().begin();
+      try {
+          
+          Session session = getSessions().getCurrentSession();
+          List results = session.createQuery(selectHQL)
+                            .setFlushMode(FlushMode.AUTO)
+                            .setParameter("cTLF", tlf)
+                            .list();
+          SimpleJtaTransactionManagerImpl.getInstance().commit();
+          return results;       
+      }
+      catch (Exception e) {
+          SimpleJtaTransactionManagerImpl.getInstance().rollback();
+          throw e;         
+      }     
+   }
+
+   public int updateContacts(String name, String newTLF) throws Exception
+   {
+      String updateHQL = "update Contact set tlf = :cNewTLF where name = :cName";
+
+      SimpleJtaTransactionManagerImpl.getInstance().begin();
+      try {
+          
+          Session session = getSessions().getCurrentSession();
+          int rowsAffected = session.createQuery(updateHQL)
+                                .setFlushMode(FlushMode.AUTO)
+                                .setParameter("cNewTLF", newTLF)
+                                .setParameter("cName", name)
+                                .executeUpdate();
+          SimpleJtaTransactionManagerImpl.getInstance().commit();
+          return rowsAffected;       
+      }
+      catch (Exception e) {
+          SimpleJtaTransactionManagerImpl.getInstance().rollback();
+          throw e;         
+      }     
+   }
+   
+   public Contact getContact(Integer id) throws Exception
+   {
+
+      SimpleJtaTransactionManagerImpl.getInstance().begin();
+      try {
+          
+          Session session = getSessions().getCurrentSession();
+          Contact contact = (Contact) session.get(Contact.class, id);
+          SimpleJtaTransactionManagerImpl.getInstance().commit();
+          return contact;       
+      }
+      catch (Exception e) {
+          SimpleJtaTransactionManagerImpl.getInstance().rollback();
+          throw e;         
+      }     
+   }
+   
+   public void cleanup() throws Exception
+   {
+      String deleteContactHQL = "delete from Contact";
+      String deleteCustomerHQL = "delete from Customer";
+
+      SimpleJtaTransactionManagerImpl.getInstance().begin();
+      try {
+          
+          Session session = getSessions().getCurrentSession();
+          session.createQuery(deleteContactHQL)
+                 .setFlushMode(FlushMode.AUTO)
+                 .executeUpdate();
+          session.createQuery(deleteCustomerHQL)
+                 .setFlushMode(FlushMode.AUTO)
+                 .executeUpdate();
+          SimpleJtaTransactionManagerImpl.getInstance().commit();
+      }
+      catch (Exception e) {
+          SimpleJtaTransactionManagerImpl.getInstance().rollback();
+          throw e;         
+      }
+      
+   }
+   
+   private Customer createCustomer(int id) throws Exception
+   {
+      System.out.println("CREATE CUSTOMER " + id);
+      try
+      {
+         Customer customer = new Customer();
+         customer.setName((id % 2 == 0) ? "JBoss" : "Red Hat");
+         Set<Contact> contacts = new HashSet<Contact>();
+         
+         Contact kabir = new Contact();
+         kabir.setCustomer(customer);
+         kabir.setName("Kabir");
+         kabir.setTlf("1111");
+         contacts.add(kabir);
+         
+         Contact bill = new Contact();
+         bill.setCustomer(customer);
+         bill.setName("Bill");
+         bill.setTlf("2222");
+         contacts.add(bill);
+
+         customer.setContacts(contacts);
+
+         getSessions().getCurrentSession().persist(customer);
+         return customer;
+      }
+      finally
+      {
+         System.out.println("CREATE CUSTOMER " +  id + " -  END");         
+      }
+   }
+}


Property changes on: core/trunk/cache-jbosscache2/src/test/java/org/hibernate/test/cache/jbc2/functional/bulk/PessimisticBulkOperationsTest.java
___________________________________________________________________
Name: svn:executable
   + *




More information about the hibernate-commits mailing list