diff options
| author | xebd <xeb@mail.ru> | 2022-09-12 10:56:47 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-09-12 10:56:47 +0300 |
| commit | 28fe4de9441aa9d0c42c010e8eef5b1a19122c9d (patch) | |
| tree | ecefcafbeb9c9610ed3cf8c30a238b9168bba3bb /tests/common/pppd_process.py | |
| parent | 25c72614bf8106b0e4f71e2bce70514b03858463 (diff) | |
| parent | 127b1de95923fccdfdc892c20f931d364e099f4b (diff) | |
| download | accel-ppp-28fe4de9441aa9d0c42c010e8eef5b1a19122c9d.tar.gz accel-ppp-28fe4de9441aa9d0c42c010e8eef5b1a19122c9d.zip | |
Merge pull request #61 from svlobanov/tests2
add tests and ci workflow for running tests
Diffstat (limited to 'tests/common/pppd_process.py')
| -rw-r--r-- | tests/common/pppd_process.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/common/pppd_process.py b/tests/common/pppd_process.py new file mode 100644 index 00000000..45844400 --- /dev/null +++ b/tests/common/pppd_process.py @@ -0,0 +1,43 @@ +from subprocess import Popen, PIPE +from threading import Thread + + +def pppd_thread_func(pppd_control): + process = pppd_control["process"] + print("pppd_thread_func: before communicate") + (out, err) = process.communicate() + print("pppd_thread_func: after communicate out=" + str(out) + " err=" + str(err)) + process.wait() + print("pppd_thread_func: after wait") + + +def start(netns, pppd, args): + print("pppd_start: begin") + print("pppd_start: args=" + str(args)) + pppd_process = Popen( + ["ip", "netns", "exec", netns] + [pppd] + args, stdout=PIPE, stderr=PIPE + ) + print("pppd_start: pppd_process=" + str(pppd_process)) + pppd_control = {"process": pppd_process} + pppd_thread = Thread( + target=pppd_thread_func, + args=[pppd_control], + ) + pppd_thread.start() + + is_started = True if pppd_process.poll() is None else False + + return (is_started, pppd_thread, pppd_control) + + +def end(pppd_thread, pppd_control): + print("pppd_end: begin") + if pppd_control["process"].poll() is not None: # already terminated + print("pppd_end: already terminated. nothing to do") + pppd_thread.join() + return + + print("pppd_end: kill process: " + str(pppd_control["process"])) + pppd_control["process"].kill() # kill -9 + pppd_thread.join() # wait until thread is finished + print("pppd_end: end") |
