lib.py
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:3k
源码类别:

网格计算

开发平台:

Java

  1. #Licensed to the Apache Software Foundation (ASF) under one
  2. #or more contributor license agreements.  See the NOTICE file
  3. #distributed with this work for additional information
  4. #regarding copyright ownership.  The ASF licenses this file
  5. #to you under the Apache License, Version 2.0 (the
  6. #"License"); you may not use this file except in compliance
  7. #with the License.  You may obtain a copy of the License at
  8. #     http://www.apache.org/licenses/LICENSE-2.0
  9. #Unless required by applicable law or agreed to in writing, software
  10. #distributed under the License is distributed on an "AS IS" BASIS,
  11. #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. #See the License for the specific language governing permissions and
  13. #limitations under the License.
  14. import unittest, re, sys
  15. class BaseTestSuite():
  16.   def __init__(self, name, excludes):
  17.     self.name = name
  18.     self.excludes = excludes
  19.     pass
  20.   
  21.   def runTests(self):
  22.     # Create a runner
  23.     self.runner = unittest.TextTestRunner()
  24.     
  25.     # Get all the test-case classes
  26.     # From module import *
  27.     mod = __import__(self.name, fromlist=['*'])
  28.     modItemsList = dir(mod)
  29.     allsuites = []
  30.     # Create all the test suites
  31.     for modItem in modItemsList:
  32.       if re.search(r"^test_", modItem):
  33.         # Yes this is a test class
  34.         if modItem not in self.excludes:
  35.           test_class = getattr(mod, modItem)
  36.           allsuites.append(unittest.makeSuite(test_class))
  37.     # Create a master suite to be run.
  38.     alltests = unittest.TestSuite(tuple(allsuites))
  39.     # Run the master test suite.
  40.     runner = self.runner.run(alltests)
  41.     if(runner.wasSuccessful()): return 0
  42.     printLine( "%s test(s) failed." % runner.failures.__len__())
  43.     printLine( "%s test(s) threw errors." % runner.errors.__len__())
  44.     return runner.failures.__len__() + runner.errors.__len__()
  45.   def cleanUp(self):
  46.     # suite tearDown
  47.     pass
  48. def printLine(str):
  49.   print >>sys.stderr, str
  50. def printSeparator():
  51.   str = ""
  52.   for i in range(0,79):
  53.     str = str + "*"
  54.   print >>sys.stderr, "n", str, "n"
  55. # This class captures all log messages logged by hodRunner and other classes.
  56. # It is then used to verify that certain log messages have come. This is one
  57. # way to validate that messages printed to the logger are correctly written.
  58. class MockLogger:
  59.   def __init__(self):
  60.     self.__logLines = {}
  61.   def info(self, message):
  62.     self.__logLines[message] = 'info'
  63.   def critical(self, message):
  64.     self.__logLines[message] = 'critical'
  65.   def warn(self, message):
  66.     self.__logLines[message] = 'warn'
  67.   def debug(self, message):
  68.     # don't track debug lines.
  69.     pass
  70.   # verify a certain message has been logged at the defined level of severity.
  71.   def hasMessage(self, message, level):
  72.     if not self.__logLines.has_key(message):
  73.       return False
  74.     return self.__logLines[message] == level
  75. # Stub class to test cluster manipulation operations.
  76. class MockHadoopCluster:
  77.   
  78.   def __init__(self):
  79.     # store the operations received.
  80.     self.__operations = {}
  81.   
  82.   def delete_job(self, jobid):
  83.     self.__operations['delete_job'] = [jobid]
  84.  
  85.   def is_cluster_deallocated(self, dummy):
  86.     return False
  87.  
  88.   def wasOperationPerformed(self, operation, args):
  89.     if self.__operations.has_key(operation):
  90.       actualArgs = self.__operations[operation]
  91.       for arg in actualArgs:
  92.         if arg not in args:
  93.           break
  94.       else:
  95.         return True
  96.     return False