⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vltest.c

📁 harvest是一个下载html网页得机器人
💻 C
📖 第 1 页 / 共 2 页
字号:
    if(!(vbuf = vlget(villa, buf, len, &vsiz))){      pdperror(name);      vlclose(villa);      return 1;    }    free(vbuf);    if(vsiz != 8){      fprintf(stderr, "%s: %s: invalid vsiz\n", progname, name);      vlclose(villa);      return 1;    }    if(vlvnum(villa, buf, len) != 1){      fprintf(stderr, "%s: %s: invalid vnum\n", progname, name);      vlclose(villa);      return 1;    }  }  printfflush("ok\n");  printfflush("Deleting x6 - x0 records ... ");  for(i = 1; i <= 100; i++){    if(i % 10 >= 1 && i % 10 <= 5) continue;    len = sprintf(buf, "%08d", i);    if(!vlout(villa, buf, len)){      pdperror(name);      vlclose(villa);      return 1;    }  }  printfflush("ok\n");  printfflush("Scanning with the cursor in ascending order ... ");  if(!vlcurfirst(villa)){    pdperror(name);    vlclose(villa);    return 1;  }  i = 0;  do {    kbuf = NULL;    vbuf = NULL;    if(!(kbuf = vlcurkey(villa, &ksiz)) || !(vbuf = vlcurval(villa, &vsiz))){      pdperror(name);      free(kbuf);      free(vbuf);      vlclose(villa);      return 1;    }    free(kbuf);    free(vbuf);    i++;  } while(vlcurnext(villa));  if(i != 50){    fprintf(stderr, "%s: %s: invalid cursor\n", progname, name);    vlclose(villa);    return 1;  }  if(dpecode != DP_ENOITEM){    pdperror(name);    vlclose(villa);    return 1;  }  printfflush("ok\n");  printfflush("Scanning with the cursor in decending order ... ");  if(!vlcurlast(villa)){    pdperror(name);    vlclose(villa);    return 1;  }  i = 0;  do {    kbuf = NULL;    vbuf = NULL;    if(!(kbuf = vlcurkey(villa, &ksiz)) || !(vbuf = vlcurval(villa, &vsiz))){      pdperror(name);      free(kbuf);      free(vbuf);      vlclose(villa);      return 1;    }    free(kbuf);    free(vbuf);    i++;  } while(vlcurprev(villa));  if(i != 50){    fprintf(stderr, "%s: %s: invalid cursor\n", progname, name);    vlclose(villa);    return 1;  }  if(dpecode != DP_ENOITEM){    pdperror(name);    vlclose(villa);    return 1;  }  printfflush("ok\n");  printfflush("Adding 50 random records with VL_DDUP ... ");  for(i = 0; i < 50; i++){    len = sprintf(buf, "%08d", myrand() % 100 + 1);    if(!vlput(villa, buf, len, buf, len, VL_DDUP)){      pdperror(name);      vlclose(villa);      return 1;    }  }  printfflush("ok\n");  printfflush("Deleting 80 random records ... ");  i = 0;  while(i < 80){    len = sprintf(buf, "%08d", myrand() % 100 + 1);    if(!vlout(villa, buf, len)){      if(dpecode == DP_ENOITEM) continue;      pdperror(name);      vlclose(villa);      return 1;    }    i++;  }  printfflush("ok\n");  alist = cblistopen();  dlist = cblistopen();  printfflush("Scanning with the cursor in ascending order ... ");  if(!vlcurfirst(villa)){    pdperror(name);    vlclose(villa);    return 1;  }  i = 0;  do {    kbuf = NULL;    vbuf = NULL;    if(!(kbuf = vlcurkey(villa, &ksiz)) || !(vbuf = vlcurval(villa, &vsiz))){      pdperror(name);      cblistclose(alist);      cblistclose(dlist);      free(kbuf);      free(vbuf);      vlclose(villa);      return 1;    }    cblistpush(alist, kbuf, ksiz);    free(kbuf);    free(vbuf);    i++;  } while(vlcurnext(villa));  if(i != 20){    fprintf(stderr, "%s: %s: invalid cursor\n", progname, name);    cblistclose(alist);    cblistclose(dlist);    vlclose(villa);    return 1;  }  if(dpecode != DP_ENOITEM){    pdperror(name);    cblistclose(alist);    cblistclose(dlist);    vlclose(villa);    return 1;  }  printfflush("ok\n");  printfflush("Scanning with the cursor in decending order ... ");  if(!vlcurlast(villa)){    pdperror(name);    cblistclose(alist);    cblistclose(dlist);    vlclose(villa);    return 1;  }  i = 0;  do {    kbuf = NULL;    vbuf = NULL;    if(!(kbuf = vlcurkey(villa, &ksiz)) || !(vbuf = vlcurval(villa, &vsiz))){      pdperror(name);      free(kbuf);      free(vbuf);      cblistclose(alist);      cblistclose(dlist);      vlclose(villa);      return 1;    }    cblistunshift(dlist, kbuf, ksiz);    free(kbuf);    free(vbuf);    i++;  } while(vlcurprev(villa));  if(i != 20){    fprintf(stderr, "%s: %s: invalid cursor\n", progname, name);    cblistclose(alist);    cblistclose(dlist);    vlclose(villa);    return 1;  }  if(dpecode != DP_ENOITEM){    pdperror(name);    cblistclose(alist);    cblistclose(dlist);    vlclose(villa);    return 1;  }  printfflush("ok\n");  printfflush("Matching result of ascending scan and desending scan  ... ");  for(i = 0; i < cblistnum(alist); i++){    ap = cblistval(alist, i, NULL);    dp = cblistval(dlist, i, NULL);    if(strcmp(ap, dp)){      fprintf(stderr, "%s: %s: not match\n", progname, name);      cblistclose(alist);      cblistclose(dlist);      vlclose(villa);      return 1;    }  }  cblistsort(alist);  for(i = 0; i < cblistnum(alist); i++){    ap = cblistval(alist, i, NULL);    dp = cblistval(dlist, i, NULL);    if(strcmp(ap, dp)){      fprintf(stderr, "%s: %s: not match\n", progname, name);      cblistclose(alist);      cblistclose(dlist);      vlclose(villa);      return 1;    }  }  printfflush("ok\n");  cblistclose(alist);  cblistclose(dlist);  printfflush("Resetting tuning parameters with 41, 80, 32, 32 ... ");  vlsettuning(villa, 41, 80, 32, 32);  printfflush("ok\n");  printfflush("Adding 1000 random records with VL_DDUP ... ");  for(i = 0; i < 1000; i++){    len = sprintf(buf, "%08d", myrand() % 1000 + 1);    if(!vlput(villa, buf, len, buf, len, VL_DDUP)){      pdperror(name);      vlclose(villa);      return 1;    }  }  printfflush("ok\n");  printfflush("Resetting tuning parameters with 8, 5, 16, 16 ... ");  vlsettuning(villa, 8, 5, 16, 16);  printfflush("ok\n");  printfflush("Adding 1000 random records with VL_DDUP ... ");  for(i = 0; i < 1000; i++){    len = sprintf(buf, "%08d", myrand() % 1000 + 1);    if(!vlput(villa, buf, len, buf, len, VL_DDUP)){      pdperror(name);      vlclose(villa);      return 1;    }  }  printfflush("ok\n");  printfflush("Beginning the transaction ... ");  if(!vltranbegin(villa)){    pdperror(name);    vlclose(villa);    return 1;  }  printfflush("ok\n");  printfflush("Adding 100 random records with VL_DDUP ... ");  for(i = 0; i < 100; i++){    len = sprintf(buf, "%08d", myrand() % 1000 + 1);    if(!vlput(villa, buf, len, buf, len, VL_DDUP)){      pdperror(name);      vlclose(villa);      return 1;    }  }  printfflush("ok\n");  printfflush("Scanning and checking ... ");  i = 0;  for(vlcurlast(villa); (kbuf = vlcurkey(villa, &ksiz)) != NULL; vlcurprev(villa)){    if(vlvnum(villa, kbuf, ksiz) < 1 || !(vbuf = vlcurval(villa, NULL))){      pdperror(name);      free(kbuf);      vlclose(villa);      return 1;    }    free(vbuf);    free(kbuf);    i++;  }  if(i != vlrnum(villa)){    fprintf(stderr, "%s: %s: invalid\n", progname, name);    vlclose(villa);    return 1;  }  printfflush("ok\n");  printfflush("Committing the transaction ... ");  if(!vltrancommit(villa)){    pdperror(name);    vlclose(villa);    return 1;  }  printfflush("ok\n");  printfflush("Scanning and checking ... ");  i = 0;  for(vlcurlast(villa); (kbuf = vlcurkey(villa, &ksiz)) != NULL; vlcurprev(villa)){    if(vlvnum(villa, kbuf, ksiz) < 1 || !(vbuf = vlcurval(villa, NULL))){      pdperror(name);      free(kbuf);      vlclose(villa);      return 1;    }    free(vbuf);    free(kbuf);    i++;  }  if(i != vlrnum(villa)){    fprintf(stderr, "%s: %s: invalid\n", progname, name);    vlclose(villa);    return 1;  }  printfflush("ok\n");  lnum = vllnum(villa);  nnum = vlnnum(villa);  rnum = vlrnum(villa);  fsiz = vlfsiz(villa);  printfflush("Beginning the transaction ... ");  if(!vltranbegin(villa)){    pdperror(name);    vlclose(villa);    return 1;  }  printfflush("ok\n");  printfflush("Adding 100 random records with VL_DDUP ... ");  for(i = 0; i < 100; i++){    len = sprintf(buf, "%08d", myrand() % 1000 + 1);    if(!vlput(villa, buf, len, buf, len, VL_DDUP)){      pdperror(name);      vlclose(villa);      return 1;    }  }  printfflush("ok\n");  printfflush("Aborting the transaction ... ");  if(!vltranabort(villa)){    pdperror(name);    vlclose(villa);    return 1;  }  printfflush("ok\n");  printfflush("Checking rollback ... ");  if(vlfsiz(villa) != fsiz || vllnum(villa) != lnum ||     vlnnum(villa) != nnum || vlrnum(villa) != rnum){    fprintf(stderr, "%s: %s: invalid\n", progname, name);    vlclose(villa);    return 1;  }  printfflush("ok\n");  printfflush("Scanning and checking ... ");  i = 0;  for(vlcurlast(villa); (kbuf = vlcurkey(villa, &ksiz)) != NULL; vlcurprev(villa)){    if(vlvnum(villa, kbuf, ksiz) < 1 || !(vbuf = vlcurval(villa, NULL))){      pdperror(name);      free(kbuf);      vlclose(villa);      return 1;    }    free(vbuf);    free(kbuf);    i++;  }  if(i != vlrnum(villa)){    fprintf(stderr, "%s: %s: invalid\n", progname, name);    vlclose(villa);    return 1;  }  printfflush("ok\n");  printfflush("Closing the database ... ");  if(!vlclose(villa)){    pdperror(name);    return 1;  }  printfflush("ok\n");  printfflush("all ok\n\n");  return 0;}/* perform wicked command */int dowicked(const char *name, int rnum){  VILLA *villa;  int i, j, len, err, ksiz, vsiz, tran;  char buf[32], *kbuf, *vbuf;  CBLIST *list;  printfflush("<Wicked Writing Test>\n  name=%s  rnum=%d\n\n", name, rnum);  if(!(villa = vlopen(name, VL_OWRITER | VL_OCREAT | VL_OTRUNC, VL_CMPLEX))){    pdperror(name);    return 1;  }  err = FALSE;  tran = FALSE;  vlsettuning(villa, 5, 10, 64, 64);  for(i = 1; i <= rnum; i++){    len = sprintf(buf, "%08d", myrand() % rnum + 1);    switch(myrand() % 16){    case 0:      putchar('O');      if(!vlput(villa, buf, len, buf, len, VL_DOVER)) err = TRUE;      break;    case 1:      putchar('K');      if(!vlput(villa, buf, len, buf, len, VL_DKEEP) && dpecode != DP_EKEEP) err = TRUE;      break;    case 2:      putchar('D');      if(!vlout(villa, buf, len) && dpecode != DP_ENOITEM) err = TRUE;      break;    case 3:      putchar('G');      if((vbuf = vlget(villa, buf, len, NULL)) != NULL){        free(vbuf);      } else if(dpecode != DP_ENOITEM){        err = TRUE;      }      break;    case 4:      putchar('V');      if(!vlvnum(villa, buf, len) && dpecode != DP_ENOITEM) err = TRUE;      break;    case 5:      putchar('X');      list = cblistopen();      cblistpush(list, buf, len);      cblistpush(list, buf, len);      if(!vlputlist(villa, buf, len, list)) err = TRUE;      cblistclose(list);      break;    case 6:      putchar('Y');      if(!vloutlist(villa, buf, len) && dpecode != DP_ENOITEM) err = TRUE;      break;    case 7:      putchar('Z');      if((list = vlgetlist(villa, buf, len)) != NULL){        cblistclose(list);      } else if(dpecode != DP_ENOITEM){        err = TRUE;      }      break;    case 8:      putchar('Q');      if(vlcurjump(villa, buf, len, VL_JFORWARD)){        for(j = 0; j < 3 && (kbuf = vlcurkey(villa, &ksiz)); j++){          if(VL_CMPLEX(buf, len, kbuf, ksiz) > 0) err = TRUE;          free(kbuf);          if(!vlcurnext(villa) && dpecode != DP_ENOITEM) err = TRUE;        }      } else {        if(dpecode != DP_ENOITEM) err = TRUE;      }      break;    case 9:      putchar('W');      if(vlcurjump(villa, buf, len, VL_JBACKWARD)){        for(j = 0; j < 3 && (kbuf = vlcurkey(villa, &ksiz)); j++){          if(VL_CMPLEX(buf, len, kbuf, ksiz) < 0) err = TRUE;          free(kbuf);          if(!vlcurprev(villa) && dpecode != DP_ENOITEM) err = TRUE;        }      } else {        if(dpecode != DP_ENOITEM) err = TRUE;      }      break;    case 10:      putchar('T');      if(tran){        if(myrand() % 5 == 0){          if(!vltranabort(villa)) err = TRUE;        } else {          if(!vltrancommit(villa)) err = TRUE;        }        tran = FALSE;      } else {        if(!vltranbegin(villa)) err = TRUE;        tran = TRUE;      }      break;    default:      putchar('P');      if(!vlput(villa, buf, len, buf, len, VL_DOVER)) err = TRUE;      break;    }    if(i % 50 == 0) printfflush(" (%08d)\n", i);    if(err){      pdperror(name);      break;    }  }  if(tran){    if(!vltranabort(villa)) err = TRUE;  }  if(!vloptimize(villa)){    pdperror(name);    err = TRUE;  }  if((rnum = vlrnum(villa)) == -1){    pdperror(name);    err = TRUE;  }  if(!vlcurfirst(villa)){    pdperror(name);    err = TRUE;  }  i = 0;  do {    kbuf = NULL;    vbuf = NULL;    if(!(kbuf = vlcurkey(villa, &ksiz)) || !(vbuf = vlcurval(villa, &vsiz)) ||       ksiz != 8 || vsiz != 8 || vlvnum(villa, kbuf, ksiz) < 1){      pdperror(name);      free(kbuf);      free(vbuf);      err = TRUE;      break;    }    free(kbuf);    free(vbuf);    i++;  } while(vlcurnext(villa));  if(i != rnum){    fprintf(stderr, "%s: %s: invalid cursor\n", progname, name);    err = TRUE;  }  if(dpecode != DP_ENOITEM){    pdperror(name);    err = TRUE;  }  if(!vlcurlast(villa)){    pdperror(name);    err = TRUE;  }  i = 0;  do {    kbuf = NULL;    vbuf = NULL;    if(!(kbuf = vlcurkey(villa, &ksiz)) || !(vbuf = vlcurval(villa, &vsiz)) ||       ksiz != 8 || vsiz != 8 || vlvnum(villa, kbuf, ksiz) < 1){      pdperror(name);      free(kbuf);      free(vbuf);      err = TRUE;      break;    }    free(kbuf);    free(vbuf);    i++;  } while(vlcurprev(villa));  if(i != rnum){    fprintf(stderr, "%s: %s: invalid cursor\n", progname, name);    err = TRUE;  }  if(dpecode != DP_ENOITEM){    pdperror(name);    err = TRUE;  }  if(!vlclose(villa)){    pdperror(name);    return 1;  }  if(!err) printfflush("ok\n\n");  return err ? 1 : 0;}/* END OF FILE */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -