mirror of
				https://github.com/espressif/esp-idf.git
				synced 2025-11-04 00:51:42 +01:00 
			
		
		
		
	
		
			
	
	
		
			54 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			54 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								from __future__ import unicode_literals
							 | 
						||
| 
								 | 
							
								from pexpect import TIMEOUT
							 | 
						||
| 
								 | 
							
								from ttfw_idf import Utility
							 | 
						||
| 
								 | 
							
								import os
							 | 
						||
| 
								 | 
							
								import ttfw_idf
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@ttfw_idf.idf_example_test(env_tag="test_jtag_arm")
							 | 
						||
| 
								 | 
							
								def test_examples_gcov(env, extra_data):
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    rel_project_path = os.path.join('examples', 'system', 'gcov')
							 | 
						||
| 
								 | 
							
								    dut = env.get_dut('gcov', rel_project_path)
							 | 
						||
| 
								 | 
							
								    idf_path = dut.app.get_sdk_path()
							 | 
						||
| 
								 | 
							
								    proj_path = os.path.join(idf_path, rel_project_path)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    with ttfw_idf.OCDProcess(os.path.join(proj_path, 'openocd.log')):
							 | 
						||
| 
								 | 
							
								        with ttfw_idf.TelnetProcess(os.path.join(proj_path, 'telnet.log')) as telnet_p:
							 | 
						||
| 
								 | 
							
								            dut.start_app()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            def expect_counter_output(loop, timeout=10):
							 | 
						||
| 
								 | 
							
								                dut.expect_all('blink_dummy_func: Counter = {}'.format(loop),
							 | 
						||
| 
								 | 
							
								                               'some_dummy_func: Counter = {}'.format(loop * 2),
							 | 
						||
| 
								 | 
							
								                               timeout=timeout)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            expect_counter_output(0, timeout=20)
							 | 
						||
| 
								 | 
							
								            dut.expect('Ready to dump GCOV data...', timeout=5)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            def dump_coverage():
							 | 
						||
| 
								 | 
							
								                try:
							 | 
						||
| 
								 | 
							
								                    telnet_p.pexpect_proc.sendline('esp gcov dump')
							 | 
						||
| 
								 | 
							
								                    telnet_p.pexpect_proc.expect_exact('Targets connected.')
							 | 
						||
| 
								 | 
							
								                    telnet_p.pexpect_proc.expect_exact('gcov_example_main.c.gcda')
							 | 
						||
| 
								 | 
							
								                    telnet_p.pexpect_proc.expect_exact('gcov_example_func.c.gcda')
							 | 
						||
| 
								 | 
							
								                    telnet_p.pexpect_proc.expect_exact('some_funcs.c.gcda')
							 | 
						||
| 
								 | 
							
								                    telnet_p.pexpect_proc.expect_exact('Targets disconnected.')
							 | 
						||
| 
								 | 
							
								                except TIMEOUT:
							 | 
						||
| 
								 | 
							
								                    # Print what is happening with DUT. Limit the size if it is in loop and generating output.
							 | 
						||
| 
								 | 
							
								                    Utility.console_log(dut.read(size=1000))
							 | 
						||
| 
								 | 
							
								                    raise
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            dump_coverage()
							 | 
						||
| 
								 | 
							
								            dut.expect('GCOV data have been dumped.', timeout=5)
							 | 
						||
| 
								 | 
							
								            expect_counter_output(1)
							 | 
						||
| 
								 | 
							
								            dut.expect('Ready to dump GCOV data...', timeout=5)
							 | 
						||
| 
								 | 
							
								            dump_coverage()
							 | 
						||
| 
								 | 
							
								            dut.expect('GCOV data have been dumped.', timeout=5)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            for i in range(2, 6):
							 | 
						||
| 
								 | 
							
								                expect_counter_output(i)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if __name__ == '__main__':
							 | 
						||
| 
								 | 
							
								    test_examples_gcov()
							 |