summaryrefslogtreecommitdiff
path: root/pjsip-apps/src/swig/python/test.py
blob: dc805c77d2165dabf1ca42affd315bed9a0d8b44 (plain)
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
import pjsua2 as pj
import sys

#
# Basic data structure test, to make sure basic struct
# and array operations work
#
def ua_data_test():
	#
	# AuthCredInfo
	#
	print "UA data types test.."
	the_realm = "pjsip.org"
	ci = pj.AuthCredInfo()
	ci.realm = the_realm
	ci.dataType = 20
	
	ci2 = ci
	assert ci.dataType == 20
	assert ci2.realm == the_realm
	
	#
	# UaConfig
	# See here how we manipulate std::vector
	#
	uc = pj.UaConfig()
	uc.maxCalls = 10
	uc.userAgent = "Python"
	uc.nameserver = pj.StringVector(["10.0.0.1", "10.0.0.2"])
	uc.nameserver.append("NS1")
	
	uc2 = uc
	assert uc2.maxCalls == 10
	assert uc2.userAgent == "Python"
	assert len(uc2.nameserver) == 3
	assert uc2.nameserver[0] == "10.0.0.1"
	assert uc2.nameserver[1] == "10.0.0.2"
	assert uc2.nameserver[2] == "NS1"

	print "  Dumping nameservers: ",
	for s in uc2.nameserver:
		print s,
	print ""

#
# Exception test
#
def ua_run_test_exception():
	print "Exception test.."
	ep = pj.Endpoint()
	ep.libCreate()
	got_exception = False
	try:
		ep.natDetectType()
	except pj.Error, e:
		got_exception = True
		print "  Got exception: status=%u, reason=%s,\n  title=%s,\n  srcFile=%s, srcLine=%d" % \
			(e.status, e.reason, e.title, e.srcFile, e.srcLine)
		assert e.status == 370050
		assert e.reason.find("PJNATH_ESTUNINSERVER") >= 0
		assert e.title == "pjsua_detect_nat_type()"
	assert got_exception

#
# Custom log writer
#
class MyLogWriter(pj.LogWriter):
	def write(self, entry):
		print "This is Python:", entry.msg
		
#
# Testing log writer callback
#
def ua_run_log_test():
	print "Logging test.."
	ep_cfg = pj.EpConfig()
	
	lw = MyLogWriter()
	ep_cfg.logConfig.writer = lw
	ep_cfg.logConfig.decor = ep_cfg.logConfig.decor & ~(pj.PJ_LOG_HAS_CR | pj.PJ_LOG_HAS_NEWLINE) 
	
	ep = pj.Endpoint()
	ep.libCreate()
	ep.libInit(ep_cfg)
	ep.libDestroy()
	
#
# Simple create, init, start, and destroy sequence
#
def ua_run_ua_test():
	print "UA test run.."
	ep_cfg = pj.EpConfig()
	
	ep = pj.Endpoint()
	ep.libCreate()
	ep.libInit(ep_cfg)
	ep.libStart()
	
	print "************* Endpoint started ok, now shutting down... *************"
	ep.libDestroy()

#
# main()
#
if __name__ == "__main__":
	ua_data_test()
	ua_run_test_exception()
	ua_run_log_test()
	ua_run_ua_test()
	sys.exit(0)