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

网格计算

开发平台:

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, os, sys, re, threading, time
  15. myDirectory = os.path.realpath(sys.argv[0])
  16. rootDirectory   = re.sub("/testing/.*", "", myDirectory)
  17. sys.path.append(rootDirectory)
  18. from testing.lib import BaseTestSuite
  19. excludes = []
  20. import tempfile, getpass, logging
  21. from xml.dom import minidom
  22. from hodlib.Hod.hadoop import hadoopConfig
  23. from hodlib.HodRing.hodRing import CommandDesc, HadoopCommand
  24. # All test-case classes should have the naming convention test_.*
  25. class test_HadoopCommand(unittest.TestCase):
  26.   def setUp(self):
  27.     self.rootDir = '/tmp/hod-%s' % getpass.getuser()
  28.     self.id = 0
  29.     self.desc = None
  30.     self.tempDir = os.path.join(self.rootDir,'test_HadoopCommand_tempDir')
  31.     self.pkgDir = os.path.join(self.rootDir,'test_HadoopCommand_pkgDir')
  32.     self.log = logging.getLogger() # TODO Use MockLogger
  33.     self.javaHome = '/usr/java/bin/'
  34.     self.mrSysDir = '/user/' + getpass.getuser() + '/mapredsystem'
  35.     
  36.     self.attrs = {}
  37.     self.finalAttrs = {
  38.                         'fs.default.name': 'nohost.apache.com:56366',
  39.                         'mapred.child.java.opts' : '-Xmx1024m',
  40.                         'mapred.compress.map.output' : 'false',
  41.                       }
  42.     self.attrs = {
  43.                     'mapred.userlog.limit' : '200',
  44.                     'mapred.userlog.retain.hours' : '10',
  45.                     'mapred.reduce.parallel.copies' : '20',
  46.                  }
  47.     self.desc = CommandDesc(
  48.                               {
  49.                                 'name' : 'dummyHadoop',
  50.                                 'program' : 'bin/hadoop',
  51.                                 'pkgdirs' : self.pkgDir,
  52.                                 'final-attrs' : self.finalAttrs,
  53.                                 'attrs' : self.attrs,
  54.                               }, self.log
  55.                             )
  56.     # TODO
  57.     #   4th arg to HadoopCommand 'tardir' is not used at all. Instead pkgdir is
  58.     #   specified through HadoopCommand.run(pkgdir). This could be changed so
  59.     #   that pkgdir is specified at the time of object creation.
  60.     # END OF TODO
  61.     self.hadoopCommand = HadoopCommand(self.id, self.desc, self.tempDir,
  62.                           self.pkgDir, self.log, self.javaHome,
  63.                           self.mrSysDir, restart=True)
  64.     self.hadoopSite = os.path.join( self.hadoopCommand.confdir,
  65.                                     'hadoop-site.xml')
  66.     pass
  67.   def test_createHadoopSiteXml(self):
  68.     self.hadoopCommand._createHadoopSiteXml()
  69.     xmldoc = minidom.parse(self.hadoopSite)
  70.     xmldoc = xmldoc.childNodes[0] # leave out xml spec
  71.     properties = xmldoc.childNodes # children of tag configuration
  72.     keyvals = {}
  73.     for prop in properties:
  74.       if not isinstance(prop,minidom.Comment):
  75.         #      ---------- tag -------------------- -value elem-- data -- 
  76.         name = prop.getElementsByTagName('name')[0].childNodes[0].data
  77.         value = prop.getElementsByTagName('value')[0].childNodes[0].data
  78.         keyvals[name] = value
  79.     # fs.default.name should start with hdfs://
  80.     assert(keyvals['fs.default.name'].startswith('hdfs://'))
  81.     # TODO other tests
  82.     pass
  83.     
  84.   def tearDown(self):
  85.     pass
  86. class HodRingTestSuite(BaseTestSuite):
  87.   def __init__(self):
  88.     # suite setup
  89.     BaseTestSuite.__init__(self, __name__, excludes)
  90.     pass
  91.   
  92.   def cleanUp(self):
  93.     # suite tearDown
  94.     pass
  95. def RunHodRingTests():
  96.   # modulename_suite
  97.   suite = HodRingTestSuite()
  98.   testResult = suite.runTests()
  99.   suite.cleanUp()
  100.   return testResult
  101. if __name__ == "__main__":
  102.   RunHodRingTests()