changeset 994:e318ef62411d

Fix WebStorage load/save files. Reviewed-by: neugens Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-February/005809.html PR 1314
author Roman Kennke <rkennke@redhat.com>
date Fri, 22 Feb 2013 16:52:26 +0100
parents c464fa479682
children db2b89cdef62
files integration-tests/src/test/java/com/redhat/thermostat/itest/WebAppTest.java web/client/src/main/java/com/redhat/thermostat/web/client/internal/WebStorage.java
diffstat 2 files changed, 26 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/integration-tests/src/test/java/com/redhat/thermostat/itest/WebAppTest.java	Tue Feb 19 14:25:17 2013 +0100
+++ b/integration-tests/src/test/java/com/redhat/thermostat/itest/WebAppTest.java	Fri Feb 22 16:52:26 2013 +0100
@@ -37,12 +37,16 @@
 package com.redhat.thermostat.itest;
 
 import static com.redhat.thermostat.itest.IntegrationTest.assertNoExceptions;
+import static com.redhat.thermostat.itest.IntegrationTest.deleteFilesUnder;
+import static com.redhat.thermostat.itest.IntegrationTest.getStorageDataDirectory;
 import static com.redhat.thermostat.itest.IntegrationTest.spawnThermostat;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
+import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import java.io.InputStream;
 import java.util.UUID;
 
 import org.eclipse.jetty.security.DefaultUserIdentity;
@@ -77,6 +81,9 @@
 
     @BeforeClass
     public static void setUpOnce() throws Exception {
+        String staleDataDir = getStorageDataDirectory();
+        deleteFilesUnder(staleDataDir);
+
         Spawn storage = spawnThermostat("storage", "--start");
         storage.expect("pid:");
         storage.expectClose();
@@ -163,4 +170,22 @@
         assertEquals(12345, foundPojo.getLoadedClasses());
         assertFalse(cursor.hasNext());
     }
+
+    @Test
+    public void testLoadSave() throws IOException, InterruptedException {
+        byte[] data = "Hello World".getBytes();
+        webStorage.saveFile("test", new ByteArrayInputStream(data));
+        // Note: Apparently, saving the file takes a bit. Without this
+        // waiting, we sometimes get problems on loadFile. There seems
+        // to be no way to synchronize on the operation in Mongo.
+        Thread.sleep(300);
+        InputStream loadStream = webStorage.loadFile("test");
+        StringBuilder str = new StringBuilder();
+        int i = loadStream.read();
+        while (i != -1) {
+            str.append((char) i);
+            i = loadStream.read();
+        }
+        assertEquals("Hello World", str.toString());
+    }
 }
--- a/web/client/src/main/java/com/redhat/thermostat/web/client/internal/WebStorage.java	Tue Feb 19 14:25:17 2013 +0100
+++ b/web/client/src/main/java/com/redhat/thermostat/web/client/internal/WebStorage.java	Fri Feb 22 16:52:26 2013 +0100
@@ -338,6 +338,7 @@
                 new ThermostatGSONConverter()).create();
         ClientConnectionManager connManager = new ThreadSafeClientConnManager();
         DefaultHttpClient client = new DefaultHttpClient(connManager);
+        client.getParams().setParameter("http.protocol.expect-continue", Boolean.TRUE);
         httpClient = client;
         random = new SecureRandom();
         conn = new WebConnection();