Mercurial > hg > release > thermostat-0.6
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();