diff --git a/delta/test/test_files/delta.test b/delta/test/test_files/delta.test index ac417984..4002a824 100644 --- a/delta/test/test_files/delta.test +++ b/delta/test/test_files/delta.test @@ -40,10 +40,12 @@ Alice|[52,24,31]|True|2020-05-17 00:00:00|{age: 25, gender: female} Bob|[15,66,72]|False|2011-03-22 00:00:00|{age: 22, gender: male} Carol|[29,24,11]||2001-04-15 00:00:00|{age: 33, gender: female} +# Core binder passes the source through verbatim for extension-provided formats, so the +# error for a non-existent table path now comes from the Delta scan itself. -LOG InvalidDeltaPath -STATEMENT LOAD FROM '${LBUG_ROOT_DIRECTORY}/student'(file_format='delta') RETURN * ---- error -Binder exception: No file found that matches the pattern: ${LBUG_ROOT_DIRECTORY}/student. +IO Error: Hit DeltaKernel FFI error (from: While trying to read from delta table: '${LBUG_ROOT_DIRECTORY}/student'): Hit error: 2 (Generic) with message (Not a Delta table: {}) -LOG InvalidDeltaTable -STATEMENT LOAD FROM '${LBUG_ROOT_DIRECTORY}/src' (file_format='delta') RETURN * diff --git a/httpfs/test/httpfs_test.cpp b/httpfs/test/httpfs_test.cpp index 44f9aa2f..d59fdff9 100644 --- a/httpfs/test/httpfs_test.cpp +++ b/httpfs/test/httpfs_test.cpp @@ -39,6 +39,18 @@ class LocalHttpServer { } return httplib::Server::HandlerResponse::Unhandled; }); + // The vendored httplib enables SO_REUSEPORT by default on Linux, which + // allows multiple sockets to bind the same port and load-balances + // connections between them. When ctest runs these tests in parallel, + // two processes' servers then share a port and requests land on the + // wrong server, making request counts flaky (observed as headCount()==0 + // under `ctest -j10`). Restrict to SO_REUSEADDR so a second bind fails + // and the loop below picks a genuinely free port instead. + server_.set_socket_options([](socket_t sock) { + int yes = 1; + setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, reinterpret_cast(&yes), + sizeof(yes)); + }); for (int port = 18123; port < 18153; ++port) { if (server_.bind_to_port("127.0.0.1", port)) { port_ = port; diff --git a/iceberg/test/test_files/iceberg.test b/iceberg/test/test_files/iceberg.test index a0ed3279..f68be972 100644 --- a/iceberg/test/test_files/iceberg.test +++ b/iceberg/test/test_files/iceberg.test @@ -50,10 +50,12 @@ Yale|6|190.700000 #Bob|[15,66,72]|False|2011-03-22 00:00:00|{age: 22, gender: male} #Carol|[29,24,11]||2001-04-15 00:00:00|{age: 33, gender: female} +# Core binder passes the source through verbatim for extension-provided formats, so the +# error for a non-existent table path now comes from the Iceberg scan itself. -LOG InvalidIcebergPath -STATEMENT LOAD FROM '${LBUG_ROOT_DIRECTORY}/student' (file_format='iceberg', allow_moved_paths=true) RETURN * ----- error -Binder exception: No file found that matches the pattern: ${LBUG_ROOT_DIRECTORY}/student. +---- error(regex) +IO Error: Cannot open file ".*": (The system cannot find the path specified.*|No such file or directory) -LOG InvalidIcebergTable -STATEMENT LOAD FROM '${LBUG_ROOT_DIRECTORY}/src' (file_format='iceberg', allow_moved_paths=true) RETURN *