This repository has been archived by the owner on Dec 28, 2024. It is now read-only.
forked from pelletier/SOAPpy
-
Notifications
You must be signed in to change notification settings - Fork 52
/
Copy pathtestClient1.py
executable file
·118 lines (90 loc) · 2.91 KB
/
testClient1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import gc
import socket
import threading
import time
import unittest
import sys
sys.path.insert(1, "..")
import SOAPpy
#SOAPpy.Config.debug=1
# global to shut down server
quit = 0
def echoDateTime(dt):
return dt
def echo(s):
"""repeats a string twice"""
return s + s
def kill():
"""tell the server to quit"""
global quit
quit = 1
def server1():
"""start a SOAP server on localhost:8000"""
print "Starting SOAP Server...",
server = SOAPpy.Server.SOAPServer(addr=('127.0.0.1', 8000))
server.registerFunction(echoDateTime)
server.registerFunction(echo)
server.registerFunction(kill)
print "Done."
global quit
while not quit:
server.handle_request()
quit = 0
print "Server shut down."
class ClientTestCase(unittest.TestCase):
server = None
startup_timeout = 5 # seconds
def setUp(self):
'''This is run once before each unit test.'''
serverthread = threading.Thread(target=server1, name="SOAPServer")
serverthread.start()
start = time.time()
connected = False
server = None
while not connected and time.time() - start < self.startup_timeout:
print "Trying to connect to the SOAP server...",
try:
server = SOAPpy.Client.SOAPProxy('127.0.0.1:8000')
server.echo('Hello World')
except socket.error, e:
print "Failure:", e
time.sleep(0.5)
else:
connected = True
self.server = server
print "Success."
if not connected: raise 'Server failed to start.'
def tearDown(self):
'''This is run once after each unit test.'''
print "Trying to shut down SOAP server..."
if self.server is not None:
self.server.kill()
time.sleep(5)
return 1
def testEcho(self):
'''Test echo function.'''
server = SOAPpy.Client.SOAPProxy('127.0.0.1:8000')
s = 'Hello World'
self.assertEquals(server.echo(s), s+s)
def testNamedEcho(self):
'''Test echo function.'''
server = SOAPpy.Client.SOAPProxy('127.0.0.1:8000')
s = 'Hello World'
self.assertEquals(server.echo(s=s), s+s)
def testEchoDateTime(self):
'''Test passing DateTime objects.'''
server = SOAPpy.Client.SOAPProxy('127.0.0.1:8000')
dt = SOAPpy.Types.dateTimeType(data=time.time())
dt_return = server.echoDateTime(dt)
self.assertEquals(dt_return, dt)
# def testNoLeak(self):
# '''Test for memory leak.'''
# gc.set_debug(gc.DEBUG_SAVEALL)
# for i in range(400):
# server = SOAPpy.Client.SOAPProxy('127.0.0.1:8000')
# s = 'Hello World'
# server.echo(s)
# gc.collect()
# self.assertEquals(len(gc.garbage), 0)
if __name__ == '__main__':
unittest.main()