X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=bacula%2Fpatches%2Ftesting%2Ft.c;h=f15a146b5462a729af48437f0dba05a97bf740b0;hb=5bc5fc4a0d1dbf669253418d1f6196ae87c1a9aa;hp=f668680d6c39a0abce19d65920d44eb41181e59b;hpb=ac68dc7645e9a24aaf438ac5ba533411c8d650a5;p=bacula%2Fbacula diff --git a/bacula/patches/testing/t.c b/bacula/patches/testing/t.c index f668680d6c..f15a146b54 100644 --- a/bacula/patches/testing/t.c +++ b/bacula/patches/testing/t.c @@ -13,6 +13,9 @@ #define read faketape_read #define close faketape_close #define ioctl faketape_ioctl +#define debug(x) faketape_debug(x) +#else +#define debug(x) #endif static int fd; @@ -20,142 +23,367 @@ void print_pos() { struct mtget mt_get; ioctl(fd, MTIOCGET, &mt_get); - printf("file:block %i:%i\n", mt_get.mt_fileno, mt_get.mt_blkno); + printf("*** file:block %i:%i BOT=%u EOD=%u EOF=%u\n", + mt_get.mt_fileno, mt_get.mt_blkno, + GMT_BOT(mt_get.mt_gstat) != 0, + GMT_EOD(mt_get.mt_gstat) != 0, + GMT_EOF(mt_get.mt_gstat) != 0 + ); } -int main() +int main(int argc, char **argv) { - int r1, r2; + int r1; char c[200]; struct mtop mt_com; + + if (argc > 1) { + debug(atoi(argv[1])); + } - fd = open("/dev/lto2", O_CREAT | O_RDWR, 0700); + fd = open("/dev/lto2", O_CREAT | O_RDWR); if (fd < 0) { perror("Can't open fd"); exit(1); } + print_pos(); + /* rewind */ + printf("\n*** rewind\n"); mt_com.mt_count = 1; mt_com.mt_op = MTREW; r1 = ioctl(fd, MTIOCTOP, &mt_com); - printf("rewind\n"); print_pos(); + /* read something */ + errno=0; + r1 = read(fd, c, 200); + c[r1] = 0; + printf("\n*** read c=%s len=%i\n", c, r1); + print_pos(); + + /* read something */ + errno=0; + r1 = read(fd, c, 200); + c[r1] = 0; + printf("\n*** read c=%s len=%i\n", c, r1); + print_pos(); + + /* read something */ + errno=0; + r1 = read(fd, c, 200); + c[r1] = 0; + printf("\n*** read c=%s len=%i\n", c, r1); + print_pos(); + + /* read something */ + errno=0; + r1 = read(fd, c, 200); + c[r1] = 0; + printf("\n*** read c=%s len=%i\n", c, r1); + print_pos(); + + /* read something */ + errno=0; + r1 = read(fd, c, 200); + c[r1] = 0; + printf("\n*** read c=%s len=%i\n", c, r1); + print_pos(); + + /* read something */ + errno=0; + r1 = read(fd, c, 200); + c[r1] = 0; + printf("\n*** read c=%s len=%i\n", c, r1); + print_pos(); + + exit(0); + /* write something */ + printf("\n*** write something (3 writes)\n"); write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1); write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1); write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1); - printf("write something (3 writes)\n"); print_pos(); /* write EOF */ - printf("WEOF\n"); + printf("\n*** WEOF\n"); + mt_com.mt_op = MTWEOF; + mt_com.mt_count = 1; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + print_pos(); + + write(fd, "12345", strlen("12345")+1); + write(fd, "678910", strlen("678910")+1); + + /* write EOF */ + printf("\n*** WEOF\n"); mt_com.mt_op = MTWEOF; mt_com.mt_count = 1; r1 = ioctl(fd, MTIOCTOP, &mt_com); print_pos(); + + + /* BSF */ + printf("\n*** bsf\n"); + mt_com.mt_count = 1; + mt_com.mt_op = MTBSF; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + print_pos(); + + /* BSR */ + printf("\n*** bsr\n"); + mt_com.mt_count = 1; + mt_com.mt_op = MTBSR; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + print_pos(); + + /* read something */ + errno=0; + r1 = read(fd, c, 200); + c[r1] = 0; + printf("\n*** read c=%s len=%i\n", c, r1); + print_pos(); + + /* read something */ + errno=0; + r1 = read(fd, c, 200); + c[r1] = 0; + printf("\n*** read c=%s len=%i\n", c, r1); + print_pos(); + exit(0); + + /* FSR */ + printf("\n*** fsr"); + mt_com.mt_op = MTFSR; + mt_com.mt_count = 1; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + printf(" r=%i\n", r1); + print_pos(); + /* FSR */ + printf("\n*** fsr"); + mt_com.mt_op = MTFSR; + mt_com.mt_count = 1; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + printf(" r=%i\n", r1); + print_pos(); + /* FSR */ + printf("\n*** fsr"); + mt_com.mt_op = MTFSR; + mt_com.mt_count = 1; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + printf(" r=%i\n", r1); + print_pos(); + /* FSR */ + printf("\n*** fsr"); + mt_com.mt_op = MTFSR; + mt_com.mt_count = 1; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + printf(" r=%i\n", r1); + print_pos(); + /* FSR */ + printf("\n*** fsr"); + mt_com.mt_op = MTFSR; + mt_com.mt_count = 1; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + printf(" r=%i\n", r1); + print_pos(); + exit(0); + + /* write a second file */ + printf("\n*** write something\n"); write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1); - printf("write something\n"); print_pos(); + /* BSF */ + printf("\n*** bsf\n"); + mt_com.mt_op = MTBSF; + mt_com.mt_count = 1; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + print_pos(); + /* rewind */ + printf("\n*** rewind\n"); mt_com.mt_count = 1; mt_com.mt_op = MTREW; r1 = ioctl(fd, MTIOCTOP, &mt_com); - printf("rewind\n"); /* read something with error */ + printf("\n*** read c=%s len=%i\n", c, r1); errno=0; r1 = read(fd, c, 2); c[r1] = 0; - printf("read c=%s len=%i errno=%i\n", c, r1, errno); perror(""); print_pos(); /* read something */ + printf("\n*** read c=%s len=%i\n", c, r1); errno=0; r1 = read(fd, c, 200); c[r1] = 0; - printf("read c=%s len=%i\n", c, r1); print_pos(); /* write something */ - printf("write something\n"); + printf("\n*** write something\n"); write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1); print_pos(); /* rewind */ + printf("\n*** rewind\n"); mt_com.mt_count = 1; mt_com.mt_op = MTREW; r1 = ioctl(fd, MTIOCTOP, &mt_com); r1 = read(fd, c, 200); c[r1] = '\0'; - printf("read c=%s len=%i\n", c, r1); + printf("\n*** read c=%s len=%i\n", c, r1); r1 = read(fd, c, 200); c[r1] = '\0'; - printf("read c=%s len=%i\n", c, r1); + printf("\n*** read c=%s len=%i\n", c, r1); /* write EOF */ - printf("WEOF\n"); + printf("\n*** WEOF"); mt_com.mt_op = MTWEOF; mt_com.mt_count = 1; r1 = ioctl(fd, MTIOCTOP, &mt_com); + printf(" r=%i\n", r1); print_pos(); /* FSF */ + printf("\n*** fsf x1"); mt_com.mt_op = MTFSF; mt_com.mt_count = 1; r1 = ioctl(fd, MTIOCTOP, &mt_com); - printf("fsf r=%i\n", r1); + printf(" r=%i\n", r1); print_pos(); /* write something */ - printf("write something\n"); + printf("\n*** write something\n"); write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1); print_pos(); /* FSF */ + printf("\n*** fsf"); mt_com.mt_op = MTFSF; mt_com.mt_count = 1; r1 = ioctl(fd, MTIOCTOP, &mt_com); - printf("fsf r=%i\n", r1); + printf(" r=%i\n", r1); print_pos(); /* WEOF */ + printf("\n*** weof 3"); mt_com.mt_op = MTWEOF; mt_com.mt_count = 3; r1 = ioctl(fd, MTIOCTOP, &mt_com); - printf("weof 3 r=%i\n", r1); + printf(" r=%i\n", r1); print_pos(); /* rewind */ + printf("\n*** rewind\n"); mt_com.mt_count = 1; mt_com.mt_op = MTREW; r1 = ioctl(fd, MTIOCTOP, &mt_com); - printf("rewind\n"); print_pos(); /* FSR */ + printf("\n*** fsr x10"); mt_com.mt_op = MTFSR; mt_com.mt_count = 10; r1 = ioctl(fd, MTIOCTOP, &mt_com); - printf("fsr r=%i\n", r1); + printf(" r=%i\n", r1); print_pos(); /* eom */ + printf("\n*** goto eom"); mt_com.mt_count = 1; mt_com.mt_op = MTEOM; r1 = ioctl(fd, MTIOCTOP, &mt_com); - printf("goto eom\n"); + printf(" r=%i\n", r1); + print_pos(); + + /* fsr */ + printf("\n*** fsr"); + mt_com.mt_count = 1; + mt_com.mt_op = MTFSR; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + printf(" r=%i\n", r1); print_pos(); /* write something */ - printf("write something\n"); + printf("\n*** write something\n"); write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1); print_pos(); + + /* rewind */ + printf("\n*** rewind"); + mt_com.mt_count = 1; + mt_com.mt_op = MTREW; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + printf(" r=%i\n", r1); + + /* FSF */ + printf("\n*** fsf x2"); + mt_com.mt_op = MTFSF; + mt_com.mt_count = 2; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + printf(" r=%i\n", r1); + print_pos(); + + printf("\n*** fsr"); + mt_com.mt_op = MTFSR; + mt_com.mt_count = 1; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + printf(" r=%i\n", r1); + print_pos(); + + /* write something */ + printf("\n*** write something\n"); + write(fd, "abcdefghijklmnopqrstuvwyz", strlen("abcdefghijklmnopqrstuvwyz")+1); + print_pos(); + + printf("\n*** bsf x2"); + mt_com.mt_op = MTBSF; + mt_com.mt_count = 2; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + printf(" r=%i\n", r1); + print_pos(); + + printf("\n*** bsf x10"); + mt_com.mt_op = MTBSF; + mt_com.mt_count = 10; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + printf(" r=%i\n", r1); + print_pos(); + + printf("\n*** eom"); + mt_com.mt_op = MTEOM; + mt_com.mt_count = 1; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + printf(" r=%i\n", r1); + print_pos(); + + printf("\n*** bsr x10"); + mt_com.mt_op = MTBSR; + mt_com.mt_count = 10; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + printf(" r=%i\n", r1); + print_pos(); + + printf("\n*** eom"); + mt_com.mt_op = MTEOM; + mt_com.mt_count = 1; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + printf(" r=%i\n", r1); + print_pos(); + + printf("\n*** fsr"); + mt_com.mt_op = MTFSR; + mt_com.mt_count = 1; + r1 = ioctl(fd, MTIOCTOP, &mt_com); + printf(" r=%i\n", r1); + print_pos(); close(fd); return(0);