Beispiel #1
0
 def test_xugrep(self):
     file_paths = [ self.tei_data_path1, self.tei_data_path2 ]
     element_equality_fields = [ CorpusElement.LABEL_PATH,\
                                     CorpusElement.LANGUAGE_NAME_PATH,\
                                     CorpusElement.TEXT ]
     xugrep = XUGrep.create(self.tei_xupath1, file_paths, element_equality_fields)
     self.assertEqual( len( xugrep.corpus ), 4 )
     
     xugrep = XUGrep.create(self.tei_xupath2, file_paths, element_equality_fields)
     self.assertEqual( len( xugrep.corpus ),  2 )
     attribute_names = [ CorpusElement.LABEL_PATH,\
                             CorpusElement.LANGUAGE_NAME_PATH,\
                             CorpusElement.TEXT ]
     results = xugrep.corpus.output( attribute_names, tabulate=True )
     print "\n"
     print "\n".join(results)
Beispiel #2
0
License as published by the Free Software Foundation, either version
3 of the License, or (at your option) any later version.

XUTools is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see http://www.gnu.org/licenses/
"""

from xutools.tools import XUGrep
import optparse

import sys

p = optparse.OptionParser()
p.add_option("-o", "--R2", dest="r2")
(options, args) = p.parse_args()

if (len(args) < 2):
    print "Usage xugrep [--r2=LE] <xupath> <files>+"
    sys.exit(-1)

xpath = args[0]
file_paths = args[1:]

reports = XUGrep.xugrep_main(xpath, file_paths)
XUGrep.output_reports(reports, options.r2)
Beispiel #3
0
    def test_xugrep(self):
        # a result_forest is a list of text pieces
        report = {}
        report['result_forest'] = [ self.tei_data1 ]
        report['tree_ids'] = ["AIST"]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []
        xugrep = XUGrep()

        report = xugrep.xugrep( self.tei_xupath1, report )
        self.assertEqual( len( report['result_forest'] ), 2 )
        self.assertEqual( report['tree_ids'][0], "AIST.1" )
        self.assertEqual( report['tree_ids'][1], "AIST.9" )
        self.assertEqual( len( report['tree_ids'] ), 2 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "tei:section" )
        self.assertEqual( len( report['tree_types'] ), 2 )

        report = {}
        report['result_forest'] = [ self.tei_data2 ]
        report['tree_ids'] = [ "AIST" ]
        report['tree_types'] = [ "file" ]

        report = xugrep.xugrep( self.tei_xupath2, report )
        self.assertEqual( len( report['result_forest'] ), 1 )
        self.assertEqual( report['tree_ids'][0], "AIST.1.1.1" )
        self.assertEqual( len( report['tree_ids'] ), 1 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "tei:section")
        self.assertEqual( report['tree_types'][2], "tei:subsection")
        self.assertEqual( report['tree_types'][3], "tei:subsubsection")
        self.assertEqual( len( report['tree_types'] ), 4 )
        self.assertEqual( len(report['re_matches'][0]), 1 )
        self.assertEqual( len(report['re_matches']), 1 )

        ## NVD
        report = {}
        report['result_forest'] = [ self.nvd_data1 ]
        report['tree_ids'] = [ "CVE2012" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.nvd_xupath1, report )
        self.assertEqual( len( report['result_forest'] ), 2 )
        self.assertEqual( report['tree_ids'][0], "CVE2012.CVE-2012-0001" )
        self.assertEqual( report['tree_ids'][1], "CVE2012.CVE-2012-0002" )
        self.assertEqual( len( report['tree_ids'] ), 2 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "nvd:entry" )
        self.assertEqual( len( report['tree_types'] ), 2 )
        self.assertEqual( len( report['re_matches'][0] ), 1 )
        self.assertEqual( len( report['re_matches'][1] ), 1 )
        self.assertEqual( len( report['re_matches'] ), 2 )
        
        report = {}
        report['result_forest'] = [ self.nvd_data1 ]
        report['tree_ids'] = [ "CVE2012" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.nvd_xupath2, report )
        self.assertEqual( len( report['result_forest'] ), 2 )
        self.assertEqual( report['tree_ids'][0], "CVE2012.CVE-2012-0001.1" )
        self.assertEqual( report['tree_ids'][1], "CVE2012.CVE-2012-0002.1" )
        self.assertEqual( len( report['tree_ids'] ), 2 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "nvd:entry" )
        self.assertEqual( report['tree_types'][2], "nvd:score" )
        self.assertEqual( len( report['tree_types'] ), 3 )
        # undefined:  self.assertEqual( len( report['re_matches'] ), 

        ## Cisco IOS
        report = {}
        report['result_forest'] = [ self.ios_data1 ]
        report['tree_ids'] = [ "Router" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.ios_xupath1, report )
        self.assertEqual( len( report['result_forest'] ), 2 )
        self.assertEqual( report['tree_ids'][0], "Router.Loopback0" )
        self.assertEqual( report['tree_ids'][1], "Router.GigabitEthernet4/2" )
        self.assertEqual( len( report['tree_ids'] ), 2 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "ios:interface" )
        self.assertEqual( len( report['tree_types'] ), 2 )
        self.assertEqual( len( report['re_matches'] ), 0 )

        report = {}
        report['result_forest'] = [ self.ios_data1 ]
        report['tree_ids'] = [ "Router" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.ios_xupath2, report )
        self.assertEqual( len( report['result_forest'] ), 1 )
        self.assertEqual( report['tree_ids'][0], "Router.GigabitEthernet4/2" )
        self.assertEqual( len( report['tree_ids'] ), 1 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "ios:interface" )
        self.assertEqual( len( report['tree_types'] ), 2 )
        self.assertEqual( len(report['re_matches'][0]), 2 )
        self.assertEqual( len(report['re_matches']), 1 )

        report = {}
        report['result_forest'] = [ self.ios_data1 ]
        report['tree_ids'] = [ "Router" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.ios_xupath3, report )
        self.assertEqual( len( report['result_forest'] ), 9 )
        self.assertEqual( report['tree_ids'][0], "Router.GigabitEthernet4/2.1" )
        self.assertEqual( report['tree_ids'][1], "Router.GigabitEthernet4/2.2" )
        self.assertEqual( len( report['tree_ids'] ), 9 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "ios:interface" )
        self.assertEqual( report['tree_types'][2], "ios:line" )
        self.assertEqual( len( report['tree_types'] ), 3 )

        report = {}
        report['result_forest'] = [ self.ios_data1 ]
        report['tree_ids'] = [ "Router" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.ios_xupath4, report )
        self.assertEqual( len( report['result_forest'] ), 2 )
        self.assertEqual( report['tree_ids'][0], "Router.GigabitEthernet4/2.4" )
        self.assertEqual( report['tree_ids'][1], "Router.GigabitEthernet4/2.5" )
        self.assertEqual( len( report['tree_ids'] ), 2 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "ios:interface" )
        self.assertEqual( report['tree_types'][2], "ios:line" )
        self.assertEqual( len( report['tree_types'] ), 3 )
        self.assertEqual( len( report['re_matches'][0] ), 1 )
        self.assertEqual( len( report['re_matches'][1] ), 1 )
        self.assertEqual( len( report['re_matches'] ), 2 )

        report = {}
        report['result_forest'] = [ self.ios_data1 ]
        report['tree_ids'] = [ "Router" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.ios_xupath5, report )
        self.assertEqual( len( report['result_forest'] ), 16 )
        self.assertEqual( report['tree_ids'][0], "Router.1" )
        self.assertEqual( report['tree_ids'][1], "Router.2" )
        self.assertEqual( len( report['tree_ids'] ), 16 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "ios:line" )
        self.assertEqual( len( report['tree_types'] ), 2 )
        
        ## C Functions
        report = {}
        report['result_forest'] = [ self.c_data1 ]
        report['tree_ids'] = [ "Example" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.c_xupath1, report )
        self.assertEqual( len( report['result_forest'] ), 5 )
        self.assertEqual( report['tree_ids'][0], "Example.putstr" )
        self.assertEqual( report['tree_ids'][1], "Example.fac" )
        self.assertEqual( report['tree_ids'][2], "Example.putn" )
        self.assertEqual( len( report['tree_ids'] ), 5 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "cspec:function" )
        self.assertEqual( len( report['tree_types'] ), 2 )

        report = {}
        report['result_forest'] = [ self.c_data1 ]
        report['tree_ids'] = [ "Example" ]
        report['tree_types'] = [ "file" ]
        report['re_matches'] = []

        report = xugrep.xugrep( self.c_xupath2, report )
        self.assertEqual( len( report['result_forest'] ), 2 )
        self.assertEqual( report['tree_ids'][0], "Example.putstr" )
        self.assertEqual( report['tree_ids'][1], "Example.putn" )
        self.assertEqual( len( report['tree_ids'] ), 2 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( report['tree_types'][1], "cspec:function" )
        self.assertEqual( len( report['tree_types'] ), 2 )
Beispiel #4
0
    def test_process_cf_match(self):
        # TEI
        cf_match = ["tei:section"]
        report = {}
        report['result_forest'] = [ self.tei_data1 ]
        report['tree_ids'] = []
        report['tree_types'] = []

        xugrep = XUGrep()
        report = xugrep.process_cf_match( cf_match, "", report )
        self.assertEqual( len( report['result_forest'] ), 2 )
        self.assertEqual( report['tree_ids'][0], "1" )
        self.assertEqual( report['tree_ids'][1], "9" )
        self.assertEqual( len( report['tree_ids'] ), 2 )
        self.assertEqual( report['tree_types'][0], "tei:section" )
        self.assertEqual( len( report['tree_types'] ), 1 )

        # NVD
        cf_match = ["nvd:entry"]
        report = {}
        report['result_forest'] = [ self.nvd_data1 ]
        report['tree_ids'] = []
        report['tree_types'] = []

        xugrep = XUGrep()
        report = xugrep.process_cf_match( cf_match, "", report )
        self.assertEqual( len( report['result_forest'] ), 2 )
        self.assertEqual( report['tree_ids'][0], "CVE-2012-0001" )
        self.assertEqual( report['tree_ids'][1], "CVE-2012-0002" )
        self.assertEqual( len( report['tree_ids'] ), 2 )
        self.assertEqual( report['tree_types'][0], "nvd:entry" )
        self.assertEqual( len( report['tree_types'] ), 1 )

        # IOS
        cf_match = ["ios:interface"]
        report = {}
        report['result_forest'] = [ self.ios_data1 ]
        report['tree_ids'] = []
        report['tree_types'] = []

        xugrep = XUGrep()
        report = xugrep.process_cf_match( cf_match, "", report )
        self.assertEqual( len( report['result_forest'] ), 2 )
        self.assertEqual( report['tree_ids'][0], "Loopback0" )
        self.assertEqual( report['tree_ids'][1], "GigabitEthernet4/2" )
        self.assertEqual( len( report['tree_ids'] ), 2 )
        self.assertEqual( report['tree_types'][0], "ios:interface" )
        self.assertEqual( len( report['tree_types'] ), 1 )

        # C Code
        cf_match = ["cspec:function"]
        report = {}
        report['result_forest'] = [ self.c_data1 ]
        report['tree_ids'] = []
        report['tree_types'] = []

        xugrep = XUGrep()
        report = xugrep.process_cf_match( cf_match, "", report )
        self.assertEqual( len( report['result_forest'] ), 5 )
        self.assertEqual( report['tree_ids'][0], "putstr" )
        self.assertEqual( report['tree_ids'][1], "fac" )
        self.assertEqual( report['tree_ids'][2], "putn" )
        self.assertEqual( report['tree_ids'][3], "facpr" )
        self.assertEqual( report['tree_ids'][4], "main" )
        self.assertEqual( len( report['tree_ids'] ), 5 )
        self.assertEqual( report['tree_types'][0], "cspec:function" )
        self.assertEqual( len( report['tree_types'] ), 1 )
Beispiel #5
0
    def test_process_re_match(self):

        # TEI
        report = {}
        report['result_forest'] = [ self.tei_data1 ]
        report['tree_ids'] = [ "AIST" ]
        report['tree_types'] = [ "file" ]

        re_match = ["Globus"]
        xugrep = XUGrep()
        report = xugrep.process_re_match( re_match, "", report )
        self.assertEqual( len( report['result_forest'] ), 1 ) 
        self.assertEqual( report['tree_ids'][0], "AIST" )
        self.assertEqual( len( report['tree_ids'] ), 1 )
        self.assertEqual( len(report['re_matches'][0]), 2 )
        self.assertEqual( len(report['re_matches']), 1 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( len( report['tree_types'] ), 1 )

        # NVD 
        report = {}
        report['result_forest'] = [ self.nvd_data1 ]
        report['tree_ids'] = [ "CVE2012" ]
        report['tree_types'] = [ "file" ]

        re_match = ["Windows 7"]
        xugrep = XUGrep()
        report = xugrep.process_re_match( re_match, "", report )
        self.assertEqual( len( report['result_forest'] ), 1 )
        self.assertEqual( report['tree_ids'][0], "CVE2012" )
        self.assertEqual( len( report['tree_ids'] ), 1 )
        self.assertEqual( len( report['re_matches'][0]), 2 )
        self.assertEqual( len( report['re_matches'] ), 1 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( len( report['tree_types'] ), 1 )

        # IOS
        report = {}
        report['result_forest'] = [ self.ios_data1 ]
        report['tree_ids'] = [ "Router" ]
        report['tree_types'] = [ "file" ]

        re_match = ["access-group"]
        xugrep = XUGrep()
        report = xugrep.process_re_match( re_match, "", report )
        self.assertEqual( len( report['result_forest'] ), 1 )
        self.assertEqual( report['tree_ids'][0], "Router" )
        self.assertEqual( len( report['tree_ids'] ), 1 )
        self.assertEqual( len( report['re_matches'][0] ), 2 )
        self.assertEqual( len( report['re_matches'] ), 1 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( len( report['tree_types'] ), 1 )

        # C
        report = {}
        report['result_forest'] = [ self.c_data1 ]
        report['tree_ids'] = ["Example"]
        report['tree_types'] = [ "file" ]

        re_match = ["putchar"]
        xugrep = XUGrep()
        report = xugrep.process_re_match( re_match, "", report )
        self.assertEqual( len( report['result_forest'] ), 1 )
        self.assertEqual( report['tree_ids'][0], "Example" )
        self.assertEqual( len( report['tree_ids'] ), 1 )
        self.assertEqual( len( report['re_matches'][0] ), 2 )
        self.assertEqual( len( report['re_matches'] ), 1 )
        self.assertEqual( report['tree_types'][0], "file" )
        self.assertEqual( len( report['tree_types'] ), 1 )