Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add signal handling for SIGTERM in addition to SIGINT #1259

Open
wants to merge 5 commits into
base: master
Choose a base branch
from

Clarify test python version distinction with comment

7c39078
Select commit
Loading
Failed to load commit list.
Open

Add signal handling for SIGTERM in addition to SIGINT #1259

Clarify test python version distinction with comment
7c39078
Select commit
Loading
Failed to load commit list.
Azure Pipelines / jpype.build failed Jan 31, 2025 in 10m 43s

Build #20250131.4 had test failures

Details

Tests

  • Failed: 20 (0.08%)
  • Passed: 19,918 (83.51%)
  • Other: 3,914 (16.41%)
  • Total: 23,852
Code coverage

  • 2147 of 2353 line covered (91.25%)

Annotations

Check failure on line 2248 in Build log

See this annotation in the file changed.

@azure-pipelines azure-pipelines / jpype.build

Build log #L2248

Cmd.exe exited with code '1'.

Check failure on line 2209 in Build log

See this annotation in the file changed.

@azure-pipelines azure-pipelines / jpype.build

Build log #L2209

Cmd.exe exited with code '1'.

Check failure on line 2248 in Build log

See this annotation in the file changed.

@azure-pipelines azure-pipelines / jpype.build

Build log #L2248

Cmd.exe exited with code '1'.

Check failure on line 2206 in Build log

See this annotation in the file changed.

@azure-pipelines azure-pipelines / jpype.build

Build log #L2206

Cmd.exe exited with code '1'.

Check failure on line 1 in testSigInt

See this annotation in the file changed.

@azure-pipelines azure-pipelines / jpype.build

testSigInt

AssertionError: function <function _hook at 0x000001E4F88396C0> FAILED with args: ('D:\\a\\1\\s\\test\\jpypetest\\test_signals.py', 'SignalsTest', '_testSigInt') and kwargs: {}
Raw output
self = <subrun.Client object at 0x000001E4FD7C9BA0>
function = <function _hook at 0x000001E4F88396C0>
args = ('D:\\a\\1\\s\\test\\jpypetest\\test_signals.py', 'SignalsTest', '_testSigInt')
kwargs = {}

    def execute(self, function, *args, **kwargs):
        self.inQueue.put([function.__name__, os.path.abspath(
            inspect.getfile(function)), args, kwargs])
        try:
>           (ret, out, ex) = self.outQueue.get(True, self.timeout)

test\jpypetest\subrun.py:85: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <multiprocessing.queues.Queue object at 0x000001E4FD7C99C0>, block = True
timeout = 20.0

    def get(self, block=True, timeout=None):
        if self._closed:
            raise ValueError(f"Queue {self!r} is closed")
        if block and timeout is None:
            with self._rlock:
                res = self._recv_bytes()
            self._sem.release()
        else:
            if block:
                deadline = time.monotonic() + timeout
            if not self._rlock.acquire(block, timeout):
                raise Empty
            try:
                if block:
                    timeout = deadline - time.monotonic()
                    if not self._poll(timeout):
>                       raise Empty
E                       _queue.Empty

C:\hostedtoolcache\windows\Python\3.10.11\x64\lib\multiprocessing\queues.py:114: Empty

During handling of the above exception, another exception occurred:

self = <subrun._prepare.<locals>.ProxyMethod object at 0x000001E4F8BF9510>

    def __call__(self):
>       ProxyClass._client.execute(_hook, filename, clsname, self.name)

test\jpypetest\subrun.py:172: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <subrun.Client object at 0x000001E4FD7C9BA0>
function = <function _hook at 0x000001E4F88396C0>
args = ('D:\\a\\1\\s\\test\\jpypetest\\test_signals.py', 'SignalsTest', '_testSigInt')
kwargs = {}

    def execute(self, function, *args, **kwargs):
        self.inQueue.put([function.__name__, os.path.abspath(
            inspect.getfile(function)), args, kwargs])
        try:
            (ret, out, ex) = self.outQueue.get(True, self.timeout)
        except queue.Empty:
>           raise AssertionError("function {func} FAILED with args: {args} and kwargs: {kwargs}"
                                 .format(func=function, args=args, kwargs=kwargs))
E           AssertionError: function <function _hook at 0x000001E4F88396C0> FAILED with args: ('D:\\a\\1\\s\\test\\jpypetest\\test_signals.py', 'SignalsTest', '_testSigInt') and kwargs: {}

test\jpypetest\subrun.py:87: AssertionError

Check failure on line 1 in testSigInt

