Ignore:
Timestamp:
Aug 15, 2017, 11:25:25 PM (2 years ago)
Author:
faldebey
Message:

different updates to CoRE

Location:
icGREP/icgrep-devel/icgrep/combine/icgrep-test
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • icGREP/icgrep-devel/icgrep/combine/icgrep-test/icgrep-test.cpp

    r5533 r5613  
    88#include <boost/filesystem.hpp>
    99#include <boost/iostreams/device/mapped_file.hpp>
     10#include <boost/algorithm/string/replace.hpp>
    1011
    1112
    1213using namespace std;
    1314namespace io = boost::iostreams;
     15namespace fs=boost::filesystem;
    1416
    1517IcgrepTest::IcgrepTest(){}
    1618
     19std::size_t directorySize(fs::path path)
     20{
     21        return std::count_if(fs::directory_iterator(path),
     22                         fs::directory_iterator(),
     23                         [](const fs::directory_entry& e) {
     24                          return true;  });
     25}
     26
     27void IcgrepTest::backup(){
     28        int count = directorySize("../icgrep/combine/Archive");
     29
     30        fs::path src("../icgrep/combine/icgrep-test");
     31        fs::path dst("../icgrep/combine/Archive/test" + to_string(count+1));
     32        if (!fs::create_directory(dst))
     33    {
     34        throw std::runtime_error("Cannot create destination directory " + dst.string());
     35    }
     36
     37        for (const auto& dirEnt : fs::recursive_directory_iterator{src})
     38    {
     39        const auto& path = dirEnt.path();
     40        auto relativePathStr = path.string();
     41        boost::replace_first(relativePathStr, src.string(), "");
     42        fs::copy(path, dst / relativePathStr);
     43    }
     44}
    1745void IcgrepTest::resetBash(string fileName){
    1846        ofstream file;
     
    2755
    2856void IcgrepTest::clearDir(string dir){
    29         namespace fs=boost::filesystem;
    3057        fs::path path_to_remove(dir);
    3158        for (fs::directory_iterator end_dir_it, it(path_to_remove); it!=end_dir_it; ++it) {
     
    4471        file.open(fileName);
    4572        if (!file.is_open()){
    46                 cout << "Could not open input file\n";
     73                cerr << "Could not open input file\n";
    4774        }
    4875        file << content << endl;
     
    5178
    5279void IcgrepTest::prepare(){
    53         clearDir("../icgrep/combine/regs");
    54         clearDir("../icgrep/combine/files");
     80        backup();
     81        clearDir("../icgrep/combine/icgrep-test/regs");
     82        clearDir("../icgrep/combine/icgrep-test/files");
    5583        resetBash("../icgrep/combine/icgrep-test/grep/icgrep-bash.sh");
    5684        resetBash("../icgrep/combine/icgrep-test/grep/grep-bash.sh");
    57         resetBash("../icgrep/combine/icgrep-test/pcre/icgrep-bash.sh");
    58         resetBash("../icgrep/combine/icgrep-test/pcre/pcre-bash.sh");
     85        resetBash("../icgrep/combine/icgrep-test/ugrep/icgrep-bash.sh");
     86        resetBash("../icgrep/combine/icgrep-test/ugrep/ugrep-bash.sh");
    5987        remove("..//icgrep/combine/icgrep-test/grep/icgrep-result");
    6088        remove("..//icgrep/combine/icgrep-test/grep/grep-result");
    61         remove("..//icgrep/combine/icgrep-test/pcre/icgrep-result");
    62         remove("..//icgrep/combine/icgrep-test/pcre/pcre-result");
     89        remove("..//icgrep/combine/icgrep-test/ugrep/icgrep-result");
     90        remove("..//icgrep/combine/icgrep-test/ugrep/ugrep-result");
    6391}
    6492
    6593bool IcgrepTest::hasFlag(string flag, std::vector<string> flags){
    66         return (std::find(flags.begin(), flags.end(), flag) != flags.end()) ? true : false;
     94        for (auto f : flags){
     95                if (strncmp(f.c_str(), flag.c_str(), flag.size()) == 0){
     96                        return true;
     97                }
     98        }
     99        return false;
    67100}
    68101
    69102std::vector<string> IcgrepTest::removeFlag(string flag, std::vector<string> flags){
    70         flags.erase(std::remove(flags.begin(), flags.end(), flag), flags.end());
     103        int c = 0;
     104        for (auto f : flags){
     105                if (strncmp(f.c_str(), flag.c_str(), flag.size()) == 0){
     106                        flags.erase(flags.begin()+c);
     107                }
     108                c++;
     109        }
    71110        return flags;
    72111}
     
    76115        cout << "RE: \'" << re << "\'" << endl;
    77116
    78         string reDir = "../icgrep/combine/regs/reg";
    79         string strDir = "../icgrep/combine/files/file";
     117        string reDir = "../icgrep/combine/icgrep-test/regs/reg";
     118        string strDir = "../icgrep/combine/icgrep-test/files/file";
    80119
    81120        StringGenerator strGen;
    82121        writetoFile(strGen.generate(re, flags, syntax) + "\n", strDir, testNum);
     122        //remove icgrep specific flags for comparison.
     123        vector<string> gflags = removeFlag("-t", flags);
     124        gflags = removeFlag("-BlockSize", gflags);
     125        gflags = removeFlag("-P", gflags);
     126        gflags = removeFlag("-f", gflags);
     127        gflags = removeFlag("-e", gflags);
    83128
    84129        if (syntax == re::RE_Syntax::ERE){
     
    94139                        flags = removeFlag("-f", flags);
    95140                        flags = removeFlag("-e", flags);
     141                       
    96142                        writetoFile(re, reDir, testNum);
    97143               
    98144                        writeToBash(icgrepScript,
    99145                                "./icgrep " + strGen.stringifyVec(flags, " ") + " -f " + reDir + to_string(testNum)+
    100                                  " " + strDir + to_string(testNum) + " >> " + icgrepResult + "\n");
    101 
    102                         writeToBash(grepScript,
    103                                 "grep " + strGen.stringifyVec(flags, " ") + " -f " + reDir + to_string(testNum) +
    104                                 " " + strDir + to_string(testNum) + " >> " + grepResult + "\n");
    105                        
     146                                 " " + strDir + to_string(testNum) + " >> " + icgrepResult + "\n");     
    106147                }
    107148                else if (hasFlag("-e", flags)){
    108149                        flags = removeFlag("-f", flags);
    109150                        flags = removeFlag("-e", flags);
     151
    110152                        writeToBash(icgrepScript,
    111153                                "./icgrep " + strGen.stringifyVec(flags, " ") + " -e \'" + re + "\' " +
    112154                                " " + strDir + to_string(testNum) + " >> " + icgrepResult + "\n");
    113 
    114                         writeToBash(grepScript,
    115                                 "grep " + strGen.stringifyVec(flags, " ") + " -e \'" + re + "\' " +
    116                                 " " + strDir + to_string(testNum) + " >> " + grepResult + "\n");
    117155                }
    118156                else{
    119                        
    120157                        writeToBash(icgrepScript,
    121158                                "./icgrep " + strGen.stringifyVec(flags, " ") + " \'" + re + "\' " +
    122159                                " " + strDir + to_string(testNum) + " >> " + icgrepResult + "\n");
    123 
    124                         writeToBash(grepScript,
    125                                 "grep " + strGen.stringifyVec(flags, " ") + " \'" + re + "\' " +
    126                                 " " + strDir + to_string(testNum) + " >> " + grepResult + "\n");
    127 
    128                 }
     160                }
     161
     162                writeToBash(grepScript,
     163                        "grep " + strGen.stringifyVec(gflags, " ") + " \'" + re + "\' " +
     164                        " " + strDir + to_string(testNum) + " >> " + grepResult + "\n");
    129165        }
    130166        else if (syntax == re::RE_Syntax::BRE){
     
    134170                string icgrepResult = "../icgrep/combine/icgrep-test/grep/icgrep-result";
    135171                string grepResult = "../icgrep/combine/icgrep-test/grep/grep-result";
    136                 vector<string> gflags;
    137172
    138173                writeToBash(icgrepScript, "echo \"" + re + "\" | tee -a " + icgrepResult);
     
    142177                        flags = removeFlag("-f", flags);
    143178                        flags = removeFlag("-e", flags);
    144                         gflags = removeFlag("-G", flags);
     179
    145180                        writetoFile(re, reDir, testNum);
    146                
    147181                        writeToBash(icgrepScript,
    148182                                "./icgrep " + strGen.stringifyVec(flags, " ") + " -f " + reDir + to_string(testNum) +
    149183                                " " + strDir + to_string(testNum) + " >> " + icgrepResult + "\n");
    150184
    151 
    152                         writeToBash(grepScript,
    153                                 "grep " + strGen.stringifyVec(gflags, " ") + " -f " + reDir + to_string(testNum) +
    154                                 " " + strDir + to_string(testNum) + " >> " + grepResult + "\n");
    155 
     185                }
     186                else if (hasFlag("-e", flags)){
     187                        flags = removeFlag("-f", flags);
     188                        flags = removeFlag("-e", flags);
    156189                       
     190                        writeToBash(icgrepScript,
     191                                "./icgrep " + strGen.stringifyVec(flags, " ") + " -e \'" + re + "\' " +
     192                                strDir + to_string(testNum) + " >> " + icgrepResult + "\n");
     193                }
     194                else{
     195                        writeToBash(icgrepScript,
     196                                "./icgrep " + strGen.stringifyVec(flags, " ") + " \'" + re + "\' " +
     197                                strDir + to_string(testNum) + " >> " + icgrepResult + "\n");
     198                }
     199
     200                writeToBash(grepScript,
     201                        "grep " + strGen.stringifyVec(gflags, " ") + " \'" + re + "\' " +
     202                        strDir + to_string(testNum) + " >> " + icgrepResult + "\n");
     203        }
     204        else {
     205                gflags = removeFlag("-c", gflags);
     206
     207                string icgrepScript = "../icgrep/combine/icgrep-test/ugrep/icgrep-bash.sh";
     208                string ugrepScript = "../icgrep/combine/icgrep-test/ugrep/ugrep-bash.sh";
     209                string icgrepResult = "../icgrep/combine/icgrep-test/ugrep/icgrep-result";
     210                string ugrepResult = "../icgrep/combine/icgrep-test/ugrep/ugrep-result";
     211
     212                writeToBash(icgrepScript, "echo \"" + re + "\" | tee -a " + icgrepResult);
     213                writeToBash(ugrepScript, "echo \"" + re + "\" | tee -a " + ugrepResult);
     214
     215                if (hasFlag("-f", flags)){
     216                        flags = removeFlag("-f", flags);
     217                        flags = removeFlag("-e", flags);
     218         
     219                        writetoFile(re, reDir, testNum);
     220                        writeToBash(icgrepScript,
     221                                "./icgrep " + strGen.stringifyVec(flags, " ") + " -f " + reDir + to_string(testNum) +
     222                                " " + strDir + to_string(testNum) + " >> " + icgrepResult + "\n");
    157223                }
    158224                else if (hasFlag("-e", flags)){
    159225                        flags = removeFlag("-f", flags);
    160226                        flags = removeFlag("-e", flags);
    161                         gflags = removeFlag("-G", flags);
     227
    162228                        writeToBash(icgrepScript,
    163229                                "./icgrep " + strGen.stringifyVec(flags, " ") + " -e \'" + re + "\' " +
    164230                                strDir + to_string(testNum) + " >> " + icgrepResult + "\n");
    165 
    166                         writeToBash(grepScript,
    167                                 "grep " + strGen.stringifyVec(gflags, " ") + " -e \'" + re + "\' " +
    168                                 strDir + to_string(testNum) + " >> " + grepResult + "\n");
    169 
    170231                }
    171232                else{
    172                         gflags = removeFlag("-G", flags);
    173233                        writeToBash(icgrepScript,
    174234                                "./icgrep " + strGen.stringifyVec(flags, " ") + " \'" + re + "\' " +
    175235                                strDir + to_string(testNum) + " >> " + icgrepResult + "\n");
    176236
    177                         writeToBash(grepScript,
    178                                 "grep " + strGen.stringifyVec(gflags, " ") + " \'" + re + "\' " +
    179                                 strDir + to_string(testNum) + " >> " + icgrepResult + "\n");
    180 
    181                 }
    182         }
    183         else {
    184 
    185                 string icgrepScript = "../icgrep/combine/icgrep-test/pcre/icgrep-bash.sh";
    186                 string pcreScript = "../icgrep/combine/icgrep-test/pcre/pcre-bash.sh";
    187                 string icgrepResult = "../icgrep/combine/icgrep-test/pcre/icgrep-result";
    188                 string pcreResult = "../icgrep/combine/icgrep-test/pcre/pcre-result";
    189                 vector<string> pflags;
    190 
    191                 writeToBash(icgrepScript, "echo \"" + re + "\" >> " + icgrepResult);
    192                 writeToBash(pcreScript, "echo \"" + re + "\" >> " + pcreResult);
    193 
    194                 if (hasFlag("-f", flags)){
    195                         flags = removeFlag("-f", flags);
    196                         flags = removeFlag("-e", flags);
    197                         pflags = removeFlag("-P", flags);
    198                         writetoFile(re, reDir, testNum);
    199                
    200                         writeToBash(icgrepScript,
    201                                 "./icgrep " + strGen.stringifyVec(flags, " ") + " -f " + reDir + to_string(testNum) +
    202                                 " " + strDir + to_string(testNum) + " >> " + icgrepResult + "\n");
    203 
    204 
    205                         writeToBash(pcreScript,
    206                                 "pcregrep " + strGen.stringifyVec(pflags, " ") + " -f " + reDir + to_string(testNum) +
    207                                 " " + strDir + to_string(testNum) + " >> " + pcreResult + "\n");
    208                        
    209                 }
    210                 else if (hasFlag("-e", flags)){
    211                         flags = removeFlag("-f", flags);
    212                         flags = removeFlag("-e", flags);
    213                         pflags = removeFlag("-P", flags);
    214                         writeToBash(icgrepScript,
    215                                 "./icgrep " + strGen.stringifyVec(flags, " ") + " -e \'" + re + "\' " +
    216                                 strDir + to_string(testNum) + " >> " + icgrepResult + "\n");
    217 
    218                         writeToBash(pcreScript,
    219                                 "pcregrep " + strGen.stringifyVec(pflags, " ") + " -e \'" + re + "\' " +
    220                                 strDir + to_string(testNum) + " >> " + pcreResult + "\n");
    221                        
    222                 }
    223                 else{
    224                         pflags = removeFlag("-P", flags);
    225                         writeToBash(icgrepScript,
    226                                 "./icgrep " + strGen.stringifyVec(flags, " ") + " \'" + re + "\' " +
    227                                 strDir + to_string(testNum) + " >> " + icgrepResult + "\n");
    228 
    229                         writeToBash(pcreScript,
    230                                 "pcregrep " + strGen.stringifyVec(pflags, " ") + " \'" + re + "\' " +
    231                                 strDir + to_string(testNum) + " >> " + pcreResult + "\n");
    232 
    233                 }
     237                }
     238
     239                writeToBash(ugrepScript,
     240                        "./ugrep " + strGen.stringifyVec(gflags, " ") + " \'" + re + "\' " +
     241                        strDir + to_string(testNum) + " >> " + ugrepResult + "\n");
     242
    234243        }
    235244}
     
    238247        system("../icgrep/combine/icgrep-test/grep/icgrep-bash.sh");
    239248        system("../icgrep/combine/icgrep-test/grep/grep-bash.sh");
    240         system("../icgrep/combine/icgrep-test/pcre/icgrep-bash.sh");
    241         system("../icgrep/combine/icgrep-test/pcre/pcre-bash.sh");
     249        system("../icgrep/combine/icgrep-test/ugrep/icgrep-bash.sh");
     250        system("../icgrep/combine/icgrep-test/ugrep/ugrep-bash.sh");
    242251}
    243252
     
    256265void IcgrepTest::getResult(){
    257266
    258         compareResults("..//icgrep/combine/icgrep-test/grep/icgrep-result", "..//icgrep/combine/icgrep-test/grep/grep-result", "GNU grep");
    259     compareResults("..//icgrep/combine/icgrep-test/pcre/icgrep-result", "..//icgrep/combine/icgrep-test/pcre/pcre-result", "PCRE grep");
     267        compareResults("../icgrep/combine/icgrep-test/grep/icgrep-result", "../icgrep/combine/icgrep-test/grep/grep-result", "GNU grep");
     268    compareResults("../icgrep/combine/icgrep-test/ugrep/icgrep-result", "../icgrep/combine/icgrep-test/ugrep/ugrep-result", "ICU grep");
    260269
    261270    cout << "End of test\n";
  • icGREP/icgrep-devel/icgrep/combine/icgrep-test/icgrep-test.h

    r5527 r5613  
    1616
    1717private:
     18        void backup();
    1819        void resetBash(std::string fileName);
    1920        void clearDir(std::string dir);
Note: See TracChangeset for help on using the changeset viewer.