From be32fc2ebe7079027c4d9ebab1eba197085b695e Mon Sep 17 00:00:00 2001 From: Adrian Zawadzki Date: Tue, 16 Dec 2025 23:15:40 +0100 Subject: [PATCH 1/8] fix(ci): fixet test-wheels actions --- .github/workflows/test-linux-wheel.yml | 9 +++++++++ .github/workflows/test-mac-wheel.yml | 9 +++++++++ .github/workflows/test-windows-wheel.yml | 10 ++++++++++ 3 files changed, 28 insertions(+) diff --git a/.github/workflows/test-linux-wheel.yml b/.github/workflows/test-linux-wheel.yml index 8172534d..86bae0c9 100644 --- a/.github/workflows/test-linux-wheel.yml +++ b/.github/workflows/test-linux-wheel.yml @@ -49,8 +49,17 @@ on: default: "-m 'not integration_test' -m 'not stress_test'" jobs: + build-wheel: + if: github.event_name == 'workflow_dispatch' + uses: ./.github/workflows/build-linux-wheel.yml + with: + python-version: ${{ inputs.python-version }} + timeout-minutes: ${{ inputs.timeout-minutes }} + test-wheels-linux: runs-on: ubuntu-latest + needs: [build-wheel] + if: always() && (needs.build-wheel.result == 'success' || needs.build-wheel.result == 'skipped') timeout-minutes: ${{ fromJSON(inputs.timeout-minutes) }} env: REQUIREMENTS_FILE: ${{ inputs.python-version == '3.9' && 'requirements.3.9.txt' || 'requirements.txt' }} diff --git a/.github/workflows/test-mac-wheel.yml b/.github/workflows/test-mac-wheel.yml index a856a213..4a9f055e 100644 --- a/.github/workflows/test-mac-wheel.yml +++ b/.github/workflows/test-mac-wheel.yml @@ -40,8 +40,17 @@ on: default: "-m 'not integration_test' -m 'not stress_test'" jobs: + build-wheel: + if: github.event_name == 'workflow_dispatch' + uses: ./.github/workflows/build-mac-wheel.yml + with: + python-version: ${{ inputs.python-version }} + timeout-minutes: ${{ inputs.timeout-minutes }} + test-wheels-macos: runs-on: macos-latest + needs: [build-wheel] + if: always() && (needs.build-wheel.result == 'success' || needs.build-wheel.result == 'skipped') timeout-minutes: ${{ fromJSON(inputs.timeout-minutes) }} env: REQUIREMENTS_FILE: ${{ inputs.python-version == '3.9' && 'requirements.3.9.txt' || 'requirements.txt' }} diff --git a/.github/workflows/test-windows-wheel.yml b/.github/workflows/test-windows-wheel.yml index 05c0e0f4..51e1a589 100644 --- a/.github/workflows/test-windows-wheel.yml +++ b/.github/workflows/test-windows-wheel.yml @@ -22,8 +22,18 @@ on: default: '3.12' jobs: + build-wheel: + if: github.event_name == 'workflow_dispatch' + uses: ./.github/workflows/build-windows-wheel.yml + with: + python-version: ${{ inputs.python-version }} + python-tag: ${{ inputs.python-version == '3.9' && '39' || inputs.python-version == '3.10' && '310' || inputs.python-version == '3.11' && '311' || inputs.python-version == '3.12' && '312' || inputs.python-version == '3.13' && '313' || '314' }} + architecture: "AMD64" + test-windows: runs-on: windows-latest + needs: [build-wheel] + if: always() && (needs.build-wheel.result == 'success' || needs.build-wheel.result == 'skipped') env: REQUIREMENTS_FILE: ${{ inputs.python-version == '3.9' && 'requirements.3.9.txt' || 'requirements.txt' }} steps: From dd8bccde9686a13d2e83f5d4bf87b89a0f124c85 Mon Sep 17 00:00:00 2001 From: Adrian Zawadzki Date: Tue, 16 Dec 2025 23:27:51 +0100 Subject: [PATCH 2/8] fix(ci): fixed timeout variable --- .github/workflows/test-linux-wheel.yml | 2 +- .github/workflows/test-mac-wheel.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-linux-wheel.yml b/.github/workflows/test-linux-wheel.yml index 86bae0c9..4f985da7 100644 --- a/.github/workflows/test-linux-wheel.yml +++ b/.github/workflows/test-linux-wheel.yml @@ -54,7 +54,7 @@ jobs: uses: ./.github/workflows/build-linux-wheel.yml with: python-version: ${{ inputs.python-version }} - timeout-minutes: ${{ inputs.timeout-minutes }} + timeout-minutes: ${{ fromJSON(inputs.timeout-minutes) }} test-wheels-linux: runs-on: ubuntu-latest diff --git a/.github/workflows/test-mac-wheel.yml b/.github/workflows/test-mac-wheel.yml index 4a9f055e..be5f2668 100644 --- a/.github/workflows/test-mac-wheel.yml +++ b/.github/workflows/test-mac-wheel.yml @@ -45,7 +45,7 @@ jobs: uses: ./.github/workflows/build-mac-wheel.yml with: python-version: ${{ inputs.python-version }} - timeout-minutes: ${{ inputs.timeout-minutes }} + timeout-minutes: ${{ fromJSON(inputs.timeout-minutes) }} test-wheels-macos: runs-on: macos-latest From 4ffce36c566d2d6776a9a1d3ccec0231ea2be31a Mon Sep 17 00:00:00 2001 From: Adrian Zawadzki Date: Wed, 17 Dec 2025 10:04:48 +0100 Subject: [PATCH 3/8] fix(tests): Changed modification times methods for cfile for mac --- src/dbzero/core/storage/CFile.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/dbzero/core/storage/CFile.cpp b/src/dbzero/core/storage/CFile.cpp index 6d09701a..17383e9d 100644 --- a/src/dbzero/core/storage/CFile.cpp +++ b/src/dbzero/core/storage/CFile.cpp @@ -52,11 +52,9 @@ namespace db0 auto duration = tp.time_since_epoch(); return std::chrono::duration_cast(duration).count(); #elif defined(__APPLE__) - struct stat st; - if (stat(file_name, &st)) { - THROWF(db0::IOException) << "CFile::getLastModifiedTime: stat failed"; - }; - return st.st_mtimespec.tv_sec * 1000000000 + st.st_mtimespec.tv_nsec; + auto tp = fs::last_write_time(fs::path(file_name)); + auto duration = tp.time_since_epoch(); + return std::chrono::duration_cast(duration).count(); #else struct stat st; if (stat(file_name, &st)) { @@ -114,6 +112,10 @@ namespace db0 if (_commit(fileno(m_file)) == -1) { THROWF(db0::IOException) << "CFile::fsync: failed to sync file " << m_path; } +#elif defined(__APPLE__) + if (_commit(fileno(m_file)) == -1) { + THROWF(db0::IOException) << "CFile::fsync: failed to sync file " << m_path; + } #else if (::fsync(fileno(m_file)) == -1) { THROWF(db0::IOException) << "CFile::fsync: failed to sync file " << m_path; From 89b0b1464a08885c15f8594cd4538a2cf6dea224 Mon Sep 17 00:00:00 2001 From: Adrian Zawadzki Date: Wed, 17 Dec 2025 10:20:36 +0100 Subject: [PATCH 4/8] fix(tests): changed last modify date for mac --- src/dbzero/core/storage/CFile.cpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/dbzero/core/storage/CFile.cpp b/src/dbzero/core/storage/CFile.cpp index 17383e9d..f5cf71e2 100644 --- a/src/dbzero/core/storage/CFile.cpp +++ b/src/dbzero/core/storage/CFile.cpp @@ -112,10 +112,6 @@ namespace db0 if (_commit(fileno(m_file)) == -1) { THROWF(db0::IOException) << "CFile::fsync: failed to sync file " << m_path; } -#elif defined(__APPLE__) - if (_commit(fileno(m_file)) == -1) { - THROWF(db0::IOException) << "CFile::fsync: failed to sync file " << m_path; - } #else if (::fsync(fileno(m_file)) == -1) { THROWF(db0::IOException) << "CFile::fsync: failed to sync file " << m_path; From e702f610b9d42d669ec95a1eb7ef8095e84b3fc2 Mon Sep 17 00:00:00 2001 From: Adrian Zawadzki Date: Wed, 17 Dec 2025 11:15:30 +0100 Subject: [PATCH 5/8] changed test to no autocommit --- python_tests/test_refresh.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/python_tests/test_refresh.py b/python_tests/test_refresh.py index e8156510..4afbc229 100644 --- a/python_tests/test_refresh.py +++ b/python_tests/test_refresh.py @@ -504,7 +504,8 @@ async def with_timeout(future, timeout): return True if done else False -async def test_async_wait_for_updates(db0_fixture): +@pyte +async def test_async_wait_for_updates(db0_no_autocommit): prefix = db0.get_current_prefix().name db0.commit() db0.close() From b7f900796a467f36314723ed9f0d81ec35a8e040 Mon Sep 17 00:00:00 2001 From: Adrian Zawadzki Date: Wed, 17 Dec 2025 11:55:38 +0100 Subject: [PATCH 6/8] changed test refresh --- python_tests/test_refresh.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/python_tests/test_refresh.py b/python_tests/test_refresh.py index 4afbc229..d0361b49 100644 --- a/python_tests/test_refresh.py +++ b/python_tests/test_refresh.py @@ -14,8 +14,8 @@ # to verify that refresh works correctly with custom page_io_step_size pytestmark = pytest.mark.parametrize("db0_fixture", [ - {}, # default parameters - {"page_io_step_size": 16 << 10} # with custom page_io_step_size + {"autocommit":False}, # default parameters + {"autocommit":False, "page_io_step_size": 16 << 10} # with custom page_io_step_size ], indirect=True) @@ -504,8 +504,7 @@ async def with_timeout(future, timeout): return True if done else False -@pyte -async def test_async_wait_for_updates(db0_no_autocommit): +async def test_async_wait_for_updates(db0_fixture): prefix = db0.get_current_prefix().name db0.commit() db0.close() From f79e55aa2079490a30234ccfbd6bd6ea32609985 Mon Sep 17 00:00:00 2001 From: Adrian Zawadzki Date: Wed, 17 Dec 2025 12:36:36 +0100 Subject: [PATCH 7/8] fixed test --- python_tests/test_refresh.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python_tests/test_refresh.py b/python_tests/test_refresh.py index d0361b49..9aed6754 100644 --- a/python_tests/test_refresh.py +++ b/python_tests/test_refresh.py @@ -528,7 +528,7 @@ async def test_async_wait_for_updates(db0_fixture): current_num = db0.get_state_num(prefix) make_trasaction(writer_sem, 2) time.sleep(0.5) - assert await with_timeout(db0.async_wait(prefix, current_num + 1), 1) + assert await with_timeout(db0.async_wait(prefix, current_num + 2), 1) current_num = db0.get_state_num(prefix) # Wait current state From f547d49ad5edf91f8fd6b63187687be85b7a9443 Mon Sep 17 00:00:00 2001 From: Adrian Zawadzki Date: Wed, 17 Dec 2025 12:50:59 +0100 Subject: [PATCH 8/8] fixed tests --- python_tests/test_refresh.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/python_tests/test_refresh.py b/python_tests/test_refresh.py index 9aed6754..8eb2f5c2 100644 --- a/python_tests/test_refresh.py +++ b/python_tests/test_refresh.py @@ -522,7 +522,7 @@ async def test_async_wait_for_updates(db0_fixture): # Start waiting before transactions complete current_num = db0.get_state_num(prefix) make_trasaction(writer_sem, 5) - assert await with_timeout(db0.async_wait(prefix, current_num + 5), 1) + assert await with_timeout(db0.async_wait(prefix, current_num + 5), 2) # Start waiting after transactions complete current_num = db0.get_state_num(prefix)