summaryrefslogtreecommitdiff
path: root/t/test_functionality.py
diff options
context:
space:
mode:
Diffstat (limited to 't/test_functionality.py')
-rw-r--r--t/test_functionality.py56
1 files changed, 50 insertions, 6 deletions
diff --git a/t/test_functionality.py b/t/test_functionality.py
index f0fa6ed..0302a90 100644
--- a/t/test_functionality.py
+++ b/t/test_functionality.py
@@ -1,7 +1,16 @@
+try:
+ import yappi
+except ImportError:
+ print("yappi module not found. Skipping related tests.")
+ exit(0)
import utils
import asyncio
import threading
+# A test file containing basic async functionality tests. Compares the results
+# of Aergia to both a calculated expected time and yappi reported time, done
+# simply to draw comparisons between the two approaches.
+
class TerminateTaskGroup(Exception):
'''Exception raised to terminate a task group.'''
@@ -39,10 +48,15 @@ class BasicUsage(utils.AergiaUnitTestCase):
self.Aergia.start()
asyncio.run(a())
self.Aergia.stop()
+ yappi.start()
+ asyncio.run(a())
+ yappi.stop()
- samples = self.Aergia.get_samples()
+ yappi_samples = yappi.get_func_stats()
+ aergia_samples = self.Aergia.get_samples()
- self.assert_reasonable_delay('b', delay * num_times, samples)
+ self.assert_reasonable_delay('b', delay * num_times, aergia_samples)
+ self.assert_similar_delay('b', yappi_samples, aergia_samples)
def test_simultaneous_tasks(self):
delay = 0.2
@@ -52,15 +66,22 @@ class BasicUsage(utils.AergiaUnitTestCase):
self.Aergia.start()
asyncio.run(a())
self.Aergia.stop()
+ yappi.start()
+ asyncio.run(a())
+ yappi.stop()
- samples = self.Aergia.get_samples()
+ yappi_samples = yappi.get_func_stats()
+ aergia_samples = self.Aergia.get_samples()
- self.assert_reasonable_delay('b', delay * 3, samples)
+ self.assert_reasonable_delay('b', delay * 3, aergia_samples)
# the gather function is technically waiting for all tasks to finish.
# This might be seen as unintuitive though I don't want to bias the
# results by adding logic to add artificial consistency.
# profiling does not mean obscuring implementation details.
- self.assert_reasonable_delay('a', delay, samples)
+ self.assert_reasonable_delay('a', delay, aergia_samples)
+
+ self.assert_similar_delay('b', yappi_samples, aergia_samples)
+ self.assert_similar_delay('a', yappi_samples, aergia_samples)
def test_subthread_task(self):
delay = 0.2
@@ -74,6 +95,11 @@ class BasicUsage(utils.AergiaUnitTestCase):
x.start()
x.join()
self.Aergia.stop()
+ yappi.start()
+ x = threading.Thread(target=c)
+ x.start()
+ x.join()
+ yappi.stop()
samples = self.Aergia.get_samples()
self.assert_reasonable_delay('c', 0, samples)
@@ -91,6 +117,9 @@ class BasicUsage(utils.AergiaUnitTestCase):
self.Aergia.start()
asyncio.run(a())
self.Aergia.stop()
+ yappi.start()
+ asyncio.run(a())
+ yappi.stop()
samples = self.Aergia.get_samples()
self.assert_reasonable_delay('a', delay, samples)
@@ -112,6 +141,9 @@ class BasicUsage(utils.AergiaUnitTestCase):
self.Aergia.start()
asyncio.run(a())
self.Aergia.stop()
+ yappi.start()
+ asyncio.run(a())
+ yappi.stop()
samples = self.Aergia.get_samples()
self.assert_reasonable_delay('a', d1 + d2 + d3 + d4, samples)
@@ -180,6 +212,9 @@ class BasicUsage(utils.AergiaUnitTestCase):
self.Aergia.start()
asyncio.run(a())
self.Aergia.stop()
+ yappi.start()
+ asyncio.run(a())
+ yappi.stop()
samples = self.Aergia.get_samples()
@@ -205,6 +240,9 @@ class BasicUsage(utils.AergiaUnitTestCase):
self.Aergia.start()
asyncio.run(a())
self.Aergia.stop()
+ yappi.start()
+ asyncio.run(a())
+ yappi.stop()
samples = self.Aergia.get_samples()
@@ -242,6 +280,9 @@ class BasicUsage(utils.AergiaUnitTestCase):
self.Aergia.start()
asyncio.run(a())
self.Aergia.stop()
+ yappi.start()
+ asyncio.run(a())
+ yappi.stop()
samples = self.Aergia.get_samples()
@@ -265,5 +306,8 @@ class BasicUsage(utils.AergiaUnitTestCase):
self.Aergia.start()
asyncio.run(a(3))
self.Aergia.stop()
+ yappi.start()
+ asyncio.run(a(3))
+ yappi.stop()
- samples = self.Aergia.get_samples()
+ # samples = self.Aergia.get_samples()