Skip to content

Commit

Permalink
test: Add delay for time-related arm64 tests (#138)
Browse files Browse the repository at this point in the history
The tests on GitHub run on x86 instances (because arm64 instances don't
have Docker installed) so when running the arm64 tests, invokes take
longer because of the cross-architecture emulation. This caused that
some tests that check remaining time in the function were not landing
on the correct time range.

It's unknown why this delay started manifesting more consistently, we might
want to find a better solution in the future.
  • Loading branch information
valerena authored Dec 12, 2024
1 parent 71388dd commit 781cd9a
Showing 1 changed file with 13 additions and 9 deletions.
22 changes: 13 additions & 9 deletions test/integration/local_lambda/test_end_to_end.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,9 +173,8 @@ def test_context_get_remaining_time_in_three_seconds(self):
with self.create_container(params, image):
r = self.invoke_function()

# Execution time is not decided, 1.0s ~ 3.0s is a good estimation
self.assertLess(int(r.content), 3000)
self.assertGreater(int(r.content), 1000)
# Execution time is not decided, but it should be around 2.0s
self.assertAround(int(r.content), 2000)


def test_context_get_remaining_time_in_ten_seconds(self):
Expand All @@ -186,9 +185,8 @@ def test_context_get_remaining_time_in_ten_seconds(self):
with self.create_container(params, image):
r = self.invoke_function()

# Execution time is not decided, 8.0s ~ 10.0s is a good estimation
self.assertLess(int(r.content), 10000)
self.assertGreater(int(r.content), 8000)
# Execution time is not decided, but it should be around 9.0s
self.assertAround(int(r.content), 9000)


def test_context_get_remaining_time_in_default_deadline(self):
Expand All @@ -199,9 +197,8 @@ def test_context_get_remaining_time_in_default_deadline(self):
with self.create_container(params, image):
r = self.invoke_function()

# Executation time is not decided, 298.0s ~ 300.0s is a good estimation
self.assertLess(int(r.content), 300000)
self.assertGreater(int(r.content), 298000)
# Execution time is not decided, but it should be around 299.0s
self.assertAround(int(r.content), 299000)


def test_invoke_with_pre_runtime_api_runtime(self):
Expand Down Expand Up @@ -256,6 +253,13 @@ def test_custom_client_context(self):
self.assertEqual("bar", content["foo"])
self.assertEqual(123, content["baz"])

def assertAround(self, number, target):
# Emulating arm64 on x86 causes the invoke to take longer
delay_arm64 = 500
actual_target = target if self.ARCH != 'arm64' else target - delay_arm64

self.assertLess(number, actual_target + 1000)
self.assertGreater(number, actual_target - 1000)

if __name__ == "__main__":
main()

0 comments on commit 781cd9a

Please sign in to comment.