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.py68
1 files changed, 63 insertions, 5 deletions
diff --git a/t/test_functionality.py b/t/test_functionality.py
index 6daf2d3..b60cb46 100644
--- a/t/test_functionality.py
+++ b/t/test_functionality.py
@@ -38,7 +38,8 @@ class BasicUsage(utils.AergiaUnitTestCase):
samples = self.Aergia.get_samples()
- self.assertFuncContains('b', [self.expected_samples(delay * num_times)],
+ self.assertFuncContains('b',
+ [self.expected_samples(delay * num_times)],
samples)
def test_simultaneous_tasks(self):
@@ -54,10 +55,10 @@ class BasicUsage(utils.AergiaUnitTestCase):
self.assertFuncContains('b', [self.expected_samples(delay * 3)],
samples)
- # TODO samples from gather all execution time, should we trace this??
+ # TODO samples from gather all execution time, should we trace this?
self.assertFuncContains('a', [self.expected_samples(delay)], samples)
- def test_alter_thread_task(self):
+ def test_subthread_task(self):
delay = 0.2
async def b(): await asyncio.sleep(delay)
@@ -74,7 +75,7 @@ class BasicUsage(utils.AergiaUnitTestCase):
self.assertFuncContains('c', [], samples)
self.assertFuncContains('b', [self.expected_samples(delay * 3)],
samples)
- # TODO samples from gather all execution time, should we trace this??
+ # TODO samples from gather all execution time, should we trace this?
self.assertFuncContains('a', [self.expected_samples(delay)], samples)
def test_eager_task(self):
@@ -91,6 +92,39 @@ class BasicUsage(utils.AergiaUnitTestCase):
samples = self.Aergia.get_samples()
self.assertFuncContains('a', [self.expected_samples(delay)], samples)
+ def test_async_generator(self):
+ delay = 0.2
+ num_times = 10
+
+ async def b():
+ for i in range(num_times):
+ await asyncio.sleep(delay)
+ yield i
+
+ async def a():
+ lst = []
+ async for item in b():
+ lst.append(item)
+
+ self.Aergia.start()
+ asyncio.run(a())
+ self.Aergia.stop()
+
+ samples = self.Aergia.get_samples()
+ # TODO can we make these results more intuitive?
+ # async generators also do not work at all with yappi.
+ # doing so would be unique to this profiler.
+
+ # self.assertFuncContains('b',
+ # [self.expected_samples(delay * num_times)],
+ # samples)
+ # self.assertFuncContains('a', [], samples)
+
+ self.assertFuncContains('a',
+ [self.expected_samples(delay * num_times)],
+ samples)
+ self.assertFuncContains('b', [], samples)
+
def test_async_gen_and_comp(self):
delay = 0.2
num_times = 10
@@ -108,5 +142,29 @@ class BasicUsage(utils.AergiaUnitTestCase):
self.Aergia.stop()
samples = self.Aergia.get_samples()
- self.assertFuncContains('b', [self.expected_samples(delay * num_times)],
+ # TODO can we make these results more intuitive?
+ # async generators also do not work at all with yappi.
+ # doing so would be unique to this profiler.
+
+ self.assertFuncContains('b', [], samples)
+ self.assertFuncContains('a', [], samples)
+ self.assertFuncContains('<listcomp>',
+ [self.expected_samples(delay * num_times)],
samples)
+
+ def test_deep_await(self):
+ delay = 0.2
+
+ async def c(): await asyncio.sleep(delay)
+ async def b(): await c()
+ async def a(): await b()
+
+ self.Aergia.start()
+ asyncio.run(a())
+ self.Aergia.stop()
+
+ samples = self.Aergia.get_samples()
+
+ self.assertFuncContains('c', [self.expected_samples(delay)], samples)
+ self.assertFuncContains('b', [], samples)
+ self.assertFuncContains('a', [], samples)