'''
Created on 2021-07-31
@author: wf
'''
import unittest
from tests.datasourcetoolbox import DataSourceTest
from corpus.lookup import CorpusLookup
from corpus.event import EventStorage
from lodstorage.query import Query
import copy
import json
[docs]class TestStatistics(DataSourceTest):
'''
test statistics
'''
[docs] @classmethod
def setUpClass(cls):
super().setUpClass()
cls.lookup=CorpusLookup()
[docs] def setUp(self, debug:bool=False, profile:bool=True, **kwargs):
DataSourceTest.setUp(self, debug=debug, profile=profile, **kwargs)
self.lookup=TestStatistics.lookup
pass
[docs] def testIssue255(self):
'''
test issue 255 problem list
'''
show=False
lookup=self.lookup
sqlQuery="""select url,endDate-startdate+1 as duration from
event_orclone
where endDate is not Null and startDate is not Null
and duration<0 or duration>7
order by duration"""
query=Query(name="issue #255",query=sqlQuery,lang='sql')
qlod=lookup.getLod4Query(query.query)
prefix="https://confident.dbis.rwth-aachen.de/or/index.php?title="
for tablefmt in ["mediawiki","github","latex"]:
lod=copy.deepcopy(qlod)
query.prefixToLink(lod, prefix, tablefmt)
qdoc=query.documentQueryResult(lod,tablefmt=tablefmt)
if show:
print(qdoc)
[docs] def testMultiQuery(self):
'''
test MultiQuery
'''
lookup=self.lookup
multiQuery="""SELECT count(*) AS count,ordinal
FROM {event}
GROUP BY ordinal ORDER by 1"""
dictOfLod=lookup.getDictOfLod4MultiQuery(multiQuery)
debug=self.debug
#debug=True
if debug:
jsonStr=json.dumps(dictOfLod, sort_keys=True, indent=2,default=str)
print(jsonStr)
[docs] def testStatistics(self):
'''
test statistics
'''
lookup=self.lookup
qm=EventStorage.getQueryManager()
self.assertIsNotNone(qm)
self.assertTrue(len(qm.queriesByName)>1)
showMarkup=False
# showMarkup=True
failCount=0
for _name,query in qm.queriesByName.items():
try:
qlod=lookup.getLod4Query(query.query)
for tablefmt in ["mediawiki","github","latex"]:
qdoc=query.documentQueryResult(qlod,tablefmt=tablefmt)
if showMarkup:
print(qdoc)
except Exception as ex:
print(f"query: {query.query} failed:\n{ex}")
failCount+=1
self.assertTrue(failCount<=3)
pass
if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
unittest.main()