Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 6738e47

Browse files
authored
fix debug port parser for Java Lambda executor to support different formats (#3112)
1 parent 6d463be commit 6738e47

File tree

2 files changed

+45
-20
lines changed

2 files changed

+45
-20
lines changed

‎localstack/services/awslambda/lambda_executors.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -769,9 +769,9 @@ def get_java_opts(cls):
769769
opts = opts.replace('_debug_port_', ('%s' % cls.debug_java_port))
770770
else:
771771
# Parse the debug port from opts
772-
m = re.match('.*address=(\\d+).*', opts)
772+
m = re.match('.*address=(.+:)?(\\d+).*', opts)
773773
if m is not None:
774-
cls.debug_java_port = m.groups()[0]
774+
cls.debug_java_port = m.groups()[1]
775775

776776
return opts
777777

‎tests/unit/test_lambda.py

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -590,26 +590,51 @@ def test_java_options_with_memory_options_and_agentlib_option(self):
590590
self.assertTrue(re.match(expected, result))
591591
self.assertTrue(lambda_executors.Util.debug_java_port is not False)
592592

593-
def test_java_options_with_unset_debug_port_in_middle(self):
594-
expected = '.*transport=dt_socket,server=y,address=[0-9]+,suspend=y'
595-
result = self.prepare_java_opts('-Xmx512M -agentlib:jdwp=transport=dt_socket,server=y'
596-
',address=_debug_port_,suspend=y')
597-
self.assertTrue(re.match(expected, result))
598-
self.assertTrue(lambda_executors.Util.debug_java_port is not False)
593+
def test_java_options_with_unset_debug_port(self):
594+
options = [
595+
'-agentlib:jdwp=transport=dt_socket,server=y,address=_debug_port_,suspend=y',
596+
'-agentlib:jdwp=transport=dt_socket,server=y,address=localhost:_debug_port_,suspend=y',
597+
'-agentlib:jdwp=transport=dt_socket,server=y,address=127.0.0.1:_debug_port_,suspend=y',
598+
'-agentlib:jdwp=transport=dt_socket,server=y,address=*:_debug_port_,suspend=y',
599+
'-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=_debug_port_',
600+
'-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:_debug_port_',
601+
'-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=127.0.0.1:_debug_port_',
602+
'-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:_debug_port_'
603+
]
604+
605+
expected_results = [
606+
'-agentlib:jdwp=transport=dt_socket,server=y,address=([0-9]+),suspend=y',
607+
'-agentlib:jdwp=transport=dt_socket,server=y,address=localhost:([0-9]+),suspend=y',
608+
'-agentlib:jdwp=transport=dt_socket,server=y,address=127.0.0.1:([0-9]+),suspend=y',
609+
'-agentlib:jdwp=transport=dt_socket,server=y,address=\\*:([0-9]+),suspend=y',
610+
'-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=([0-9]+)',
611+
'-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:([0-9]+)',
612+
'-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=127.0.0.1:([0-9]+)',
613+
'-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=\\*:([0-9]+)'
614+
]
615+
616+
for i in range(len(options)):
617+
result = self.prepare_java_opts(options[i])
618+
m = re.match(expected_results[i], result)
619+
self.assertTrue(m)
620+
self.assertEqual(m.groups()[0], lambda_executors.Util.debug_java_port)
599621

600622
def test_java_options_with_configured_debug_port(self):
601-
expected = '.*transport=dt_socket,server=y,suspend=y,address=1234'
602-
result = self.prepare_java_opts('-Xmx512M -agentlib:jdwp=transport=dt_socket,server=y'
603-
',suspend=y,address=1234')
604-
self.assertTrue(re.match(expected, result))
605-
self.assertEqual('1234', lambda_executors.Util.debug_java_port)
606-
607-
def test_java_options_with_configured_debug_port_in_middle(self):
608-
expected = '.*transport=dt_socket,server=y,address=1234,suspend=y'
609-
result = self.prepare_java_opts('-Xmx512M -agentlib:jdwp=transport=dt_socket,server=y'
610-
',address=1234,suspend=y')
611-
self.assertTrue(re.match(expected, result))
612-
self.assertEqual('1234', lambda_executors.Util.debug_java_port)
623+
options = [
624+
'-agentlib:jdwp=transport=dt_socket,server=y,address=1234,suspend=y',
625+
'-agentlib:jdwp=transport=dt_socket,server=y,address=localhost:1234,suspend=y',
626+
'-agentlib:jdwp=transport=dt_socket,server=y,address=127.0.0.1:1234,suspend=y',
627+
'-agentlib:jdwp=transport=dt_socket,server=y,address=*:1234,suspend=y',
628+
'-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1234',
629+
'-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:1234',
630+
'-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=127.0.0.1:1234',
631+
'-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=*:1234'
632+
]
633+
634+
for item in options:
635+
result = self.prepare_java_opts(item)
636+
self.assertEqual('1234', lambda_executors.Util.debug_java_port)
637+
self.assertEqual(item, result)
613638

614639
def prepare_java_opts(self, java_opts):
615640
lambda_executors.config.LAMBDA_JAVA_OPTS = java_opts

0 commit comments

Comments
 (0)