# -*- coding: UTF-8 -*- # Copyright 2005, 2006 EIAO Consoritum # This program is distributed under the terms of the GNU General # Public License. # # This file is part of the European Internet Accessibility Observatory # (EIAO) # # EIAO is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # EIAO 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 EIAO; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, # MA 02110-1301 USA __author__ = 'Morten Goodwin Olsen' __maintainer__ = 'Nils Ulltveit-Moe' __version__ = "$Id: test.py 2232 2006-06-22 12:26:38Z goodwin $" __testversion__ = "$Version$" """Test suite for the Dw Reader""" #Doctests result = [] import doctest import unittest import DWReader2 from DWError import * import random import sys sys.path.append('/etc/') import eiaoconfiguration dwconf = eiaoconfiguration.dwconf() dwr = DWReader2.DWReader2(dwconf.username,dwconf.password,dwconf.database,None,True,host=dwconf.host) #result.append(doctest.testmod(__import__('DWReader2'),globs={'dwr':dwr})) class TestSequenceFunctions(unittest.TestCase): def setUp(self): """Initiating the DW reader""" pass def testtestrun(self): self.assert_(dwr.currentTestRun()==dwr.testrunids) self.assert_('Unknown/Unknown' not in dwr.allmimetypes) def testgetsitestddevbygroup(self): """Test getting the standard deviation for a group of sites""" nace = dwr.allnace[0][0] nuts = [dwr.allnuts[0][0],dwr.allnuts[0][1],dwr.allnuts[0][2]] for nut in nuts: stddev = dwr.getSiteStddevByGroup(nace,nut,dwr.latesttestrun) self.assert_(type(stddev)==type(0.0) or stddev==None) def testindicatorsfortestbypage(self): """Test the indicators for a given test by a page""" #Note: This test does not work because of the missing implementations in the DW onedomain = dwr.alldomains[0] onelanguage = dwr.alllanguages[0] pages = dwr.getPageListLang(onedomain,onelanguage,dwr.latesttestrun) testid = dwr.alluwemids[0] for page in pages: pagetestratio,pagetestmin,pagetestmax = dwr.getIndicatorsForPage(page,dwr.latesttestrun,testid) self.assert_(type(pagetestratio) == type(0.0)) self.assert_(type (pagetestmin) == type(0.0)) self.assert_(type (pagetestmax) == type(0.0)) self.assert_(pagetestmax >= 0) self.assert_(pagetestmax <= 1) self.assert_(pagetestmin >= 0) self.assert_(pagetestmin <= 1) self.assert_(pagetestmax>=pagetestmin) mimetype = dwr.allmimetypes[0] inclusion = dwr.allinclusions[0] pagecontent = dwr.getPageContent(page,dwr.latesttestrun,mimetype,inclusion) self.assert_(type(pagecontent) == type(0.0)) def testindicatorsfortestbygroup(self): """Test the indicators for a given test by a group""" #Note: This test does not work because of the missing implementations in the DW onenuts = dwr.allnuts[0][0] onenace = dwr.allnace[0][0] testid = dwr.alluwemids[0] grouptestratio,grouptestmin,grouptestmax = dwr.getIndicatorsForTestByGroup(onenuts,onenace,dwr.latesttestrun,testid) self.assert_(type(grouptestratio) == type(0.0) or grouptestratio==None) self.assert_(type (grouptestmin) == type(0.0) or grouptestmin==None) self.assert_(type (grouptestmax) == type(0.0) or grouptestmax==None) self.assert_(grouptestmax >= 0 or grouptestmax==None) self.assert_(grouptestmax <= 1 or grouptestmax==None) self.assert_(grouptestmin >= 0 or grouptestmin==None) self.assert_(grouptestmin <= 1 or grouptestmin==NOne) self.assert_(grouptestmax>=grouptestmin or grouptestmax==None) def testindicatorsfortest(self): """Test the indicators for a given test""" #Note: This test does not work because of the missing implementations in the DW domain = dwr.alldomains[0] testid = dwr.alluwemids[0] sitetestratio,sitetestmin,sitetestmax = dwr.getIndicatorsForTest(domain,dwr.latesttestrun,testid) self.assert_(type(sitetestratio) == type(0.0)) self.assert_(type (sitetestmin) == type(0.0)) self.assert_(type (sitetestmax) == type(0.0)) self.assert_(sitetestmax >= 0) self.assert_(sitetestmax <= 1) self.assert_(sitetestmin >= 0) self.assert_(sitetestmin <= 1) self.assert_(sitetestmax>=sitetestmin) country,nuts1,nuts2,nuts3,nace = dwr.getNutsNace(domain) self.assert_(type(country)==type('')) self.assert_(type(nuts1)==type('') or nuts1 is None) self.assert_(type(nuts2)==type('') or nuts2 is None) self.assert_(type(nuts3)==type('') or nuts3 is None) self.assert_(type(nace)==type('') or nuts3 is None) def testlanguagestatisticsinfoforpage(self): """Test language statistics from the DW""" #Note: This test does not work becuase of missing implementation in the DW. onedomain = dwr.alldomains[0] onelanguage = dwr.alllanguages[0] pages = dwr.getPageListLang(onedomain,onelanguage,dwr.latesttestrun) for page in pages: language = dwr.alllanguages[0] pagemean, pagemin, pagemax = dwr.getLanguageStatisticsByPage(page,dwr.latesttestrun,language) self.assert_(type(pagemean) == type(0.0)) self.assert_(pagemean >=0 and pagemean <=1) self.assert_(type(pagemin) == type(0.0)) self.assert_(pagemin >=0 and pagemin <= 1) self.assert_(type(pagemax) == type(0.0)) self.assert_(pagemax >=0 and pagemax <= 1) self.assert_(pagemax >= pagemin) def testlanguagestatisticsinfoforgroup(self): """Test language statistics from the DW""" #Note: This test does not work becuase of missing implementation in the DW. groups = [dwr.allnace[0][0],dwr.allnuts[0][0],dwr.allnuts[0][1],dwr.allnuts[0][2]] nace = [dwr.allnace[0][0]] nuts = [dwr.allnuts[0][0],dwr.allnuts[0][1],dwr.allnuts[0][2]] for onenace in nace: for onenuts in nuts: language = dwr.alllanguages[0] pagenumber,sitemean, siteerrormargin, sitemin, sitemax = dwr.getLanguageStatisticsByGroup(onenace,onenuts,dwr.latesttestrun,language) self.assert_(type(pagenumber) == type(0) or pagenumber==None) self.assert_(type(sitemean) == type(0.0) or sitemean==None) self.assert_((sitemean >=0 and sitemean <=1) or sitemean==None) self.assert_(type(siteerrormargin) == type(0.0) or siteerrormargin==None) self.assert_((siteerrormargin >=0 and siteerrormargin <=1) or siteerrormargin==None ) self.assert_(type(sitemin) == type(0.0) or sitemin==None) self.assert_((sitemin >=0 and sitemin <= 1) or sitemin==None) self.assert_(type(sitemax) == type(0.0) or sitemax==None) self.assert_((sitemax >=0 and sitemax <= 1) or sitemax==None) self.assert_(sitemax >= sitemin or sitemax==None) def testlanguagestatisticsinfo(self): """Test language statistics from the DW""" #Note: This test does not work becuase of missing implementation in the DW. domain = dwr.alldomains[0] language = dwr.alllanguages[0] pagenumber,sitemean, siteerrormargin, sitemin, sitemax = dwr.getLanguageStatistics(domain,dwr.latesttestrun,language) self.assert_(type(pagenumber) == type(0)) self.assert_(type(sitemean) == type(0.0) or sitemean==None) self.assert_(sitemean >=0 and sitemean <=1 or sitemean==None) self.assert_(type(siteerrormargin) == type(0.0) or siteerrormargin==None) self.assert_(siteerrormargin >=0 and siteerrormargin <=1 or siteerrormargin==None) self.assert_(type(sitemin) == type(0.0) or sitemin==None) self.assert_(sitemin >=0 and sitemin <= 1 or sitemin==None) self.assert_(type(sitemax) == type(0.0) or sitemax==None) self.assert_(sitemax >=0 and sitemax <= 1 or sitemax==None) self.assert_(sitemax >= sitemin or sitemax==None) def testmaingroupinfo(self): """Test the main site information from the DW""" #Note: This test does not work becuase of missing implementation in the DW. onenuts = dwr.allnuts[0][0] onenace = dwr.allnace[0][0] pagenumber,groupmean, grouperrormargin, groupmin, groupmax = dwr.getMainGroupInformation(onenace,onenuts,dwr.latesttestrun) self.assert_(type(pagenumber) == type(0) or pagenumber==None) self.assert_(type(groupmean) == type(0.0) or groupmean==None) self.assert_(groupmean >=0 and groupmean <=1 or groupmean==None) self.assert_(type(grouperrormargin) == type(0.0) or grouperrormargin==None) self.assert_(grouperrormargin >=0 and grouperrormargin <=1 or grouperrormargin==None) self.assert_(type(groupmin) == type(0.0) or groupmin==None) self.assert_(groupmin >=0 and groupmin <= 1 or groupmin==None) self.assert_(type(groupmax) == type(0.0) or groupmax==None) self.assert_(groupmax >=0 and groupmax <= 1 or groupmax==None) self.assert_(groupmax >= groupmin or groupmin==None) def testparentregion(self): """Test for getting proper parentregions""" nuts = 'DE142' properresult=['All', 'EU', 'DE', 'DE1', 'DE14','DE142'] self.assert_(set(dwr.getParentRegions(nuts))==set(properresult)) nuts = 'EU' properresult=['All', 'EU'] self.assert_(set(dwr.getParentRegions(nuts))==set(properresult)) nuts = 'All' properresult=['All'] self.assert_(set(dwr.getParentRegions(nuts))==set(properresult)) nuts = 'BE' properresult=['All', 'EU', 'BE'] self.assert_(dwr.getParentRegions(nuts)==properresult) properresult=['All','FT','NO','NO01'] nuts = 'NO01' self.assert_(dwr.getParentRegions(nuts)==properresult) def testsubregions(self): """Test for getting proper subregions""" nuts = 'AT1' truesubregions = ['AT11','AT12','AT13'] self.assert_(set(dwr.getSubRegions(nuts))==set(truesubregions)) truesubregions = ['EU','CC','FT'] self.assert_(set(dwr.getSubRegions('All'))==set(truesubregions)) truesubregions = ['RO','BG','BE', 'FR', 'DK', 'DE', 'HU', 'FI', 'NL', 'PT', 'LV', 'LT', 'LU', 'PL', 'GR', 'EE', 'IT', 'CZ', 'CY', 'AT', 'IE', 'ES', 'SK', 'MT', 'SI', 'UK', 'SE'] self.assert_(set(dwr.getSubRegions('EU'))==set(truesubregions)) truesubregions = ['HR', 'TR'] self.assert_(set(dwr.getSubRegions('CC'))==set(truesubregions)) truesubregions = ['NO', 'IS', 'CH', 'LI'] self.assert_(set(dwr.getSubRegions('FT'))==set(truesubregions)) truesubregions = ['ATZ', 'AT2', 'AT3', 'AT1'] self.assert_(set(dwr.getSubRegions('AT'))==set(truesubregions)) truesubregions = ['NO01', 'NO03', 'NO02', 'NO05', 'NO04', 'NO07', 'NO06'] self.assert_(set(dwr.getSubRegions('NO'))==set(truesubregions)) def testmainsiteinfo(self): """Test the main site information from the DW""" #Note: This test does not work becuase of missing implementation in the DW. domain = dwr.alldomains[0] pagenumber,sitemean, siteerrormargin, sitemin, sitemax = dwr.getMainSiteInformation(domain,dwr.latesttestrun) self.assert_(type(pagenumber) == type(0)) self.assert_(type(sitemean) == type(0.0)) self.assert_(sitemean >=0 and sitemean <=1) self.assert_(type(siteerrormargin) == type(0.0)) self.assert_(siteerrormargin >=0 and siteerrormargin <=1) self.assert_(type(sitemin) == type(0.0)) self.assert_(sitemin >=0 and sitemin <= 1) self.assert_(type(sitemax) == type(0.0)) self.assert_(sitemax >=0 and sitemax <= 1) self.assert_(sitemax >= sitemin) def testsitelist(self): """Testing that the sitelist is retrievable from the DW""" onenuts = dwr.allnuts[0][0] onenace = dwr.allnace[0][0] sites = dwr.getSiteList(onenace,onenuts,dwr.latesttestrun) self.assert_(type(sites)==type([])) for site in sites: self.assert_(type(site)==type('')) def testlanguagesubreportbygroup(self): """Testing that language reports are retrievable from the DW by group""" #Note: This test does not work becuase of missing implementation in the DW. onelanguage = random.sample(dwr.alllanguages,1)[0] onenuts = random.sample(dwr.allnuts,1)[0][0] onenace = random.sample(dwr.allnace,1)[0][0] for onelanguage in dwr.alllanguages: for onenuts in dwr.allnuts: for onenace in dwr.allnace: return print onelanguage,onenuts,onenace pages = dwr.getPageListLangByGroup(onenuts[0],onenace[0],onelanguage,dwr.latesttestrun) self.assert_(type(pages)==type([])) for page in pages: self.assert_(type(page)==type('')) self.assert_(page.startswith('http://')) stddev = dwr.getGroupStdDevLang(onenuts[0],onenace[0],onelanguage,dwr.latesttestrun) self.assert_(type(stddev)==type(0.0) or stddev==None) self.assert_(type(stddev)==type(0.0) or stddev==None) def testpagelist(self): """Testing that the pagelist is retrievable from the DW""" for onedomain in [dwr.alldomains[0]]: pages = dwr.getPageList(onedomain,dwr.latesttestrun) self.assert_(type(pages)==type([])) for page in pages: self.assert_(type(page)==type(0)) self.assert_(type(dwr.getURLsFromScenarioID(page))==type([])) for url in dwr.getURLsFromScenarioID(page): self.assert_(type(url)==type('')) self.assert_(type(dwr.getPageScore(page,dwr.latesttestrun))==type(0.0)) def testlanguagesubreport(self): """Testing that language reports are retrievable from the DW""" #Note: This test does not work becuase of missing implementation in the DW. onedomain = dwr.alldomains[0] onelanguage = dwr.alllanguages[0] pages = dwr.getPageListLang(onedomain,onelanguage,dwr.latesttestrun) self.assert_(type(pages)==type([])) if pages: self.assert_(type(pages[0])==type('')) stddev = dwr.getSiteStdDevLang(onedomain,onelanguage,dwr.latesttestrun) self.assert_(type(stddev)==type(0.0) or stddev==None) def testgroupcontent(self): """Testing that the group content is working""" #Note: This test does not work because of the missing implementation in the DW onenuts = dwr.allnuts[0][0] onenace = dwr.allnace[0][0] mimetype = dwr.allmimetypes[0] inclusion = dwr.allinclusions[0] content = dwr.getGroupContent(onenuts,onenace,dwr.latesttestrun,mimetype,inclusion) self.assert_(type(content)==type(0.1) or content==None) def testsitecontent(self): """Testing that the site content is working""" #Note: This test does not work because of the missing implementation in the DW onedomain = dwr.alldomains[0] mimetype = dwr.allmimetypes[0] inclusion = dwr.allinclusions[0] content = dwr.getSiteContent(onedomain,dwr.latesttestrun,mimetype,inclusion) self.assert_(type(content)==type(0.1)) def testsitestddeviation(self): """Testing that the site deviation is working""" #Note: This test does not work becuase of missing implementation in the DW. onedomain = dwr.alldomains[0] std = dwr.getSiteStdDev(onedomain,dwr.latesttestrun) self.assert_(std) def testpresenceofchange(self): """Testing that adding changed values are not affected the actual results in any way""" onedomain = dwr.alldomains[0] #Results for one domain #singleresult = dwr.CWAM_domain(domain=onedomain,accessibilitygroup=0,detailed=False) #Results for one domain including the change difference in UWEM value. #changedresult = dwr.getChange(dwr.CWAM_domain,domain=onedomain,accessibilitygroup=0,detailed=False) #self.assert_(len(singleresult)==len(changedresult)) #allsingleresult = set([(a['URL'],a['Result']) for a in singleresult]) #allchangeresult = set([(a['URL'],a['Result']) for a in changedresult]) #self.assert_(allsingleresult==allchangeresult) def testpresenceofmonth(self): """Testing the presence of most recent and second most recent month """ self.assert_(dwr.currentmonth) self.assert_(dwr.currentyear) #Second latest month or year may not exist. The variable shold be retrieved as None if this does not exist. self.assert_(dwr.secondlatestmonth or 1) self.assert_(dwr.secondlatestyear or 1) #Month for a generic testrun year,month,monthname = dwr.currentMonth() self.assert_(len(str(year))==4) self.assert_(type(year)==type(1)) self.assert_(len(str(month)) in [1,2]) self.assert_(type(month)==type(1)) self.assert_(type(monthname)==type('')) def testdictionaries(self): """Testing the presence of dictionaries used for generating SQL """ self.assert_(dwr.alllanguages) self.assert_(dwr.alldomains) self.assert_(dwr.alluwemids) self.assert_(dwr.allcountries) def testnostaticdata(self): """Testing if missing statical data in the DW, which should be present,is raised as exceptions. """ #Note this test has been disable because of a very long duration functionlist = ['DWReader2.DWReader2.countries','DWReader2.DWReader2.domains','DWReader2.DWReader2.uwemIds','DWReader2.DWReader2.mimetypes','DWReader2.DWReader2.inclusions'] for f in functionlist: fail = False reload(DWReader2) #Simulating no data retrieved from the DW. exec(f + '= lambda(self) : []') try: dwr = DWReader2.DWReader2(dwconf.username,dwconf.password,dwconf.database,None,True,host=dwconf.host) except DWEmptyInformationError: fail = True if not fail: print f self.assert_(fail) def testcurrenttestrun(self): """Testing that the current and second latest testrun is available """ self.assert_(dwr.latesttestrun) #Second latest testrun may not exist. The variable should always exist, but assigned as None if the second latest testrun is not present. self.assert_(dwr.secondlatesttestrun or 1) if dwr.secondlatesttestrun: self.assert_(dwr.latesttestrun>dwr.secondlatesttestrun) def testnoconnection(self): """Testing that the reader throws an exception if the input parameters are wrong or if the given database does not exist. """ failed = False try: self.dwr = DWReader2.DWReader2('nouser','nopassword','nodb') except DWConnectionError: failed = True self.assert_(failed) def testtypesofoutput(self): """Testing that all output are of correct type """ #Testing domains self.assert_(type(dwr.domains())==type([])) for domain in dwr.domains(): self.assert_(type(domain)==type('')) onedomain = dwr.domains()[0] if __name__ == "__main__": result += unittest.main()