Mercurial > hg > monetdb-java
diff tests/OnClientTester.java @ 522:279414178dc6 onclient
Also test larger up- and downloads
author | Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com> |
---|---|
date | Thu, 26 Aug 2021 12:08:06 +0200 (2021-08-26) |
parents | b4c7816e3592 |
children | 3ff972d266cb |
line wrap: on
line diff
--- a/tests/OnClientTester.java +++ b/tests/OnClientTester.java @@ -207,6 +207,9 @@ public final class OnClientTester { private final int rows; private final int errorAt; private final String errorMessage; + + private int chunkSize = 100; // small number to trigger more bugs + MyUploadHandler(int rows, int errorAt, String errorMessage) { this.rows = rows; this.errorAt = errorAt; @@ -221,6 +224,10 @@ public final class OnClientTester { this(0, -1, errorMessage); } + public void setChunkSize(int chunkSize) { + this.chunkSize = chunkSize; + } + @Override public void handleUpload(MonetConnection.Upload handle, String name, boolean textMode, int offset) throws IOException { int toSkip = offset > 0 ? offset - 1 : 0; @@ -228,6 +235,7 @@ public final class OnClientTester { handle.sendError(errorMessage); return; } + handle.setChunkSize(chunkSize); PrintStream stream = handle.getStream(); for (int i = toSkip; i < rows; i++) { if (i == errorAt) { @@ -368,14 +376,19 @@ public final class OnClientTester { queryInt("SELECT COUNT(i) FROM foo", 10); } - private void test_Download() throws SQLException, Failure { + private void test_Download(int n) throws SQLException, Failure { prepare(); MyDownloadHandler handler = new MyDownloadHandler(); conn.setDownloadHandler(handler); - update("INSERT INTO foo SELECT value as i, 'number' || value AS t FROM sys.generate_series(0, 100)", 100); + String q = "INSERT INTO foo SELECT value as i, 'number' || value AS t FROM sys.generate_series(0, " + n + ")"; + update(q, n); update("COPY (SELECT * FROM foo) INTO 'banana' ON CLIENT", -1); assertEq("download attempts", 1, handler.countAttempts()); - assertEq("lines downloaded", 100, handler.lineCount()); + assertEq("lines downloaded", n, handler.lineCount()); + } + + private void test_Download() throws SQLException, Failure { + test_Download(100); } private void test_CancelledDownload() throws SQLException, Failure { @@ -388,5 +401,18 @@ public final class OnClientTester { queryInt("SELECT 42", 42); } + public void test_LargeUpload() throws SQLException, Failure { + prepare(); + int n = 4_000_000; + MyUploadHandler handler = new MyUploadHandler(n); + conn.setUploadHandler(handler); + handler.setChunkSize(1024 * 1024); + update("COPY INTO foo FROM 'banana' ON CLIENT", n); + queryInt("SELECT COUNT(DISTINCT i) FROM foo", n); + } + + private void test_LargeDownload() throws SQLException, Failure { + test_Download(4_000_000); + } } \ No newline at end of file