See this annotation in the file changed.

@azure-pipelines azure-pipelines / jpype.build

testSigInt

failed on teardown with "AssertionError: function <function _hook at 0x000001E4F88396C0> FAILED with args: ('D:\\a\\1\\s\\test\\jpypetest\\test_signals.py', 'SignalsTest', '_tearDown') and kwargs: {}"
Raw output
self = <subrun.Client object at 0x000001E4FD7C9BA0>
function = <function _hook at 0x000001E4F88396C0>
args = ('D:\\a\\1\\s\\test\\jpypetest\\test_signals.py', 'SignalsTest', '_tearDown')
kwargs = {}

    def execute(self, function, *args, **kwargs):
        self.inQueue.put([function.__name__, os.path.abspath(
            inspect.getfile(function)), args, kwargs])
        try:
>           (ret, out, ex) = self.outQueue.get(True, self.timeout)

test\jpypetest\subrun.py:85: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <multiprocessing.queues.Queue object at 0x000001E4FD7C99C0>, block = True
timeout = 20.0

    def get(self, block=True, timeout=None):
        if self._closed:
            raise ValueError(f"Queue {self!r} is closed")
        if block and timeout is None:
            with self._rlock:
                res = self._recv_bytes()
            self._sem.release()
        else:
            if block:
                deadline = time.monotonic() + timeout
            if not self._rlock.acquire(block, timeout):
                raise Empty
            try:
                if block:
                    timeout = deadline - time.monotonic()
                    if not self._poll(timeout):
>                       raise Empty
E                       _queue.Empty

C:\hostedtoolcache\windows\Python\3.10.11\x64\lib\multiprocessing\queues.py:114: Empty

During handling of the above exception, another exception occurred:

self = <subrun._prepare.<locals>.ProxyClass testMethod=testSigInt>

    def tearDown(self):
>       ProxyClass._client.execute(_hook, filename, clsname, '_tearDown')

test\jpypetest\subrun.py:163: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <subrun.Client object at 0x000001E4FD7C9BA0>
function = <function _hook at 0x000001E4F88396C0>
args = ('D:\\a\\1\\s\\test\\jpypetest\\test_signals.py', 'SignalsTest', '_tearDown')
kwargs = {}

    def execute(self, function, *args, **kwargs):
        self.inQueue.put([function.__name__, os.path.abspath(
            inspect.getfile(function)), args, kwargs])
        try:
            (ret, out, ex) = self.outQueue.get(True, self.timeout)
        except queue.Empty:
>           raise AssertionError("function {func} FAILED with args: {args} and kwargs: {kwargs}"
                                 .format(func=function, args=args, kwargs=kwargs))
E           AssertionError: function <function _hook at 0x000001E4F88396C0> FAILED with args: ('D:\\a\\1\\s\\test\\jpypetest\\test_signals.py', 'SignalsTest', '_tearDown') and kwargs: {}

test\jpypetest\subrun.py:87: AssertionError

Check failure on line 1 in testSigTerm

See this annotation in the file changed.

@azure-pipelines azure-pipelines / jpype.build

testSigTerm

AssertionError: function <function _hook at 0x000001E4F88396C0> FAILED with args: ('D:\\a\\1\\s\\test\\jpypetest\\test_signals.py', 'SignalsTest', '_setUp') and kwargs: {}
Raw output
self = <subrun.Client object at 0x000001E4FD7C9BA0>
function = <function _hook at 0x000001E4F88396C0>
args = ('D:\\a\\1\\s\\test\\jpypetest\\test_signals.py', 'SignalsTest', '_setUp')
kwargs = {}

    def execute(self, function, *args, **kwargs):
        self.inQueue.put([function.__name__, os.path.abspath(
            inspect.getfile(function)), args, kwargs])
        try:
>           (ret, out, ex) = self.outQueue.get(True, self.timeout)

test\jpypetest\subrun.py:85: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <multiprocessing.queues.Queue object at 0x000001E4FD7C99C0>, block = True
timeout = 20.0

    def get(self, block=True, timeout=None):
        if self._closed:
            raise ValueError(f"Queue {self!r} is closed")
        if block and timeout is None:
            with self._rlock:
                res = self._recv_bytes()
            self._sem.release()
        else:
            if block:
                deadline = time.monotonic() + timeout
            if not self._rlock.acquire(block, timeout):
                raise Empty
            try:
                if block:
                    timeout = deadline - time.monotonic()
                    if not self._poll(timeout):
>                       raise Empty
E                       _queue.Empty

