testXmlrpc.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 hodlib.Common.xmlrpc import hodXRClient
  19. from hodlib.Common.socketServers import hodXMLRPCServer
  20. from hodlib.GridServices.service import ServiceUtil
  21. from hodlib.Common.util import hodInterrupt, HodInterruptException
  22. from testing.lib import BaseTestSuite
  23. excludes = []
  24. global serverPort
  25. serverPort = None
  26. class test_HodXRClient(unittest.TestCase):
  27.   def setUp(self):
  28.     pass
  29.   # All testMethods have to have their names start with 'test'
  30.   def testSuccess(self):
  31.     global serverPort
  32.     client = hodXRClient('http://localhost:' + str(serverPort), retryRequests=False)
  33.     self.assertEqual(client.testing(), True)
  34.     pass
  35.     
  36.   def testFailure(self):
  37.     """HOD should raise Exception when unregistered rpc is called"""
  38.     global serverPort
  39.     client = hodXRClient('http://localhost:' + str(serverPort), retryRequests=False)
  40.     self.assertRaises(Exception, client.noMethod)
  41.     pass
  42.   def testTimeout(self):
  43.     """HOD should raise Exception when rpc call times out"""
  44.     # Give client some random nonexistent url
  45.     serverPort = ServiceUtil.getUniqRandomPort(h='localhost',low=40000,high=50000)
  46.     client = hodXRClient('http://localhost:' + str(serverPort), retryRequests=False)
  47.     self.assertRaises(Exception, client.testing)
  48.     pass
  49.   def testInterrupt(self):
  50.     """ HOD should raise HodInterruptException when interrupted"""
  51.     def interrupt(testClass):
  52.       testClass.assertRaises(HodInterruptException, client.testing)
  53.       
  54.     serverPort = ServiceUtil.getUniqRandomPort(h='localhost',low=40000,high=50000)
  55.     client = hodXRClient('http://localhost:' + str(serverPort))
  56.     myThread = threading.Thread(name='testinterrupt', target=interrupt,args=(self,))
  57.     # Set the global interrupt
  58.     hodInterrupt.setFlag()
  59.     myThread.start()
  60.     myThread.join()
  61.     pass
  62.   def tearDown(self):
  63.     pass
  64. class XmlrpcTestSuite(BaseTestSuite):
  65.   def __init__(self):
  66.     # suite setup
  67.     BaseTestSuite.__init__(self, __name__, excludes)
  68.     def rpcCall():
  69.       return True
  70.     
  71.     global serverPort
  72.     serverPort = ServiceUtil.getUniqRandomPort(h='localhost',low=40000,high=50000)
  73.     self.server = hodXMLRPCServer('localhost', [serverPort])
  74.     self.server.register_function(rpcCall, 'testing')
  75.     self.thread = threading.Thread(name="server", 
  76.                                    target=self.server._serve_forever)
  77.     self.thread.start()
  78.     time.sleep(1) # give some time to start server
  79.   
  80.   def cleanUp(self):
  81.     # suite tearDown
  82.     self.server.stop()
  83.     self.thread.join()
  84. def RunXmlrpcTests():
  85.   # modulename_suite
  86.   suite = XmlrpcTestSuite()
  87.   testResult = suite.runTests()
  88.   suite.cleanUp()
  89.   return testResult
  90. if __name__ == "__main__":
  91.   RunXmlrpcTests()