📄 testhodcleanup.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 BaseTestSuitefrom hodlib.HodRing.hodRing import MRSystemDirectoryManager, createMRSystemDirectoryManagerfrom hodlib.Common.threads import simpleCommandexcludes = []# duplicating temporarily until HADOOP-2848 is committed.class MyMockLogger: def __init__(self): self.__logLines = {} def info(self, message): self.__logLines[message] = 'info' def critical(self, message): self.__logLines[message] = 'critical' def warn(self, message): self.__logLines[message] = 'warn' def debug(self, message): # don't track debug lines. pass # verify a certain message has been logged at the defined level of severity. def hasMessage(self, message, level): if not self.__logLines.has_key(message): return False return self.__logLines[message] == levelclass test_MRSystemDirectoryManager(unittest.TestCase): def setUp(self): self.log = MyMockLogger() def testCleanupArgsString(self): sysDirMgr = MRSystemDirectoryManager(1234, '/user/hod/mapredsystem/hoduser.123.abc.com', \ 'def.com:5678', '/usr/bin/hadoop', self.log) str = sysDirMgr.toCleanupArgs() self.assertTrue(" --jt-pid 1234 --mr-sys-dir /user/hod/mapredsystem/hoduser.123.abc.com --fs-name def.com:5678 --hadoop-path /usr/bin/hadoop ", str) def testCreateMRSysDirInvalidParams(self): # test that no mr system directory manager is created if required keys are not present # this case will test scenarios of non jobtracker daemons. keys = [ 'jt-pid', 'mr-sys-dir', 'fs-name', 'hadoop-path' ] map = { 'jt-pid' : 1234, 'mr-sys-dir' : '/user/hod/mapredsystem/hoduser.def.com', 'fs-name' : 'ghi.com:1234', 'hadoop-path' : '/usr/bin/hadoop' } for key in keys: val = map[key] map[key] = None self.assertEquals(createMRSystemDirectoryManager(map, self.log), None) map[key] = val def testUnresponsiveJobTracker(self): # simulate an unresponsive job tracker, by giving a command that runs longer than the retries # verify that the program returns with the right error message. sc = simpleCommand("sleep", "sleep 300") sc.start() pid = sc.getPid() while pid is None: pid = sc.getPid() sysDirMgr = MRSystemDirectoryManager(pid, '/user/yhemanth/mapredsystem/hoduser.123.abc.com', \ 'def.com:5678', '/usr/bin/hadoop', self.log, retries=3) sysDirMgr.removeMRSystemDirectory() self.log.hasMessage("Job Tracker did not exit even after a minute. Not going to try and cleanup the system directory", 'warn') sc.kill() sc.wait() sc.join()class HodCleanupTestSuite(BaseTestSuite): def __init__(self): # suite setup BaseTestSuite.__init__(self, __name__, excludes) pass def cleanUp(self): # suite tearDown passdef RunHodCleanupTests(): # modulename_suite suite = HodCleanupTestSuite() testResult = suite.runTests() suite.cleanUp() return testResultif __name__ == "__main__": RunHodCleanupTests()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -