diff --git a/test/test_t1.py b/test/test_t1.py index 25990d1..5c33899 100644 --- a/test/test_t1.py +++ b/test/test_t1.py @@ -1,156 +1,20 @@ -#!/usr/bin/env python -import unittest, sys -from ConfigParser import ConfigParser -from ZSI.wstools.WSDLTools import WSDLReader -from test_wsdl import WSDLToolsTestCase, NETWORK, STANDALONE - -CONFIG = None - -class HomeLandSecurityTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'homelandsecurity' - self.loadFromConfig(CONFIG) - -class Rtf2htmlTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'rtf2html' - self.loadFromConfig(CONFIG) - -class AmazonTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'amazon' - self.loadFromConfig(CONFIG) - -class AirportTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'airport' - self.loadFromConfig(CONFIG) - -class OGSITestCase(WSDLToolsTestCase): - def test(self): - self.option = 'ogsi' - self.loadFromConfig(CONFIG) - -class BooksTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'books' - self.loadFromConfig(CONFIG) - -class DistanceTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'distance' - self.loadFromConfig(CONFIG) - -class FreeDBTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'freedb' - self.loadFromConfig(CONFIG) - -class GlobalWeatherTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'globalweather' - self.loadFromConfig(CONFIG) - -class IHaddockTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'IHaddock' - self.loadFromConfig(CONFIG) - -class Ip2geoTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'ip2geo' - self.loadFromConfig(CONFIG) - -class MagicTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'magic' - self.loadFromConfig(CONFIG) - -class QueryTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'query' - self.loadFromConfig(CONFIG) - -class RateInfoTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'RateInfo' - self.loadFromConfig(CONFIG) - -class SHA1EncryptTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'SHA1Encrypt' - self.loadFromConfig(CONFIG) - -class SiteInspectTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'siteInspect' - self.loadFromConfig(CONFIG) - -class SolveSystemsTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'SolveSystem' - self.loadFromConfig(CONFIG) - -class TemperatureServiceTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'TemperatureService' - self.loadFromConfig(CONFIG) - -class USweatherTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'usweather' - self.loadFromConfig(CONFIG) - -class Zip2geoTestCase(WSDLToolsTestCase): - def test(self): - self.option = 'zip2geo' - self.loadFromConfig(CONFIG) - -CASES = [AirportTestCase, - AmazonTestCase, - BooksTestCase, - DistanceTestCase, - FreeDBTestCase, - GlobalWeatherTestCase, - HomeLandSecurityTestCase, - IHaddockTestCase, - Ip2geoTestCase, - MagicTestCase, - OGSITestCase, - QueryTestCase, - RateInfoTestCase, - Rtf2htmlTestCase, - SHA1EncryptTestCase, - SiteInspectTestCase, - SolveSystemsTestCase, - TemperatureServiceTestCase, - USweatherTestCase, - WSDLToolsTestCase, - Zip2geoTestCase] - -def makeNetworkSuite(): - return getSuite(NETWORK) - -def makeStandAloneSuite(): - return getSuite(STANDALONE) - -def getSuite(section): - tests = [] +############################################################################ +# Joshua R. Boverhof, David W. Robertson, LBNL +# See LBNLCopyright for copyright notice! +########################################################################### +import unittest +import test_wsdl +import utils + +def makeTestSuite(): suite = unittest.TestSuite() - loader = unittest.TestLoader() - WSDLToolsTestCase.section = section - for case in CASES: - #case.section = section - test = loader.loadTestsFromTestCase(case) - tests.append(test) - suite.addTests(tests) + suite.addTest(test_wsdl.makeTestSuite("services_by_file")) return suite def main(): - global CONFIG - from test_wstools import CONFIG_FILE - CONFIG = ConfigParser() - CONFIG.read(CONFIG_FILE) - unittest.TestProgram(defaultTest='makeStandAloneSuite') + loader = utils.MatchTestLoader(True, None, "makeTestSuite") + unittest.main(defaultTest="makeTestSuite", testLoader=loader) if __name__ == "__main__" : main() + + diff --git a/test/test_wsdl.py b/test/test_wsdl.py index 0f8a9c9..6af855b 100644 --- a/test/test_wsdl.py +++ b/test/test_wsdl.py @@ -1,49 +1,37 @@ #!/usr/bin/env python -import unittest, sys -from ConfigParser import NoOptionError -from ZSI.wstools.WSDLTools import WSDLReader -from ZSI.wstools.Utility import DOM -CONFIG = None -NETWORK = 'services_by_http' -STANDALONE = 'services_by_file' +############################################################################ +# Joshua R. Boverhof, David W. Robertson, LBNL +# See LBNLCopyright for copyright notice! +########################################################################### + +import sys, unittest +from ZSI.wstools.Utility import DOM +import utils class WSDLToolsTestCase(unittest.TestCase): + def __init__(self, methodName='runTest'): unittest.TestCase.__init__(self, methodName) def setUp(self): - pass - - def tearDown(self): - if self.wsdl: - self.wsdlServices() - self.wsdlMessages() - self.wsdlPortTypes() - self.wsdlBindings() - self.wsdlImports() - self.wsdlExtensions() - self.wsdlTypes() - - def loadFromConfig(self, config=CONFIG): - self.wsdl = None - try: - path = config.get(self.section, self.option) - except NoOptionError, ex: - pass - else: - if path[:7] == 'http://': - self.loadFromURL(url=path) - else: - self.loadFromFile(file=path) - - def loadFromFile(self, file): - self.wsdl = WSDLReader().loadFromFile(file) + global configLoader + + # not thread safe + self.path = configLoader.nameGenerator.next() + print self.path + sys.stdout.flush() - def loadFromURL(self, url): - self.wsdl = WSDLReader().loadFromURL(url) + def __str__(self): + teststr = unittest.TestCase.__str__(self) + if hasattr(self, "path"): + return "%s: %s" % (teststr, self.path ) + else: + return "%s" % (teststr) def checkWSDLCollection(self, tag_name, component, key='name'): + if self.wsdl is None: + return definition = self.wsdl.document.documentElement version = DOM.WSDLUriToVersion(definition.namespaceURI) nspname = DOM.GetWSDLUri(version) @@ -57,39 +45,63 @@ class WSDLToolsTestCase(unittest.TestCase): name = DOM.getAttr(cnode, key) component[name] - def wsdlServices(self): - self.checkWSDLCollection('service', self.wsdl.services) + def wsdlTestAll(self): + try: + self.wsdl = utils.setUpWsdl(self.path) + except: + self.path = self.path + ": load failed, unable to start" + raise + + try: + self.checkWSDLCollection('service', self.wsdl.services) + except: + self.path = self.path + ": wsdl.services" + raise - def wsdlMessages(self): - self.checkWSDLCollection('message', self.wsdl.messages) + try: + self.checkWSDLCollection('message', self.wsdl.messages) + except: + self.path = self.path + ": wsdl.messages" + raise - def wsdlPortTypes(self): - self.checkWSDLCollection('portType', self.wsdl.portTypes) + try: + self.checkWSDLCollection('portType', self.wsdl.portTypes) + except: + self.path = self.path + ": wsdl.portTypes" + raise - def wsdlBindings(self): - self.checkWSDLCollection('binding', self.wsdl.bindings) + try: + self.checkWSDLCollection('binding', self.wsdl.bindings) + except: + self.path = self.path + ": wsdl.bindings" + raise - def wsdlImports(self): - self.checkWSDLCollection('import', self.wsdl.imports, key='namespace') + try: + self.checkWSDLCollection('import', self.wsdl.imports, key='namespace') + except: + self.path = self.path + ": wsdl.imports" + raise - def wsdlTypes(self): - for key in self.wsdl.types.keys(): - schema = self.wsdl.types[key] - self.failUnlessEqual(key, schema.getTargetNamespace()) + try: + for key in self.wsdl.types.keys(): + schema = self.wsdl.types[key] + self.failUnlessEqual(key, schema.getTargetNamespace()) + + definition = self.wsdl.document.documentElement + version = DOM.WSDLUriToVersion(definition.namespaceURI) + nspname = DOM.GetWSDLUri(version) + for node in DOM.getElements(definition, 'types', nspname): + for snode in DOM.getElements(node, 'schema'): + tns = DOM.findTargetNS(snode) + schema = self.wsdl.types[tns] + self.schemaAttributesDeclarations(schema, snode) + self.schemaAttributeGroupDeclarations(schema, snode) + self.schemaElementDeclarations(schema, snode) + self.schemaTypeDefinitions(schema, snode) + except: + self.path = self.path + ": wsdl.types" + raise - definition = self.wsdl.document.documentElement - version = DOM.WSDLUriToVersion(definition.namespaceURI) - nspname = DOM.GetWSDLUri(version) - for node in DOM.getElements(definition, 'types', nspname): - for snode in DOM.getElements(node, 'schema'): - tns = DOM.findTargetNS(snode) - schema = self.wsdl.types[tns] - self.schemaAttributesDeclarations(schema, snode) - self.schemaAttributeGroupDeclarations(schema, snode) - self.schemaElementDeclarations(schema, snode) - self.schemaTypeDefinitions(schema, snode) - - def wsdlExtensions(self): if self.wsdl.extensions: print 'No check for WSDLTools(%s) Extensions:' %(self.wsdl.name) for ext in self.wsdl.extensions: print '\t', ext @@ -108,30 +120,25 @@ class WSDLToolsTestCase(unittest.TestCase): self.checkXSDCollection('simpleType', schema.types, node) -def makeNetworkSuite(): - return getSuite(section='services_by_http') - -def makeStandAloneSuite(): - return getSuite('services_by_file') +def makeTestSuite(section=None): + global configLoader -def getSuite(section): - names = CONFIG.options(section) - tests = [] suite = unittest.TestSuite() - loader = unittest.TestLoader() - - WSDLToolsTestCase.section = section - for case in [WSDLToolsTestCase,]: - case.section = section - test = loader.loadTestsFromTestCase(case) - tests.append(test) - #tests.sort() - suite.addTests(tests) + configLoader = utils.MatchTestLoader(False, "config.py", "WSDLToolsTestCase") + if not section: + found = configLoader.setSection(sys.argv) + if not found: + configLoader.setSection("services_by_http") + else: + configLoader.setSection(section) + configLoader.testMethodPrefix = "wsdlTest" + suite.addTest(configLoader.loadTestsFromConfig(WSDLToolsTestCase)) return suite -#makeTestSuite = makeStandAloneSuite -#def main(): -# unittest.main(defaultTest="makeTestSuite") +def main(): + loader = utils.MatchTestLoader(False, None, "makeTestSuite") + unittest.main(defaultTest="makeTestSuite", testLoader=loader) + if __name__ == "__main__" : main() diff --git a/test/test_wstools.py b/test/test_wstools.py index fde9a63..76c4a53 100644 --- a/test/test_wstools.py +++ b/test/test_wstools.py @@ -1,23 +1,39 @@ #!/usr/bin/env python + +############################################################################ +# Joshua R. Boverhof, David W. Robertson, LBNL +# See LBNLCopyright for copyright notice! +########################################################################### + import unittest, tarfile, os, ConfigParser -import test_t1 +import test_wsdl +import utils + SECTION='files' CONFIG_FILE = 'config.py' -def main(): +def extractFiles(section, option): config = ConfigParser.ConfigParser() config.read(CONFIG_FILE) - archives = config.get(SECTION, 'archives') + archives = config.get(section, option) archives = eval(archives) - test_t1.CONFIG = config for file in archives: tar = tarfile.open(file) if not os.access(tar.membernames[0], os.R_OK): for i in tar.getnames(): tar.extract(i) - unittest.TestProgram(defaultTest='test_t1.makeStandAloneSuite') +def makeTestSuite(): + suite = unittest.TestSuite() + suite.addTest(test_wsdl.makeTestSuite("services_by_file")) + return suite +def main(): + extractFiles(SECTION, 'archives') + loader = utils.MatchTestLoader(True, None, "makeTestSuite") + unittest.main(defaultTest="makeTestSuite", testLoader=loader) if __name__ == "__main__" : main() + + diff --git a/test/test_wstools_net.py b/test/test_wstools_net.py index 5b1ec6b..85145a2 100644 --- a/test/test_wstools_net.py +++ b/test/test_wstools_net.py @@ -1,14 +1,22 @@ #!/usr/bin/env python -import unittest, tarfile, os, ConfigParser -import test_t1 -CONFIG_FILE = 'config.py' +############################################################################ +# Joshua R. Boverhof, David W. Robertson, LBNL +# See LBNLCopyright for copyright notice! +########################################################################### +import unittest +import test_wsdl +import utils -def main(): - config = ConfigParser.ConfigParser() - config.read(CONFIG_FILE) - test_t1.CONFIG = config - unittest.TestProgram(defaultTest='test_t1.makeNetworkSuite') +def makeTestSuite(): + suite = unittest.TestSuite() + suite.addTest(test_wsdl.makeTestSuite(("no_schemas", "simpleTypes", "services_by_http"))) + return suite +def main(): + loader = utils.MatchTestLoader(True, None, "makeTestSuite") + unittest.main(defaultTest="makeTestSuite", testLoader=loader) if __name__ == "__main__" : main() + +