diff tests/OnClientTester.java @ 557:ce2b616ed22e onclient

Add a cancellation callback to UploadHandler
author Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
date Thu, 16 Sep 2021 15:12:26 +0200 (2021-09-16)
parents 87feb93330a6
children 8a4e6c82815a
line wrap: on
line diff
--- a/tests/OnClientTester.java
+++ b/tests/OnClientTester.java
@@ -63,7 +63,7 @@ public final class OnClientTester extend
 		MyUploadHandler handler = new MyUploadHandler(100);
 		conn.setUploadHandler(handler);
 		update("COPY INTO foo FROM 'banana' ON CLIENT", 100);
-		assertEq("handler encountered write error", false, handler.encounteredWriteError());
+		assertEq("cancellation callback called", false, handler.isCancelled());
 		queryInt("SELECT COUNT(*) FROM foo", 100);
 	}
 
@@ -72,7 +72,7 @@ public final class OnClientTester extend
 		MyUploadHandler handler = new MyUploadHandler("immediate error");
 		conn.setUploadHandler(handler);
 		expectError("COPY INTO foo FROM 'banana' ON CLIENT", "immediate error");
-		assertEq("handler encountered write error", false, handler.encounteredWriteError());
+		assertEq("cancellation callback called", false, handler.isCancelled());
 		queryInt("SELECT COUNT(*) FROM foo", 0);
 	}
 
@@ -81,7 +81,7 @@ public final class OnClientTester extend
 		MyUploadHandler handler = new MyUploadHandler(100);
 		conn.setUploadHandler(handler);
 		update("COPY OFFSET 0 INTO foo FROM 'banana' ON CLIENT", 100);
-		assertEq("handler encountered write error", false, handler.encounteredWriteError());
+		assertEq("cancellation callback called", false, handler.isCancelled());
 		queryInt("SELECT MIN(i) FROM foo", 1);
 		queryInt("SELECT MAX(i) FROM foo", 100);
 	}
@@ -91,7 +91,7 @@ public final class OnClientTester extend
 		MyUploadHandler handler = new MyUploadHandler(100);
 		conn.setUploadHandler(handler);
 		update("COPY OFFSET 1 INTO foo FROM 'banana' ON CLIENT", 100);
-		assertEq("handler encountered write error", false, handler.encounteredWriteError());
+		assertEq("cancellation callback called", false, handler.isCancelled());
 		queryInt("SELECT MIN(i) FROM foo", 1);
 		queryInt("SELECT MAX(i) FROM foo", 100);
 	}
@@ -101,7 +101,7 @@ public final class OnClientTester extend
 		MyUploadHandler handler = new MyUploadHandler(100);
 		conn.setUploadHandler(handler);
 		update("COPY OFFSET 5 INTO foo FROM 'banana' ON CLIENT", 96);
-		assertEq("handler encountered write error", false, handler.encounteredWriteError());
+		assertEq("cancellation callback called", false, handler.isCancelled());
 		queryInt("SELECT MIN(i) FROM foo", 5);
 		queryInt("SELECT MAX(i) FROM foo", 100);
 	}
@@ -111,6 +111,7 @@ public final class OnClientTester extend
 		MyUploadHandler handler = new MyUploadHandler(100);
 		conn.setUploadHandler(handler);
 		update("COPY 10 RECORDS INTO foo FROM 'banana' ON CLIENT", 10);
+		assertEq("cancellation callback called", true, handler.isCancelled());
 		assertEq("handler encountered write error", true, handler.encounteredWriteError());
 		// Server stopped reading after 10 rows. Will we stay in sync?
 		queryInt("SELECT COUNT(i) FROM foo", 10);
@@ -149,7 +150,7 @@ public final class OnClientTester extend
 		conn.setUploadHandler(handler);
 		handler.setChunkSize(1024 * 1024);
 		update("COPY INTO foo FROM 'banana' ON CLIENT", n);
-		assertEq("handler encountered write error", false, handler.encounteredWriteError());
+		assertEq("cancellation callback called", false, handler.isCancelled());
 		queryInt("SELECT COUNT(DISTINCT i) FROM foo", n);
 	}
 
@@ -213,7 +214,7 @@ public final class OnClientTester extend
 		MyUploadHandler handler = new MyUploadHandler(100, 50, "i don't like line 50");
 		conn.setUploadHandler(handler);
 		expectError("COPY INTO foo FROM 'banana' ON CLIENT", "i don't like");
-		assertEq("handler encountered write error", false, handler.encounteredWriteError());
+		assertEq("cancellation callback called", false, handler.isCancelled());
 		assertEq("connection is closed", true, conn.isClosed());
 	}
 
@@ -254,7 +255,8 @@ public final class OnClientTester extend
 		private final long rows;
 		private final long errorAt;
 		private final String errorMessage;
-		private boolean encounteredWriteError;
+		private boolean encounteredWriteError = false;
+		private boolean cancelled = false;
 
 		private int chunkSize = 100; // small number to trigger more bugs
 
@@ -277,6 +279,11 @@ public final class OnClientTester extend
 		}
 
 		@Override
+		public void uploadCancelled() {
+			cancelled = true;
+		}
+
+		@Override
 		public void handleUpload(MonetConnection.Upload handle, String name, boolean textMode, long linesToSkip) throws IOException {
 			if (errorAt == -1 && errorMessage != null) {
 				handle.sendError(errorMessage);
@@ -299,6 +306,10 @@ public final class OnClientTester extend
 		public Object encounteredWriteError() {
 			return encounteredWriteError;
 		}
+
+		public boolean isCancelled() {
+			return cancelled;
+		}
 	}
 
 	static class MyDownloadHandler implements DownloadHandler {