]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fixed locking issue in tests
authorArtur Signell <artur@vaadin.com>
Tue, 26 Mar 2013 08:51:50 +0000 (10:51 +0200)
committerVaadin Code Review <review@vaadin.com>
Tue, 2 Apr 2013 10:25:58 +0000 (10:25 +0000)
Change-Id: I3706cfa46f82615b8cc677bcaaa207d5ab05bf40

15 files changed:
server/tests/src/com/vaadin/tests/data/converter/ConverterFactory.java
server/tests/src/com/vaadin/tests/server/AlwaysLockedVaadinSession.java [new file with mode: 0644]
server/tests/src/com/vaadin/tests/server/TestStreamVariableMapping.java
server/tests/src/com/vaadin/tests/server/clientconnector/AttachDetachListeners.java
server/tests/src/com/vaadin/tests/server/component/abstractfield/AbstractFieldValueConversions.java
server/tests/src/com/vaadin/tests/server/component/abstractfield/DefaultConverterFactory.java
server/tests/src/com/vaadin/tests/server/component/abstractfield/RemoveListenersOnDetach.java
server/tests/src/com/vaadin/tests/server/component/fieldgroup/BeanFieldGroupTest.java
server/tests/src/com/vaadin/tests/server/component/label/LabelConverters.java
server/tests/src/com/vaadin/tests/server/component/ui/CustomUIClassLoader.java
server/tests/src/com/vaadin/tests/server/component/window/AddRemoveSubWindow.java
server/tests/src/com/vaadin/tests/server/component/window/AttachDetachWindow.java
server/tests/src/com/vaadin/ui/LabelDataSource.java
server/tests/src/com/vaadin/util/ReflectToolsGetFieldValueByType.java
uitest/src/com/vaadin/tests/application/ThreadLocalInstances.java

index 5067da88615581453798f714df6412b98ca33a59..bf4412fbcebbc8c49b861749198c35742be58430 100644 (file)
@@ -22,6 +22,7 @@ import junit.framework.TestCase;
 import com.vaadin.data.util.converter.Converter;
 import com.vaadin.data.util.converter.DefaultConverterFactory;
 import com.vaadin.server.VaadinSession;
+import com.vaadin.tests.server.AlwaysLockedVaadinSession;
 import com.vaadin.ui.TextField;
 
 public class ConverterFactory extends TestCase {
@@ -66,7 +67,7 @@ public class ConverterFactory extends TestCase {
 
     public void testApplicationConverterFactoryInBackgroundThread() {
         VaadinSession.setCurrent(null);
-        final VaadinSession appWithCustomIntegerConverter = new VaadinSession(
+        final VaadinSession appWithCustomIntegerConverter = new AlwaysLockedVaadinSession(
                 null);
         appWithCustomIntegerConverter
                 .setConverterFactory(new ConverterFactory42());
@@ -84,7 +85,7 @@ public class ConverterFactory extends TestCase {
     }
 
     public void testApplicationConverterFactoryForDetachedComponent() {
-        final VaadinSession appWithCustomIntegerConverter = new VaadinSession(
+        final VaadinSession appWithCustomIntegerConverter = new AlwaysLockedVaadinSession(
                 null);
         appWithCustomIntegerConverter
                 .setConverterFactory(new ConverterFactory42());
@@ -98,11 +99,11 @@ public class ConverterFactory extends TestCase {
     }
 
     public void testApplicationConverterFactoryForDifferentThanCurrentApplication() {
-        final VaadinSession fieldAppWithCustomIntegerConverter = new VaadinSession(
+        final VaadinSession fieldAppWithCustomIntegerConverter = new AlwaysLockedVaadinSession(
                 null);
         fieldAppWithCustomIntegerConverter
                 .setConverterFactory(new ConverterFactory42());
-        VaadinSession.setCurrent(new VaadinSession(null));
+        VaadinSession.setCurrent(new AlwaysLockedVaadinSession(null));
 
         TextField tf = new TextField("", "123") {
             @Override
diff --git a/server/tests/src/com/vaadin/tests/server/AlwaysLockedVaadinSession.java b/server/tests/src/com/vaadin/tests/server/AlwaysLockedVaadinSession.java
new file mode 100644 (file)
index 0000000..49e761f
--- /dev/null
@@ -0,0 +1,23 @@
+package com.vaadin.tests.server;
+
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
+import com.vaadin.server.VaadinService;
+import com.vaadin.server.VaadinSession;
+
+public class AlwaysLockedVaadinSession extends VaadinSession {
+
+    private ReentrantLock lock;
+
+    public AlwaysLockedVaadinSession(VaadinService service) {
+        super(service);
+        lock = new ReentrantLock();
+        lock.lock();
+    }
+
+    @Override
+    public Lock getLockInstance() {
+        return lock;
+    }
+}
index 68fbdb8d0df89c3cc4cb79d7c8cc56377e1529f1..da0bf9ebc8064f6400f96ea9644649b60ef21f61 100644 (file)
@@ -4,9 +4,12 @@ import junit.framework.TestCase;
 
 import org.easymock.EasyMock;
 
+import com.vaadin.server.DeploymentConfiguration;
 import com.vaadin.server.LegacyCommunicationManager;
 import com.vaadin.server.StreamVariable;
 import com.vaadin.server.VaadinRequest;
+import com.vaadin.server.VaadinServlet;
+import com.vaadin.server.VaadinServletService;
 import com.vaadin.server.VaadinSession;
 import com.vaadin.ui.ConnectorTracker;
 import com.vaadin.ui.UI;
@@ -22,7 +25,7 @@ public class TestStreamVariableMapping extends TestCase {
 
     @Override
     protected void setUp() throws Exception {
-        final VaadinSession application = new VaadinSession(null);
+        final VaadinSession application = new AlwaysLockedVaadinSession(null);
         final UI uI = new UI() {
             @Override
             protected void init(VaadinRequest request) {
@@ -73,7 +76,11 @@ public class TestStreamVariableMapping extends TestCase {
     }
 
     private LegacyCommunicationManager createCommunicationManager() {
-        return new LegacyCommunicationManager(new VaadinSession(null));
+        VaadinServletService vss = new VaadinServletService(
+                EasyMock.createMock(VaadinServlet.class),
+                EasyMock.createMock(DeploymentConfiguration.class));
+        return new LegacyCommunicationManager(
+                new AlwaysLockedVaadinSession(vss));
     }
 
 }
index 8a61ec6352cc838d97c778f5a4f5bce07d2b5c30..f8dbaccdadfb69045314c680cc0047e411cefedf 100644 (file)
@@ -18,6 +18,7 @@ import com.vaadin.server.ClientConnector.DetachListener;
 import com.vaadin.server.VaadinRequest;
 import com.vaadin.server.VaadinService;
 import com.vaadin.server.VaadinSession;
+import com.vaadin.tests.server.AlwaysLockedVaadinSession;
 import com.vaadin.ui.Component;
 import com.vaadin.ui.CssLayout;
 import com.vaadin.ui.Label;
@@ -40,7 +41,8 @@ public class AttachDetachListeners {
     public void setUp() {
         control = EasyMock.createStrictControl();
 
-        session = new VaadinSession(control.createMock(VaadinService.class));
+        session = new AlwaysLockedVaadinSession(
+                control.createMock(VaadinService.class));
 
         ui = new UI() {
             @Override
index cd77101ac397dad3048e1fd926a8f9a0d70d975a..144ca0fe24f64a95f5b2d5142122e32d25bd2619 100644 (file)
@@ -17,6 +17,7 @@ import com.vaadin.tests.data.bean.Address;
 import com.vaadin.tests.data.bean.Country;
 import com.vaadin.tests.data.bean.Person;
 import com.vaadin.tests.data.bean.Sex;
+import com.vaadin.tests.server.AlwaysLockedVaadinSession;
 import com.vaadin.ui.CheckBox;
 import com.vaadin.ui.TextField;
 
@@ -45,7 +46,7 @@ public class AbstractFieldValueConversions extends TestCase {
     }
 
     public void testNonmodifiedBufferedFieldConversion() {
-        VaadinSession.setCurrent(new VaadinSession(null));
+        VaadinSession.setCurrent(new AlwaysLockedVaadinSession(null));
         TextField tf = new TextField("salary");
         tf.setBuffered(true);
         tf.setLocale(new Locale("en", "US"));
@@ -61,7 +62,7 @@ public class AbstractFieldValueConversions extends TestCase {
     }
 
     public void testModifiedBufferedFieldConversion() {
-        VaadinSession.setCurrent(new VaadinSession(null));
+        VaadinSession.setCurrent(new AlwaysLockedVaadinSession(null));
         TextField tf = new TextField("salary");
         tf.setBuffered(true);
         tf.setLocale(new Locale("en", "US"));
@@ -129,7 +130,7 @@ public class AbstractFieldValueConversions extends TestCase {
     }
 
     public void testChangeReadOnlyFieldLocale() {
-        VaadinSession.setCurrent(new VaadinSession(null));
+        VaadinSession.setCurrent(new AlwaysLockedVaadinSession(null));
 
         TextField tf = new TextField("salary");
         tf.setLocale(new Locale("en", "US"));
@@ -214,7 +215,7 @@ public class AbstractFieldValueConversions extends TestCase {
     }
 
     public void testNumberDoubleConverterChange() {
-        final VaadinSession a = new VaadinSession(null);
+        final VaadinSession a = new AlwaysLockedVaadinSession(null);
         VaadinSession.setCurrent(a);
         TextField tf = new TextField() {
             @Override
index 698e9bcee42e6a4e5216141ab3d978114b61d9e2..5455da18f809b53639d485aa704892371788a335 100644 (file)
@@ -11,6 +11,7 @@ import com.vaadin.tests.data.bean.Address;
 import com.vaadin.tests.data.bean.Country;
 import com.vaadin.tests.data.bean.Person;
 import com.vaadin.tests.data.bean.Sex;
+import com.vaadin.tests.server.AlwaysLockedVaadinSession;
 import com.vaadin.ui.TextField;
 
 public class DefaultConverterFactory extends TestCase {
@@ -53,7 +54,7 @@ public class DefaultConverterFactory extends TestCase {
     }
 
     public void testFloatConversion() {
-        VaadinSession sess = new VaadinSession(null);
+        VaadinSession sess = new AlwaysLockedVaadinSession(null);
         VaadinSession.setCurrent(sess);
 
         TextField tf = new TextField();
@@ -68,7 +69,7 @@ public class DefaultConverterFactory extends TestCase {
     }
 
     public void testDefaultNumberConversion() {
-        VaadinSession app = new VaadinSession(null);
+        VaadinSession app = new AlwaysLockedVaadinSession(null);
         VaadinSession.setCurrent(app);
         TextField tf = new TextField();
         tf.setLocale(new Locale("en", "US"));
index cd9b6c66312a7fd8142b3c6689f99c614a13b14a..6dfd50c44cd0c7c3346c3726cb2b566574282cec 100644 (file)
@@ -9,6 +9,7 @@ import com.vaadin.data.util.AbstractProperty;
 import com.vaadin.data.util.converter.Converter.ConversionException;
 import com.vaadin.server.VaadinRequest;
 import com.vaadin.server.VaadinSession;
+import com.vaadin.tests.server.AlwaysLockedVaadinSession;
 import com.vaadin.ui.AbstractField;
 import com.vaadin.ui.UI;
 
@@ -18,7 +19,7 @@ public class RemoveListenersOnDetach {
     int numReadOnlyChanges = 0;
 
     AbstractField field = new AbstractField() {
-        final private VaadinSession application = new VaadinSession(null);
+        final private VaadinSession application = new AlwaysLockedVaadinSession(null);
         private UI uI = new UI() {
 
             @Override
index 68c1133dc067e6b41552d5c4609e1a132dd23bea..44b77e88e20c76b142f041328b0c8e5dcf2eefc3 100644 (file)
@@ -3,6 +3,7 @@ package com.vaadin.tests.server.component.fieldgroup;
 import static org.junit.Assert.assertEquals;
 
 import org.junit.Test;
+
 import com.vaadin.data.fieldgroup.BeanFieldGroup;
 
 public class BeanFieldGroupTest {
index 7fd293086539884fc60ddc949058d336e0683aff..13da46cd601d030032ecd964fa4cbfee1fe0eadb 100644 (file)
@@ -21,6 +21,7 @@ import com.vaadin.data.Property;
 import com.vaadin.data.util.MethodProperty;
 import com.vaadin.server.VaadinSession;
 import com.vaadin.tests.data.bean.Person;
+import com.vaadin.tests.server.AlwaysLockedVaadinSession;
 import com.vaadin.ui.Label;
 
 public class LabelConverters extends TestCase {
@@ -37,7 +38,7 @@ public class LabelConverters extends TestCase {
     }
 
     public void testIntegerDataSource() {
-        VaadinSession.setCurrent(new VaadinSession(null));
+        VaadinSession.setCurrent(new AlwaysLockedVaadinSession(null));
         Label l = new Label("Foo");
         Property ds = new MethodProperty<Integer>(Person.createTestPerson1(),
                 "age");
index 8884c0c27c600fc702a2d41b0276f936707e1755..186f563569b0b70fa643081016dd3987d2dc0f07 100644 (file)
@@ -15,6 +15,7 @@ import com.vaadin.server.UIClassSelectionEvent;
 import com.vaadin.server.VaadinRequest;
 import com.vaadin.server.VaadinService;
 import com.vaadin.server.VaadinSession;
+import com.vaadin.tests.server.AlwaysLockedVaadinSession;
 import com.vaadin.ui.UI;
 
 public class CustomUIClassLoader extends TestCase {
@@ -113,7 +114,7 @@ public class CustomUIClassLoader extends TestCase {
     }
 
     private VaadinSession createStubApplication() {
-        return new VaadinSession(null) {
+        return new AlwaysLockedVaadinSession(null) {
             @Override
             public DeploymentConfiguration getConfiguration() {
                 return createConfigurationMock();
index bf6d127a83cc11eeb47ffde42a9a4dc443f912fc..15d3707f28fc5a2179c40416ba9299760ad205bd 100644 (file)
@@ -8,6 +8,7 @@ import org.junit.Test;
 
 import com.vaadin.server.LegacyApplication;
 import com.vaadin.server.VaadinSession;
+import com.vaadin.tests.server.AlwaysLockedVaadinSession;
 import com.vaadin.ui.LegacyWindow;
 import com.vaadin.ui.UI;
 import com.vaadin.ui.Window;
@@ -25,7 +26,7 @@ public class AddRemoveSubWindow {
 
     @Test
     public void addSubWindow() {
-        VaadinSession.setCurrent(new VaadinSession(null));
+        VaadinSession.setCurrent(new AlwaysLockedVaadinSession(null));
         TestApp app = new TestApp();
         app.init();
         Window subWindow = new Window("Sub window");
index 63a58bcab30217eef9519e72f955dc085e41fe37..4dfadc23a16372d20f7f8fa509027a35083d738c 100644 (file)
@@ -8,6 +8,7 @@ import org.junit.Test;
 import com.vaadin.server.ClientConnector;
 import com.vaadin.server.VaadinRequest;
 import com.vaadin.server.VaadinSession;
+import com.vaadin.tests.server.AlwaysLockedVaadinSession;
 import com.vaadin.ui.Label;
 import com.vaadin.ui.UI;
 import com.vaadin.ui.VerticalLayout;
@@ -15,7 +16,7 @@ import com.vaadin.ui.Window;
 
 public class AttachDetachWindow {
 
-    private VaadinSession testApp = new VaadinSession(null);
+    private VaadinSession testApp = new AlwaysLockedVaadinSession(null);
 
     private interface TestContainer {
         public boolean attachCalled();
index 7dcb382124b1bd2ab47b416ca1b8944a3536d889..87ca4e372cd128e6be5dd6fb94fb3c1178fadb89 100644 (file)
@@ -24,6 +24,7 @@ import org.junit.Test;
 import com.vaadin.data.util.ObjectProperty;
 import com.vaadin.server.VaadinRequest;
 import com.vaadin.server.VaadinSession;
+import com.vaadin.tests.server.AlwaysLockedVaadinSession;
 
 public class LabelDataSource {
 
@@ -39,7 +40,7 @@ public class LabelDataSource {
 
     @Before
     public void setup() {
-        vaadinSession = new VaadinSession(null);
+        vaadinSession = new AlwaysLockedVaadinSession(null);
         VaadinSession.setCurrent(vaadinSession);
 
         label = new Label();
index 78be9b04fb91069357ed1931e35a3b6bd4a77a4d..718a76804f3065f97ad159c7fe3aef9dd3413fa0 100644 (file)
@@ -3,8 +3,6 @@ package com.vaadin.util;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
-import java.lang.reflect.InvocationTargetException;
-
 import org.junit.Test;
 
 public class ReflectToolsGetFieldValueByType {
index b6774ae56a42dd5b7921a51a9ce670c1b4ded4f0..ed611117d01d8906a8b1feba272803d6e4d15621 100644 (file)
@@ -52,7 +52,12 @@ public class ThreadLocalInstances extends AbstractTestCase {
     private final FlagSeResource resource = new FlagSeResource() {
         @Override
         public DownloadStream getStream() {
-            reportCurrentStatus("resource handler");
+            ThreadLocalInstances.this.getContext().lock();
+            try {
+                reportCurrentStatus("resource handler");
+            } finally {
+                ThreadLocalInstances.this.getContext().unlock();
+            }
             return super.getStream();
         }
     };