src/server/test/vfs.c

changeset 633
392ec9026b07
parent 579
e10457d74fe1
equal deleted inserted replaced
632:1defab20b477 633:392ec9026b07
362 // 362 //
363 // VFS Tests 363 // VFS Tests
364 // 364 //
365 /* ------------------------------------------------------------------------- */ 365 /* ------------------------------------------------------------------------- */
366 366
367 UCX_TEST(test_vfs_open) { 367 CX_TEST(test_vfs_open) {
368 Session *sn = testutil_session(); 368 Session *sn = testutil_session();
369 Request *rq = testutil_request(sn->pool, "PUT", "/"); 369 Request *rq = testutil_request(sn->pool, "PUT", "/");
370 rq->vfs = testvfs_create(sn); 370 rq->vfs = testvfs_create(sn);
371 371
372 VFSContext *vfs = vfs_request_context(sn, rq); 372 VFSContext *vfs = vfs_request_context(sn, rq);
373 373
374 UCX_TEST_BEGIN; 374 CX_TEST_DO {
375 375
376 UCX_TEST_ASSERT(vfs, "vfs is NULL"); 376 CX_TEST_ASSERT(vfs);
377 377
378 SYS_FILE f1 = vfs_open(vfs, "/file1", O_CREAT); 378 SYS_FILE f1 = vfs_open(vfs, "/file1", O_CREAT);
379 UCX_TEST_ASSERT(f1, "f1 not opened"); 379 CX_TEST_ASSERT(f1);
380 380
381 SYS_FILE f2 = vfs_open(vfs, "/file1", 0); 381 SYS_FILE f2 = vfs_open(vfs, "/file1", 0);
382 UCX_TEST_ASSERT(f2, "f2 not opened"); 382 CX_TEST_ASSERT(f2);
383 383
384 UCX_TEST_END; 384 }
385 385
386 testutil_destroy_session(sn); 386 testutil_destroy_session(sn);
387 } 387 }
388 388
389 UCX_TEST(test_vfs_mkdir) { 389 CX_TEST(test_vfs_mkdir) {
390 Session *sn = testutil_session(); 390 Session *sn = testutil_session();
391 Request *rq = testutil_request(sn->pool, "PUT", "/"); 391 Request *rq = testutil_request(sn->pool, "PUT", "/");
392 rq->vfs = testvfs_create(sn); 392 rq->vfs = testvfs_create(sn);
393 393
394 VFSContext *vfs = vfs_request_context(sn, rq); 394 VFSContext *vfs = vfs_request_context(sn, rq);
395 395
396 UCX_TEST_BEGIN; 396 CX_TEST_DO {
397 397
398 int err = vfs_mkdir(vfs, "/dir"); 398 int err = vfs_mkdir(vfs, "/dir");
399 UCX_TEST_ASSERT(err == 0, "error not 0"); 399 CX_TEST_ASSERT(err == 0);
400 400
401 SYS_FILE fd = vfs_open(vfs, "/dir", 0); 401 SYS_FILE fd = vfs_open(vfs, "/dir", 0);
402 UCX_TEST_ASSERT(fd, "no fd"); 402 CX_TEST_ASSERT(fd);
403 403
404 UCX_TEST_END; 404 }
405 405
406 testutil_destroy_session(sn); 406 testutil_destroy_session(sn);
407 } 407 }
408 408
409 UCX_TEST(test_vfs_opendir) { 409 CX_TEST(test_vfs_opendir) {
410 Session *sn = testutil_session(); 410 Session *sn = testutil_session();
411 Request *rq = testutil_request(sn->pool, "PUT", "/"); 411 Request *rq = testutil_request(sn->pool, "PUT", "/");
412 rq->vfs = testvfs_create(sn); 412 rq->vfs = testvfs_create(sn);
413 413
414 VFSContext *vfs = vfs_request_context(sn, rq); 414 VFSContext *vfs = vfs_request_context(sn, rq);
415 415
416 UCX_TEST_BEGIN; 416 CX_TEST_DO {
417 417
418 int err = vfs_mkdir(vfs, "/dir"); 418 int err = vfs_mkdir(vfs, "/dir");
419 UCX_TEST_ASSERT(err == 0, "error not 0"); 419 CX_TEST_ASSERT(err == 0);
420 420
421 VFSDir *dir = vfs_opendir(vfs, "/dir"); 421 VFSDir *dir = vfs_opendir(vfs, "/dir");
422 UCX_TEST_ASSERT(dir, "no dir"); 422 CX_TEST_ASSERT(dir);
423 423
424 UCX_TEST_END; 424 }
425 425
426 testutil_destroy_session(sn); 426 testutil_destroy_session(sn);
427 } 427 }
428 428
429 UCX_TEST(test_vfs_readdir) { 429 CX_TEST(test_vfs_readdir) {
430 Session *sn = testutil_session(); 430 Session *sn = testutil_session();
431 Request *rq = testutil_request(sn->pool, "PUT", "/"); 431 Request *rq = testutil_request(sn->pool, "PUT", "/");
432 rq->vfs = testvfs_create(sn); 432 rq->vfs = testvfs_create(sn);
433 433
434 VFSContext *vfs = vfs_request_context(sn, rq); 434 VFSContext *vfs = vfs_request_context(sn, rq);
435 435
436 UCX_TEST_BEGIN; 436 CX_TEST_DO {
437 437
438 int err = vfs_mkdir(vfs, "/dir"); 438 int err = vfs_mkdir(vfs, "/dir");
439 UCX_TEST_ASSERT(err == 0, "error not 0"); 439 CX_TEST_ASSERT(err == 0);
440 440
441 // add some test file to /dir 441 // add some test file to /dir
442 UCX_TEST_ASSERT(vfs_open(vfs, "/dir/file1", O_CREAT), "creation of file1 failed"); 442 CX_TEST_ASSERT(vfs_open(vfs, "/dir/file1", O_CREAT));
443 UCX_TEST_ASSERT(vfs_open(vfs, "/dir/file2", O_CREAT), "creation of file2 failed"); 443 CX_TEST_ASSERT(vfs_open(vfs, "/dir/file2", O_CREAT));
444 UCX_TEST_ASSERT(vfs_open(vfs, "/dir/file3", O_CREAT), "creation of file3 failed"); 444 CX_TEST_ASSERT(vfs_open(vfs, "/dir/file3", O_CREAT));
445 UCX_TEST_ASSERT(vfs_open(vfs, "/dir/file4", O_CREAT), "creation of file4 failed"); 445 CX_TEST_ASSERT(vfs_open(vfs, "/dir/file4", O_CREAT));
446 446
447 VFSDir *dir = vfs_opendir(vfs, "/dir"); 447 VFSDir *dir = vfs_opendir(vfs, "/dir");
448 UCX_TEST_ASSERT(dir, "dir not opened"); 448 CX_TEST_ASSERT(dir);
449 449
450 CxMap *files = cxHashMapCreate(cxDefaultAllocator, CX_STORE_POINTERS, 8); 450 CxMap *files = cxHashMapCreate(cxDefaultAllocator, CX_STORE_POINTERS, 8);
451 451
452 VFSEntry entry; 452 VFSEntry entry;
453 while(vfs_readdir(dir, &entry)) { 453 while(vfs_readdir(dir, &entry)) {
454 cxMapPut(files, cx_hash_key_str(entry.name), dir); 454 cxMapPut(files, cx_hash_key_str(entry.name), dir);
455 } 455 }
456 456
457 UCX_TEST_ASSERT(cxMapSize(files)== 4, "wrong files count"); 457 CX_TEST_ASSERT(cxMapSize(files)== 4);
458 UCX_TEST_ASSERT(cxMapGet(files, cx_hash_key_str("file1")), "file1 missing"); 458 CX_TEST_ASSERT(cxMapGet(files, cx_hash_key_str("file1")));
459 UCX_TEST_ASSERT(cxMapGet(files, cx_hash_key_str("file2")), "file2 missing"); 459 CX_TEST_ASSERT(cxMapGet(files, cx_hash_key_str("file2")));
460 UCX_TEST_ASSERT(cxMapGet(files, cx_hash_key_str("file3")), "file3 missing"); 460 CX_TEST_ASSERT(cxMapGet(files, cx_hash_key_str("file3")));
461 UCX_TEST_ASSERT(cxMapGet(files, cx_hash_key_str("file4")), "file4 missing"); 461 CX_TEST_ASSERT(cxMapGet(files, cx_hash_key_str("file4")));
462 462
463 cxMapFree(files); 463 cxMapFree(files);
464 464
465 UCX_TEST_END; 465 }
466 466
467 testutil_destroy_session(sn); 467 testutil_destroy_session(sn);
468 } 468 }
469 469
470 UCX_TEST(test_vfs_unlink) { 470 CX_TEST(test_vfs_unlink) {
471 Session *sn = testutil_session(); 471 Session *sn = testutil_session();
472 Request *rq = testutil_request(sn->pool, "PUT", "/"); 472 Request *rq = testutil_request(sn->pool, "PUT", "/");
473 rq->vfs = testvfs_create(sn); 473 rq->vfs = testvfs_create(sn);
474 474
475 VFSContext *vfs = vfs_request_context(sn, rq); 475 VFSContext *vfs = vfs_request_context(sn, rq);
476 476
477 UCX_TEST_BEGIN; 477 CX_TEST_DO {
478 // prepare test 478 // prepare test
479 int err; 479 int err;
480 err = vfs_mkdir(vfs, "/dir1"); 480 err = vfs_mkdir(vfs, "/dir1");
481 UCX_TEST_ASSERT(err == 0, "mkdir 1: error not 0"); 481 CX_TEST_ASSERT(err == 0);
482 err = vfs_mkdir(vfs, "/dir2"); 482 err = vfs_mkdir(vfs, "/dir2");
483 UCX_TEST_ASSERT(err == 0, "mkdir 1: error not 0"); 483 CX_TEST_ASSERT(err == 0);
484 484
485 SYS_FILE f1 = vfs_open(vfs, "/file1", O_CREAT); 485 SYS_FILE f1 = vfs_open(vfs, "/file1", O_CREAT);
486 UCX_TEST_ASSERT(f1, "f1 not opened"); 486 CX_TEST_ASSERT(f1);
487 487
488 SYS_FILE f2 = vfs_open(vfs, "/file2", O_CREAT); 488 SYS_FILE f2 = vfs_open(vfs, "/file2", O_CREAT);
489 UCX_TEST_ASSERT(f1, "f2 not opened"); 489 CX_TEST_ASSERT(f1);
490 490
491 SYS_FILE f3 = vfs_open(vfs, "/dir1/file3", O_CREAT); 491 SYS_FILE f3 = vfs_open(vfs, "/dir1/file3", O_CREAT);
492 UCX_TEST_ASSERT(f1, "f3 not opened"); 492 CX_TEST_ASSERT(f1);
493 493
494 // test unlink 494 // test unlink
495 err = vfs_unlink(vfs, "/file1"); 495 err = vfs_unlink(vfs, "/file1");
496 UCX_TEST_ASSERT(err == 0, "unlink /file1 failed"); 496 CX_TEST_ASSERT(err == 0);
497 err = vfs_unlink(vfs, "/dir1/file3"); 497 err = vfs_unlink(vfs, "/dir1/file3");
498 UCX_TEST_ASSERT(err == 0, "unlink /dir1/file3 failed"); 498 CX_TEST_ASSERT(err == 0);
499 499
500 err = vfs_unlink(vfs, "/filex"); 500 err = vfs_unlink(vfs, "/filex");
501 UCX_TEST_ASSERT(err != 0, "unlink /filex should fail"); 501 CX_TEST_ASSERT(err != 0);
502 502
503 // check if files were removed 503 // check if files were removed
504 SYS_FILE o1 = vfs_open(vfs, "/file1", O_RDONLY); 504 SYS_FILE o1 = vfs_open(vfs, "/file1", O_RDONLY);
505 UCX_TEST_ASSERT(o1 == NULL, "/file1 not deleted"); 505 CX_TEST_ASSERT(o1 == NULL);
506 SYS_FILE o3 = vfs_open(vfs, "/dir1/file3", O_RDONLY); 506 SYS_FILE o3 = vfs_open(vfs, "/dir1/file3", O_RDONLY);
507 UCX_TEST_ASSERT(o1 == NULL, "/dir1/file3 not deleted"); 507 CX_TEST_ASSERT(o1 == NULL);
508 508
509 // file2 should still be there 509 // file2 should still be there
510 SYS_FILE o2 = vfs_open(vfs, "/file2", O_RDONLY); 510 SYS_FILE o2 = vfs_open(vfs, "/file2", O_RDONLY);
511 UCX_TEST_ASSERT(o2, "/file2 deleted"); 511 CX_TEST_ASSERT(o2);
512 512
513 // check if dir unlink fails 513 // check if dir unlink fails
514 err = vfs_unlink(vfs, "/dir1"); 514 err = vfs_unlink(vfs, "/dir1");
515 UCX_TEST_ASSERT(err != 0, "unlink dir1 should fail"); 515 CX_TEST_ASSERT(err != 0);
516 516
517 UCX_TEST_END; 517 }
518 518
519 testutil_destroy_session(sn); 519 testutil_destroy_session(sn);
520 } 520 }
521 521
522 UCX_TEST(test_vfs_rmdir) { 522 CX_TEST(test_vfs_rmdir) {
523 Session *sn = testutil_session(); 523 Session *sn = testutil_session();
524 Request *rq = testutil_request(sn->pool, "PUT", "/"); 524 Request *rq = testutil_request(sn->pool, "PUT", "/");
525 rq->vfs = testvfs_create(sn); 525 rq->vfs = testvfs_create(sn);
526 526
527 VFSContext *vfs = vfs_request_context(sn, rq); 527 VFSContext *vfs = vfs_request_context(sn, rq);
528 528
529 UCX_TEST_BEGIN; 529 CX_TEST_DO {
530 // prepare test 530 // prepare test
531 int err; 531 int err;
532 err = vfs_mkdir(vfs, "/dir1"); 532 err = vfs_mkdir(vfs, "/dir1");
533 UCX_TEST_ASSERT(err == 0, "mkdir 1: error not 0"); 533 CX_TEST_ASSERT(err == 0);
534 err = vfs_mkdir(vfs, "/dir2"); 534 err = vfs_mkdir(vfs, "/dir2");
535 UCX_TEST_ASSERT(err == 0, "mkdir 1: error not 0"); 535 CX_TEST_ASSERT(err == 0);
536 536
537 SYS_FILE f1 = vfs_open(vfs, "/dir1/file1", O_CREAT); 537 SYS_FILE f1 = vfs_open(vfs, "/dir1/file1", O_CREAT);
538 UCX_TEST_ASSERT(f1, "f1 not opened"); 538 CX_TEST_ASSERT(f1);
539 539
540 err = vfs_rmdir(vfs, "/dir1"); 540 err = vfs_rmdir(vfs, "/dir1");
541 UCX_TEST_ASSERT(err != 0, "rmdir /dir1 should fail"); 541 CX_TEST_ASSERT(err != 0);
542 err = vfs_rmdir(vfs, "/dir2"); 542 err = vfs_rmdir(vfs, "/dir2");
543 UCX_TEST_ASSERT(err == 0, "rmdir /dir2 failed"); 543 CX_TEST_ASSERT(err == 0);
544 544
545 err = vfs_unlink(vfs, "/dir1/file1"); 545 err = vfs_unlink(vfs, "/dir1/file1");
546 UCX_TEST_ASSERT(err == 0, "unlink failed"); 546 CX_TEST_ASSERT(err == 0);
547 err = vfs_rmdir(vfs, "/dir1"); 547 err = vfs_rmdir(vfs, "/dir1");
548 UCX_TEST_ASSERT(err == 0, "rmdir /dir1 (2) failed"); 548 CX_TEST_ASSERT(err == 0);
549 549
550 UCX_TEST_END; 550 }
551 551
552 testutil_destroy_session(sn); 552 testutil_destroy_session(sn);
553 } 553 }

mercurial