From 67c8c4df731620c5fd83520bc8c19b864c66e0b9 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 29 Jul 2014 18:12:31 +0200 Subject: [PATCH] Add test program in python. --- tools/python/test.py | 79 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 tools/python/test.py diff --git a/tools/python/test.py b/tools/python/test.py new file mode 100644 index 000000000..d291d1f65 --- /dev/null +++ b/tools/python/test.py @@ -0,0 +1,79 @@ +import linphone +import logging +import signal +import sys +import threading +import time + + +class StoppableThread(threading.Thread): + def __init__(self): + threading.Thread.__init__(self) + self.stop_event = threading.Event() + + def stop(self): + if self.isAlive() == True: + # Set an event to signal the thread to terminate + self.stop_event.set() + # Block the calling thread until the thread really has terminated + self.join() + +class IntervalTimer(StoppableThread): + def __init__(self, interval, worker_func, kwargs={}): + StoppableThread.__init__(self) + self._interval = interval + self._worker_func = worker_func + self._kwargs = kwargs + + def run(self): + while not self.stop_event.is_set(): + self._worker_func(self._kwargs) + time.sleep(self._interval) + + +# Configure logging module +logging.addLevelName(logging.DEBUG, "\033[1;37m%s\033[1;0m" % logging.getLevelName(logging.DEBUG)) +logging.addLevelName(logging.INFO, "\033[1;36m%s\033[1;0m" % logging.getLevelName(logging.INFO)) +logging.addLevelName(logging.WARNING, "\033[1;31m%s\033[1;0m" % logging.getLevelName(logging.WARNING)) +logging.addLevelName(logging.ERROR, "\033[1;41m%s\033[1;0m" % logging.getLevelName(logging.ERROR)) +logging.basicConfig(level=logging.DEBUG, format="%(asctime)s.%(msecs)-3d %(levelname)s: %(message)s", datefmt="%H:%M:%S") + +# Define the linphone module log handler +def log_handler(level, msg): + method = getattr(logging, level) + method(msg) + + +def test_friend(): + f = linphone.Friend.new() + print(f.address) + a1 = linphone.Address.new("sip:cotcot@sip.linphone.org") + print(a1.username) + print(a1.domain) + a1.domain = "sip2.linphone.org" + print(a1.domain) + f.address = a1 + a2 = f.address + + +def signal_handler(signal, frame): + cont = False + raise KeyError("Ctrl+C") + +# Define the iteration function +def iterate(kwargs): + core = kwargs['core'] + core.iterate() + +# Create a linphone core and iterate every 20 ms +linphone.set_log_handler(log_handler) +core = linphone.Core.new(None, None) +interval = IntervalTimer(0.02, iterate, kwargs={'core':core}) +signal.signal(signal.SIGINT, signal_handler) +try: + interval.start() + signal.pause() +except KeyError: + interval.stop() + del interval +del core