Uses 1113K of libraries. Click here for Pure Java version (8674L/40K).
!7 cprint TestFileBasedLock { switchable File file; switchable double timeout = 10; transient FileBasedLock lock1, lock2; transient S contents; // contents for lock file start-thread { if (file == null) setField(file := javaxCachesDir("Lock Test/lockfile-" + aGlobalID())); print("Using file: " + file); contents = null; regularTest(); crashTest(); contents = "hello"; regularTest(); crashTest(); print("All OK!"); } FileBasedLock makeLock() { FileBasedLock lock = new(file); if (contents != null) lock.contentsForLockFile(contents); lock.verbose = true; lock.timeout = timeout; ret lock; } void regularTest() { afterwards { cleanMeUp(); } lock1 = makeLock(); lock2 = makeLock(); assertTrueVerbose("Locking lock1", lock1.tryToLock()); // Check lock file contents assertEquals(unnull(contents), loadTextFile(file)); assertFalseVerbose("Locking lock2", lock2.tryToLock()); print("Waiting for timeout (" + (timeout+1) + "s)"); sleepSeconds(timeout+1); assertFalseVerbose("Locking lock2", lock2.tryToLock()); close(lock1); assertTrueVerbose("Locking lock2", lock2.tryToLock()); close(lock2); print("\nRegular test OK!\n"); } void crashTest { afterwards { cleanMeUp(); } lock1 = makeLock(); lock2 = makeLock(); assertTrueVerbose("Locking lock1", lock1.tryToLock()); assertFalseVerbose("Locking lock2", lock2.tryToLock()); lock1._simulateCrash(); print("Waiting for timeout (" + (timeout+1) + "s)"); sleepSeconds(timeout+1); assertTrueVerbose("Locking lock2", lock2.tryToLock()); closeAll(lock1, lock2); print("\nCrash test OK!\n"); } void cleanMeUp { closeAll(lock1, lock2); } }
download show line numbers debug dex old transpilations
Travelled to 6 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1029789 |
Snippet name: | Test FileBasedLock (OK) |
Eternal ID of this version: | #1029789/9 |
Text MD5: | aabc950feb2d6bba661bd35bf85f5933 |
Transpilation MD5: | 49bb03c615fea0460f16a1b574df689e |
Author: | stefan |
Category: | javax / io |
Type: | JavaX source code (Dynamic Module) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2022-04-30 15:19:24 |
Source code size: | 1877 bytes / 69 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 229 / 457 |
Version history: | 8 change(s) |
Referenced in: | [show references] |