C:\hostedtoolcache\windows\Python\3.10.11\x64\lib\multiprocessing\queues.py:114: Empty

During handling of the above exception, another exception occurred:

self = <subrun._prepare.<locals>.ProxyClass testMethod=testSigTerm>

    def setUp(self):
        if common.fast:
            raise unittest.SkipTest("fast")
        if individual:
            ProxyClass._client.restart()
>       ProxyClass._client.execute(_hook, filename, clsname, '_setUp')

test\jpypetest\subrun.py:153: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <subrun.Client object at 0x000001E4FD7C9BA0>
function = <function _hook at 0x000001E4F88396C0>
args = ('D:\\a\\1\\s\\test\\jpypetest\\test_signals.py', 'SignalsTest', '_setUp')
kwargs = {}

    def execute(self, function, *args, **kwargs):
        self.inQueue.put([function.__name__, os.path.abspath(
            inspect.getfile(function)), args, kwargs])
        try:
            (ret, out, ex) = self.outQueue.get(True, self.timeout)
        except queue.Empty:
>           raise AssertionError("function {func} FAILED with args: {args} and kwargs: {kwargs}"
                                 .format(func=function, args=args, kwargs=kwargs))
E           AssertionError: function <function _hook at 0x000001E4F88396C0> FAILED with args: ('D:\\a\\1\\s\\test\\jpypetest\\test_signals.py', 'SignalsTest', '_setUp') and kwargs: {}

test\jpypetest\subrun.py:87: AssertionError

Check failure on line 1 in testSigTerm

See this annotation in the file changed.

@azure-pipelines azure-pipelines / jpype.build

testSigTerm

failed on teardown with "AssertionError: function <function _hook at 0x000001E4F88396C0> FAILED with args: ('D:\\a\\1\\s\\test\\jpypetest\\test_signals.py', 'SignalsTest', '_tearDownClass') and kwargs: {}"
Raw output
self = <subrun.Client object at 0x000001E4FD7C9BA0>
function = <function _hook at 0x000001E4F88396C0>
args = ('D:\\a\\1\\s\\test\\jpypetest\\test_signals.py', 'SignalsTest', '_tearDownClass')
kwargs = {}

    def execute(self, function, *args, **kwargs):
        self.inQueue.put([function.__name__, os.path.abspath(
            inspect.getfile(function)), args, kwargs])
        try:
>           (ret, out, ex) = self.outQueue.get(True, self.timeout)

test\jpypetest\subrun.py:85: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <multiprocessing.queues.Queue object at 0x000001E4FD7C99C0>, block = True
timeout = 20.0

    def get(self, block=True, timeout=None):
        if self._closed:
            raise ValueError(f"Queue {self!r} is closed")
        if block and timeout is None:
            with self._rlock:
                res = self._recv_bytes()
            self._sem.release()
        else:
            if block:
                deadline = time.monotonic() + timeout
            if not self._rlock.acquire(block, timeout):
                raise Empty
            try:
                if block:
                    timeout = deadline - time.monotonic()
                    if not self._poll(timeout):
>                       raise Empty
E                       _queue.Empty

C:\hostedtoolcache\windows\Python\3.10.11\x64\lib\multiprocessing\queues.py:114: Empty

During handling of the above exception, another exception occurred:

cls = <class 'subrun._prepare.<locals>.ProxyClass'>

    @classmethod
    def tearDownClass(cls):
>       ProxyClass._client.execute(
            _hook, filename, clsname, '_tearDownClass')

test\jpypetest\subrun.py:139: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

self = <subrun.Client object at 0x000001E4FD7C9BA0>
function = <function _hook at 0x000001E4F88396C0>
args = ('D:\\a\\1\\s\\test\\jpypetest\\test_signals.py', 'SignalsTest', '_tearDownClass')
kwargs = {}

    def execute(self, function, *args, **kwargs):
        self.inQueue.put([function.__name__, os.path.abspath(
            inspect.getfile(function)), args, kwargs])
        try:
            (ret, out, ex) = self.outQueue.get(True, self.timeout)
        except queue.Empty:
>           raise AssertionError("function {func} FAILED with args: {args} and kwargs: {kwargs}"
                                 .format(func=function, args=args, kwargs=kwargs))
E           AssertionError: function <function _hook at 0x000001E4F88396C0> FAILED with args: ('D:\\a\\1\\s\\test\\jpypetest\\test_signals.py', 'SignalsTest', '_tearDownClass') and kwargs: {}

test\jpypetest\subrun.py:87: AssertionError