|
Lines 228-234
TEST_F(GetlkFallback, local)
Link Here
|
| 228 |
ASSERT_LE(0, fd) << strerror(errno); |
228 |
ASSERT_LE(0, fd) << strerror(errno); |
| 229 |
fl.l_start = 10; |
229 |
fl.l_start = 10; |
| 230 |
fl.l_len = 1000; |
230 |
fl.l_len = 1000; |
| 231 |
fl.l_pid = getpid(); |
231 |
fl.l_pid = 0; |
| 232 |
fl.l_type = F_RDLCK; |
232 |
fl.l_type = F_RDLCK; |
| 233 |
fl.l_whence = SEEK_SET; |
233 |
fl.l_whence = SEEK_SET; |
| 234 |
fl.l_sysid = 0; |
234 |
fl.l_sysid = 0; |
|
Lines 247-253
TEST_F(Getlk, no_locks)
Link Here
|
| 247 |
uint64_t ino = 42; |
247 |
uint64_t ino = 42; |
| 248 |
struct flock fl; |
248 |
struct flock fl; |
| 249 |
int fd; |
249 |
int fd; |
| 250 |
pid_t pid = 1234; |
250 |
pid_t pid = getpid(); |
| 251 |
|
251 |
|
| 252 |
expect_lookup(RELPATH, ino); |
252 |
expect_lookup(RELPATH, ino); |
| 253 |
expect_open(ino, 0, 1); |
253 |
expect_open(ino, 0, 1); |
|
Lines 256-266
TEST_F(Getlk, no_locks)
Link Here
|
| 256 |
return (in.header.opcode == FUSE_GETLK && |
256 |
return (in.header.opcode == FUSE_GETLK && |
| 257 |
in.header.nodeid == ino && |
257 |
in.header.nodeid == ino && |
| 258 |
in.body.getlk.fh == FH && |
258 |
in.body.getlk.fh == FH && |
|
|
259 |
/* |
| 260 |
* Though it seems useless, libfuse expects the |
| 261 |
* owner and pid fields to be set during |
| 262 |
* FUSE_GETLK. |
| 263 |
*/ |
| 259 |
in.body.getlk.owner == (uint32_t)pid && |
264 |
in.body.getlk.owner == (uint32_t)pid && |
|
|
265 |
in.body.getlk.lk.pid == (uint64_t)pid && |
| 260 |
in.body.getlk.lk.start == 10 && |
266 |
in.body.getlk.lk.start == 10 && |
| 261 |
in.body.getlk.lk.end == 1009 && |
267 |
in.body.getlk.lk.end == 1009 && |
| 262 |
in.body.getlk.lk.type == F_RDLCK && |
268 |
in.body.getlk.lk.type == F_RDLCK); |
| 263 |
in.body.getlk.lk.pid == (uint64_t)pid); |
|
|
| 264 |
}, Eq(true)), |
269 |
}, Eq(true)), |
| 265 |
_) |
270 |
_) |
| 266 |
).WillOnce(Invoke(ReturnImmediate([=](auto in, auto& out) { |
271 |
).WillOnce(Invoke(ReturnImmediate([=](auto in, auto& out) { |
|
Lines 273-279
TEST_F(Getlk, no_locks)
Link Here
|
| 273 |
ASSERT_LE(0, fd) << strerror(errno); |
278 |
ASSERT_LE(0, fd) << strerror(errno); |
| 274 |
fl.l_start = 10; |
279 |
fl.l_start = 10; |
| 275 |
fl.l_len = 1000; |
280 |
fl.l_len = 1000; |
| 276 |
fl.l_pid = pid; |
281 |
fl.l_pid = 0; |
| 277 |
fl.l_type = F_RDLCK; |
282 |
fl.l_type = F_RDLCK; |
| 278 |
fl.l_whence = SEEK_SET; |
283 |
fl.l_whence = SEEK_SET; |
| 279 |
fl.l_sysid = 0; |
284 |
fl.l_sysid = 0; |
|
Lines 290-296
TEST_F(Getlk, lock_exists)
Link Here
|
| 290 |
uint64_t ino = 42; |
295 |
uint64_t ino = 42; |
| 291 |
struct flock fl; |
296 |
struct flock fl; |
| 292 |
int fd; |
297 |
int fd; |
| 293 |
pid_t pid = 1234; |
298 |
pid_t pid = getpid(); |
| 294 |
pid_t pid2 = 1235; |
299 |
pid_t pid2 = 1235; |
| 295 |
|
300 |
|
| 296 |
expect_lookup(RELPATH, ino); |
301 |
expect_lookup(RELPATH, ino); |
|
Lines 300-310
TEST_F(Getlk, lock_exists)
Link Here
|
| 300 |
return (in.header.opcode == FUSE_GETLK && |
305 |
return (in.header.opcode == FUSE_GETLK && |
| 301 |
in.header.nodeid == ino && |
306 |
in.header.nodeid == ino && |
| 302 |
in.body.getlk.fh == FH && |
307 |
in.body.getlk.fh == FH && |
|
|
308 |
/* |
| 309 |
* Though it seems useless, libfuse expects the |
| 310 |
* owner and pid fields to be set during |
| 311 |
* FUSE_GETLK. |
| 312 |
*/ |
| 303 |
in.body.getlk.owner == (uint32_t)pid && |
313 |
in.body.getlk.owner == (uint32_t)pid && |
|
|
314 |
in.body.getlk.lk.pid == (uint64_t)pid && |
| 304 |
in.body.getlk.lk.start == 10 && |
315 |
in.body.getlk.lk.start == 10 && |
| 305 |
in.body.getlk.lk.end == 1009 && |
316 |
in.body.getlk.lk.end == 1009 && |
| 306 |
in.body.getlk.lk.type == F_RDLCK && |
317 |
in.body.getlk.lk.type == F_RDLCK); |
| 307 |
in.body.getlk.lk.pid == (uint64_t)pid); |
|
|
| 308 |
}, Eq(true)), |
318 |
}, Eq(true)), |
| 309 |
_) |
319 |
_) |
| 310 |
).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto& out) { |
320 |
).WillOnce(Invoke(ReturnImmediate([=](auto in __unused, auto& out) { |
|
Lines 319-325
TEST_F(Getlk, lock_exists)
Link Here
|
| 319 |
ASSERT_LE(0, fd) << strerror(errno); |
329 |
ASSERT_LE(0, fd) << strerror(errno); |
| 320 |
fl.l_start = 10; |
330 |
fl.l_start = 10; |
| 321 |
fl.l_len = 1000; |
331 |
fl.l_len = 1000; |
| 322 |
fl.l_pid = pid; |
332 |
fl.l_pid = 0; |
| 323 |
fl.l_type = F_RDLCK; |
333 |
fl.l_type = F_RDLCK; |
| 324 |
fl.l_whence = SEEK_SET; |
334 |
fl.l_whence = SEEK_SET; |
| 325 |
fl.l_sysid = 0; |
335 |
fl.l_sysid = 0; |
|
Lines 368-374
TEST_F(Setlk, clear)
Link Here
|
| 368 |
uint64_t ino = 42; |
378 |
uint64_t ino = 42; |
| 369 |
struct flock fl; |
379 |
struct flock fl; |
| 370 |
int fd; |
380 |
int fd; |
| 371 |
pid_t pid = 1234; |
381 |
pid_t pid = getpid(); |
| 372 |
|
382 |
|
| 373 |
expect_lookup(RELPATH, ino); |
383 |
expect_lookup(RELPATH, ino); |
| 374 |
expect_open(ino, 0, 1); |
384 |
expect_open(ino, 0, 1); |
|
Lines 378-384
TEST_F(Setlk, clear)
Link Here
|
| 378 |
ASSERT_LE(0, fd) << strerror(errno); |
388 |
ASSERT_LE(0, fd) << strerror(errno); |
| 379 |
fl.l_start = 10; |
389 |
fl.l_start = 10; |
| 380 |
fl.l_len = 1000; |
390 |
fl.l_len = 1000; |
| 381 |
fl.l_pid = pid; |
391 |
fl.l_pid = 0; |
| 382 |
fl.l_type = F_UNLCK; |
392 |
fl.l_type = F_UNLCK; |
| 383 |
fl.l_whence = SEEK_SET; |
393 |
fl.l_whence = SEEK_SET; |
| 384 |
fl.l_sysid = 0; |
394 |
fl.l_sysid = 0; |
|
Lines 394-400
TEST_F(Setlk, set)
Link Here
|
| 394 |
uint64_t ino = 42; |
404 |
uint64_t ino = 42; |
| 395 |
struct flock fl; |
405 |
struct flock fl; |
| 396 |
int fd; |
406 |
int fd; |
| 397 |
pid_t pid = 1234; |
407 |
pid_t pid = getpid(); |
| 398 |
|
408 |
|
| 399 |
expect_lookup(RELPATH, ino); |
409 |
expect_lookup(RELPATH, ino); |
| 400 |
expect_open(ino, 0, 1); |
410 |
expect_open(ino, 0, 1); |
|
Lines 404-410
TEST_F(Setlk, set)
Link Here
|
| 404 |
ASSERT_LE(0, fd) << strerror(errno); |
414 |
ASSERT_LE(0, fd) << strerror(errno); |
| 405 |
fl.l_start = 10; |
415 |
fl.l_start = 10; |
| 406 |
fl.l_len = 1000; |
416 |
fl.l_len = 1000; |
| 407 |
fl.l_pid = pid; |
417 |
fl.l_pid = 0; |
| 408 |
fl.l_type = F_RDLCK; |
418 |
fl.l_type = F_RDLCK; |
| 409 |
fl.l_whence = SEEK_SET; |
419 |
fl.l_whence = SEEK_SET; |
| 410 |
fl.l_sysid = 0; |
420 |
fl.l_sysid = 0; |
|
Lines 420-426
TEST_F(Setlk, set_eof)
Link Here
|
| 420 |
uint64_t ino = 42; |
430 |
uint64_t ino = 42; |
| 421 |
struct flock fl; |
431 |
struct flock fl; |
| 422 |
int fd; |
432 |
int fd; |
| 423 |
pid_t pid = 1234; |
433 |
pid_t pid = getpid(); |
| 424 |
|
434 |
|
| 425 |
expect_lookup(RELPATH, ino); |
435 |
expect_lookup(RELPATH, ino); |
| 426 |
expect_open(ino, 0, 1); |
436 |
expect_open(ino, 0, 1); |
|
Lines 430-436
TEST_F(Setlk, set_eof)
Link Here
|
| 430 |
ASSERT_LE(0, fd) << strerror(errno); |
440 |
ASSERT_LE(0, fd) << strerror(errno); |
| 431 |
fl.l_start = 10; |
441 |
fl.l_start = 10; |
| 432 |
fl.l_len = 0; |
442 |
fl.l_len = 0; |
| 433 |
fl.l_pid = pid; |
443 |
fl.l_pid = 0; |
| 434 |
fl.l_type = F_RDLCK; |
444 |
fl.l_type = F_RDLCK; |
| 435 |
fl.l_whence = SEEK_SET; |
445 |
fl.l_whence = SEEK_SET; |
| 436 |
fl.l_sysid = 0; |
446 |
fl.l_sysid = 0; |
|
Lines 446-452
TEST_F(Setlk, eagain)
Link Here
|
| 446 |
uint64_t ino = 42; |
456 |
uint64_t ino = 42; |
| 447 |
struct flock fl; |
457 |
struct flock fl; |
| 448 |
int fd; |
458 |
int fd; |
| 449 |
pid_t pid = 1234; |
459 |
pid_t pid = getpid(); |
| 450 |
|
460 |
|
| 451 |
expect_lookup(RELPATH, ino); |
461 |
expect_lookup(RELPATH, ino); |
| 452 |
expect_open(ino, 0, 1); |
462 |
expect_open(ino, 0, 1); |
|
Lines 456-462
TEST_F(Setlk, eagain)
Link Here
|
| 456 |
ASSERT_LE(0, fd) << strerror(errno); |
466 |
ASSERT_LE(0, fd) << strerror(errno); |
| 457 |
fl.l_start = 10; |
467 |
fl.l_start = 10; |
| 458 |
fl.l_len = 1000; |
468 |
fl.l_len = 1000; |
| 459 |
fl.l_pid = pid; |
469 |
fl.l_pid = 0; |
| 460 |
fl.l_type = F_RDLCK; |
470 |
fl.l_type = F_RDLCK; |
| 461 |
fl.l_whence = SEEK_SET; |
471 |
fl.l_whence = SEEK_SET; |
| 462 |
fl.l_sysid = 0; |
472 |
fl.l_sysid = 0; |
|
Lines 484-490
TEST_F(SetlkwFallback, local)
Link Here
|
| 484 |
ASSERT_LE(0, fd) << strerror(errno); |
494 |
ASSERT_LE(0, fd) << strerror(errno); |
| 485 |
fl.l_start = 10; |
495 |
fl.l_start = 10; |
| 486 |
fl.l_len = 1000; |
496 |
fl.l_len = 1000; |
| 487 |
fl.l_pid = getpid(); |
497 |
fl.l_pid = 0; |
| 488 |
fl.l_type = F_RDLCK; |
498 |
fl.l_type = F_RDLCK; |
| 489 |
fl.l_whence = SEEK_SET; |
499 |
fl.l_whence = SEEK_SET; |
| 490 |
fl.l_sysid = 0; |
500 |
fl.l_sysid = 0; |
|
Lines 504-510
TEST_F(Setlkw, set)
Link Here
|
| 504 |
uint64_t ino = 42; |
514 |
uint64_t ino = 42; |
| 505 |
struct flock fl; |
515 |
struct flock fl; |
| 506 |
int fd; |
516 |
int fd; |
| 507 |
pid_t pid = 1234; |
517 |
pid_t pid = getpid(); |
| 508 |
|
518 |
|
| 509 |
expect_lookup(RELPATH, ino); |
519 |
expect_lookup(RELPATH, ino); |
| 510 |
expect_open(ino, 0, 1); |
520 |
expect_open(ino, 0, 1); |
|
Lines 514-520
TEST_F(Setlkw, set)
Link Here
|
| 514 |
ASSERT_LE(0, fd) << strerror(errno); |
524 |
ASSERT_LE(0, fd) << strerror(errno); |
| 515 |
fl.l_start = 10; |
525 |
fl.l_start = 10; |
| 516 |
fl.l_len = 1000; |
526 |
fl.l_len = 1000; |
| 517 |
fl.l_pid = pid; |
527 |
fl.l_pid = 0; |
| 518 |
fl.l_type = F_RDLCK; |
528 |
fl.l_type = F_RDLCK; |
| 519 |
fl.l_whence = SEEK_SET; |
529 |
fl.l_whence = SEEK_SET; |
| 520 |
fl.l_sysid = 0; |
530 |
fl.l_sysid = 0; |
| 521 |
- |
|
|