summaryrefslogtreecommitdiffstats
path: root/server/tests/src/com
diff options
context:
space:
mode:
authorJohannes Dahlström <johannesd@vaadin.com>2014-05-19 16:28:09 +0300
committerArtur Signell <artur@vaadin.com>2014-05-26 13:18:00 +0000
commitdca9abccdddb5c1b39e9ae65b9cb53ad6fcab5cb (patch)
tree2ab384cecd52571388d7f2c4f113824093397f0b /server/tests/src/com
parent17b5b7bf508586626da48e21b9c72694f03c7ff2 (diff)
downloadvaadin-framework-dca9abccdddb5c1b39e9ae65b9cb53ad6fcab5cb.tar.gz
vaadin-framework-dca9abccdddb5c1b39e9ae65b9cb53ad6fcab5cb.zip
Properly deserialize push connection (#12235)
The UI.pushConnection field is transient no longer; instead PushConnection implementations must take care of serialization internally. When a session is serialized, the client should notice that push was disconnected and try to reconnect. A deserialized PushConnection should be in a "disconnected" state so the eventual client reconnection works correctly. Change-Id: I38cfc5a5cdbd3643311f830f8d580458dcd85c56
Diffstat (limited to 'server/tests/src/com')
-rw-r--r--server/tests/src/com/vaadin/server/communication/AtmospherePushConnectionTest.java56
1 files changed, 56 insertions, 0 deletions
diff --git a/server/tests/src/com/vaadin/server/communication/AtmospherePushConnectionTest.java b/server/tests/src/com/vaadin/server/communication/AtmospherePushConnectionTest.java
new file mode 100644
index 0000000000..f9e12ce75f
--- /dev/null
+++ b/server/tests/src/com/vaadin/server/communication/AtmospherePushConnectionTest.java
@@ -0,0 +1,56 @@
+/*
+ * 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.server.communication;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
+import org.atmosphere.cpr.AtmosphereResource;
+import org.easymock.EasyMock;
+import org.junit.Assert;
+import org.junit.Test;
+
+import com.vaadin.server.communication.AtmospherePushConnection.State;
+import com.vaadin.ui.UI;
+
+/**
+ * @author Vaadin Ltd
+ */
+public class AtmospherePushConnectionTest {
+ @Test
+ public void testSerialization() throws Exception {
+
+ UI ui = EasyMock.createNiceMock(UI.class);
+ AtmosphereResource resource = EasyMock
+ .createNiceMock(AtmosphereResource.class);
+
+ AtmospherePushConnection connection = new AtmospherePushConnection(ui);
+ connection.connect(resource);
+
+ Assert.assertEquals(State.CONNECTED, connection.getState());
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
+ new ObjectOutputStream(baos).writeObject(connection);
+
+ connection = (AtmospherePushConnection) new ObjectInputStream(
+ new ByteArrayInputStream(baos.toByteArray())).readObject();
+
+ Assert.assertEquals(State.DISCONNECTED, connection.getState());
+ }
+}