4
#include <glusterfs/api/glfs.h>
5
#include <glusterfs/api/glfs-handles.h>
9
#define TEST_STR_LEN 2048
12
test_dirops(glfs_t *fs)
16
struct dirent *entry = NULL;
18
fd = glfs_opendir(fs, "/");
20
fprintf(stderr, "/: %s\n", strerror(errno));
24
fprintf(stderr, "Entries:\n");
25
while (glfs_readdir_r(fd, (struct dirent *)buf, &entry), entry) {
26
fprintf(stderr, "%s: %lu\n", entry->d_name, glfs_telldir(fd));
29
/* Should internally call fsyncdir(), hopefully */
30
glfs_fsync(fd, NULL, NULL);
39
char *filename = "/filename2";
40
char *linkfile = "/linkfile";
46
ret = glfs_setxattr(fs, filename, "user.testkey", "testval", 8, 0);
47
fprintf(stderr, "setxattr(%s): %d (%s)\n", filename, ret, strerror(errno));
49
ret = glfs_setxattr(fs, filename, "user.testkey2", "testval", 8, 0);
50
fprintf(stderr, "setxattr(%s): %d (%s)\n", filename, ret, strerror(errno));
52
ret = glfs_getxattr(fs, filename, "user.testkey", buf, 512);
53
fprintf(stderr, "getxattr(%s): %d (%s)\n", filename, ret, strerror(errno));
57
ret = glfs_listxattr(fs, filename, buf, 512);
58
fprintf(stderr, "listxattr(%s): %d (%s)\n", filename, ret, strerror(errno));
62
ret = glfs_symlink(fs, "filename", linkfile);
63
fprintf(stderr, "symlink(%s %s): %s\n", filename, linkfile,
68
ret = glfs_readlink(fs, linkfile, buf, 512);
69
fprintf(stderr, "readlink(%s) : %d (%s)\n", filename, ret, strerror(errno));
73
ret = glfs_lsetxattr(fs, filename, "user.testkey3", "testval", 8, 0);
74
fprintf(stderr, "lsetxattr(%s) : %d (%s)\n", linkfile, ret,
79
ret = glfs_llistxattr(fs, linkfile, buf, 512);
80
fprintf(stderr, "llistxattr(%s): %d (%s)\n", filename, ret,
85
ret = glfs_lgetxattr(fs, filename, "user.testkey3", buf, 512);
86
fprintf(stderr, "lgetxattr(%s): %d (%s)\n", linkfile, ret, strerror(errno));
90
for (ptr = buf; ptr < buf + ret; ptr++) {
91
printf("key=%s\n", ptr);
95
ret = glfs_removexattr(fs, filename, "user.testkey2");
96
fprintf(stderr, "removexattr(%s): %d (%s)\n", filename, ret,
99
fd = glfs_open(fs, filename, O_RDWR);
100
fprintf(stderr, "open(%s): (%p) %s\n", filename, fd, strerror(errno));
102
ret = glfs_fsetxattr(fd, "user.testkey2", "testval", 8, 0);
103
fprintf(stderr, "fsetxattr(%s): %d (%s)\n", filename, ret, strerror(errno));
105
ret = glfs_fgetxattr(fd, "user.testkey2", buf, 512);
106
fprintf(stderr, "fgetxattr(%s): %d (%s)\n", filename, ret, strerror(errno));
108
ret = glfs_flistxattr(fd, buf, 512);
109
fprintf(stderr, "flistxattr(%s): %d (%s)\n", filename, ret,
114
for (ptr = buf; ptr < buf + ret; ptr++) {
115
printf("key=%s\n", ptr);
119
ret = glfs_fremovexattr(fd, "user.testkey2");
120
fprintf(stderr, "fremovexattr(%s): %d (%s)\n", filename, ret,
129
test_chdir(glfs_t *fs)
133
char *topdir = "/topdir";
134
char *linkdir = "/linkdir";
135
char *linkdir2 = "/linkdir2";
136
char *subdir = "./subdir";
137
char *respath = NULL;
140
ret = glfs_mkdir(fs, topdir, 0755);
141
fprintf(stderr, "mkdir(%s): %s\n", topdir, strerror(errno));
145
ret = glfs_mkdir(fs, dir, 0755);
146
fprintf(stderr, "mkdir(%s): %s\n", dir, strerror(errno));
150
respath = glfs_getcwd(fs, pathbuf, 4096);
151
fprintf(stdout, "getcwd() = %s\n", respath);
153
ret = glfs_symlink(fs, "topdir", linkdir);
155
fprintf(stderr, "symlink(%s, %s): %s\n", topdir, linkdir,
160
ret = glfs_chdir(fs, linkdir);
162
fprintf(stderr, "chdir(%s): %s\n", linkdir, strerror(errno));
166
respath = glfs_getcwd(fs, pathbuf, 4096);
167
fprintf(stdout, "getcwd() = %s\n", respath);
169
respath = glfs_realpath(fs, subdir, pathbuf);
171
fprintf(stderr, "realpath(%s) worked unexpectedly: %s\n", subdir,
176
ret = glfs_mkdir(fs, subdir, 0755);
178
fprintf(stderr, "mkdir(%s): %s\n", subdir, strerror(errno));
182
respath = glfs_realpath(fs, subdir, pathbuf);
184
fprintf(stderr, "realpath(%s): %s\n", subdir, strerror(errno));
186
fprintf(stdout, "realpath(%s) = %s\n", subdir, respath);
189
ret = glfs_chdir(fs, subdir);
191
fprintf(stderr, "chdir(%s): %s\n", subdir, strerror(errno));
195
respath = glfs_getcwd(fs, pathbuf, 4096);
196
fprintf(stdout, "getcwd() = %s\n", respath);
198
respath = glfs_realpath(fs, "/linkdir/subdir", pathbuf);
200
fprintf(stderr, "realpath(/linkdir/subdir): %s\n", strerror(errno));
202
fprintf(stdout, "realpath(/linkdir/subdir) = %s\n", respath);
210
peek_stat(struct stat *sb)
212
printf("Dumping stat information:\n");
213
printf("File type: ");
215
switch (sb->st_mode & S_IFMT) {
217
printf("block device\n");
220
printf("character device\n");
223
printf("directory\n");
226
printf("FIFO/pipe\n");
232
printf("regular file\n");
238
printf("unknown?\n");
242
printf("I-node number: %ld\n", (long)sb->st_ino);
244
printf("Mode: %lo (octal)\n",
245
(unsigned long)sb->st_mode);
247
printf("Link count: %ld\n", (long)sb->st_nlink);
248
printf("Ownership: UID=%ld GID=%ld\n", (long)sb->st_uid,
251
printf("Preferred I/O block size: %ld bytes\n", (long)sb->st_blksize);
252
printf("File size: %lld bytes\n", (long long)sb->st_size);
253
printf("Blocks allocated: %lld\n", (long long)sb->st_blocks);
255
printf("Last status change: %s", ctime(&sb->st_ctime));
256
printf("Last file access: %s", ctime(&sb->st_atime));
257
printf("Last file modification: %s", ctime(&sb->st_mtime));
263
peek_handle(unsigned char *glid)
267
for (i = 0; i < GFAPI_HANDLE_LENGTH; i++) {
268
printf(":%02x:", glid[i]);
274
peek_stat(struct stat *sb)
280
peek_handle(unsigned char *id)
287
char *full_parent_name = "/testdir", *parent_name = "testdir";
292
char *my_dir = "unlinkdir";
293
char *my_file = "file.txt";
294
char *my_subdir = "dir1";
295
struct glfs_object *parent = NULL, *leaf = NULL, *dir = NULL,
296
*subdir = NULL, *subleaf = NULL;
300
printf("glfs_h_unlink tests: In Progress\n");
303
parent = glfs_h_lookupat(fs, NULL, full_parent_name, &sb, 0);
304
if (parent == NULL) {
306
"glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
307
full_parent_name, NULL, strerror(errno));
308
printf("glfs_h_lookupat tests: FAILED\n");
313
dir = glfs_h_mkdir(fs, parent, my_dir, 0755, &sb);
315
fprintf(stderr, "glfs_h_mkdir: error creating %s: from (%p),%s\n",
316
my_dir, parent, strerror(errno));
317
printf("glfs_h_unlink tests: FAILED\n");
321
leaf = glfs_h_creat(fs, dir, my_file, O_CREAT, 0644, &sb);
323
fprintf(stderr, "glfs_h_creat: error creating %s: from (%p),%s\n",
324
my_file, dir, strerror(errno));
325
printf("glfs_h_unlink tests: FAILED\n");
329
subdir = glfs_h_mkdir(fs, dir, my_subdir, 0755, &sb);
330
if (subdir == NULL) {
331
fprintf(stderr, "glfs_h_mkdir: error creating %s: from (%p),%s\n",
332
my_subdir, dir, strerror(errno));
333
printf("glfs_h_unlink tests: FAILED\n");
337
subleaf = glfs_h_creat(fs, subdir, my_file, O_CREAT, 0644, &sb);
338
if (subleaf == NULL) {
339
fprintf(stderr, "glfs_h_creat: error creating %s: from (%p),%s\n",
340
my_file, subdir, strerror(errno));
341
printf("glfs_h_unlink tests: FAILED\n");
345
/* unlink non empty directory */
346
ret = glfs_h_unlink(fs, dir, my_subdir);
347
if ((ret && errno != ENOTEMPTY) || (ret == 0)) {
349
"glfs_h_unlink: error unlinking %s: it is non empty: %s\n",
350
my_subdir, strerror(errno));
351
printf("glfs_h_unlink tests: FAILED\n");
355
/* unlink regular file */
356
ret = glfs_h_unlink(fs, subdir, my_file);
358
fprintf(stderr, "glfs_h_unlink: error unlinking %s: from (%p),%s\n",
359
my_file, subdir, strerror(errno));
360
printf("glfs_h_unlink tests: FAILED\n");
364
/* unlink directory */
365
ret = glfs_h_unlink(fs, dir, my_subdir);
367
fprintf(stderr, "glfs_h_unlink: error unlinking %s: from (%p),%s\n",
368
my_subdir, dir, strerror(errno));
369
printf("glfs_h_unlink tests: FAILED\n");
373
/* unlink regular file */
374
ret = glfs_h_unlink(fs, dir, my_file);
376
fprintf(stderr, "glfs_h_unlink: error unlinking %s: from (%p),%s\n",
377
my_file, dir, strerror(errno));
378
printf("glfs_h_unlink tests: FAILED\n");
382
/* unlink non-existent regular file */
383
ret = glfs_h_unlink(fs, dir, my_file);
384
if ((ret && errno != ENOENT) || (ret == 0)) {
386
"glfs_h_unlink: error unlinking non-existent %s: invalid errno "
388
my_file, ret, strerror(errno));
389
printf("glfs_h_unlink tests: FAILED\n");
393
/* unlink non-existent directory */
394
ret = glfs_h_unlink(fs, dir, my_subdir);
395
if ((ret && errno != ENOENT) || (ret == 0)) {
397
"glfs_h_unlink: error unlinking non-existent %s: invalid "
399
my_subdir, ret, strerror(errno));
400
printf("glfs_h_unlink tests: FAILED\n");
404
/* unlink directory */
405
ret = glfs_h_unlink(fs, parent, my_dir);
407
fprintf(stderr, "glfs_h_unlink: error unlinking %s: from (%p),%s\n",
408
my_dir, dir, strerror(errno));
409
printf("glfs_h_unlink tests: FAILED\n");
413
printf("glfs_h_unlink tests: PASSED\n");
421
glfs_h_close(subdir);
423
glfs_h_close(subleaf);
425
glfs_h_close(parent);
431
test_h_getsetattrs(void)
433
char *my_dir = "attrdir";
434
char *my_file = "attrfile.txt";
435
struct glfs_object *parent = NULL, *leaf = NULL, *dir = NULL;
436
struct stat sb, retsb;
438
struct timespec timestamp;
440
printf("glfs_h_getattrs and setattrs tests: In Progress\n");
443
parent = glfs_h_lookupat(fs, NULL, full_parent_name, &sb, 0);
444
if (parent == NULL) {
446
"glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
447
full_parent_name, NULL, strerror(errno));
448
printf("glfs_h_lookupat tests: FAILED\n");
453
dir = glfs_h_mkdir(fs, parent, my_dir, 0755, &sb);
455
fprintf(stderr, "glfs_h_mkdir: error creating %s: from (%p),%s\n",
456
my_dir, parent, strerror(errno));
457
printf("glfs_h_unlink tests: FAILED\n");
462
leaf = glfs_h_creat(fs, dir, my_file, O_CREAT, 0644, &sb);
464
fprintf(stderr, "glfs_h_creat: error creating %s: from (%p),%s\n",
465
my_file, dir, strerror(errno));
466
printf("glfs_h_unlink tests: FAILED\n");
471
ret = glfs_h_getattrs(fs, dir, &retsb);
473
fprintf(stderr, "glfs_h_getattrs: error %s: from (%p),%s\n", my_dir,
474
dir, strerror(errno));
475
printf("glfs_h_getattrs and setattrs tests: FAILED\n");
479
/* TODO: Compare stat information */
481
retsb.st_mode = 00666;
484
ret = clock_gettime(CLOCK_REALTIME, ×tamp);
486
fprintf(stderr, "clock_gettime: error %s\n", strerror(errno));
487
printf("glfs_h_getattrs and setattrs tests: FAILED\n");
490
retsb.st_atim = timestamp;
491
retsb.st_mtim = timestamp;
492
valid = GFAPI_SET_ATTR_MODE | GFAPI_SET_ATTR_UID | GFAPI_SET_ATTR_GID |
493
GFAPI_SET_ATTR_ATIME | GFAPI_SET_ATTR_MTIME;
496
ret = glfs_h_setattrs(fs, dir, &retsb, valid);
498
fprintf(stderr, "glfs_h_setattrs: error %s: from (%p),%s\n", my_dir,
499
dir, strerror(errno));
500
printf("glfs_h_getattrs and setattrs tests: FAILED\n");
504
memset(&retsb, 0, sizeof(struct stat));
505
ret = glfs_h_stat(fs, dir, &retsb);
507
fprintf(stderr, "glfs_h_stat: error %s: from (%p),%s\n", my_dir, dir,
509
printf("glfs_h_getattrs and setattrs tests: FAILED\n");
514
printf("glfs_h_getattrs and setattrs tests: PASSED\n");
517
glfs_h_close(parent);
529
char *my_dir = "truncatedir";
530
char *my_file = "file.txt";
531
struct glfs_object *root = NULL, *parent = NULL, *leaf = NULL;
533
glfs_fd_t *fd = NULL;
538
printf("glfs_h_truncate tests: In Progress\n");
541
root = glfs_h_lookupat(fs, NULL, full_parent_name, &sb, 0);
544
"glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
545
full_parent_name, NULL, strerror(errno));
546
printf("glfs_h_truncate tests: FAILED\n");
551
parent = glfs_h_mkdir(fs, root, my_dir, 0755, &sb);
552
if (parent == NULL) {
553
fprintf(stderr, "glfs_h_mkdir: error creating %s: from (%p),%s\n",
554
my_dir, root, strerror(errno));
555
printf("glfs_h_truncate tests: FAILED\n");
560
leaf = glfs_h_creat(fs, parent, my_file, O_CREAT, 0644, &sb);
562
fprintf(stderr, "glfs_h_creat: error creating %s: from (%p),%s\n",
563
my_file, parent, strerror(errno));
564
printf("glfs_h_truncate tests: FAILED\n");
569
fd = glfs_h_open(fs, leaf, O_RDWR);
571
fprintf(stderr, "glfs_h_open: error on open of %s: %s\n", my_file,
573
printf("glfs_h_truncate tests: FAILED\n");
577
memcpy(buf, "abcdefghijklmnopqrstuvwxyz012345", 32);
578
ret = glfs_write(fd, buf, 32, 0);
583
ret = glfs_h_truncate(fs, leaf, offset);
585
fprintf(stderr, "glfs_h_truncate: error creating %s: from (%p),%s\n",
586
my_file, parent, strerror(errno));
587
printf("glfs_h_truncate tests: FAILED\n");
590
ret = glfs_h_getattrs(fs, leaf, &sb);
592
fprintf(stderr, "glfs_h_getattrs: error for %s (%p),%s\n", my_file,
593
leaf, strerror(errno));
594
printf("glfs_h_truncate tests: FAILED\n");
597
if (sb.st_size != offset) {
598
fprintf(stderr, "glfs_h_truncate: post size mismatch\n");
599
printf("glfs_h_truncate tests: FAILED\n");
603
/* truncate higher */
605
ret = glfs_h_truncate(fs, leaf, offset);
607
fprintf(stderr, "glfs_h_truncate: error creating %s: from (%p),%s\n",
608
my_file, parent, strerror(errno));
609
printf("glfs_h_truncate tests: FAILED\n");
612
ret = glfs_h_getattrs(fs, leaf, &sb);
614
fprintf(stderr, "glfs_h_getattrs: error for %s (%p),%s\n", my_file,
615
leaf, strerror(errno));
616
printf("glfs_h_truncate tests: FAILED\n");
619
if (sb.st_size != offset) {
620
fprintf(stderr, "glfs_h_truncate: post size mismatch\n");
621
printf("glfs_h_truncate tests: FAILED\n");
627
ret = glfs_h_truncate(fs, leaf, offset);
629
fprintf(stderr, "glfs_h_truncate: error creating %s: from (%p),%s\n",
630
my_file, parent, strerror(errno));
631
printf("glfs_h_truncate tests: FAILED\n");
634
ret = glfs_h_getattrs(fs, leaf, &sb);
636
fprintf(stderr, "glfs_h_getattrs: error for %s (%p),%s\n", my_file,
637
leaf, strerror(errno));
638
printf("glfs_h_truncate tests: FAILED\n");
641
if (sb.st_size != offset) {
642
fprintf(stderr, "glfs_h_truncate: post size mismatch\n");
643
printf("glfs_h_truncate tests: FAILED\n");
647
printf("glfs_h_truncate tests: PASSED\n");
654
glfs_h_close(parent);
664
char *my_dir = "linkdir";
665
char *my_file = "file.txt";
666
char *my_symlnk = "slnk.txt";
667
char *my_lnk = "lnk.txt";
668
char *linksrc_dir = "dir1";
669
char *linktgt_dir = "dir2";
670
struct glfs_object *root = NULL, *parent = NULL, *leaf = NULL,
671
*dirsrc = NULL, *dirtgt = NULL, *dleaf = NULL;
672
struct glfs_object *ln1 = NULL;
677
printf("glfs_h_link(s) tests: In Progress\n");
680
root = glfs_h_lookupat(fs, NULL, full_parent_name, &sb, 0);
683
"glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
684
full_parent_name, NULL, strerror(errno));
685
printf("glfs_h_link(s) tests: FAILED\n");
690
parent = glfs_h_mkdir(fs, root, my_dir, 0755, &sb);
691
if (parent == NULL) {
692
fprintf(stderr, "glfs_h_mkdir: error creating %s: from (%p),%s\n",
693
my_dir, root, strerror(errno));
694
printf("glfs_h_link(s) tests: FAILED\n");
699
leaf = glfs_h_creat(fs, parent, my_file, O_CREAT, 0644, &sb);
701
fprintf(stderr, "glfs_h_creat: error creating %s: from (%p),%s\n",
702
my_file, parent, strerror(errno));
703
printf("glfs_h_link(s) tests: FAILED\n");
708
dirsrc = glfs_h_mkdir(fs, parent, linksrc_dir, 0755, &sb);
709
if (dirsrc == NULL) {
710
fprintf(stderr, "glfs_h_mkdir: error creating %s: from (%p),%s\n",
711
linksrc_dir, parent, strerror(errno));
712
printf("glfs_h_link(s) tests: FAILED\n");
717
dirtgt = glfs_h_mkdir(fs, parent, linktgt_dir, 0755, &sb);
718
if (dirtgt == NULL) {
719
fprintf(stderr, "glfs_h_mkdir: error creating %s: from (%p),%s\n",
720
linktgt_dir, parent, strerror(errno));
721
printf("glfs_h_link(s) tests: FAILED\n");
726
dleaf = glfs_h_creat(fs, dirsrc, my_file, O_CREAT, 0644, &sb);
728
fprintf(stderr, "glfs_h_creat: error creating %s: from (%p),%s\n",
729
my_file, dirsrc, strerror(errno));
730
printf("glfs_h_link(s) tests: FAILED\n");
736
/* sym link: /testdir/linkdir/file.txt to ./slnk.txt */
737
ln1 = glfs_h_symlink(fs, parent, my_symlnk, "./file.txt", &sb);
739
fprintf(stderr, "glfs_h_symlink: error creating %s: from (%p),%s\n",
740
my_symlnk, parent, strerror(errno));
741
printf("glfs_h_link(s) tests: FAILED\n");
746
buf = calloc(1024, sizeof(char));
748
fprintf(stderr, "Error allocating memory\n");
749
printf("glfs_h_link(s) tests: FAILED\n");
753
ret = glfs_h_readlink(fs, ln1, buf, 1024);
755
fprintf(stderr, "glfs_h_readlink: error reading %s: from (%p),%s\n",
756
my_symlnk, ln1, strerror(errno));
757
printf("glfs_h_link(s) tests: FAILED\n");
760
if (!(strncmp(buf, my_symlnk, strlen(my_symlnk)))) {
762
"glfs_h_readlink: error mismatch in link name: actual %s: "
765
printf("glfs_h_link(s) tests: FAILED\n");
769
/* link: /testdir/linkdir/file.txt to ./lnk.txt */
770
ret = glfs_h_link(fs, leaf, parent, my_lnk);
772
fprintf(stderr, "glfs_h_link: error creating %s: from (%p),%s\n",
773
my_lnk, parent, strerror(errno));
774
printf("glfs_h_link(s) tests: FAILED\n");
777
/* TODO: Should write content to a file and read from the link */
779
/* link: /testdir/linkdir/dir1/file.txt to ../dir2/slnk.txt */
780
ret = glfs_h_link(fs, dleaf, dirtgt, my_lnk);
782
fprintf(stderr, "glfs_h_link: error creating %s: from (%p),%s\n",
783
my_lnk, dirtgt, strerror(errno));
784
printf("glfs_h_link(s) tests: FAILED\n");
787
/* TODO: Should write content to a file and read from the link */
789
printf("glfs_h_link(s) tests: PASSED\n");
795
glfs_h_close(parent);
799
glfs_h_close(dirsrc);
801
glfs_h_close(dirtgt);
815
char *my_dir = "renamedir";
816
char *my_file = "file.txt";
817
char *src_dir = "dir1";
818
char *tgt_dir = "dir2";
819
struct glfs_object *root = NULL, *parent = NULL, *leaf = NULL,
820
*dirsrc = NULL, *dirtgt = NULL, *dleaf = NULL;
824
printf("glfs_h_rename tests: In Progress\n");
827
root = glfs_h_lookupat(fs, NULL, full_parent_name, &sb, 0);
830
"glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
831
full_parent_name, NULL, strerror(errno));
832
printf("glfs_h_rename tests: FAILED\n");
837
parent = glfs_h_mkdir(fs, root, my_dir, 0755, &sb);
838
if (parent == NULL) {
839
fprintf(stderr, "glfs_h_mkdir: error creating %s: from (%p),%s\n",
840
my_dir, root, strerror(errno));
841
printf("glfs_h_rename tests: FAILED\n");
846
leaf = glfs_h_creat(fs, parent, my_file, O_CREAT, 0644, &sb);
848
fprintf(stderr, "glfs_h_creat: error creating %s: from (%p),%s\n",
849
my_file, parent, strerror(errno));
850
printf("glfs_h_rename tests: FAILED\n");
855
dirsrc = glfs_h_mkdir(fs, parent, src_dir, 0755, &sb);
856
if (dirsrc == NULL) {
857
fprintf(stderr, "glfs_h_mkdir: error creating %s: from (%p),%s\n",
858
src_dir, parent, strerror(errno));
859
printf("glfs_h_rename tests: FAILED\n");
864
dirtgt = glfs_h_mkdir(fs, parent, tgt_dir, 0755, &sb);
865
if (dirtgt == NULL) {
866
fprintf(stderr, "glfs_h_mkdir: error creating %s: from (%p),%s\n",
867
tgt_dir, parent, strerror(errno));
868
printf("glfs_h_rename tests: FAILED\n");
873
dleaf = glfs_h_creat(fs, dirsrc, my_file, O_CREAT, 0644, &sb);
875
fprintf(stderr, "glfs_h_creat: error creating %s: from (%p),%s\n",
876
my_file, dirsrc, strerror(errno));
877
printf("glfs_h_rename tests: FAILED\n");
883
/* Rename file.txt -> file1.txt */
884
ret = glfs_h_rename(fs, parent, "file.txt", parent, "file1.txt");
886
fprintf(stderr, "glfs_h_rename: error renaming %s to %s (%s)\n",
887
"file.txt", "file1.txt", strerror(errno));
888
printf("glfs_h_rename tests: FAILED\n");
892
/* rename dir1/file.txt -> file.txt */
893
ret = glfs_h_rename(fs, dirsrc, "file.txt", parent, "file.txt");
895
fprintf(stderr, "glfs_h_rename: error renaming %s/%s to %s (%s)\n",
896
src_dir, "file.txt", "file.txt", strerror(errno));
897
printf("glfs_h_rename tests: FAILED\n");
901
/* rename file1.txt -> file.txt (exists) */
902
ret = glfs_h_rename(fs, parent, "file1.txt", parent, "file.txt");
904
fprintf(stderr, "glfs_h_rename: error renaming %s to %s (%s)\n",
905
"file.txt", "file.txt", strerror(errno));
906
printf("glfs_h_rename tests: FAILED\n");
910
/* rename dir1 -> dir3 */
911
ret = glfs_h_rename(fs, parent, "dir1", parent, "dir3");
913
fprintf(stderr, "glfs_h_rename: error renaming %s to %s (%s)\n", "dir1",
914
"dir3", strerror(errno));
915
printf("glfs_h_rename tests: FAILED\n");
919
/* rename dir2 ->dir3 (exists) */
920
ret = glfs_h_rename(fs, parent, "dir2", parent, "dir3");
922
fprintf(stderr, "glfs_h_rename: error renaming %s to %s (%s)\n", "dir2",
923
"dir3", strerror(errno));
924
printf("glfs_h_rename tests: FAILED\n");
928
/* rename file.txt -> dir3 (fail) */
929
ret = glfs_h_rename(fs, parent, "file.txt", parent, "dir3");
931
fprintf(stderr, "glfs_h_rename: NO error renaming %s to %s (%s)\n",
932
"file.txt", "dir3", strerror(errno));
933
printf("glfs_h_rename tests: FAILED\n");
937
/* rename dir3 -> file.txt (fail) */
938
ret = glfs_h_rename(fs, parent, "dir3", parent, "file.txt");
940
fprintf(stderr, "glfs_h_rename: NO error renaming %s to %s (%s)\n",
941
"dir3", "file.txt", strerror(errno));
942
printf("glfs_h_rename tests: FAILED\n");
946
printf("glfs_h_rename tests: PASSED\n");
952
glfs_h_close(parent);
956
glfs_h_close(dirsrc);
958
glfs_h_close(dirtgt);
966
assimilatetime(struct timespec *ts, struct timespec ts_st,
967
struct timespec ts_ed)
969
if ((ts_ed.tv_nsec - ts_st.tv_nsec) < 0) {
970
ts->tv_sec += ts_ed.tv_sec - ts_st.tv_sec - 1;
971
ts->tv_nsec += 1000000000 + ts_ed.tv_nsec - ts_st.tv_nsec;
973
ts->tv_sec += ts_ed.tv_sec - ts_st.tv_sec;
974
ts->tv_nsec += ts_ed.tv_nsec - ts_st.tv_nsec;
977
if (ts->tv_nsec > 1000000000) {
978
ts->tv_nsec = ts->tv_nsec - 1000000000;
985
#define MAX_FILES_CREATE 10
986
#define MAXPATHNAME 512
988
test_h_performance(void)
990
char *my_dir = "perftest", *full_dir_path = "/testdir/perftest";
991
char *my_file = "file_", my_file_name[MAXPATHNAME];
992
struct glfs_object *parent = NULL, *leaf = NULL, *dir = NULL;
996
struct timespec c_ts = {0, 0}, c_ts_st, c_ts_ed;
997
struct timespec o_ts = {0, 0}, o_ts_st, o_ts_ed;
999
printf("glfs_h_performance tests: In Progress\n");
1002
parent = glfs_h_lookupat(fs, NULL, full_parent_name, &sb, 0);
1003
if (parent == NULL) {
1005
"glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
1006
full_parent_name, NULL, strerror(errno));
1007
printf("glfs_h_performance tests: FAILED\n");
1011
dir = glfs_h_mkdir(fs, parent, my_dir, 0755, &sb);
1013
fprintf(stderr, "glfs_h_mkdir: error creating %s: from (%p),%s\n",
1014
my_dir, parent, strerror(errno));
1015
printf("glfs_h_performance tests: FAILED\n");
1020
/* create performance */
1021
ret = clock_gettime(CLOCK_REALTIME, &o_ts_st);
1023
fprintf(stderr, "clock_gettime: error %s\n", strerror(errno));
1024
printf("glfs_h_getattrs and setattrs tests: FAILED\n");
1028
for (i = 0; i < MAX_FILES_CREATE; i++) {
1029
sprintf(my_file_name, "%s%d", my_file, i);
1031
ret = clock_gettime(CLOCK_REALTIME, &c_ts_st);
1033
fprintf(stderr, "clock_gettime: error %s\n", strerror(errno));
1034
printf("glfs_h_getattrs and setattrs tests: FAILED\n");
1038
leaf = glfs_h_lookupat(fs, dir, my_file_name, &sb, 0);
1040
fprintf(stderr, "glfs_h_lookup: exists %s\n", my_file_name);
1041
printf("glfs_h_performance tests: FAILED\n");
1045
leaf = glfs_h_creat(fs, dir, my_file_name, O_CREAT, 0644, &sb);
1047
fprintf(stderr, "glfs_h_creat: error creating %s: from (%p),%s\n",
1048
my_file, dir, strerror(errno));
1049
printf("glfs_h_performance tests: FAILED\n");
1053
ret = clock_gettime(CLOCK_REALTIME, &c_ts_ed);
1055
fprintf(stderr, "clock_gettime: error %s\n", strerror(errno));
1056
printf("glfs_h_getattrs and setattrs tests: FAILED\n");
1060
assimilatetime(&c_ts, c_ts_st, c_ts_ed);
1065
ret = clock_gettime(CLOCK_REALTIME, &o_ts_ed);
1067
fprintf(stderr, "clock_gettime: error %s\n", strerror(errno));
1068
printf("glfs_h_getattrs and setattrs tests: FAILED\n");
1072
assimilatetime(&o_ts, o_ts_st, o_ts_ed);
1074
printf("Creation performance (handle based):\n\t# empty files:%d\n",
1076
printf("\tOverall time:\n\t\tSecs:%ld\n\t\tnSecs:%ld\n", o_ts.tv_sec,
1078
printf("\tcreate call time time:\n\t\tSecs:%ld\n\t\tnSecs:%ld\n",
1079
c_ts.tv_sec, c_ts.tv_nsec);
1081
/* create using path */
1082
c_ts.tv_sec = o_ts.tv_sec = 0;
1083
c_ts.tv_nsec = o_ts.tv_nsec = 0;
1085
sprintf(my_file_name, "%s1", full_dir_path);
1086
ret = glfs_mkdir(fs, my_file_name, 0755);
1088
fprintf(stderr, "glfs_mkdir: error creating %s: from (%p),%s\n", my_dir,
1089
parent, strerror(errno));
1090
printf("glfs_h_performance tests: FAILED\n");
1095
ret = clock_gettime(CLOCK_REALTIME, &o_ts_st);
1097
fprintf(stderr, "clock_gettime: error %s\n", strerror(errno));
1098
printf("glfs_h_getattrs and setattrs tests: FAILED\n");
1102
for (i = 0; i < MAX_FILES_CREATE; i++) {
1103
sprintf(my_file_name, "%s1/%sn%d", full_dir_path, my_file, i);
1105
ret = clock_gettime(CLOCK_REALTIME, &c_ts_st);
1107
fprintf(stderr, "clock_gettime: error %s\n", strerror(errno));
1108
printf("glfs_h_getattrs and setattrs tests: FAILED\n");
1112
ret = glfs_stat(fs, my_file_name, &sb);
1114
fprintf(stderr, "glfs_stat: exists %s\n", my_file_name);
1115
printf("glfs_h_performance tests: FAILED\n");
1119
fd = glfs_creat(fs, my_file_name, O_CREAT, 0644);
1121
fprintf(stderr, "glfs_creat: error creating %s: from (%p),%s\n",
1122
my_file, dir, strerror(errno));
1123
printf("glfs_h_performance tests: FAILED\n");
1127
ret = clock_gettime(CLOCK_REALTIME, &c_ts_ed);
1129
fprintf(stderr, "clock_gettime: error %s\n", strerror(errno));
1130
printf("glfs_h_getattrs and setattrs tests: FAILED\n");
1134
assimilatetime(&c_ts, c_ts_st, c_ts_ed);
1138
ret = clock_gettime(CLOCK_REALTIME, &o_ts_ed);
1140
fprintf(stderr, "clock_gettime: error %s\n", strerror(errno));
1141
printf("glfs_h_getattrs and setattrs tests: FAILED\n");
1145
assimilatetime(&o_ts, o_ts_st, o_ts_ed);
1147
printf("Creation performance (path based):\n\t# empty files:%d\n",
1149
printf("\tOverall time:\n\t\tSecs:%ld\n\t\tnSecs:%ld\n", o_ts.tv_sec,
1151
printf("\tcreate call time time:\n\t\tSecs:%ld\n\t\tnSecs:%ld\n",
1152
c_ts.tv_sec, c_ts.tv_nsec);
1158
test_handleops(int argc, char *argv[])
1161
glfs_fd_t *fd = NULL;
1165
struct glfs_object *root = NULL, *parent = NULL, *leaf = NULL, *tmp = NULL;
1166
char readbuf[32], writebuf[32];
1167
unsigned char leaf_handle[GFAPI_HANDLE_LENGTH];
1169
char *full_leaf_name = "/testdir/testfile.txt", *leaf_name = "testfile.txt",
1170
*relative_leaf_name = "testdir/testfile.txt";
1171
char *leaf_name1 = "testfile1.txt";
1172
char *full_newparent_name = "/testdir/dir1", *newparent_name = "dir1";
1173
char *full_newnod_name = "/testdir/nod1", *newnod_name = "nod1";
1175
/* Initialize test area */
1176
ret = glfs_mkdir(fs, full_parent_name, 0755);
1177
if (ret != 0 && errno != EEXIST) {
1178
fprintf(stderr, "%s: (%p) %s\n", full_parent_name, fd, strerror(errno));
1179
printf("Test initialization failed on volume %s\n", argv[1]);
1181
} else if (ret != 0) {
1182
printf("Found test directory %s to be existing\n", full_parent_name);
1183
printf("Cleanup test directory and restart tests\n");
1187
fd = glfs_creat(fs, full_leaf_name, O_CREAT, 0644);
1189
fprintf(stderr, "%s: (%p) %s\n", full_leaf_name, fd, strerror(errno));
1190
printf("Test initialization failed on volume %s\n", argv[1]);
1195
printf("Initialized the test area, within volume %s\n", argv[1]);
1197
/* Handle based APIs test area */
1199
/* glfs_lookupat test */
1200
printf("glfs_h_lookupat tests: In Progress\n");
1201
/* start at root of the volume */
1202
root = glfs_h_lookupat(fs, NULL, "/", &sb, 0);
1205
"glfs_h_lookupat: error on lookup of %s: from (%p),%s\n", "/",
1206
NULL, strerror(errno));
1207
printf("glfs_h_lookupat tests: FAILED\n");
1212
/* lookup a parent within root */
1213
parent = glfs_h_lookupat(fs, root, parent_name, &sb, 0);
1214
if (parent == NULL) {
1216
"glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
1217
parent_name, root, strerror(errno));
1218
printf("glfs_h_lookupat tests: FAILED\n");
1223
/* lookup a leaf/child within the parent */
1224
leaf = glfs_h_lookupat(fs, parent, leaf_name, &sb, 0);
1227
"glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
1228
leaf_name, parent, strerror(errno));
1229
printf("glfs_h_lookupat tests: FAILED\n");
1239
glfs_h_close(parent);
1242
/* check absolute paths */
1243
root = glfs_h_lookupat(fs, NULL, "/", &sb, 0);
1246
"glfs_h_lookupat: error on lookup of %s: from (%p),%s\n", "/",
1247
NULL, strerror(errno));
1248
printf("glfs_h_lookupat tests: FAILED\n");
1253
parent = glfs_h_lookupat(fs, NULL, full_parent_name, &sb, 0);
1254
if (parent == NULL) {
1256
"glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
1257
full_parent_name, root, strerror(errno));
1258
printf("glfs_h_lookupat tests: FAILED\n");
1263
leaf = glfs_h_lookupat(fs, NULL, full_leaf_name, &sb, 0);
1266
"glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
1267
full_leaf_name, parent, strerror(errno));
1268
printf("glfs_h_lookupat tests: FAILED\n");
1277
/* check multiple component paths */
1278
leaf = glfs_h_lookupat(fs, root, relative_leaf_name, &sb, 0);
1281
"glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
1282
relative_leaf_name, parent, strerror(errno));
1290
glfs_h_close(parent);
1293
/* check symlinks in path */
1295
/* TODO: -ve test cases */
1298
* path does not exist after some components
1299
* no parent, but relative path
1300
* parent and full path? -ve?
1303
printf("glfs_h_lookupat tests: PASSED\n");
1305
/* glfs_openat test */
1306
printf("glfs_h_open tests: In Progress\n");
1307
fd = glfs_h_open(fs, leaf, O_RDWR);
1309
fprintf(stderr, "glfs_h_open: error on open of %s: %s\n",
1310
full_leaf_name, strerror(errno));
1311
printf("glfs_h_open tests: FAILED\n");
1315
/* test read/write based on fd */
1316
memcpy(writebuf, "abcdefghijklmnopqrstuvwxyz012345", 32);
1317
ret = glfs_write(fd, writebuf, 32, 0);
1319
glfs_lseek(fd, 10, SEEK_SET);
1321
ret = glfs_read(fd, readbuf, 32, 0);
1322
if (memcmp(readbuf, writebuf, 32)) {
1323
printf("Failed to read what I wrote: %s %s\n", readbuf, writebuf);
1325
printf("glfs_h_open tests: FAILED\n");
1333
printf("glfs_h_open tests: PASSED\n");
1336
printf("glfs_h_creat tests: In Progress\n");
1337
parent = glfs_h_lookupat(fs, NULL, full_parent_name, &sb, 0);
1338
if (parent == NULL) {
1340
"glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
1341
full_parent_name, root, strerror(errno));
1342
printf("glfs_h_creat tests: FAILED\n");
1347
leaf = glfs_h_creat(fs, parent, leaf_name1, O_CREAT, 0644, &sb);
1349
fprintf(stderr, "glfs_h_creat: error on create of %s: from (%p),%s\n",
1350
leaf_name1, parent, strerror(errno));
1351
printf("glfs_h_creat tests: FAILED\n");
1359
leaf = glfs_h_creat(fs, parent, leaf_name1, O_CREAT | O_EXCL, 0644, &sb);
1360
if (leaf != NULL || errno != EEXIST) {
1362
"glfs_h_creat: existing file, leaf = (%p), errno = %s\n", leaf,
1364
printf("glfs_h_creat tests: FAILED\n");
1371
tmp = glfs_h_creat(fs, root, parent_name, O_CREAT, 0644, &sb);
1372
if (tmp != NULL || !(errno == EISDIR || errno == EINVAL)) {
1373
fprintf(stderr, "glfs_h_creat: dir create, tmp = (%p), errno = %s\n",
1374
leaf, strerror(errno));
1375
printf("glfs_h_creat tests: FAILED\n");
1382
/* TODO: Other combinations and -ve cases as applicable */
1383
printf("glfs_h_creat tests: PASSED\n");
1385
/* extract handle and create from handle test */
1387
"glfs_h_extract_handle and glfs_h_create_from_handle tests: In "
1389
/* TODO: Change the lookup to create below for a GIFD recovery failure,
1390
* that needs to be fixed */
1391
leaf = glfs_h_lookupat(fs, parent, leaf_name1, &sb, 0);
1394
"glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
1395
leaf_name1, parent, strerror(errno));
1396
printf("glfs_h_extract_handle tests: FAILED\n");
1401
ret = glfs_h_extract_handle(leaf, leaf_handle, GFAPI_HANDLE_LENGTH);
1404
"glfs_h_extract_handle: error extracting handle of %s: %s\n",
1405
full_leaf_name, strerror(errno));
1406
printf("glfs_h_extract_handle tests: FAILED\n");
1409
peek_handle(leaf_handle);
1414
leaf = glfs_h_create_from_handle(fs, leaf_handle, GFAPI_HANDLE_LENGTH, &sb);
1418
"glfs_h_create_from_handle: error on create of %s: from (%p),%s\n",
1419
leaf_name1, leaf_handle, strerror(errno));
1420
printf("glfs_h_create_from_handle tests: FAILED\n");
1425
fd = glfs_h_open(fs, leaf, O_RDWR);
1427
fprintf(stderr, "glfs_h_open: error on open of %s: %s\n",
1428
full_leaf_name, strerror(errno));
1429
printf("glfs_h_create_from_handle tests: FAILED\n");
1433
/* test read/write based on fd */
1434
memcpy(writebuf, "abcdefghijklmnopqrstuvwxyz012345", 32);
1435
ret = glfs_write(fd, writebuf, 32, 0);
1437
glfs_lseek(fd, 0, SEEK_SET);
1439
ret = glfs_read(fd, readbuf, 32, 0);
1440
if (memcmp(readbuf, writebuf, 32)) {
1441
printf("Failed to read what I wrote: %s %s\n", writebuf, writebuf);
1442
printf("glfs_h_create_from_handle tests: FAILED\n");
1450
glfs_h_close(parent);
1454
"glfs_h_extract_handle and glfs_h_create_from_handle tests: PASSED\n");
1457
printf("glfs_h_mkdir tests: In Progress\n");
1459
ret = glfs_rmdir(fs, full_newparent_name);
1460
if (ret && errno != ENOENT) {
1461
fprintf(stderr, "glfs_rmdir: Failed for %s: %s\n", full_newparent_name,
1463
printf("glfs_h_mkdir tests: FAILED\n");
1467
parent = glfs_h_lookupat(fs, NULL, full_parent_name, &sb, 0);
1468
if (parent == NULL) {
1470
"glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
1471
full_parent_name, root, strerror(errno));
1472
printf("glfs_h_mkdir tests: FAILED\n");
1477
leaf = glfs_h_mkdir(fs, parent, newparent_name, 0755, &sb);
1479
fprintf(stderr, "glfs_h_mkdir: error on mkdir of %s: from (%p),%s\n",
1480
newparent_name, parent, strerror(errno));
1481
printf("glfs_h_mkdir tests: FAILED\n");
1489
leaf = glfs_h_mkdir(fs, parent, newparent_name, 0755, &sb);
1490
if (leaf != NULL || errno != EEXIST) {
1492
"glfs_h_mkdir: existing directory, leaf = (%p), errno = %s\n",
1493
leaf, strerror(errno));
1494
printf("glfs_h_mkdir tests: FAILED\n");
1501
glfs_h_close(parent);
1504
printf("glfs_h_mkdir tests: PASSED\n");
1507
printf("glfs_h_mknod tests: In Progress\n");
1508
ret = glfs_unlink(fs, full_newnod_name);
1509
if (ret && errno != ENOENT) {
1510
fprintf(stderr, "glfs_unlink: Failed for %s: %s\n", full_newnod_name,
1512
printf("glfs_h_mknod tests: FAILED\n");
1516
parent = glfs_h_lookupat(fs, NULL, full_parent_name, &sb, 0);
1517
if (parent == NULL) {
1519
"glfs_h_lookupat: error on lookup of %s: from (%p),%s\n",
1520
full_parent_name, root, strerror(errno));
1521
printf("glfs_h_mknod tests: FAILED\n");
1526
leaf = glfs_h_mknod(fs, parent, newnod_name, S_IFIFO, 0, &sb);
1528
fprintf(stderr, "glfs_h_mkdir: error on mkdir of %s: from (%p),%s\n",
1529
newnod_name, parent, strerror(errno));
1530
printf("glfs_h_mknod tests: FAILED\n");
1535
/* TODO: create op on a FIFO node hangs, need to check and fix
1536
tmp = glfs_h_creat (fs, parent, newnod_name, O_CREAT, 0644, &sb);
1537
if (tmp != NULL || errno != EINVAL) {
1538
fprintf (stderr, "glfs_h_creat: node create, tmp = (%p), errno =
1539
%s\n", tmp, strerror (errno)); printf ("glfs_h_creat/mknod tests:
1540
FAILED\n"); if (tmp != NULL) { glfs_h_close(tmp); tmp = NULL;
1547
leaf = glfs_h_mknod(fs, parent, newnod_name, 0644, 0, &sb);
1548
if (leaf != NULL || errno != EEXIST) {
1550
"glfs_h_mknod: existing node, leaf = (%p), errno = %s\n", leaf,
1552
printf("glfs_h_mknod tests: FAILED\n");
1559
glfs_h_close(parent);
1562
printf("glfs_h_mknod tests: PASSED\n");
1567
/* TODO: opendir tests */
1570
test_h_getsetattrs();
1572
/* TODO: setattr tests */
1574
/* truncate tests */
1583
/* performance tests */
1584
test_h_performance();
1586
/* END: New APIs test area */
1589
/* Cleanup glfs handles */
1593
glfs_h_close(parent);
1601
test_write_apis(glfs_t *fs)
1603
/* Add more content here */
1604
/* Some apis we can get are */
1606
0. glfs_set_xlator_option()
1608
Read/Write combinations:
1609
. glfs_{p,}readv/{p,}writev
1612
tests/basic/gfapi/gfapi-async-calls-test.c
1613
. glfs_read_async/write_async
1614
. glfs_pread_async/pwrite_async
1615
. glfs_readv_async/writev_async
1616
. glfs_preadv_async/pwritev_async
1618
. ftruncate/ftruncate_async
1620
. fdatasync/fdatasync_async
1624
glfs_fd_t *fd = NULL;
1625
char *filename = "/filename2";
1627
char *buf = "some bytes!";
1628
char writestr[TEST_STR_LEN];
1629
struct iovec iov = {&writestr, TEST_STR_LEN};
1632
for (i = 0; i < TEST_STR_LEN; i++)
1635
fd = glfs_open(fs, filename, flags);
1637
fprintf(stderr, "open(%s): (%p) %s\n", filename, fd, strerror(errno));
1639
ret = glfs_writev(fd, &iov, 1, flags);
1641
fprintf(stderr, "writev(%s): %d (%s)\n", filename, ret,
1645
ret = glfs_pwrite(fd, buf, 10, 4, flags, NULL, NULL);
1647
fprintf(stderr, "pwrite(%s): %d (%s)\n", filename, ret,
1651
ret = glfs_pwritev(fd, &iov, 1, 4, flags);
1653
fprintf(stderr, "pwritev(%s): %d (%s)\n", filename, ret,
1657
ret = glfs_fsync(fd, NULL, NULL);
1659
fprintf(stderr, "fsync(%s): %d (%s)\n", filename, ret, strerror(errno));
1668
test_metadata_ops(glfs_t *fs, glfs_t *fs2)
1670
glfs_fd_t *fd = NULL;
1671
glfs_fd_t *fd2 = NULL;
1675
struct glfs_stat gsb = {
1680
char writebuf[11] = "helloworld";
1682
char *filename = "/filename2";
1685
ret = glfs_lstat(fs, filename, &sb);
1686
fprintf(stderr, "lstat(%s): (%d) %s\n", filename, ret, strerror(errno));
1688
fd = glfs_creat(fs, filename, O_RDWR, 0644);
1690
fprintf(stderr, "creat(%s): (%p) %s\n", filename, fd, strerror(errno));
1692
fd2 = glfs_open(fs2, filename, O_RDWR);
1694
fprintf(stderr, "open(%s): (%p) %s\n", filename, fd, strerror(errno));
1696
ret = glfs_lstat(fs, filename, &sb);
1698
fprintf(stderr, "lstat(%s): (%d) %s\n", filename, ret, strerror(errno));
1700
ret = glfs_write(fd, writebuf, 11, 0);
1702
fprintf(stderr, "writev(%s): %d (%s)\n", filename, ret,
1706
glfs_fsync(fd, NULL, NULL);
1708
glfs_lseek(fd2, 5, SEEK_SET);
1710
ret = glfs_read(fd2, readbuf, 32, 0);
1712
printf("read %d, %s", ret, readbuf);
1715
ret = glfs_fstat(fd2, &sb);
1717
fprintf(stderr, "fstat(%s): %d (%s)\n", filename, ret, strerror(errno));
1719
ret = glfs_access(fs, filename, R_OK);
1721
fprintf(stderr, "access(%s): %d (%s)\n", filename, ret,
1724
ret = glfs_fallocate(fd2, 1024, 1024, 1024);
1726
fprintf(stderr, "fallocate(%s): %d (%s)\n", filename, ret,
1729
ret = glfs_discard(fd2, 1024, 512);
1731
fprintf(stderr, "discard(%s): %d (%s)\n", filename, ret,
1734
ret = glfs_zerofill(fd2, 2048, 1024);
1736
fprintf(stderr, "zerofill(%s): %d (%s)\n", filename, ret,
1740
/* TODO: got some errors, need to fix */
1741
ret = glfs_fsetattr(fd2, &gsb);
1746
filename = "/filename3";
1747
ret = glfs_mknod(fs, filename, S_IFIFO, 0);
1749
fprintf(stderr, "%s: (%d) %s\n", filename, ret, strerror(errno));
1751
ret = glfs_lstat(fs, filename, &sb);
1753
fprintf(stderr, "%s: (%d) %s\n", filename, ret, strerror(errno));
1755
ret = glfs_rename(fs, filename, "/filename4");
1757
fprintf(stderr, "rename(%s): (%d) %s\n", filename, ret,
1760
ret = glfs_unlink(fs, "/filename4");
1762
fprintf(stderr, "unlink(%s): (%d) %s\n", "/filename4", ret,
1765
filename = "/dirname2";
1766
ret = glfs_mkdir(fs, filename, 0);
1768
fprintf(stderr, "%s: (%d) %s\n", filename, ret, strerror(errno));
1770
ret = glfs_lstat(fs, filename, &sb);
1772
fprintf(stderr, "lstat(%s): (%d) %s\n", filename, ret, strerror(errno));
1774
ret = glfs_rmdir(fs, filename);
1776
fprintf(stderr, "rmdir(%s): (%d) %s\n", filename, ret, strerror(errno));
1779
main(int argc, char *argv[])
1783
glfs_fd_t *fd = NULL;
1784
glfs_fd_t *fd2 = NULL;
1788
struct glfs_stat gsb = {
1796
char *filename = "/filename2";
1798
if ((argc < 2) || (argc > 3)) {
1799
printf("Usage:\n\t%s <volname> <hostname>\n\t%s <volfile-path>",
1805
/* Generally glfs_new() requires volume name as an argument */
1806
fs = glfs_new("test-only");
1808
fprintf(stderr, "glfs_new: returned NULL\n");
1811
ret = glfs_set_volfile(fs, argv[1]);
1813
fprintf(stderr, "glfs_set_volfile failed\n");
1815
fs = glfs_new(argv[1]);
1817
fprintf(stderr, "glfs_new: returned NULL\n");
1820
// ret = glfs_set_volfile_server (fs, "unix", "/tmp/gluster.sock", 0);
1821
ret = glfs_set_volfile_server(fs, "tcp", argv[2], 24007);
1823
fprintf(stderr, "glfs_set_volfile_server failed\n");
1826
/* Change this to relevant file when running locally */
1827
ret = glfs_set_logging(fs, "/dev/stderr", 5);
1829
fprintf(stderr, "glfs_set_logging failed\n");
1831
ret = glfs_init(fs);
1833
fprintf(stderr, "glfs_init: returned %d\n", ret);
1838
/* no major use for getting the volume id in this test, done for coverage */
1839
ret = glfs_get_volumeid(fs, volumeid, 64);
1841
fprintf(stderr, "glfs_get_volumeid: returned %d\n", ret);
1847
/* Generally glfs_new() requires volume name as an argument */
1848
fs2 = glfs_new("test_only_volume");
1850
fprintf(stderr, "glfs_new(fs2): returned NULL\n");
1853
ret = glfs_set_volfile(fs2, argv[1]);
1855
fprintf(stderr, "glfs_set_volfile failed(fs2)\n");
1857
fs2 = glfs_new(argv[1]);
1859
fprintf(stderr, "glfs_new(fs2): returned NULL\n");
1862
ret = glfs_set_volfile_server(fs2, "tcp", argv[2], 24007);
1864
fprintf(stderr, "glfs_set_volfile_server failed(fs2)\n");
1867
ret = glfs_set_statedump_path(fs2, "/tmp");
1869
fprintf(stderr, "glfs_set_statedump_path: %s\n", strerror(errno));
1872
ret = glfs_init(fs2);
1874
fprintf(stderr, "glfs_init: returned %d\n", ret);
1876
test_metadata_ops(fs, fs2);
1884
test_handleops(argc, argv);
1887
/* Test some extra apis */
1888
test_write_apis(fs);
1890
glfs_statvfs(fs, "/", &sfs);
1892
glfs_unset_volfile_server(fs, "tcp", argv[2], 24007);