| 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) |
| |
| |