Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use a NoSyncFileSystem to skip Sync/FSync to reduce test times #380

Merged
merged 1 commit into from
Feb 9, 2023

Conversation

mrambacher
Copy link
Contributor

This PR is based on RocksDB 9545. This change introduces an InjectionFS class that can intercept the calls to the FileSystem and its associated File classes, allowing different behavior to be injected into the system.

Two examples of this Injection are part of this PR. The CountedFileSystem class allows file operations (open, close, read, write, etc) to be counted. This class existed before but takes advantage of the new infrastructure.

The NoSyncFileSystem is another InjectionFS. This file system can be used to turn off the various sync and fsync operations. This class is meant to be used primarily for testing.

As documented elsewhere, the MacOS uses time-consuming sync operations, causing the unit tests to take a very long time. Below are the results of a make check on a Mac showing the performance improvement:
main: make -j 10 check 5320.78s user 1995.73s system 75% cpu 2:40:45.65 total
PR: make -j 10 check 4166.23s user 1556.93s system 119% cpu 1:19:54.49 total
PR+319: make -j 10 check 3367.97s user 1225.99s system 209% cpu 36:36.18 total

@mrambacher mrambacher self-assigned this Jan 27, 2023
@Guyme Guyme added the build Build related label Feb 2, 2023
@Guyme Guyme requested review from ayulas and removed request for ayulas February 7, 2023 13:44
@mrambacher mrambacher changed the title Add Injection and NoSyncFS Use a NoSyncFileSystem to skip Sync/FSync on many tests to reduce test times Feb 9, 2023
@mrambacher mrambacher changed the title Use a NoSyncFileSystem to skip Sync/FSync on many tests to reduce test times Use a NoSyncFileSystem to skip Sync/FSync to reduce test times Feb 9, 2023
@Yuval-Ariel Yuval-Ariel merged commit 61974b1 into speedb-io:main Feb 9, 2023
Yuval-Ariel pushed a commit that referenced this pull request Feb 15, 2023
…ata (#402)

Code was accidentally dropped during recent PR (#380)
ayulas pushed a commit that referenced this pull request Feb 26, 2023
Use a NoSyncFileSystem to skip Sync/FSync to reduce test times
ayulas pushed a commit that referenced this pull request Feb 26, 2023
…ata (#402)

Code was accidentally dropped during recent PR (#380)
Yuval-Ariel pushed a commit that referenced this pull request May 1, 2023
Use a NoSyncFileSystem to skip Sync/FSync to reduce test times
Yuval-Ariel pushed a commit that referenced this pull request May 2, 2023
…ata (#402)

Code was accidentally dropped during recent PR (#380)
Yuval-Ariel pushed a commit that referenced this pull request May 4, 2023
Use a NoSyncFileSystem to skip Sync/FSync to reduce test times
Yuval-Ariel pushed a commit that referenced this pull request May 4, 2023
…ata (#402)

Code was accidentally dropped during recent PR (#380)
udi-speedb pushed a commit that referenced this pull request Nov 13, 2023
…ata (#402)

Code was accidentally dropped during recent PR (#380)
udi-speedb pushed a commit that referenced this pull request Nov 15, 2023
…ata (#402)

Code was accidentally dropped during recent PR (#380)
udi-speedb pushed a commit that referenced this pull request Dec 4, 2023
…ata (#402)

Code was accidentally dropped during recent PR (#380)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
build Build related
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants