summaryrefslogtreecommitdiffstats
path: root/uitest/src/com/vaadin/tests/push
diff options
context:
space:
mode:
authorJohannes Dahlström <johannesd@vaadin.com>2014-01-22 17:48:19 +0200
committerArtur Signell <artur@vaadin.com>2014-01-31 09:21:44 +0000
commitefd8f211612fa55a2b35d1c72a9913f2011bfe7a (patch)
tree27851a8c6ebcd7c408054a9152f8fd870a771bc2 /uitest/src/com/vaadin/tests/push
parent3c5644c4a3e0484b7e65a2852d9cedeeab167419 (diff)
downloadvaadin-framework-efd8f211612fa55a2b35d1c72a9913f2011bfe7a.tar.gz
vaadin-framework-efd8f211612fa55a2b35d1c72a9913f2011bfe7a.zip
Implement long polling support for push (#13011)
* The Transport enum has a new LONG_POLLING constant * AbstractTestUI supports the ?transport=long-polling GET parameter Change-Id: Ic2f5abfbd4aa3c875f5c83932ce5ee6f31c366ad
Diffstat (limited to 'uitest/src/com/vaadin/tests/push')
-rw-r--r--uitest/src/com/vaadin/tests/push/BasicPushLongPolling.java34
-rw-r--r--uitest/src/com/vaadin/tests/push/BasicPushLongPollingTest.java19
-rw-r--r--uitest/src/com/vaadin/tests/push/LongPollingReconnectTest.java25
-rw-r--r--uitest/src/com/vaadin/tests/push/PushLargeDataLongPolling.java32
-rw-r--r--uitest/src/com/vaadin/tests/push/PushLargeDataLongPollingTest.java61
5 files changed, 171 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/push/BasicPushLongPolling.java b/uitest/src/com/vaadin/tests/push/BasicPushLongPolling.java
new file mode 100644
index 0000000000..bbb7895f20
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/push/BasicPushLongPolling.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2000-2013 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.push;
+
+import com.vaadin.annotations.Push;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.shared.ui.ui.Transport;
+import com.vaadin.shared.ui.ui.UIState.PushConfigurationState;
+
+@Push(transport = Transport.LONG_POLLING)
+public class BasicPushLongPolling extends BasicPush {
+
+ @Override
+ public void init(VaadinRequest request) {
+ super.init(request);
+ // Don't use fallback so we can easier detect if long polling fails
+ getPushConfiguration().setParameter(
+ PushConfigurationState.FALLBACK_TRANSPORT_PARAM, "none");
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/push/BasicPushLongPollingTest.java b/uitest/src/com/vaadin/tests/push/BasicPushLongPollingTest.java
new file mode 100644
index 0000000000..b526a11d38
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/push/BasicPushLongPollingTest.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2000-2013 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.push;
+
+public class BasicPushLongPollingTest extends BasicPushTest {
+} \ No newline at end of file
diff --git a/uitest/src/com/vaadin/tests/push/LongPollingReconnectTest.java b/uitest/src/com/vaadin/tests/push/LongPollingReconnectTest.java
new file mode 100644
index 0000000000..81c974e1e5
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/push/LongPollingReconnectTest.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright 2000-2013 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.push;
+
+public class LongPollingReconnectTest extends PushReconnectTest {
+
+ @Override
+ protected Class<?> getUIClass() {
+ return BasicPushLongPolling.class;
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/push/PushLargeDataLongPolling.java b/uitest/src/com/vaadin/tests/push/PushLargeDataLongPolling.java
new file mode 100644
index 0000000000..52a647115a
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/push/PushLargeDataLongPolling.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2000-2013 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.push;
+
+import com.vaadin.annotations.Push;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.shared.ui.ui.Transport;
+import com.vaadin.shared.ui.ui.UIState.PushConfigurationState;
+
+@Push(transport = Transport.LONG_POLLING)
+public class PushLargeDataLongPolling extends PushLargeData {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ super.setup(request);
+ getPushConfiguration().setParameter(
+ PushConfigurationState.FALLBACK_TRANSPORT_PARAM, "none");
+ }
+}
diff --git a/uitest/src/com/vaadin/tests/push/PushLargeDataLongPollingTest.java b/uitest/src/com/vaadin/tests/push/PushLargeDataLongPollingTest.java
new file mode 100644
index 0000000000..624310f1b5
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/push/PushLargeDataLongPollingTest.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright 2000-2013 Vaadin Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.vaadin.tests.push;
+
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class PushLargeDataLongPollingTest extends MultiBrowserTest {
+
+ @Test
+ public void testLongPollingLargeData() {
+ openTestURL();
+
+ // Without this there is a large chance that we will wait for all pushes
+ // to complete before moving on
+ testBench(driver).disableWaitForVaadin();
+
+ push();
+ // Push complete. Browser will reconnect now as > 10MB has been sent
+ // Push again to ensure push still works
+ push();
+
+ }
+
+ private void push() {
+ // Wait for startButton to be present
+ waitForElementToBePresent(vaadinLocatorById("startButton"));
+
+ String logRow0Id = "Log_row_0";
+ By logRow0 = vaadinLocatorById(logRow0Id);
+
+ vaadinElementById("startButton").click();
+ // Wait for push to start
+ waitUntil(ExpectedConditions.textToBePresentInElement(logRow0,
+ "Package "));
+
+ // Wait for until push should be done
+ sleep(PushLargeData.DEFAULT_DURATION_MS);
+
+ // Wait until push is actually done
+ waitUntil(ExpectedConditions.textToBePresentInElement(logRow0,
+ "Push complete"));
+ }
+
+}