From d1af413534960b98ccbcb07cef46b4e51f38ea0f Mon Sep 17 00:00:00 2001
From: cramakri <cramakri>
Date: Mon, 18 Jul 2011 08:35:35 +0000
Subject: [PATCH] LMS-2382 Added new test.

SVN: 22169
---
 .../api/v1/impl/RollbackStackTest.java        | 72 ++++++++++++++++++-
 1 file changed, 71 insertions(+), 1 deletion(-)

diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/RollbackStackTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/RollbackStackTest.java
index 1e30e837830..003d4370632 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/RollbackStackTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/RollbackStackTest.java
@@ -200,6 +200,32 @@ public class RollbackStackTest extends AbstractTestWithRollbackStack
         assertEquals(TrackingCommandStatus.ROLLEDBACK, cmdN.status);
     }
 
+    @Test
+    public void testIncreasingSerializedCommandSize()
+    {
+        // Create some commands
+        // Add them to the stack
+        for (int i = 0; i < 129; ++i)
+        {
+            StringTrackingCommand cmd = new StringTrackingCommand(createStringOfLength(i));
+            rollbackStack.pushAndExecuteCommand(cmd);
+            assertEquals(TrackingCommandStatus.EXECUTED, cmd.status);
+        }
+
+        // Rollback and check that the rollback occurred correctly
+        rollbackStack.rollbackAll();
+    }
+
+    private String createStringOfLength(int length)
+    {
+        String item = "";
+        for (int j = 0; j < length; ++j)
+        {
+            item += "1";
+        }
+        return item;
+    }
+
     private static enum TrackingCommandStatus
     {
         PENDING_EXECUTE, EXECUTED, ROLLEDBACK
@@ -209,7 +235,7 @@ public class RollbackStackTest extends AbstractTestWithRollbackStack
     {
         private static final long serialVersionUID = 1L;
 
-        private TrackingCommandStatus status = TrackingCommandStatus.PENDING_EXECUTE;
+        protected TrackingCommandStatus status = TrackingCommandStatus.PENDING_EXECUTE;
 
         private final TrackingCommand predecessor;
 
@@ -291,5 +317,49 @@ public class RollbackStackTest extends AbstractTestWithRollbackStack
             return true;
         }
 
+        @Override
+        public String toString()
+        {
+            return "EqualityTrackingCommand [id=" + id + ",status=" + status + "]";
+        }
+
+    }
+
+    private static class StringTrackingCommand extends TrackingCommand
+    {
+        private static final long serialVersionUID = 1L;
+
+        private final String text;
+
+        private StringTrackingCommand(String text)
+        {
+            super();
+            this.text = text;
+        }
+
+        @Override
+        public int hashCode()
+        {
+            return text.hashCode();
+        }
+
+        @Override
+        public boolean equals(Object obj)
+        {
+            if (this == obj)
+                return true;
+            if (obj == null)
+                return false;
+            if (getClass() != obj.getClass())
+                return false;
+            StringTrackingCommand other = (StringTrackingCommand) obj;
+            return text.equals(other.text);
+        }
+
+        @Override
+        public String toString()
+        {
+            return "StringTrackingCommand [text=" + text + ", status=" + status + "]";
+        }
     }
 }
-- 
GitLab