@@ -292,6 +292,33 @@ public void testSplitLock() throws LockException {
292
292
nlm .test (file1 , lock3 );
293
293
}
294
294
295
+ @ Test
296
+ public void testSplitWholeFileLock () throws LockException {
297
+ NlmLock lock1 = new LockBuilder ()
298
+ .withOwner ("owner1" )
299
+ .from (0 )
300
+ .length (nfs4_prot .NFS4_UINT64_MAX )
301
+ .forWrite ()
302
+ .build ();
303
+ nlm .lock (file1 , lock1 );
304
+
305
+ NlmLock lock2 = new LockBuilder ()
306
+ .withOwner ("owner1" )
307
+ .from (1 )
308
+ .length (nfs4_prot .NFS4_UINT64_MAX )
309
+ .forRead ()
310
+ .build ();
311
+ nlm .unlock (file1 , lock2 );
312
+
313
+ NlmLock lock3 = new LockBuilder ()
314
+ .withOwner ("owner2" )
315
+ .from (1 )
316
+ .length (1 )
317
+ .forWrite ()
318
+ .build ();
319
+ nlm .test (file1 , lock3 );
320
+ }
321
+
295
322
@ Test (expected = LockDeniedException .class )
296
323
public void testMergeOfOverlapingLocks () throws LockException {
297
324
NlmLock lock1 = new LockBuilder ()
@@ -319,6 +346,93 @@ public void testMergeOfOverlapingLocks() throws LockException {
319
346
nlm .test (file1 , lock3 );
320
347
}
321
348
349
+ @ Test (expected = LockDeniedException .class )
350
+ public void testMergeOfContinuesLocks () throws LockException {
351
+ NlmLock lock1 = new LockBuilder ()
352
+ .withOwner ("owner1" )
353
+ .from (74 )
354
+ .length (nfs4_prot .NFS4_UINT64_MAX )
355
+ .forWrite ()
356
+ .build ();
357
+ nlm .lock (file1 , lock1 );
358
+
359
+ NlmLock lock2 = new LockBuilder ()
360
+ .withOwner ("owner1" )
361
+ .from (0 )
362
+ .length (75 )
363
+ .forWrite ()
364
+ .build ();
365
+ nlm .lock (file1 , lock2 );
366
+
367
+ NlmLock lock3 = new LockBuilder ()
368
+ .withOwner ("owner2" )
369
+ .from (1 )
370
+ .length (100 )
371
+ .forWrite ()
372
+ .build ();
373
+ nlm .test (file1 , lock3 );
374
+ }
375
+
376
+ @ Test (expected = LockDeniedException .class )
377
+ public void testMergeOfWholeFileLocks () throws LockException {
378
+ NlmLock lock1 = new LockBuilder ()
379
+ .withOwner ("owner1" )
380
+ .from (0 )
381
+ .length (nfs4_prot .NFS4_UINT64_MAX )
382
+ .forWrite ()
383
+ .build ();
384
+ nlm .lock (file1 , lock1 );
385
+
386
+ NlmLock lock2 = new LockBuilder ()
387
+ .withOwner ("owner1" )
388
+ .from (0 )
389
+ .length (nfs4_prot .NFS4_UINT64_MAX )
390
+ .forWrite ()
391
+ .build ();
392
+ nlm .lock (file1 , lock2 );
393
+
394
+ NlmLock lock3 = new LockBuilder ()
395
+ .withOwner ("owner2" )
396
+ .from (1 )
397
+ .length (100 )
398
+ .forWrite ()
399
+ .build ();
400
+ nlm .test (file1 , lock3 );
401
+ }
402
+
403
+ @ Test
404
+ public void testLocAfterUnlockIfExist () throws LockException {
405
+ NlmLock lock1 = new LockBuilder ()
406
+ .withOwner ("owner1" )
407
+ .from (0 )
408
+ .length (1 )
409
+ .forRead ()
410
+ .build ();
411
+ nlm .lock (file1 , lock1 );
412
+
413
+ nlm .unlockIfExists (file1 , lock1 );
414
+
415
+ NlmLock lock2 = new LockBuilder ()
416
+ .withOwner ("owner2" )
417
+ .from (0 )
418
+ .length (1 )
419
+ .forWrite ()
420
+ .build ();
421
+ nlm .test (file1 , lock2 );
422
+ }
423
+
424
+ @ Test
425
+ public void testUnlockIfExistNonExisting () throws LockException {
426
+ NlmLock lock1 = new LockBuilder ()
427
+ .withOwner ("owner1" )
428
+ .from (0 )
429
+ .length (1 )
430
+ .forRead ()
431
+ .build ();
432
+
433
+ nlm .unlockIfExists (file1 , lock1 );
434
+ }
435
+
322
436
public static class LockBuilder {
323
437
324
438
private long offset ;
0 commit comments