-
Notifications
You must be signed in to change notification settings - Fork 48
feat: Add vmlens checks #1567
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
base: main
Are you sure you want to change the base?
feat: Add vmlens checks #1567
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #1567 +/- ##
============================================
+ Coverage 92.82% 93.24% +0.42%
- Complexity 487 489 +2
============================================
Files 46 46
Lines 1170 1170
Branches 103 103
============================================
+ Hits 1086 1091 +5
+ Misses 54 49 -5
Partials 30 30
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
1c5db1d
to
14c6f8b
Compare
Signed-off-by: christian.lutnik <[email protected]>
Signed-off-by: christian.lutnik <[email protected]>
I definitely think this is cool, and useful. I have a concern about committing binaries though; to me, these always present a vector for attack in OSS projects, since it's very easy to miss changes to them and nearly impossible to verify their contents. Could we instead download this files if they don't exist with If you think I'm being overly worried here, please feel free to object. cc @aepfli @beeme1mr @lukas-reining |
I agree with you, @toddbaert, having the binary in our code base is not optimal. If we choose to download the jar file during each build run, would you say we have to make sure that we check the integrity of the jar file by comparing it to some hash code, so that we can be sure the file wasn't tampered with? |
Signed-off-by: christian.lutnik <[email protected]>
.gitignore
Outdated
@@ -13,3 +13,6 @@ target | |||
|
|||
# used for spec compliance tooling | |||
java-report.json | |||
|
|||
# vmlens stuff | |||
/vmlens-agent/vmlens/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
do we still need this ignore?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
no. nice catch
Signed-off-by: christian.lutnik <[email protected]>
…ke-hooks-thread-safer
…ll works Signed-off-by: christian.lutnik <[email protected]>
Signed-off-by: christian.lutnik <[email protected]>
|
@toddbaert I removed the vmlens .jar file, because they are not needed. The vmlens-maven-plugin installs the agent on its own |
Adds a vmlens check to this repo. This tool will us in the future to find and fix concurrency issues in our code base.
VMLens works by attaching a Java agent during the test run, which will intercept calls inside the
allInterleavings.hasNext()
loop. The agent goes over all possible iterations of interleavings that threads could do, and thereby discoveres race conditions.Asserts inside the tests help to verify that no operation was done on an intermediate state of the application.
Note that iterating over all interleavings can take some time, so the tests should be kept short.
The agent is installed by the
vmlens-maven-plugin
as needed.