]> source.dussan.org Git - vaadin-framework.git/commitdiff
Make test work reliably by activating @Push
authorArtur Signell <artur@vaadin.com>
Wed, 13 Nov 2013 12:56:06 +0000 (14:56 +0200)
committerVaadin Code Review <review@vaadin.com>
Wed, 27 Nov 2013 08:52:32 +0000 (08:52 +0000)
Additional test now ensures that access() works both when called
before init() is done and after init() is done

Change-Id: Id56bd09f1aaa7a6a99eed8d097f12910cdc11596

uitest/src/com/vaadin/tests/push/PushFromInit.java
uitest/src/com/vaadin/tests/push/PushFromInitTest.java

index cb084f1232ca08989269e69470baf2be6d862a0e..0afaa866f7b49f6a5a604b98286fff5d548fad4d 100644 (file)
  */
 package com.vaadin.tests.push;
 
+import com.vaadin.annotations.Push;
 import com.vaadin.server.VaadinRequest;
 import com.vaadin.tests.components.AbstractTestUIWithLog;
 import com.vaadin.ui.Button;
 
+@Push
 public class PushFromInit extends AbstractTestUIWithLog {
 
+    public static final String LOG_DURING_INIT = "Logged from access run before init ends";
+    public static final String LOG_AFTER_INIT = "Logged from background thread run after init has finished";
+
     @Override
     protected void setup(VaadinRequest request) {
-        new Thread() {
-            @Override
-            public void run() {
-                access(new Runnable() {
-                    @Override
-                    public void run() {
-                        log("Logged from background thread started in init");
-                    }
-                });
-            }
-        }.start();
         log("Logged in init");
+        Thread t = new Thread(new RunBeforeInitEnds());
+        t.start();
+        try {
+            t.join();
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+        new Thread(new RunAfterInit()).start();
         addComponent(new Button("Sync"));
     }
 
+    class RunBeforeInitEnds implements Runnable {
+        @Override
+        public void run() {
+            access(new Runnable() {
+                @Override
+                public void run() {
+                    log(LOG_DURING_INIT);
+                }
+            });
+        }
+    }
+
+    class RunAfterInit implements Runnable {
+        @Override
+        public void run() {
+            try {
+                Thread.sleep(1000);
+            } catch (InterruptedException e) {
+                e.printStackTrace();
+            }
+            access(new Runnable() {
+                @Override
+                public void run() {
+                    log(LOG_AFTER_INIT);
+                }
+            });
+        }
+    }
+
     @Override
     protected String getTestDescription() {
         return "Pusing something to a newly created UI should not cause race conditions";
index 3c1bc1b61089a153e4942dd4c1b0b7651a43fed8..4101de29cf8b3283dcc8c553aed665f4ac3398a7 100644 (file)
@@ -15,8 +15,9 @@
  */
 package com.vaadin.tests.push;
 
-import org.junit.Assert;
 import org.junit.Test;
+import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.support.ui.ExpectedCondition;
 
 import com.vaadin.tests.tb3.MultiBrowserTest;
 
@@ -25,26 +26,13 @@ public class PushFromInitTest extends MultiBrowserTest {
     public void testPushFromInit() {
         openTestURL();
 
-        for (int second = 0;; second++) {
-            if (second >= 30) {
-                Assert.fail("timeout");
+        waitUntil(new ExpectedCondition<Boolean>() {
+            @Override
+            public Boolean apply(WebDriver input) {
+                return ("3. " + PushFromInit.LOG_AFTER_INIT)
+                        .equals(getLogRow(0));
             }
-            try {
-                if ("1. Logged in init".equals(vaadinElementById(
-                        "Log_row_1").getText())) {
-                    break;
-                }
-            } catch (Exception e) {
-            }
-            try {
-                Thread.sleep(200);
-            } catch (InterruptedException e) {
-            }
-        }
-
-        Assert.assertEquals(
-                "2. Logged from background thread started in init",
-                vaadinElementById("Log_row_0").getText());
+        });
 
     }
 }
\ No newline at end of file