[jbosscache-commits] JBoss Cache SVN: r5807 - core/trunk/src/test/java/org/jboss/cache.

jbosscache-commits at lists.jboss.org jbosscache-commits at lists.jboss.org
Thu May 8 05:16:18 EDT 2008


Author: manik.surtani at jboss.com
Date: 2008-05-08 05:16:18 -0400 (Thu, 08 May 2008)
New Revision: 5807

Removed:
   core/trunk/src/test/java/org/jboss/cache/LifeCycleTest.java
Log:


Deleted: core/trunk/src/test/java/org/jboss/cache/LifeCycleTest.java
===================================================================
--- core/trunk/src/test/java/org/jboss/cache/LifeCycleTest.java	2008-05-08 09:07:31 UTC (rev 5806)
+++ core/trunk/src/test/java/org/jboss/cache/LifeCycleTest.java	2008-05-08 09:16:18 UTC (rev 5807)
@@ -1,473 +0,0 @@
-package org.jboss.cache;
-
-import org.jboss.cache.config.Configuration;
-import org.jboss.cache.misc.TestingUtil;
-import org.jboss.cache.notifications.annotation.CacheListener;
-import org.jboss.cache.notifications.annotation.CacheStarted;
-import org.jboss.cache.notifications.annotation.CacheStopped;
-import org.jboss.cache.notifications.event.Event;
-import static org.testng.AssertJUnit.*;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-
-import javax.transaction.NotSupportedException;
-import javax.transaction.RollbackException;
-import javax.transaction.SystemException;
-import javax.transaction.TransactionManager;
-import java.util.Arrays;
-import java.util.LinkedList;
-import java.util.List;
-
-/**
- * Tests restart (stop-destroy-create-start) of CacheSPI
- *
- * @author Bela Ban
- * @version $Id$
- */
- at Test(groups = {"functional"})
-public class LifeCycleTest
-{
-   private CacheSPI[] c;
-
-   @AfterMethod
-   public void tearDown()
-   {
-      TestingUtil.killCaches(c);
-      c = null;
-   }
-
-   private void createAndRegisterCache(Configuration.CacheMode mode, boolean start) throws Exception
-   {
-      Cache cache = createCache(mode);
-      List<Cache> caches = new LinkedList<Cache>();
-      if (c != null) caches.addAll(Arrays.asList(c));
-      caches.add(cache);
-      c = caches.toArray(new CacheSPI[]{});
-      if (start)
-      {
-         cache.start();
-         if (c.length > 1) TestingUtil.blockUntilViewsReceived(c, 10000);
-      }
-   }
-
-
-   public void testLocalRestartNoTransactions() throws Exception
-   {
-      createAndRegisterCache(Configuration.CacheMode.LOCAL, true);
-
-      c[0].put("/a/b/c", null);
-      assertTrue(c[0].getNumberOfNodes() > 0);
-      assertEquals(0, c[0].getNumberOfLocksHeld());
-
-      restartCache(c[0]);
-
-      assertEquals(0, c[0].getNumberOfNodes());
-      assertEquals(0, c[0].getNumberOfLocksHeld());
-   }
-
-   public void testLocalRestartWithTransactions() throws Exception
-   {
-      createAndRegisterCache(Configuration.CacheMode.LOCAL, true);
-
-      TransactionManager tm = beginTransaction();
-
-      c[0].put("/a/b/c", null);
-      assertTrue(c[0].getNumberOfNodes() > 0);
-      assertEquals(4, c[0].getNumberOfLocksHeld());
-
-      restartCache(c[0]);
-
-      //assertEquals(4, cache.getNumberOfLocksHeld());
-      assertEquals(0, c[0].getNumberOfNodes());
-
-      tm.rollback();
-      assertEquals(0, c[0].getNumberOfLocksHeld());
-   }
-
-   public void testStartNoCreate() throws Exception
-   {
-      createAndRegisterCache(Configuration.CacheMode.LOCAL, false);
-      c[0].start();
-
-      c[0].put("/a/b/c", null);
-      assertTrue(c[0].getNumberOfNodes() > 0);
-      assertEquals(0, c[0].getNumberOfLocksHeld());
-
-      restartCache(c[0]);
-
-      assertEquals(0, c[0].getNumberOfNodes());
-      assertEquals(0, c[0].getNumberOfLocksHeld());
-   }
-
-   public void testReStartNoCreate() throws Exception
-   {
-      createAndRegisterCache(Configuration.CacheMode.LOCAL, false);
-      c[0].start();
-      c[0].stop();
-      c[0].start();
-
-      c[0].put("/a/b/c", null);
-      assertTrue(c[0].getNumberOfNodes() > 0);
-      assertEquals(0, c[0].getNumberOfLocksHeld());
-
-      restartCache(c[0]);
-
-      assertEquals(0, c[0].getNumberOfNodes());
-      assertEquals(0, c[0].getNumberOfLocksHeld());
-   }
-
-   public void testDuplicateInvocation() throws Exception
-   {
-      createAndRegisterCache(Configuration.CacheMode.LOCAL, false);
-      c[0].create();
-      c[0].start();
-      c[0].create();
-      c[0].start();
-
-      c[0].put("/a/b/c", null);
-      assertTrue(c[0].getNumberOfNodes() > 0);
-      assertEquals(0, c[0].getNumberOfLocksHeld());
-
-      restartCache(c[0]);
-
-      assertEquals(0, c[0].getNumberOfNodes());
-      assertEquals(0, c[0].getNumberOfLocksHeld());
-
-      c[0].stop();
-      c[0].destroy();
-      c[0].stop();
-      c[0].destroy();
-   }
-
-   public void testFailedStart() throws Exception
-   {
-
-      createAndRegisterCache(Configuration.CacheMode.LOCAL, false);
-      assertEquals("Correct state", CacheStatus.INSTANTIATED, c[0].getCacheStatus());
-
-      DisruptLifecycleListener listener = new DisruptLifecycleListener();
-      c[0].addCacheListener(listener);
-
-      c[0].create();
-
-      listener.disrupt = true;
-
-      assertEquals("Correct state", CacheStatus.CREATED, c[0].getCacheStatus());
-      try
-      {
-         c[0].start();
-         fail("Listener did not prevent start");
-      }
-      catch (CacheException good)
-      {
-      }
-
-      assertEquals("Correct state", CacheStatus.FAILED, c[0].getCacheStatus());
-
-      c[0].addCacheListener(listener);
-      listener.disrupt = false;
-
-      c[0].start();
-
-      assertEquals("Correct state", CacheStatus.STARTED, c[0].getCacheStatus());
-
-      c[0].put("/a/b/c", null);
-      assertTrue(c[0].getNumberOfNodes() > 0);
-      assertEquals(0, c[0].getNumberOfLocksHeld());
-
-      listener.disrupt = true;
-      c[0].addCacheListener(listener);
-
-      try
-      {
-         c[0].stop();
-         fail("Listener did not prevent stop");
-      }
-      catch (CacheException good)
-      {
-      }
-
-      assertEquals("Correct state", CacheStatus.FAILED, c[0].getCacheStatus());
-
-      listener.disrupt = false;
-
-      c[0].stop();
-      assertEquals("Correct state", CacheStatus.STOPPED, c[0].getCacheStatus());
-      c[0].destroy();
-      assertEquals("Correct state", CacheStatus.DESTROYED, c[0].getCacheStatus());
-   }
-
-   public void testInvalidStateInvocations() throws Exception
-   {
-      createAndRegisterCache(Configuration.CacheMode.LOCAL, false);
-      try
-      {
-         c[0].get(Fqn.ROOT, "k");
-         fail("Cache isn't ready!");
-      }
-      catch (IllegalStateException good)
-      {
-      }
-
-      c[0].create();
-      try
-      {
-         c[0].get(Fqn.ROOT, "k");
-         fail("Cache isn't ready!");
-      }
-      catch (IllegalStateException good)
-      {
-      }
-
-      c[0].start();
-      c[0].get(Fqn.ROOT, "k"); // should work
-
-      c[0].stop();
-
-      try
-      {
-         c[0].get(Fqn.ROOT, "k");
-         fail("Cache isn't ready!");
-      }
-      catch (IllegalStateException good)
-      {
-      }
-
-      c[0].destroy();
-      try
-      {
-         c[0].get(Fqn.ROOT, "k");
-         fail("Cache isn't ready!");
-      }
-      catch (IllegalStateException good)
-      {
-      }
-   }
-
-   public void testRemoteInvalidStateInvocations() throws Exception
-   {
-      createAndRegisterCache(Configuration.CacheMode.REPL_SYNC, true);
-      createAndRegisterCache(Configuration.CacheMode.REPL_SYNC, true);
-      try
-      {
-         // now DIRECTLY change the status of c2.
-         // emulate the race condition where the remote cache is stopping but hasn't disconnected from the channel.
-         LifecycleManager ci1 = (LifecycleManager) TestingUtil.extractField(c[1], "lifecycleManager");
-         ci1.setCacheStatus(CacheStatus.STOPPING);
-
-         // Thanks to JBCACHE-1179, this should only log a warning and not throw an exception
-         c[0].put(Fqn.ROOT, "k", "v");
-      }
-      finally
-      {
-         // reset c[1] to running so the tearDown method can clean it up
-         LifecycleManager ci1 = (LifecycleManager) TestingUtil.extractField(c[1], "lifecycleManager");
-         ci1.setCacheStatus(CacheStatus.STARTED);
-      }
-   }
-
-   public void testRemoteInvalidStateInvocations2() throws Exception
-   {
-      createAndRegisterCache(Configuration.CacheMode.REPL_SYNC, true);
-      createAndRegisterCache(Configuration.CacheMode.REPL_SYNC, true);
-      TestingUtil.blockUntilViewsReceived(c, 10000);
-      try
-      {
-         // now DIRECTLY change the status of c2.
-         // emulate the race condition where the remote cache is stopping but hasn't disconnected from the channel.
-
-         // there is a lousy race condition here - we need to make sure cache[1]'s start() method doesn't set status to STARTED
-         // after we attempt to change this.
-         TestingUtil.blockUntilCacheStatusAchieved(c[1], CacheStatus.STARTED, 1000);
-         LifecycleManager ci1 = (LifecycleManager) TestingUtil.extractField(c[1], "lifecycleManager");
-         ci1.setCacheStatus(CacheStatus.STARTING);
-         try
-         {
-            // This call should wait for up to StateRetrievalTimeout secs or until c[1] has entered the STARTED state, and then barf.
-            c[0].put(Fqn.ROOT, "k", "v");
-            fail("Should barf!");
-         }
-         catch (Exception good)
-         {
-
-         }
-
-         // now kick off another thread to sleep for a few secs and then set c[1] to STARTED
-         final int sleepTime = 500;
-         new Thread()
-         {
-            public void run()
-            {
-               TestingUtil.sleepThread(sleepTime);
-               LifecycleManager ci1 = (LifecycleManager) TestingUtil.extractField(c[1], "lifecycleManager");
-               ci1.setCacheStatus(CacheStatus.STARTED);
-            }
-         }.start();
-
-         // should succeed but should take at least 1000ms.
-         long startTime = System.currentTimeMillis();
-         c[0].put(Fqn.ROOT, "k", "v");
-         assert System.currentTimeMillis() > (startTime + sleepTime) : "Should wait till c[1] has STARTED state";
-
-      }
-      finally
-      {
-         // reset c[1] to running so the tearDown method can clean it up
-         LifecycleManager ci1 = (LifecycleManager) TestingUtil.extractField(c[1], "lifecycleManager");
-         ci1.setCacheStatus(CacheStatus.STARTED);
-      }
-   }
-
-   public void testInvalidStateTxCommit() throws Exception
-   {
-      createAndRegisterCache(Configuration.CacheMode.LOCAL, true);
-      c[0].getTransactionManager().begin();
-      c[0].put(Fqn.ROOT, "k1", "v1");
-      c[0].put(Fqn.ROOT, "k2", "v2");
-
-      // now DIRECTLY change the status of c.
-      LifecycleManager ci0 = (LifecycleManager) TestingUtil.extractField(c[0], "lifecycleManager");
-      ci0.setCacheStatus(CacheStatus.STOPPING);
-
-      try
-      {
-         c[0].getTransactionManager().commit();
-         fail("Cache isn't STARTED!");
-      }
-      catch (RollbackException good)
-      {
-      }
-   }
-
-   @SuppressWarnings("unchecked")
-   public void testStopInstanceWhileOtherInstanceSends() throws Exception
-   {
-      final Fqn fqn = Fqn.fromString("/a");
-      final List<Boolean> running = new LinkedList<Boolean>();
-      final List<Exception> exceptions = new LinkedList<Exception>();
-      running.add(true);
-
-      createAndRegisterCache(Configuration.CacheMode.REPL_SYNC, true);
-      createAndRegisterCache(Configuration.CacheMode.REPL_SYNC, true);
-
-      c[0].put(fqn, "k", "v");
-
-      assert "v".equals(c[0].get(fqn, "k"));
-      assert "v".equals(c[1].get(fqn, "k"));
-
-      // now kick start a thread on c[1] that will constantly update the fqn
-
-      Thread updater = new Thread()
-      {
-         public void run()
-         {
-            int i = 0;
-            while (running.get(0))
-            {
-               try
-               {
-                  i++;
-                  if (running.get(0)) c[1].put(fqn, "k", "v" + i);
-               }
-               catch (ReplicationException re)
-               {
-                  // this sometimes happens when JGroups suspects the remote node.  This is ok, as long as we don't get an ISE.
-               }
-               catch (SuspectException se)
-               {
-                  // this sometimes happens when JGroups suspects the remote node.  This is ok, as long as we don't get an ISE.
-               }
-               catch (Exception e)
-               {
-                  exceptions.add(e);
-               }
-               TestingUtil.sleepThread(20);
-
-            }
-         }
-      };
-
-      updater.start();
-
-      c[0].stop();
-      running.add(false);
-      running.remove(true);
-      updater.join();
-
-      for (Exception e : exceptions) throw e;
-   }
-
-   public void testInvalidStateTxRollback() throws Exception
-   {
-      createAndRegisterCache(Configuration.CacheMode.LOCAL, true);
-      c[0].getTransactionManager().begin();
-      c[0].put(Fqn.ROOT, "k1", "v1");
-      c[0].put(Fqn.ROOT, "k2", "v2");
-
-      // now DIRECTLY change the status of c.
-      LifecycleManager ci0 = (LifecycleManager) TestingUtil.extractField(c[0], "lifecycleManager");
-      ci0.setCacheStatus(CacheStatus.STOPPING);
-
-      // rollbacks should just log a message
-      c[0].getTransactionManager().rollback();
-   }
-
-
-   private CacheSPI<Object, Object> createCache(Configuration.CacheMode cache_mode)
-   {
-      CacheSPI<Object, Object> retval = (CacheSPI<Object, Object>) new DefaultCacheFactory().createCache(false);
-      retval.getConfiguration().setCacheMode(cache_mode);
-      retval.getConfiguration().setTransactionManagerLookupClass("org.jboss.cache.transaction.DummyTransactionManagerLookup");
-      return retval;
-   }
-
-
-   private TransactionManager beginTransaction() throws SystemException, NotSupportedException
-   {
-      TransactionManager mgr = c[0].getConfiguration().getRuntimeConfig().getTransactionManager();
-      mgr.begin();
-      return mgr;
-   }
-
-
-   private void startCache(CacheSPI c)
-   {
-      c.create();
-      c.start();
-   }
-
-   private void stopCache(CacheSPI c)
-   {
-      c.stop();
-      c.destroy();
-   }
-
-   private void restartCache(CacheSPI c) throws Exception
-   {
-      stopCache(c);
-      startCache(c);
-   }
-
-   @CacheListener
-   public class DisruptLifecycleListener
-   {
-      private boolean disrupt;
-
-      @CacheStarted
-      public void cacheStarted(Event e)
-      {
-         if (disrupt) throw new IllegalStateException("I don't want to start");
-      }
-
-      @CacheStopped
-      public void cacheStopped(Event e)
-      {
-         if (disrupt) throw new IllegalStateException("I don't want to stop");
-      }
-
-      public void setDisrupt(boolean disrupt)
-      {
-         this.disrupt = disrupt;
-      }
-   }
-}




More information about the jbosscache-commits mailing list