Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Improvements to fuzzershell: Avoid excess memory allocations when loading many files. Show the total runtime on final output. Show individual filenames as they are processed even if they are single test-case files. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
34a722a2f3331c35211526c9ec055d4d |
User & Date: | drh 2015-05-02 19:54:35.010 |
Context
2015-05-04
| ||
12:29 | Add the 'y' flag to the fts3/4 matchinfo() function. (check-in: aef1e8f471 user: dan tags: trunk) | |
2015-05-02
| ||
19:54 | Improvements to fuzzershell: Avoid excess memory allocations when loading many files. Show the total runtime on final output. Show individual filenames as they are processed even if they are single test-case files. (check-in: 34a722a2f3 user: drh tags: trunk) | |
17:40 | Add the ".limit" command to the command-line shell. (check-in: 803cb60e75 user: drh tags: trunk) | |
Changes
Changes to tool/fuzzershell.c.
︙ | ︙ | |||
447 448 449 450 451 452 453 454 455 | int oomCnt = 0; /* Counter for the OOM loop */ char zErrBuf[200]; /* Space for the error message */ const char *zFailCode; /* Value of the TEST_FAILURE environment var */ const char *zPrompt; /* Initial prompt when large-file fuzzing */ int nInFile = 0; /* Number of input files to read */ char **azInFile = 0; /* Array of input file names */ int jj; /* Loop counter for azInFile[] */ sqlite3_int64 iStart, iEnd; /* Start and end-times for a test case */ | > | | 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 | int oomCnt = 0; /* Counter for the OOM loop */ char zErrBuf[200]; /* Space for the error message */ const char *zFailCode; /* Value of the TEST_FAILURE environment var */ const char *zPrompt; /* Initial prompt when large-file fuzzing */ int nInFile = 0; /* Number of input files to read */ char **azInFile = 0; /* Array of input file names */ int jj; /* Loop counter for azInFile[] */ sqlite3_int64 iBegin; /* Start time for the whole program */ sqlite3_int64 iStart, iEnd; /* Start and end-times for a test case */ iBegin = timeOfDay(); zFailCode = getenv("TEST_FAILURE"); g.zArgv0 = argv[0]; zPrompt = "<stdin>"; for(i=1; i<argc; i++){ const char *z = argv[i]; if( z[0]=='-' ){ z++; |
︙ | ︙ | |||
608 609 610 611 612 613 614 | for(j=k=0; zPrompt[j]; j++) if( zPrompt[j]=='/' ) k = j+1; zPrompt += k; }else{ in = stdin; zPrompt = "<stdin>"; } while( !feof(in) ){ | < < > | > > > | 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 | for(j=k=0; zPrompt[j]; j++) if( zPrompt[j]=='/' ) k = j+1; zPrompt += k; }else{ in = stdin; zPrompt = "<stdin>"; } while( !feof(in) ){ got = fread(zIn+nIn, 1, nAlloc-nIn-1, in); nIn += (int)got; zIn[nIn] = 0; if( got==0 ) break; if( nAlloc - nIn - 1 < 100 ){ nAlloc += nAlloc+1000; zIn = realloc(zIn, nAlloc); if( zIn==0 ) fatalError("out of memory"); } } if( in!=stdin ) fclose(in); lastPct = -1; /* Skip initial lines of the input file that begin with "#" */ for(i=0; i<nIn; i=iNext+1){ if( zIn[i]!='#' ) break; |
︙ | ︙ | |||
666 667 668 669 670 671 672 673 674 675 676 677 678 679 | int pct = (10*iNext)/nIn; if( pct!=lastPct ){ if( lastPct<0 ) printf("%s:", zPrompt); printf(" %d%%", pct*10); lastPct = pct; } } } fflush(stdout); /* Run the next test case. Run it multiple times in --oom mode */ if( oomFlag ){ oomCnt = g.iOomCntdown = 1; | > > | 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 | int pct = (10*iNext)/nIn; if( pct!=lastPct ){ if( lastPct<0 ) printf("%s:", zPrompt); printf(" %d%%", pct*10); lastPct = pct; } } }else if( nInFile>1 ){ printf("%s\n", zPrompt); } fflush(stdout); /* Run the next test case. Run it multiple times in --oom mode */ if( oomFlag ){ oomCnt = g.iOomCntdown = 1; |
︙ | ︙ | |||
799 800 801 802 803 804 805 | } if( !verboseFlag && multiTest && !quietFlag && !oomFlag ) printf("\n"); } /* Report total number of tests run */ if( nTest>1 && !quietFlag ){ | > | > | | 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 | } if( !verboseFlag && multiTest && !quietFlag && !oomFlag ) printf("\n"); } /* Report total number of tests run */ if( nTest>1 && !quietFlag ){ sqlite3_int64 iElapse = timeOfDay() - iBegin; printf("%s: 0 errors out of %d tests in %d.%03d seconds\nSQLite %s %s\n", g.zArgv0, nTest, (int)(iElapse/1000), (int)(iElapse%1000), sqlite3_libversion(), sqlite3_sourceid()); } /* Write the unique test cases if the --unique-cases flag was used */ if( zDataOut ){ int n = 0; FILE *out = fopen(zDataOut, "wb"); |
︙ | ︙ |