📄 testhadoop.py
字号:
#Licensed to the Apache Software Foundation (ASF) under one#or more contributor license agreements. See the NOTICE file#distributed with this work for additional information#regarding copyright ownership. The ASF licenses this file#to you under the Apache License, Version 2.0 (the#"License"); you may not use this file except in compliance#with the License. You may obtain a copy of the License at# http://www.apache.org/licenses/LICENSE-2.0#Unless required by applicable law or agreed to in writing, software#distributed under the License is distributed on an "AS IS" BASIS,#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.#See the License for the specific language governing permissions and#limitations under the License.import unittest, os, sys, re, threading, timemyDirectory = os.path.realpath(sys.argv[0])rootDirectory = re.sub("/testing/.*", "", myDirectory)sys.path.append(rootDirectory)from testing.lib import BaseTestSuiteexcludes = []import tempfile, getpassfrom xml.dom import minidomfrom hodlib.Hod.hadoop import hadoopConfig# All test-case classes should have the naming convention test_.*class test_hadoopConfig(unittest.TestCase): def setUp(self): self.__hadoopConfig = hadoopConfig() self.rootDir = '/tmp/hod-%s' % getpass.getuser() if not os.path.exists(self.rootDir): os.mkdir(self.rootDir) self.testingDir = tempfile.mkdtemp( dir=self.rootDir, prefix='HadoopTestSuite.test_hadoopConfig') self.confDir = tempfile.mkdtemp(dir=self.rootDir, prefix='HadoopTestSuite.test_hadoopConfig') self.tempDir = '/tmp/hod-%s/something' % getpass.getuser() self.hadoopSite = os.path.join(self.confDir,'hadoop-site.xml') self.numNodes = 4 self.hdfsAddr = 'nosuchhost1.apache.org:50505' self.mapredAddr = 'nosuchhost2.apache.org:50506' self.finalServerParams = { 'mapred.child.java.opts' : '-Xmx1024m', 'mapred.compress.map.output' : 'false', } self.serverParams = { 'mapred.userlog.limit' : '200', 'mapred.userlog.retain.hours' : '10', 'mapred.reduce.parallel.copies' : '20', } self.clientParams = { 'mapred.tasktracker.tasks.maximum' : '2', 'io.sort.factor' : '100', 'io.sort.mb' : '200', 'mapred.userlog.limit.kb' : '1024', 'io.file.buffer.size' : '262144', } self.clusterFactor = 1.9 self.mySysDir = '/user/' + getpass.getuser() + '/mapredsystem' pass def testSuccess(self): self.__hadoopConfig.gen_site_conf( confDir = self.confDir,\ tempDir = self.tempDir,\ numNodes = self.numNodes,\ hdfsAddr = self.hdfsAddr,\ mrSysDir = self.mySysDir,\ mapredAddr = self.mapredAddr,\ clientParams = self.clientParams,\ serverParams = self.serverParams,\ finalServerParams = self.finalServerParams,\ clusterFactor = self.clusterFactor ) xmldoc = minidom.parse(self.hadoopSite) xmldoc = xmldoc.childNodes[0] # leave out xml spec properties = xmldoc.childNodes # children of tag configuration keyvals = {} for prop in properties: if not isinstance(prop,minidom.Comment): # ---------- tag -------------------- -value elem-- data -- name = prop.getElementsByTagName('name')[0].childNodes[0].data value = prop.getElementsByTagName('value')[0].childNodes[0].data keyvals[name] = value # fs.default.name should start with hdfs:// assert(keyvals['fs.default.name'].startswith('hdfs://')) assert(keyvals['hadoop.tmp.dir'] == self.tempDir) assert(keyvals['dfs.client.buffer.dir'] == os.path.join(self.tempDir, 'dfs', 'tmp')) # TODO other tests pass def tearDown(self): if os.path.exists(self.hadoopSite): os.unlink(self.hadoopSite) if os.path.exists(self.confDir) : os.rmdir(self.confDir) if os.path.exists(self.testingDir) : os.rmdir(self.testingDir) passclass HadoopTestSuite(BaseTestSuite): def __init__(self): # suite setup BaseTestSuite.__init__(self, __name__, excludes) pass def cleanUp(self): # suite tearDown passdef RunHadoopTests(): suite = HadoopTestSuite() testResult = suite.runTests() suite.cleanUp() return testResultif __name__ == "__main__": RunHadoopTests()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -