diff options
author | Daniel Friesel <daniel.friesel@uos.de> | 2019-11-26 10:42:07 +0100 |
---|---|---|
committer | Daniel Friesel <daniel.friesel@uos.de> | 2019-11-26 10:42:07 +0100 |
commit | 5dbed828f25d1676251f26472a8279ff2367514a (patch) | |
tree | ff4402a771ad3f08cc7b832f7c9752d8899a24cf /test | |
parent | cf056f82c413f320aaa6c816f5f0dce92e8a1775 (diff) |
autopep8
Diffstat (limited to 'test')
-rwxr-xr-x | test/test_codegen.py | 119 | ||||
-rwxr-xr-x | test/test_pta.py | 483 | ||||
-rwxr-xr-x | test/test_ptamodel.py | 39 | ||||
-rwxr-xr-x | test/test_timingharness.py | 14 |
4 files changed, 328 insertions, 327 deletions
diff --git a/test/test_codegen.py b/test/test_codegen.py index e9b4067..bdde484 100755 --- a/test/test_codegen.py +++ b/test/test_codegen.py @@ -5,87 +5,88 @@ from codegen import get_simulated_accountingmethod import unittest example_json_1 = { - 'parameters' : ['datarate', 'txbytes', 'txpower'], - 'initial_param_values' : [None, None, None], - 'state' : { - 'IDLE' : { - 'power' : { - 'static' : 5, + 'parameters': ['datarate', 'txbytes', 'txpower'], + 'initial_param_values': [None, None, None], + 'state': { + 'IDLE': { + 'power': { + 'static': 5, } }, - 'TX' : { - 'power' : { - 'static' : 100, - 'function' : { - 'raw' : 'regression_arg(0) + regression_arg(1)' - ' * parameter(txpower)', - 'regression_args' : [ 100, 2 ] + 'TX': { + 'power': { + 'static': 100, + 'function': { + 'raw': 'regression_arg(0) + regression_arg(1)' + ' * parameter(txpower)', + 'regression_args': [100, 2] }, } }, }, - 'transitions' : [ + 'transitions': [ { - 'name' : 'init', - 'origin' : ['UNINITIALIZED', 'IDLE'], - 'destination' : 'IDLE', - 'duration' : { - 'static' : 50000, + 'name': 'init', + 'origin': ['UNINITIALIZED', 'IDLE'], + 'destination': 'IDLE', + 'duration': { + 'static': 50000, }, - 'set_param' : { - 'txpower' : 10 + 'set_param': { + 'txpower': 10 }, }, { - 'name' : 'setTxPower', - 'origin' : 'IDLE', - 'destination' : 'IDLE', - 'duration' : { 'static' : 120 }, - 'energy ' : { 'static' : 10000 }, - 'arg_to_param_map' : { 0: 'txpower'}, - 'argument_values' : [ [10, 20, 30] ], + 'name': 'setTxPower', + 'origin': 'IDLE', + 'destination': 'IDLE', + 'duration': {'static': 120}, + 'energy ': {'static': 10000}, + 'arg_to_param_map': {0: 'txpower'}, + 'argument_values': [[10, 20, 30]], }, { - 'name' : 'send', - 'origin' : 'IDLE', - 'destination' : 'TX', - 'duration' : { - 'static' : 10, - 'function' : { - 'raw' : 'regression_arg(0) + regression_arg(1)' - ' * function_arg(1)', - 'regression_args' : [48, 8], + 'name': 'send', + 'origin': 'IDLE', + 'destination': 'TX', + 'duration': { + 'static': 10, + 'function': { + 'raw': 'regression_arg(0) + regression_arg(1)' + ' * function_arg(1)', + 'regression_args': [48, 8], }, }, - 'energy' : { - 'static' : 3, - 'function' : { - 'raw' : 'regression_arg(0) + regression_arg(1)' - ' * function_arg(1)', - 'regression_args' : [3, 5], + 'energy': { + 'static': 3, + 'function': { + 'raw': 'regression_arg(0) + regression_arg(1)' + ' * function_arg(1)', + 'regression_args': [3, 5], }, }, - 'arg_to_param_map' : { 1: 'txbytes'}, - 'argument_values' : [ ['"foo"', '"hodor"'], [3, 5] ], - 'argument_combination' : 'zip', + 'arg_to_param_map': {1: 'txbytes'}, + 'argument_values': [['"foo"', '"hodor"'], [3, 5]], + 'argument_combination': 'zip', }, { - 'name' : 'txComplete', - 'origin' : 'TX', - 'destination' : 'IDLE', - 'is_interrupt' : 1, - 'timeout' : { - 'static' : 2000, - 'function' : { - 'raw' : 'regression_arg(0) + regression_arg(1)' - ' * parameter(txbytes)', - 'regression_args' : [ 500, 16 ], + 'name': 'txComplete', + 'origin': 'TX', + 'destination': 'IDLE', + 'is_interrupt': 1, + 'timeout': { + 'static': 2000, + 'function': { + 'raw': 'regression_arg(0) + regression_arg(1)' + ' * parameter(txbytes)', + 'regression_args': [500, 16], }, }, } ], } + class TestCG(unittest.TestCase): def test_statetransition_immediate(self): pta = PTA.from_json(example_json_1) @@ -119,11 +120,11 @@ class TestCG(unittest.TestCase): cg.sleep(90) self.assertEqual(cg.get_energy(), 900) - pta.state['IDLE'].power = 9 # -> 90 uW - pta.transitions[1].energy = 1 # -> 100 pJ + pta.state['IDLE'].power = 9 # -> 90 uW + pta.transitions[1].energy = 1 # -> 100 pJ cg = get_simulated_accountingmethod('static_statetransition_immediate')(pta, 1000000, 'uint8_t', 'uint8_t', 'uint8_t', 'uint8_t', 1e-5, 1e-5, 1e-10) cg.current_state = pta.state['IDLE'] - cg.sleep(10) # 10 us + cg.sleep(10) # 10 us self.assertEqual(cg.get_energy(), 90 * 10) cg.pass_transition(pta.transitions[1]) self.assertAlmostEqual(cg.get_energy(), 90 * 10 + 100, places=0) diff --git a/test/test_pta.py b/test/test_pta.py index ff67fb5..5158005 100755 --- a/test/test_pta.py +++ b/test/test_pta.py @@ -5,81 +5,81 @@ import unittest import yaml example_json_1 = { - 'parameters' : ['datarate', 'txbytes', 'txpower'], - 'initial_param_values' : [None, None, None], - 'state' : { - 'IDLE' : { - 'power' : { - 'static' : 5, + 'parameters': ['datarate', 'txbytes', 'txpower'], + 'initial_param_values': [None, None, None], + 'state': { + 'IDLE': { + 'power': { + 'static': 5, } }, - 'TX' : { - 'power' : { - 'static' : 10000, - 'function' : { - 'raw' : 'regression_arg(0) + regression_arg(1)' - ' * parameter(txpower)', - 'regression_args' : [ 10000, 2 ] + 'TX': { + 'power': { + 'static': 10000, + 'function': { + 'raw': 'regression_arg(0) + regression_arg(1)' + ' * parameter(txpower)', + 'regression_args': [10000, 2] }, } }, }, - 'transitions' : [ + 'transitions': [ { - 'name' : 'init', - 'origin' : ['UNINITIALIZED', 'IDLE'], - 'destination' : 'IDLE', - 'duration' : { - 'static' : 50000, + 'name': 'init', + 'origin': ['UNINITIALIZED', 'IDLE'], + 'destination': 'IDLE', + 'duration': { + 'static': 50000, }, - 'set_param' : { - 'txpower' : 10 + 'set_param': { + 'txpower': 10 }, }, { - 'name' : 'setTxPower', - 'origin' : 'IDLE', - 'destination' : 'IDLE', - 'duration' : { 'static' : 120 }, - 'energy ' : { 'static' : 10000 }, - 'arg_to_param_map' : { 0: 'txpower'}, - 'argument_values' : [ [10, 20, 30] ], + 'name': 'setTxPower', + 'origin': 'IDLE', + 'destination': 'IDLE', + 'duration': {'static': 120}, + 'energy ': {'static': 10000}, + 'arg_to_param_map': {0: 'txpower'}, + 'argument_values': [[10, 20, 30]], }, { - 'name' : 'send', - 'origin' : 'IDLE', - 'destination' : 'TX', - 'duration' : { - 'static' : 10, - 'function' : { - 'raw' : 'regression_arg(0) + regression_arg(1)' - ' * function_arg(1)', - 'regression_args' : [48, 8], + 'name': 'send', + 'origin': 'IDLE', + 'destination': 'TX', + 'duration': { + 'static': 10, + 'function': { + 'raw': 'regression_arg(0) + regression_arg(1)' + ' * function_arg(1)', + 'regression_args': [48, 8], }, }, - 'energy' : { - 'static' : 3, - 'function' : { - 'raw' : 'regression_arg(0) + regression_arg(1)' - ' * function_arg(1)', - 'regression_args' : [3, 5], + 'energy': { + 'static': 3, + 'function': { + 'raw': 'regression_arg(0) + regression_arg(1)' + ' * function_arg(1)', + 'regression_args': [3, 5], }, }, - 'arg_to_param_map' : { 1: 'txbytes'}, - 'argument_values' : [ ['"foo"', '"hodor"'], [3, 5] ], - 'argument_combination' : 'zip', + 'arg_to_param_map': {1: 'txbytes'}, + 'argument_values': [['"foo"', '"hodor"'], [3, 5]], + 'argument_combination': 'zip', }, { - 'name' : 'txComplete', - 'origin' : 'TX', - 'destination' : 'IDLE', - 'is_interrupt' : 1, - 'timeout' : { - 'static' : 2000, - 'function' : { - 'raw' : 'regression_arg(0) + regression_arg(1)' - ' * parameter(txbytes)', - 'regression_args' : [ 500, 16 ], + 'name': 'txComplete', + 'origin': 'TX', + 'destination': 'IDLE', + 'is_interrupt': 1, + 'timeout': { + 'static': 2000, + 'function': { + 'raw': 'regression_arg(0) + regression_arg(1)' + ' * parameter(txbytes)', + 'regression_args': [500, 16], }, }, } @@ -262,6 +262,7 @@ transition: argument_combination: zip """) + def dfs_tran_to_name(runs: list, with_args: bool = False, with_param: bool = False) -> list: if with_param: return list(map(lambda run: list(map(lambda x: (x[0].name, x[1], x[2]), run)), runs)) @@ -269,6 +270,7 @@ def dfs_tran_to_name(runs: list, with_args: bool = False, with_param: bool = Fal return list(map(lambda run: list(map(lambda x: (x[0].name, x[1]), run)), runs)) return list(map(lambda run: list(map(lambda x: (x[0].name), run)), runs)) + class TestPTA(unittest.TestCase): def test_dfs(self): pta = PTA(['IDLE', 'TX']) @@ -287,9 +289,9 @@ class TestPTA(unittest.TestCase): self.assertEqual(dfs_tran_to_name(pta.dfs(0), False), [['init']]) self.assertEqual(sorted(dfs_tran_to_name(pta.dfs(1), False)), [['init', 'set1'], ['init', 'set2']]) self.assertEqual(sorted(dfs_tran_to_name(pta.dfs(2), False)), [['init', 'set1', 'set1'], - ['init', 'set1', 'set2'], - ['init', 'set2', 'set1'], - ['init', 'set2', 'set2']]) + ['init', 'set1', 'set2'], + ['init', 'set2', 'set1'], + ['init', 'set2', 'set2']]) def test_dfs_trace_filter(self): pta = PTA(['IDLE']) @@ -297,12 +299,12 @@ class TestPTA(unittest.TestCase): pta.add_transition('IDLE', 'IDLE', 'set1') pta.add_transition('IDLE', 'IDLE', 'set2') self.assertEqual(sorted(dfs_tran_to_name(pta.dfs(2, trace_filter=[['init', 'set1', 'set2'], ['init', 'set2', 'set1']]), False)), - [['init', 'set1', 'set2'], ['init', 'set2', 'set1']]) + [['init', 'set1', 'set2'], ['init', 'set2', 'set1']]) self.assertEqual(sorted(dfs_tran_to_name(pta.dfs(2, trace_filter=[['init', 'set1', '$'], ['init', 'set2', '$']]), False)), - [['init', 'set1'], ['init', 'set2']]) + [['init', 'set1'], ['init', 'set2']]) def test_dfs_accepting(self): - pta = PTA(['IDLE', 'TX'], accepting_states = ['IDLE']) + pta = PTA(['IDLE', 'TX'], accepting_states=['IDLE']) pta.add_transition('UNINITIALIZED', 'IDLE', 'init') pta.add_transition('IDLE', 'TX', 'send') pta.add_transition('TX', 'IDLE', 'txComplete') @@ -332,7 +334,7 @@ class TestPTA(unittest.TestCase): pta.add_transition('UNINITIALIZED', 'IDLE', 'init') pta.add_transition('IDLE', 'TX', 'send') pta.add_transition('TX', 'IDLE', 'txComplete') - traces = list(pta.dfs(2, sleep = 10)) + traces = list(pta.dfs(2, sleep=10)) self.assertEqual(len(traces), 1) trace = traces[0] self.assertEqual(len(trace), 6) @@ -359,7 +361,7 @@ class TestPTA(unittest.TestCase): self.assertEqual(pta.transitions[3].name, 'send') self.assertEqual(pta.transitions[4].name, 'txComplete') - #def test_to_json(self): + # def test_to_json(self): # pta = PTA.from_json(example_json_1) # json = pta.to_json() # json['state'].pop('UNINITIALIZED') @@ -369,152 +371,149 @@ class TestPTA(unittest.TestCase): def test_from_json_dfs_arg(self): pta = PTA.from_json(example_json_1) self.assertEqual(sorted(dfs_tran_to_name(pta.dfs(1), False)), [['init', 'init'], ['init', 'send'], ['init', 'setTxPower']]) - self.assertEqual(sorted(dfs_tran_to_name(pta.dfs(1, with_arguments = True), True)), - [ - [('init', ()), ('init', ())], - [('init', ()), ('send', ('"foo"', 3))], - [('init', ()), ('send', ('"hodor"', 5))], - [('init', ()), ('setTxPower', (10,))], - [('init', ()), ('setTxPower', (20,))], - [('init', ()), ('setTxPower', (30,))], - ] + self.assertEqual(sorted(dfs_tran_to_name(pta.dfs(1, with_arguments=True), True)), + [ + [('init', ()), ('init', ())], + [('init', ()), ('send', ('"foo"', 3))], + [('init', ()), ('send', ('"hodor"', 5))], + [('init', ()), ('setTxPower', (10,))], + [('init', ()), ('setTxPower', (20,))], + [('init', ()), ('setTxPower', (30,))], + ] ) def test_from_json_dfs_param(self): pta = PTA.from_json(example_json_1) no_param = { - 'datarate' : None, - 'txbytes' : None, - 'txpower' : None, + 'datarate': None, + 'txbytes': None, + 'txpower': None, } param_tx3 = { - 'datarate' : None, - 'txbytes' : 3, - 'txpower' : None, + 'datarate': None, + 'txbytes': 3, + 'txpower': None, } param_tx5 = { - 'datarate' : None, - 'txbytes' : 5, - 'txpower' : None, + 'datarate': None, + 'txbytes': 5, + 'txpower': None, } param_txp10 = { - 'datarate' : None, - 'txbytes' : None, - 'txpower' : 10, + 'datarate': None, + 'txbytes': None, + 'txpower': 10, } param_txp20 = { - 'datarate' : None, - 'txbytes' : None, - 'txpower' : 20, + 'datarate': None, + 'txbytes': None, + 'txpower': 20, } param_txp30 = { - 'datarate' : None, - 'txbytes' : None, - 'txpower' : 30, + 'datarate': None, + 'txbytes': None, + 'txpower': 30, } - self.assertEqual(sorted(dfs_tran_to_name(pta.dfs(1, with_arguments = True, with_parameters = True), True, True)), - [ - [('init', (), no_param), ('init', (), no_param)], - [('init', (), no_param), ('send', ('"foo"', 3), param_tx3)], - [('init', (), no_param), ('send', ('"hodor"', 5), param_tx5)], - [('init', (), no_param), ('setTxPower', (10,), param_txp10)], - [('init', (), no_param), ('setTxPower', (20,), param_txp20)], - [('init', (), no_param), ('setTxPower', (30,), param_txp30)], - ] + self.assertEqual(sorted(dfs_tran_to_name(pta.dfs(1, with_arguments=True, with_parameters=True), True, True)), + [ + [('init', (), no_param), ('init', (), no_param)], + [('init', (), no_param), ('send', ('"foo"', 3), param_tx3)], + [('init', (), no_param), ('send', ('"hodor"', 5), param_tx5)], + [('init', (), no_param), ('setTxPower', (10,), param_txp10)], + [('init', (), no_param), ('setTxPower', (20,), param_txp20)], + [('init', (), no_param), ('setTxPower', (30,), param_txp30)], + ] ) def test_from_json_function(self): pta = PTA.from_json(example_json_1) - self.assertEqual(pta.state['TX'].get_energy(1000, {'datarate' : 10, 'txbytes' : 6, 'txpower' : 10 }), 1000 * (10000 + 2 * 10)) - self.assertEqual(pta.transitions[4].get_timeout({'datarate' : 10, 'txbytes' : 6, 'txpower' : 10 }), 500 + 16 * 6) - - def test_from_yaml(self): - pta = PTA.from_yaml(example_yaml_1) + self.assertEqual(pta.state['TX'].get_energy(1000, {'datarate': 10, 'txbytes': 6, 'txpower': 10}), 1000 * (10000 + 2 * 10)) + self.assertEqual(pta.transitions[4].get_timeout({'datarate': 10, 'txbytes': 6, 'txpower': 10}), 500 + 16 * 6) def test_from_yaml_dfs_param(self): pta = PTA.from_yaml(example_yaml_1) no_param = { - 'datarate' : None, - 'txbytes' : None, - 'txpower' : None, + 'datarate': None, + 'txbytes': None, + 'txpower': None, } param_tx3 = { - 'datarate' : None, - 'txbytes' : 3, - 'txpower' : None, + 'datarate': None, + 'txbytes': 3, + 'txpower': None, } param_tx5 = { - 'datarate' : None, - 'txbytes' : 5, - 'txpower' : None, + 'datarate': None, + 'txbytes': 5, + 'txpower': None, } param_txp10 = { - 'datarate' : None, - 'txbytes' : None, - 'txpower' : 10, + 'datarate': None, + 'txbytes': None, + 'txpower': 10, } param_txp20 = { - 'datarate' : None, - 'txbytes' : None, - 'txpower' : 20, + 'datarate': None, + 'txbytes': None, + 'txpower': 20, } param_txp30 = { - 'datarate' : None, - 'txbytes' : None, - 'txpower' : 30, + 'datarate': None, + 'txbytes': None, + 'txpower': 30, } - self.assertEqual(sorted(dfs_tran_to_name(pta.dfs(1, with_arguments = True, with_parameters = True), True, True)), - [ - [('init', (), no_param), ('init', (), no_param)], - [('init', (), no_param), ('send', ('"foo"', 3), param_tx3)], - [('init', (), no_param), ('send', ('"hodor"', 5), param_tx5)], - [('init', (), no_param), ('setTxPower', (10,), param_txp10)], - [('init', (), no_param), ('setTxPower', (20,), param_txp20)], - [('init', (), no_param), ('setTxPower', (30,), param_txp30)], - ] + self.assertEqual(sorted(dfs_tran_to_name(pta.dfs(1, with_arguments=True, with_parameters=True), True, True)), + [ + [('init', (), no_param), ('init', (), no_param)], + [('init', (), no_param), ('send', ('"foo"', 3), param_tx3)], + [('init', (), no_param), ('send', ('"hodor"', 5), param_tx5)], + [('init', (), no_param), ('setTxPower', (10,), param_txp10)], + [('init', (), no_param), ('setTxPower', (20,), param_txp20)], + [('init', (), no_param), ('setTxPower', (30,), param_txp30)], + ] ) def test_normalization(self): pta = PTA.from_yaml(example_yaml_2) no_param = { - 'datarate' : None, - 'txbytes' : None, - 'txpower' : None, + 'datarate': None, + 'txbytes': None, + 'txpower': None, } param_tx3 = { - 'datarate' : None, - 'txbytes' : 3, - 'txpower' : None, + 'datarate': None, + 'txbytes': 3, + 'txpower': None, } param_tx6 = { - 'datarate' : None, - 'txbytes' : 6, - 'txpower' : None, + 'datarate': None, + 'txbytes': 6, + 'txpower': None, } param_txp10 = { - 'datarate' : None, - 'txbytes' : None, - 'txpower' : -6, + 'datarate': None, + 'txbytes': None, + 'txpower': -6, } param_txp20 = { - 'datarate' : None, - 'txbytes' : None, - 'txpower' : 4, + 'datarate': None, + 'txbytes': None, + 'txpower': 4, } param_txp30 = { - 'datarate' : None, - 'txbytes' : None, - 'txpower' : 14, + 'datarate': None, + 'txbytes': None, + 'txpower': 14, } - self.assertEqual(sorted(dfs_tran_to_name(pta.dfs(1, with_arguments = True, with_parameters = True), True, True)), - [ - [('init', (), no_param), ('init', (), no_param)], - [('init', (), no_param), ('send', ('FOO',), param_tx3)], - [('init', (), no_param), ('send', ('LONGER',), param_tx6)], - [('init', (), no_param), ('setTxPower', (10,), param_txp10)], - [('init', (), no_param), ('setTxPower', (20,), param_txp20)], - [('init', (), no_param), ('setTxPower', (30,), param_txp30)], - ] + self.assertEqual(sorted(dfs_tran_to_name(pta.dfs(1, with_arguments=True, with_parameters=True), True, True)), + [ + [('init', (), no_param), ('init', (), no_param)], + [('init', (), no_param), ('send', ('FOO',), param_tx3)], + [('init', (), no_param), ('send', ('LONGER',), param_tx6)], + [('init', (), no_param), ('setTxPower', (10,), param_txp10)], + [('init', (), no_param), ('setTxPower', (20,), param_txp20)], + [('init', (), no_param), ('setTxPower', (30,), param_txp30)], + ] ) def test_shrink(self): @@ -530,15 +529,15 @@ class TestPTA(unittest.TestCase): self.assertEqual(pta.transitions[1].argument_values, [['Nrf24l01::RF24_PA_MIN', 'Nrf24l01::RF24_PA_MAX']]) self.assertEqual(pta.transitions[2].argument_values, [[0, 15], [0, 15]]) self.assertEqual(pta.transitions[5].argument_values, [['"foo"', '"foo"', '"foofoofoo"', '"foofoofoo"', '"123456789012345678901234567890"', - '"123456789012345678901234567890"'], [3, 3, 9, 9, 30, 30], [0, 1, 0, 1, 0, 1], [1, 1, 1, 1, 1, 1]]) + '"123456789012345678901234567890"'], [3, 3, 9, 9, 30, 30], [0, 1, 0, 1, 0, 1], [1, 1, 1, 1, 1, 1]]) def test_simulation(self): pta = PTA() - pta.add_state('IDLE', power = 5) - pta.add_state('TX', power = 100) - pta.add_transition('UNINITIALIZED', 'IDLE', 'init', duration = 50000) - pta.add_transition('IDLE', 'TX', 'send', energy = 3, duration = 10) - pta.add_transition('TX', 'IDLE', 'txComplete', timeout = 2000, is_interrupt = True) + pta.add_state('IDLE', power=5) + pta.add_state('TX', power=100) + pta.add_transition('UNINITIALIZED', 'IDLE', 'init', duration=50000) + pta.add_transition('IDLE', 'TX', 'send', energy=3, duration=10) + pta.add_transition('TX', 'IDLE', 'txComplete', timeout=2000, is_interrupt=True) trace = [ ['init'], [None, 10000000], @@ -555,12 +554,12 @@ class TestPTA(unittest.TestCase): self.assertEqual(parameters, {}) def test_simulation_param_none(self): - pta = PTA(parameters = ['txpower', 'length']) - pta.add_state('IDLE', power = 5) - pta.add_state('TX', power = 100) - pta.add_transition('UNINITIALIZED', 'IDLE', 'init', energy = 500000, duration = 50000) - pta.add_transition('IDLE', 'TX', 'send', energy = 3, duration = 10) - pta.add_transition('TX', 'IDLE', 'txComplete', timeout = 2000, is_interrupt = True) + pta = PTA(parameters=['txpower', 'length']) + pta.add_state('IDLE', power=5) + pta.add_state('TX', power=100) + pta.add_transition('UNINITIALIZED', 'IDLE', 'init', energy=500000, duration=50000) + pta.add_transition('IDLE', 'TX', 'send', energy=3, duration=10) + pta.add_transition('TX', 'IDLE', 'txComplete', timeout=2000, is_interrupt=True) trace = [ ['init'], ] @@ -571,19 +570,19 @@ class TestPTA(unittest.TestCase): self.assertEqual(duration, expected_duration) self.assertEqual(state.name, 'IDLE') self.assertEqual(parameters, { - 'txpower' : None, - 'length' : None + 'txpower': None, + 'length': None }) def test_simulation_param_update_function(self): - pta = PTA(parameters = ['txpower', 'length']) - pta.add_state('IDLE', power = 5) - pta.add_state('TX', power = 100) - pta.add_transition('UNINITIALIZED', 'IDLE', 'init', energy = 500000, duration = 50000) - pta.add_transition('IDLE', 'IDLE', 'setTxPower', energy = 10000, duration = 120, - param_update_function = lambda param, arg: {**param, 'txpower' : arg[0]}) - pta.add_transition('IDLE', 'TX', 'send', energy = 3, duration = 10) - pta.add_transition('TX', 'IDLE', 'txComplete', timeout = 2000, is_interrupt = True) + pta = PTA(parameters=['txpower', 'length']) + pta.add_state('IDLE', power=5) + pta.add_state('TX', power=100) + pta.add_transition('UNINITIALIZED', 'IDLE', 'init', energy=500000, duration=50000) + pta.add_transition('IDLE', 'IDLE', 'setTxPower', energy=10000, duration=120, + param_update_function=lambda param, arg: {**param, 'txpower': arg[0]}) + pta.add_transition('IDLE', 'TX', 'send', energy=3, duration=10) + pta.add_transition('TX', 'IDLE', 'txComplete', timeout=2000, is_interrupt=True) trace = [ ['init'], ['setTxPower', 10] @@ -595,19 +594,19 @@ class TestPTA(unittest.TestCase): self.assertEqual(duration, expected_duration) self.assertEqual(state.name, 'IDLE') self.assertEqual(parameters, { - 'txpower' : 10, - 'length' : None + 'txpower': 10, + 'length': None }) def test_simulation_arg_to_param_map(self): - pta = PTA(parameters = ['txpower', 'length']) - pta.add_state('IDLE', power = 5) - pta.add_state('TX', power = 100) - pta.add_transition('UNINITIALIZED', 'IDLE', 'init', energy = 500000, duration = 50000) - pta.add_transition('IDLE', 'IDLE', 'setTxPower', energy = 10000, duration = 120, - arg_to_param_map = {0: 'txpower'}) - pta.add_transition('IDLE', 'TX', 'send', energy = 3, duration = 10) - pta.add_transition('TX', 'IDLE', 'txComplete', timeout = 2000, is_interrupt = True) + pta = PTA(parameters=['txpower', 'length']) + pta.add_state('IDLE', power=5) + pta.add_state('TX', power=100) + pta.add_transition('UNINITIALIZED', 'IDLE', 'init', energy=500000, duration=50000) + pta.add_transition('IDLE', 'IDLE', 'setTxPower', energy=10000, duration=120, + arg_to_param_map={0: 'txpower'}) + pta.add_transition('IDLE', 'TX', 'send', energy=3, duration=10) + pta.add_transition('TX', 'IDLE', 'txComplete', timeout=2000, is_interrupt=True) trace = [ ['init'], ['setTxPower', 10] @@ -619,15 +618,15 @@ class TestPTA(unittest.TestCase): self.assertEqual(duration, expected_duration) self.assertEqual(state.name, 'IDLE') self.assertEqual(parameters, { - 'txpower' : 10, - 'length' : None + 'txpower': 10, + 'length': None }) def test_simulation_set_param(self): - pta = PTA(parameters = ['txpower', 'length']) - pta.add_state('IDLE', power = 5) - pta.add_state('TX', power = 100) - pta.add_transition('UNINITIALIZED', 'IDLE', 'init', energy = 500000, duration = 50000, set_param = {'txpower' : 10}) + pta = PTA(parameters=['txpower', 'length']) + pta.add_state('IDLE', power=5) + pta.add_state('TX', power=100) + pta.add_transition('UNINITIALIZED', 'IDLE', 'init', energy=500000, duration=50000, set_param={'txpower': 10}) trace = [ ['init'], ] @@ -638,21 +637,21 @@ class TestPTA(unittest.TestCase): self.assertEqual(duration, expected_duration) self.assertEqual(state.name, 'IDLE') self.assertEqual(parameters, { - 'txpower' : 10, - 'length' : None + 'txpower': 10, + 'length': None }) def test_simulation_arg_function(self): - pta = PTA(parameters = ['txpower', 'length']) - pta.add_state('IDLE', power = 5) - pta.add_state('TX', power = 100) - pta.add_transition('UNINITIALIZED', 'IDLE', 'init', energy = 500000, duration = 50000) - pta.add_transition('IDLE', 'IDLE', 'setTxPower', energy = 10000, duration = 120, - param_update_function = lambda param, arg: {**param, 'txpower' : arg[0]}) - pta.add_transition('IDLE', 'TX', 'send', energy = 3, duration = 10, - energy_function = lambda param, arg: 3 + 5 * arg[1], - duration_function = lambda param, arg: 48 + 8 * arg[1]) - pta.add_transition('TX', 'IDLE', 'txComplete', timeout = 2000, is_interrupt = True) + pta = PTA(parameters=['txpower', 'length']) + pta.add_state('IDLE', power=5) + pta.add_state('TX', power=100) + pta.add_transition('UNINITIALIZED', 'IDLE', 'init', energy=500000, duration=50000) + pta.add_transition('IDLE', 'IDLE', 'setTxPower', energy=10000, duration=120, + param_update_function=lambda param, arg: {**param, 'txpower': arg[0]}) + pta.add_transition('IDLE', 'TX', 'send', energy=3, duration=10, + energy_function=lambda param, arg: 3 + 5 * arg[1], + duration_function=lambda param, arg: 48 + 8 * arg[1]) + pta.add_transition('TX', 'IDLE', 'txComplete', timeout=2000, is_interrupt=True) trace = [ ['init'], ['setTxPower', 10], @@ -665,20 +664,20 @@ class TestPTA(unittest.TestCase): self.assertEqual(duration, expected_duration) self.assertEqual(state.name, 'IDLE') self.assertEqual(parameters, { - 'txpower' : 10, - 'length' : None + 'txpower': 10, + 'length': None }) - pta = PTA(parameters = ['txpower', 'length']) - pta.add_state('IDLE', power = 5) - pta.add_state('TX', power = 100) - pta.add_transition('UNINITIALIZED', 'IDLE', 'init', energy = 500000, duration = 50000) - pta.add_transition('IDLE', 'IDLE', 'setTxPower', energy = 10000, duration = 120, - param_update_function = lambda param, arg: {**param, 'txpower' : arg[0]}) - pta.add_transition('IDLE', 'TX', 'send', energy = 3, duration = 10, - energy_function = lambda param, arg: 3 + 5 * arg[1], - duration_function = lambda param, arg: 48 + 8 * arg[1]) - pta.add_transition('TX', 'IDLE', 'txComplete', timeout = 2000, is_interrupt = True) + pta = PTA(parameters=['txpower', 'length']) + pta.add_state('IDLE', power=5) + pta.add_state('TX', power=100) + pta.add_transition('UNINITIALIZED', 'IDLE', 'init', energy=500000, duration=50000) + pta.add_transition('IDLE', 'IDLE', 'setTxPower', energy=10000, duration=120, + param_update_function=lambda param, arg: {**param, 'txpower': arg[0]}) + pta.add_transition('IDLE', 'TX', 'send', energy=3, duration=10, + energy_function=lambda param, arg: 3 + 5 * arg[1], + duration_function=lambda param, arg: 48 + 8 * arg[1]) + pta.add_transition('TX', 'IDLE', 'txComplete', timeout=2000, is_interrupt=True) trace = [ ['init'], ['setTxPower', 10], @@ -691,24 +690,23 @@ class TestPTA(unittest.TestCase): self.assertEqual(duration, expected_duration) self.assertEqual(state.name, 'IDLE') self.assertEqual(parameters, { - 'txpower' : 10, - 'length' : None + 'txpower': 10, + 'length': None }) - def test_simulation_param_function(self): - pta = PTA(parameters = ['length', 'txpower']) - pta.add_state('IDLE', power = 5) - pta.add_state('TX', power = 100, - power_function = lambda param, arg: 1000 + 2 * param[1]) - pta.add_transition('UNINITIALIZED', 'IDLE', 'init', energy = 500000, duration = 50000) - pta.add_transition('IDLE', 'IDLE', 'setTxPower', energy = 10000, duration = 120, - param_update_function = lambda param, arg: {**param, 'txpower' : arg[0]}) - pta.add_transition('IDLE', 'TX', 'send', energy = 3, duration = 10, - energy_function = lambda param, arg: 3 + 5 * arg[1], - param_update_function = lambda param, arg: {**param, 'length' : arg[1]}) - pta.add_transition('TX', 'IDLE', 'txComplete', timeout = 2000, is_interrupt = True, - timeout_function = lambda param, arg: 500 + 16 * param[0]) + pta = PTA(parameters=['length', 'txpower']) + pta.add_state('IDLE', power=5) + pta.add_state('TX', power=100, + power_function=lambda param, arg: 1000 + 2 * param[1]) + pta.add_transition('UNINITIALIZED', 'IDLE', 'init', energy=500000, duration=50000) + pta.add_transition('IDLE', 'IDLE', 'setTxPower', energy=10000, duration=120, + param_update_function=lambda param, arg: {**param, 'txpower': arg[0]}) + pta.add_transition('IDLE', 'TX', 'send', energy=3, duration=10, + energy_function=lambda param, arg: 3 + 5 * arg[1], + param_update_function=lambda param, arg: {**param, 'length': arg[1]}) + pta.add_transition('TX', 'IDLE', 'txComplete', timeout=2000, is_interrupt=True, + timeout_function=lambda param, arg: 500 + 16 * param[0]) trace = [ ['init'], ['setTxPower', 10], @@ -721,19 +719,18 @@ class TestPTA(unittest.TestCase): self.assertEqual(duration, expected_duration) self.assertEqual(state.name, 'IDLE') self.assertEqual(parameters, { - 'txpower' : 10, - 'length' : 3 + 'txpower': 10, + 'length': 3 }) def test_get_X_expensive_state(self): pta = PTA.from_json(example_json_1) self.assertEqual(pta.get_least_expensive_state(), pta.state['IDLE']) self.assertEqual(pta.get_most_expensive_state(), pta.state['TX']) - self.assertAlmostEqual(pta.min_duration_until_energy_overflow(), (2**32-1) * 1e-12 / 10e-3, places=9) - self.assertAlmostEqual(pta.min_duration_until_energy_overflow(energy_granularity = 1e-9), (2**32-1) * 1e-9 / 10e-3, places=9) - self.assertAlmostEqual(pta.max_duration_until_energy_overflow(), (2**32-1) * 1e-12 / 5e-6, places=9) - self.assertAlmostEqual(pta.max_duration_until_energy_overflow(energy_granularity = 1e-9), (2**32-1) * 1e-9 / 5e-6, places=9) - + self.assertAlmostEqual(pta.min_duration_until_energy_overflow(), (2**32 - 1) * 1e-12 / 10e-3, places=9) + self.assertAlmostEqual(pta.min_duration_until_energy_overflow(energy_granularity=1e-9), (2**32 - 1) * 1e-9 / 10e-3, places=9) + self.assertAlmostEqual(pta.max_duration_until_energy_overflow(), (2**32 - 1) * 1e-12 / 5e-6, places=9) + self.assertAlmostEqual(pta.max_duration_until_energy_overflow(energy_granularity=1e-9), (2**32 - 1) * 1e-9 / 5e-6, places=9) if __name__ == '__main__': diff --git a/test/test_ptamodel.py b/test/test_ptamodel.py index 36d2c11..6bd2f6a 100755 --- a/test/test_ptamodel.py +++ b/test/test_ptamodel.py @@ -5,12 +5,13 @@ import os import unittest import pytest + class TestModels(unittest.TestCase): def test_model_singlefile_rf24(self): raw_data = RawData(['test-data/20170220_164723_RF24_int_A.tar']) - preprocessed_data = raw_data.get_preprocessed_data(verbose = False) + preprocessed_data = raw_data.get_preprocessed_data(verbose=False) by_name, parameters, arg_count = pta_trace_to_aggregate(preprocessed_data) - model = PTAModel(by_name, parameters, arg_count, verbose = False) + model = PTAModel(by_name, parameters, arg_count, verbose=False) self.assertEqual(model.states(), 'POWERDOWN RX STANDBY1 TX'.split(' ')) self.assertEqual(model.transitions(), 'begin epilogue powerDown powerUp setDataRate_num setPALevel_num startListening stopListening write_nb'.split(' ')) static_model = model.get_static() @@ -62,25 +63,24 @@ class TestModels(unittest.TestCase): param_model, param_info = model.get_fitted() self.assertEqual(param_info('POWERDOWN', 'power'), None) self.assertEqual(param_info('RX', 'power')['function']._model_str, - '0 + regression_arg(0) + regression_arg(1) * np.sqrt(parameter(datarate))') + '0 + regression_arg(0) + regression_arg(1) * np.sqrt(parameter(datarate))') self.assertAlmostEqual(param_info('RX', 'power')['function']._regression_args[0], 48530.7, places=0) self.assertAlmostEqual(param_info('RX', 'power')['function']._regression_args[1], 117, places=0) self.assertEqual(param_info('STANDBY1', 'power'), None) self.assertEqual(param_info('TX', 'power')['function']._model_str, - '0 + regression_arg(0) + regression_arg(1) * 1/(parameter(datarate)) + regression_arg(2) * parameter(txpower) + regression_arg(3) * 1/(parameter(datarate)) * parameter(txpower)') + '0 + regression_arg(0) + regression_arg(1) * 1/(parameter(datarate)) + regression_arg(2) * parameter(txpower) + regression_arg(3) * 1/(parameter(datarate)) * parameter(txpower)') self.assertEqual(param_info('epilogue', 'timeout')['function']._model_str, - '0 + regression_arg(0) + regression_arg(1) * 1/(parameter(datarate))') + '0 + regression_arg(0) + regression_arg(1) * 1/(parameter(datarate))') self.assertEqual(param_info('stopListening', 'duration')['function']._model_str, - '0 + regression_arg(0) + regression_arg(1) * 1/(parameter(datarate))') + '0 + regression_arg(0) + regression_arg(1) * 1/(parameter(datarate))') self.assertAlmostEqual(param_model('RX', 'power', param=[1, None, None]), 48647, places=-1) - def test_model_singlefile_mmparam(self): raw_data = RawData(['test-data/20161221_123347_mmparam.tar']) - preprocessed_data = raw_data.get_preprocessed_data(verbose = False) + preprocessed_data = raw_data.get_preprocessed_data(verbose=False) by_name, parameters, arg_count = pta_trace_to_aggregate(preprocessed_data) - model = PTAModel(by_name, parameters, arg_count, verbose = False) + model = PTAModel(by_name, parameters, arg_count, verbose=False) self.assertEqual(model.states(), 'OFF ON'.split(' ')) self.assertEqual(model.transitions(), 'off setBrightness'.split(' ')) static_model = model.get_static() @@ -100,7 +100,7 @@ class TestModels(unittest.TestCase): param_lut_model('ON', 'power', param=['a']) param_lut_model('ON', 'power', param=[0]) self.assertTrue(param_lut_model('ON', 'power', param=[0, 0])) - param_lut_model = model.get_param_lut(fallback = True) + param_lut_model = model.get_param_lut(fallback=True) self.assertAlmostEqual(param_lut_model('ON', 'power', param=[None, None]), 17866, places=0) def test_model_multifile_lm75x(self): @@ -109,9 +109,9 @@ class TestModels(unittest.TestCase): 'test-data/20170116_131306_LM75x.tar', ] raw_data = RawData(testfiles) - preprocessed_data = raw_data.get_preprocessed_data(verbose = False) + preprocessed_data = raw_data.get_preprocessed_data(verbose=False) by_name, parameters, arg_count = pta_trace_to_aggregate(preprocessed_data) - model = PTAModel(by_name, parameters, arg_count, verbose = False) + model = PTAModel(by_name, parameters, arg_count, verbose=False) self.assertEqual(model.states(), 'ACTIVE POWEROFF'.split(' ')) self.assertEqual(model.transitions(), 'getTemp setHyst setOS shutdown start'.split(' ')) static_model = model.get_static() @@ -139,9 +139,9 @@ class TestModels(unittest.TestCase): 'test-data/20170116_151348_sharpLS013B4DN.tar', ] raw_data = RawData(testfiles) - preprocessed_data = raw_data.get_preprocessed_data(verbose = False) + preprocessed_data = raw_data.get_preprocessed_data(verbose=False) by_name, parameters, arg_count = pta_trace_to_aggregate(preprocessed_data) - model = PTAModel(by_name, parameters, arg_count, verbose = False) + model = PTAModel(by_name, parameters, arg_count, verbose=False) self.assertEqual(model.states(), 'DISABLED ENABLED'.split(' ')) self.assertEqual(model.transitions(), 'clear disable enable ioInit sendLine toggleVCOM'.split(' ')) static_model = model.get_static() @@ -172,9 +172,9 @@ class TestModels(unittest.TestCase): 'test-data/20170116_142654_mmstatic.tar', ] raw_data = RawData(testfiles) - preprocessed_data = raw_data.get_preprocessed_data(verbose = False) + preprocessed_data = raw_data.get_preprocessed_data(verbose=False) by_name, parameters, arg_count = pta_trace_to_aggregate(preprocessed_data) - model = PTAModel(by_name, parameters, arg_count, verbose = False) + model = PTAModel(by_name, parameters, arg_count, verbose=False) self.assertEqual(model.states(), 'B G OFF R'.split(' ')) self.assertEqual(model.transitions(), 'blue green off red'.split(' ')) static_model = model.get_static() @@ -206,9 +206,9 @@ class TestModels(unittest.TestCase): 'test-data/20170125_154019_cc1200.tar', ] raw_data = RawData(testfiles) - preprocessed_data = raw_data.get_preprocessed_data(verbose = False) + preprocessed_data = raw_data.get_preprocessed_data(verbose=False) by_name, parameters, arg_count = pta_trace_to_aggregate(preprocessed_data) - model = PTAModel(by_name, parameters, arg_count, verbose = False) + model = PTAModel(by_name, parameters, arg_count, verbose=False) self.assertEqual(model.states(), 'IDLE RX SLEEP SLEEP_EWOR SYNTH_ON TX XOFF'.split(' ')) self.assertEqual(model.transitions(), 'crystal_off eWOR idle init prepare_xmit receive send setSymbolRate setTxPower sleep txDone'.split(' ')) static_model = model.get_static() @@ -234,7 +234,7 @@ class TestModels(unittest.TestCase): param_model, param_info = model.get_fitted() self.assertEqual(param_info('IDLE', 'power'), None) self.assertEqual(param_info('RX', 'power')['function']._model_str, - '0 + regression_arg(0) + regression_arg(1) * np.log(parameter(symbolrate) + 1)') + '0 + regression_arg(0) + regression_arg(1) * np.log(parameter(symbolrate) + 1)') self.assertEqual(param_info('SLEEP', 'power'), None) self.assertEqual(param_info('SLEEP_EWOR', 'power'), None) self.assertEqual(param_info('SYNTH_ON', 'power'), None) @@ -243,5 +243,6 @@ class TestModels(unittest.TestCase): self.assertAlmostEqual(param_info('RX', 'power')['function']._regression_args[0], 84415, places=0) self.assertAlmostEqual(param_info('RX', 'power')['function']._regression_args[1], 206, places=0) + if __name__ == '__main__': unittest.main() diff --git a/test/test_timingharness.py b/test/test_timingharness.py index bf5ecee..8d5ec20 100755 --- a/test/test_timingharness.py +++ b/test/test_timingharness.py @@ -4,12 +4,13 @@ from dfatool import AnalyticModel, TimingData, pta_trace_to_aggregate from parameters import prune_dependent_parameters import unittest + class TestModels(unittest.TestCase): def test_model_singlefile_rf24(self): raw_data = TimingData(['test-data/20190815_111745_nRF24_no-rx.json']) - preprocessed_data = raw_data.get_preprocessed_data(verbose = False) + preprocessed_data = raw_data.get_preprocessed_data(verbose=False) by_name, parameters, arg_count = pta_trace_to_aggregate(preprocessed_data) - model = AnalyticModel(by_name, parameters, arg_count, verbose = False) + model = AnalyticModel(by_name, parameters, arg_count, verbose=False) self.assertEqual(model.names, 'setPALevel setRetries setup write'.split(' ')) static_model = model.get_static() self.assertAlmostEqual(static_model('setPALevel', 'duration'), 146, places=0) @@ -33,10 +34,10 @@ class TestModels(unittest.TestCase): def test_dependent_parameter_pruning(self): raw_data = TimingData(['test-data/20190815_103347_nRF24_no-rx.json']) - preprocessed_data = raw_data.get_preprocessed_data(verbose = False) + preprocessed_data = raw_data.get_preprocessed_data(verbose=False) by_name, parameters, arg_count = pta_trace_to_aggregate(preprocessed_data) prune_dependent_parameters(by_name, parameters) - model = AnalyticModel(by_name, parameters, arg_count, verbose = False) + model = AnalyticModel(by_name, parameters, arg_count, verbose=False) self.assertEqual(model.names, 'getObserveTx setPALevel setRetries setup write'.split(' ')) static_model = model.get_static() self.assertAlmostEqual(static_model('getObserveTx', 'duration'), 75, places=0) @@ -62,9 +63,9 @@ class TestModels(unittest.TestCase): def test_function_override(self): raw_data = TimingData(['test-data/20190815_122531_nRF24_no-rx.json']) - preprocessed_data = raw_data.get_preprocessed_data(verbose = False) + preprocessed_data = raw_data.get_preprocessed_data(verbose=False) by_name, parameters, arg_count = pta_trace_to_aggregate(preprocessed_data) - model = AnalyticModel(by_name, parameters, arg_count, verbose = False, function_override={('write', 'duration'): '(parameter(auto_ack!) * (regression_arg(0) + regression_arg(1) * parameter(max_retry_count) + regression_arg(2) * parameter(retry_delay) + regression_arg(3) * parameter(max_retry_count) * parameter(retry_delay))) + ((1 - parameter(auto_ack!)) * regression_arg(4))'}) + model = AnalyticModel(by_name, parameters, arg_count, verbose=False, function_override={('write', 'duration'): '(parameter(auto_ack!) * (regression_arg(0) + regression_arg(1) * parameter(max_retry_count) + regression_arg(2) * parameter(retry_delay) + regression_arg(3) * parameter(max_retry_count) * parameter(retry_delay))) + ((1 - parameter(auto_ack!)) * regression_arg(4))'}) self.assertEqual(model.names, 'setAutoAck setPALevel setRetries setup write'.split(' ')) static_model = model.get_static() self.assertAlmostEqual(static_model('setAutoAck', 'duration'), 72, places=0) @@ -89,5 +90,6 @@ class TestModels(unittest.TestCase): self.assertAlmostEqual(param_info('write', 'duration')['function']._regression_args[3], 1, places=0) self.assertAlmostEqual(param_info('write', 'duration')['function']._regression_args[4], 1086, places=0) + if __name__ == '__main__': unittest.main() |