comparison tests/OnClientTester.java @ 523:3ff972d266cb onclient

Suppress some warnings
author Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com>
date Thu, 26 Aug 2021 12:12:32 +0200 (2021-08-26)
parents 279414178dc6
children 71644dc873fe
comparison
equal deleted inserted replaced
522:279414178dc6 523:3ff972d266cb
3 import org.monetdb.jdbc.MonetUploadHandler; 3 import org.monetdb.jdbc.MonetUploadHandler;
4 4
5 import java.io.*; 5 import java.io.*;
6 import java.lang.reflect.InvocationTargetException; 6 import java.lang.reflect.InvocationTargetException;
7 import java.lang.reflect.Method; 7 import java.lang.reflect.Method;
8 import java.nio.charset.StandardCharsets;
9 import java.sql.*; 8 import java.sql.*;
10 9
11 public final class OnClientTester { 10 public final class OnClientTester {
12 private String jdbcUrl; 11 private String jdbcUrl;
13 boolean verbose = false; 12 boolean verbose = false;
201 execute("DROP TABLE IF EXISTS foo"); 200 execute("DROP TABLE IF EXISTS foo");
202 execute("CREATE TABLE foo (i INT, t TEXT)"); 201 execute("CREATE TABLE foo (i INT, t TEXT)");
203 } 202 }
204 203
205 static class MyUploadHandler implements MonetUploadHandler { 204 static class MyUploadHandler implements MonetUploadHandler {
206
207 private final int rows; 205 private final int rows;
208 private final int errorAt; 206 private final int errorAt;
209 private final String errorMessage; 207 private final String errorMessage;
210 208
211 private int chunkSize = 100; // small number to trigger more bugs 209 private int chunkSize = 100; // small number to trigger more bugs
328 super(message, cause); 326 super(message, cause);
329 } 327 }
330 328
331 } 329 }
332 330
333 private void test_Upload() throws Exception { 331 public void test_Upload() throws Exception {
334 prepare(); 332 prepare();
335 conn.setUploadHandler(new MyUploadHandler(100)); 333 conn.setUploadHandler(new MyUploadHandler(100));
336 update("COPY INTO foo FROM 'banana' ON CLIENT", 100); 334 update("COPY INTO foo FROM 'banana' ON CLIENT", 100);
337 queryInt("SELECT COUNT(*) FROM foo", 100); 335 queryInt("SELECT COUNT(*) FROM foo", 100);
338 } 336 }
339 337
340 private void test_ClientRefuses() throws Exception { 338 public void test_ClientRefuses() throws Exception {
341 prepare(); 339 prepare();
342 conn.setUploadHandler(new MyUploadHandler("immediate error")); 340 conn.setUploadHandler(new MyUploadHandler("immediate error"));
343 expectError("COPY INTO foo FROM 'banana' ON CLIENT", "immediate error"); 341 expectError("COPY INTO foo FROM 'banana' ON CLIENT", "immediate error");
344 queryInt("SELECT COUNT(*) FROM foo", 0); 342 queryInt("SELECT COUNT(*) FROM foo", 0);
345 } 343 }
346 344
347 private void test_Offset0() throws SQLException, Failure { 345 public void test_Offset0() throws SQLException, Failure {
348 prepare(); 346 prepare();
349 conn.setUploadHandler(new MyUploadHandler(100)); 347 conn.setUploadHandler(new MyUploadHandler(100));
350 update("COPY OFFSET 0 INTO foo FROM 'banana' ON CLIENT", 100); 348 update("COPY OFFSET 0 INTO foo FROM 'banana' ON CLIENT", 100);
351 queryInt("SELECT MIN(i) FROM foo", 1); 349 queryInt("SELECT MIN(i) FROM foo", 1);
352 queryInt("SELECT MAX(i) FROM foo", 100); 350 queryInt("SELECT MAX(i) FROM foo", 100);
353 } 351 }
354 352
355 private void test_Offset1() throws SQLException, Failure { 353 public void test_Offset1() throws SQLException, Failure {
356 prepare(); 354 prepare();
357 conn.setUploadHandler(new MyUploadHandler(100)); 355 conn.setUploadHandler(new MyUploadHandler(100));
358 update("COPY OFFSET 1 INTO foo FROM 'banana' ON CLIENT", 100); 356 update("COPY OFFSET 1 INTO foo FROM 'banana' ON CLIENT", 100);
359 queryInt("SELECT MIN(i) FROM foo", 1); 357 queryInt("SELECT MIN(i) FROM foo", 1);
360 queryInt("SELECT MAX(i) FROM foo", 100); 358 queryInt("SELECT MAX(i) FROM foo", 100);
361 } 359 }
362 360
363 private void test_Offset5() throws SQLException, Failure { 361 public void test_Offset5() throws SQLException, Failure {
364 prepare(); 362 prepare();
365 conn.setUploadHandler(new MyUploadHandler(100)); 363 conn.setUploadHandler(new MyUploadHandler(100));
366 update("COPY OFFSET 5 INTO foo FROM 'banana' ON CLIENT", 96); 364 update("COPY OFFSET 5 INTO foo FROM 'banana' ON CLIENT", 96);
367 queryInt("SELECT MIN(i) FROM foo", 5); 365 queryInt("SELECT MIN(i) FROM foo", 5);
368 queryInt("SELECT MAX(i) FROM foo", 100); 366 queryInt("SELECT MAX(i) FROM foo", 100);
369 } 367 }
370 368
371 private void testx_ServerCancels() throws SQLException, Failure { 369 public void testx_ServerCancels() throws SQLException, Failure {
372 prepare(); 370 prepare();
373 conn.setUploadHandler(new MyUploadHandler(100)); 371 conn.setUploadHandler(new MyUploadHandler(100));
374 update("COPY 10 RECORDS INTO foo FROM 'banana' ON CLIENT", 96); 372 update("COPY 10 RECORDS INTO foo FROM 'banana' ON CLIENT", 96);
375 // Server stopped reading after 10 rows. Will we stay in sync? 373 // Server stopped reading after 10 rows. Will we stay in sync?
376 queryInt("SELECT COUNT(i) FROM foo", 10); 374 queryInt("SELECT COUNT(i) FROM foo", 10);
377 } 375 }
378 376
379 private void test_Download(int n) throws SQLException, Failure { 377 public void test_Download(int n) throws SQLException, Failure {
380 prepare(); 378 prepare();
381 MyDownloadHandler handler = new MyDownloadHandler(); 379 MyDownloadHandler handler = new MyDownloadHandler();
382 conn.setDownloadHandler(handler); 380 conn.setDownloadHandler(handler);
383 String q = "INSERT INTO foo SELECT value as i, 'number' || value AS t FROM sys.generate_series(0, " + n + ")"; 381 String q = "INSERT INTO foo SELECT value as i, 'number' || value AS t FROM sys.generate_series(0, " + n + ")";
384 update(q, n); 382 update(q, n);
385 update("COPY (SELECT * FROM foo) INTO 'banana' ON CLIENT", -1); 383 update("COPY (SELECT * FROM foo) INTO 'banana' ON CLIENT", -1);
386 assertEq("download attempts", 1, handler.countAttempts()); 384 assertEq("download attempts", 1, handler.countAttempts());
387 assertEq("lines downloaded", n, handler.lineCount()); 385 assertEq("lines downloaded", n, handler.lineCount());
388 } 386 }
389 387
390 private void test_Download() throws SQLException, Failure { 388 public void test_Download() throws SQLException, Failure {
391 test_Download(100); 389 test_Download(100);
392 } 390 }
393 391
394 private void test_CancelledDownload() throws SQLException, Failure { 392 public void test_CancelledDownload() throws SQLException, Failure {
395 prepare(); 393 prepare();
396 MyDownloadHandler handler = new MyDownloadHandler("download refused"); 394 MyDownloadHandler handler = new MyDownloadHandler("download refused");
397 conn.setDownloadHandler(handler); 395 conn.setDownloadHandler(handler);
398 update("INSERT INTO foo SELECT value as i, 'number' || value AS t FROM sys.generate_series(0, 100)", 100); 396 update("INSERT INTO foo SELECT value as i, 'number' || value AS t FROM sys.generate_series(0, 100)", 100);
399 expectError("COPY (SELECT * FROM foo) INTO 'banana' ON CLIENT", "download refused"); 397 expectError("COPY (SELECT * FROM foo) INTO 'banana' ON CLIENT", "download refused");
409 handler.setChunkSize(1024 * 1024); 407 handler.setChunkSize(1024 * 1024);
410 update("COPY INTO foo FROM 'banana' ON CLIENT", n); 408 update("COPY INTO foo FROM 'banana' ON CLIENT", n);
411 queryInt("SELECT COUNT(DISTINCT i) FROM foo", n); 409 queryInt("SELECT COUNT(DISTINCT i) FROM foo", n);
412 } 410 }
413 411
414 private void test_LargeDownload() throws SQLException, Failure { 412 public void test_LargeDownload() throws SQLException, Failure {
415 test_Download(4_000_000); 413 test_Download(4_000_000);
416 } 414 }
417 415
418 } 416 }