]> source.dussan.org Git - vaadin-framework.git/commitdiff
Show push version information in debug window (#14904).
authorDenis Anisimov <denis@vaadin.com>
Sun, 19 Oct 2014 11:54:47 +0000 (14:54 +0300)
committerVaadin Code Review <review@vaadin.com>
Tue, 2 Dec 2014 10:52:59 +0000 (10:52 +0000)
Change-Id: Id1761abbf2b2dc29b4138520f11ce51bb4d423fc

client/src/com/vaadin/client/ApplicationConfiguration.java
client/src/com/vaadin/client/debug/internal/InfoSection.java
server/src/com/vaadin/server/BootstrapHandler.java
uitest/src/com/vaadin/tests/debug/PushVersionInfo.java [new file with mode: 0644]
uitest/src/com/vaadin/tests/debug/PushVersionInfoTest.java [new file with mode: 0644]

index 12b158529268897c8261bce1cfd830ee7b4e5671..4865e38a4a95105def4dafd24d0a3cb3047ea1d5 100644 (file)
@@ -172,6 +172,33 @@ public class ApplicationConfiguration implements EntryPoint {
             return this.getConfig("versionInfo").vaadinVersion;
         }-*/;
 
+        /**
+         * Gets the version of the Atmosphere framework.
+         * 
+         * @return a string with the version
+         * 
+         * @see org.atmosphere.util#getRawVersion()
+         */
+        private native String getAtmosphereVersion()
+        /*-{
+            return this.getConfig("versionInfo").atmosphereVersion;
+        }-*/;
+
+        /**
+         * Gets the JS version used in the Atmosphere framework.
+         * 
+         * @return a string with the version
+         */
+        private native String getAtmosphereJSVersion()
+        /*-{
+            if ($wnd.jQueryVaadin != undefined){
+                return $wnd.jQueryVaadin.atmosphere.version;
+            }
+            else {
+                return null;
+            }
+        }-*/;
+
         private native String getUIDL()
         /*-{
            return this.getConfig("uidl");
@@ -461,6 +488,24 @@ public class ApplicationConfiguration implements EntryPoint {
         return getJsoConfiguration(id).getVaadinVersion();
     }
 
+    /**
+     * Return Atmosphere version.
+     * 
+     * @return Atmosphere version.
+     */
+    public String getAtmosphereVersion() {
+        return getJsoConfiguration(id).getAtmosphereVersion();
+    }
+
+    /**
+     * Return Atmosphere JS version.
+     * 
+     * @return Atmosphere JS version.
+     */
+    public String getAtmosphereJSVersion() {
+        return getJsoConfiguration(id).getAtmosphereJSVersion();
+    }
+
     public Class<? extends ServerConnector> getConnectorClassByEncodedTag(
             int tag) {
         Class<? extends ServerConnector> type = classes.get(tag);
index a7a84f5f8fb3e6e18c4f53bbdd0b83ec78354097..dfb31cdd1816223a2622aa80d4395ea291c2502b 100644 (file)
@@ -193,6 +193,9 @@ public class InfoSection implements Section {
             ApplicationConfiguration applicationConfiguration) {
         String clientVersion = Version.getFullVersion();
         String servletVersion = applicationConfiguration.getServletVersion();
+        String atmosphereVersion = applicationConfiguration
+                .getAtmosphereVersion();
+        String jsVersion = applicationConfiguration.getAtmosphereJSVersion();
 
         String themeVersion;
         boolean themeOk;
@@ -213,6 +216,11 @@ public class InfoSection implements Section {
         addRow("Server engine version", servletVersion, servletOk ? null
                 : ERROR_STYLE);
         addRow("Theme version", themeVersion, themeOk ? null : ERROR_STYLE);
+        if (jsVersion != null) {
+            addRow("Push server version", atmosphereVersion);
+            addRow("Push client version", jsVersion
+                    + " (note: does not need to match server version)");
+        }
     }
 
     /**
index f0666f63fc55623f568edda10fb5220e9efafaee..c34e986fce7aca69895dabed3e3ddd53a0a5fc7d 100644 (file)
@@ -469,6 +469,8 @@ public abstract class BootstrapHandler extends SynchronizedRequestHandler {
 
         JsonObject versionInfo = Json.createObject();
         versionInfo.put("vaadinVersion", Version.getFullVersion());
+        versionInfo.put("atmosphereVersion",
+                org.atmosphere.util.Version.getRawVersion());
         appConfig.put("versionInfo", versionInfo);
 
         appConfig.put("widgetset", context.getWidgetsetName());
diff --git a/uitest/src/com/vaadin/tests/debug/PushVersionInfo.java b/uitest/src/com/vaadin/tests/debug/PushVersionInfo.java
new file mode 100644 (file)
index 0000000..d8c23a3
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2000-2014 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.debug;
+
+import org.atmosphere.util.Version;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.shared.communication.PushMode;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Label;
+
+/**
+ * Test UI for PUSH version string in debug window.
+ * 
+ * @author Vaadin Ltd
+ */
+public class PushVersionInfo extends AbstractTestUI {
+
+    @Override
+    protected void setup(VaadinRequest request) {
+        if (request.getParameter("enablePush") != null) {
+            getPushConfiguration().setPushMode(PushMode.AUTOMATIC);
+            Label label = new Label(Version.getRawVersion());
+            label.addStyleName("atmosphere-version");
+            addComponent(label);
+        }
+    }
+
+    @Override
+    public String getDescription() {
+        return "Debug window shows Push version in info Tab.";
+    }
+
+    @Override
+    protected Integer getTicketNumber() {
+        return 14904;
+    }
+}
diff --git a/uitest/src/com/vaadin/tests/debug/PushVersionInfoTest.java b/uitest/src/com/vaadin/tests/debug/PushVersionInfoTest.java
new file mode 100644 (file)
index 0000000..90ea645
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2000-2014 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.debug;
+
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.Keys;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.interactions.Actions;
+
+import com.vaadin.tests.annotations.TestCategory;
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+/**
+ * Test for PUSH version string in debug window.
+ * 
+ * @author Vaadin Ltd
+ */
+@TestCategory("push")
+public class PushVersionInfoTest extends MultiBrowserTest {
+
+    @Test
+    public void testDisabledPush() {
+        setDebug(true);
+        openTestURL();
+
+        selectInfoTab();
+        Assert.assertNull("Found push info server string for disabled Push",
+                getPushRowValue("Push server version"));
+        Assert.assertNull("Found push info client string for disabled Push",
+                getPushRowValue("Push client version"));
+    }
+
+    @Test
+    public void testEnabledPush() {
+        setDebug(true);
+        openTestURL("enablePush=true");
+
+        selectInfoTab();
+        WebElement pushRow = getPushRowValue("Push server version");
+        String atmVersion = findElement(By.className("atmosphere-version"))
+                .getText();
+        Assert.assertTrue("Push row doesn't contain Atmosphere version",
+                pushRow.getText().contains(atmVersion));
+        String jsString = getPushRowValue("Push client version").getText();
+        Assert.assertTrue(
+                "Push client version doesn't contain 'vaadin' string",
+                jsString.contains("vaadin"));
+        Assert.assertTrue(
+                "Push client version doesn't contain 'jquery' string",
+                jsString.contains("jquery"));
+    }
+
+    private void selectInfoTab() {
+        if (isElementPresent(By.className("v-ie8"))) {
+
+            int size = findElements(By.className("v-debugwindow-tab")).size();
+            for (int i = 0; i < size; i++) {
+                WebElement tab = findElement(By
+                        .className("v-debugwindow-tab-selected"));
+                String title = tab.getAttribute("title");
+                if (title != null && title.startsWith("General information")) {
+                    break;
+                }
+                Actions actions = new Actions(getDriver());
+                actions.sendKeys(Keys.TAB);
+                actions.sendKeys(Keys.SPACE);
+                actions.build().perform();
+            }
+        } else {
+            findElements(By.className("v-debugwindow-tab")).get(0).click();
+            findElements(By.className("v-debugwindow-tab")).get(1).click();
+        }
+    }
+
+    private WebElement getPushRowValue(String key) {
+        List<WebElement> rows = findElements(By.className("v-debugwindow-row"));
+        for (WebElement row : rows) {
+            WebElement caption = row.findElement(By.className("caption"));
+            if (caption.getText().startsWith(key)) {
+                return row.findElement(By.className("value"));
+            }
+        }
+        return null;
+    }
+}