params: add put_bool_nonblocking (#25292)

* add bool flag

* cleanup

Co-authored-by: Willem Melching <willem.melching@gmail.com>
old-commit-hash: 1f087bceb4
taco
ZwX1616 3 years ago committed by GitHub
parent e23f58937f
commit d500a25ab5
  1. 3
      common/params.py
  2. 12
      common/params_pyx.pyx
  3. 11
      common/tests/test_params.py

@ -1,8 +1,9 @@
from common.params_pyx import Params, ParamKeyType, UnknownKeyName, put_nonblocking # pylint: disable=no-name-in-module, import-error from common.params_pyx import Params, ParamKeyType, UnknownKeyName, put_nonblocking, put_bool_nonblocking # pylint: disable=no-name-in-module, import-error
assert Params assert Params
assert ParamKeyType assert ParamKeyType
assert UnknownKeyName assert UnknownKeyName
assert put_nonblocking assert put_nonblocking
assert put_bool_nonblocking
if __name__ == "__main__": if __name__ == "__main__":
import sys import sys

@ -100,11 +100,7 @@ cdef class Params:
return self.p.getParamPath(key_bytes).decode("utf-8") return self.p.getParamPath(key_bytes).decode("utf-8")
def put_nonblocking(key, val, d=""): def put_nonblocking(key, val, d=""):
def f(key, val): threading.Thread(target=lambda: Params(d).put(key, val)).start()
params = Params(d)
cdef string k = ensure_bytes(key) def put_bool_nonblocking(key, bool val, d=""):
params.put(k, val) threading.Thread(target=lambda: Params(d).put_bool(key, val)).start()
t = threading.Thread(target=f, args=(key, val))
t.start()
return t

@ -4,7 +4,7 @@ import tempfile
import shutil import shutil
import unittest import unittest
from common.params import Params, ParamKeyType, UnknownKeyName, put_nonblocking from common.params import Params, ParamKeyType, UnknownKeyName, put_nonblocking, put_bool_nonblocking
class TestParams(unittest.TestCase): class TestParams(unittest.TestCase):
def setUp(self): def setUp(self):
@ -89,6 +89,15 @@ class TestParams(unittest.TestCase):
assert q.get("CarParams") is None assert q.get("CarParams") is None
assert q.get("CarParams", True) == b"test" assert q.get("CarParams", True) == b"test"
def test_put_bool_non_blocking_with_get_block(self):
q = Params(self.tmpdir)
def _delayed_writer():
time.sleep(0.1)
put_bool_nonblocking("CarParams", True, self.tmpdir)
threading.Thread(target=_delayed_writer).start()
assert q.get("CarParams") is None
assert q.get("CarParams", True) == b"1"
if __name__ == "__main__": if __name__ == "__main__":
unittest.main() unittest.main()

Loading…
Cancel
Save