mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 18:35:42 +01:00 
			
		
		
		
	introduce a README how to use tbot for testing U-Boot and/or linux kernels. Signed-off-by: Heiko Schocher <hs@denx.de>
		
			
				
	
	
		
			118 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # Copyright (c) 2016 DENX Software Engineering GmbH
 | |
| # Heiko Schocher <hs@denx.de>
 | |
| #
 | |
| # SPDX-License-Identifier:	GPL-2.0+
 | |
| #
 | |
| 
 | |
| write a new testcase
 | |
| =====================
 | |
| 
 | |
| A TC is written in python, so you can use python as usual. For accessing
 | |
| the boards console, use functions from the tbotlib, therefore
 | |
| 
 | |
| First import the tbotlib with the line:
 | |
| 
 | |
|   from tbotlib import tbot
 | |
| 
 | |
| If your TC uses variables, please add a line which adds them to
 | |
| the log file (for debugging purposes):
 | |
| 
 | |
|   logging.info("args: %s ...", tb.varname, ...)
 | |
| 
 | |
| Say tbot, for which board state your TC is valid with:
 | |
| 
 | |
|   tb.set_board_state("u-boot")
 | |
| 
 | |
| Then you are ready ... and you can use the tbotlib funtions
 | |
| for writting/reading to the boards console.
 | |
| 
 | |
| Big fat warning:
 | |
| 
 | |
| A TC must worry about to end only if a board has finished the shell
 | |
| command!
 | |
| 
 | |
| Not following this rule, will end in unpredictable behaviour.
 | |
| 
 | |
| (hopefully) useful tbotlib functions
 | |
| ====================================
 | |
| - set the board state, you want to test
 | |
|   tb.set_board_state(state)
 | |
|   states are: "u-boot" or "linux"
 | |
|   If tbot could not set the board state, tbot ends with failure.
 | |
| 
 | |
| - write a command to the boards console:
 | |
|   tb.eof_write_con(command):
 | |
|     write the command to the boards console. If this
 | |
|     fails, tbot ends with failure
 | |
| 
 | |
| - write a command to boards console and wait for prompt:
 | |
|   tb.eof_write_cmd(fd, command):
 | |
|     fd: filedescriptor which is used, use tb.channel_con for boards console
 | |
|     command: command which is written to fd
 | |
| 
 | |
|     Wait endless for board prompt
 | |
| 
 | |
| - write a list of commands to boards console:
 | |
|   tb.eof_write_cmd_list(fd, cmdlist):
 | |
|     fd: filedescriptor which is used, use tb.channel_con for boards console
 | |
|     cmdlist: python list of commandstrings which is written to fd
 | |
| 
 | |
| - wait for boards prompt:
 | |
|   tb.eof_read_end_state_con(retry):
 | |
|     retry: deprecated, not used anymore, cleanup needed here...
 | |
|     tbot waits endless for the boards prompt
 | |
| 
 | |
| - write a command, wait for prompt and check, if a string is read
 | |
|   tb.write_cmd_check(fd, cmd, string):
 | |
|     fd: filedescriptor which is used, use tb.channel_con for boards console
 | |
|     cmd: command, which is send to fd
 | |
|     string: string which should be read from fd
 | |
| 
 | |
|     return value:
 | |
|       True, if string is read and tbot got back boards prompt
 | |
|       False, else
 | |
| 
 | |
|   tb.eof_write_cmd_check(fd, cmd, string):
 | |
|     same as tb.write_cmd_check(fd, cmd, string) except, that tbot
 | |
|     ends immediately with Failure, if string is not read.
 | |
| 
 | |
| - read until prompt and search strings:
 | |
|   tb.readline_and_search_strings(fd, strings):
 | |
|     fd: filedescriptor which is used, use tb.channel_con for boards console
 | |
|     strings: python list of strings, which can be read
 | |
|       If one of this strings is read, this function return the index, which
 | |
|       string is read. This function shoud be called in a while loop,
 | |
|       until this function returns 'prompt'
 | |
| 
 | |
| - read a line from filedescriptor:
 | |
|   not recommended to use, as the TC must check, if tprompt is read for every
 | |
|   readen line. Also TC must ensure, that it ends only, if prompt is read.
 | |
|   tb.read_line(fd, retry)
 | |
|     fd: filedescriptor which is used, use tb.channel_con for boards console
 | |
|     retry: retry of trying to reead a line
 | |
| 
 | |
|   return values:
 | |
|     True, if a line is read. Readen line in tb.buf[fd]
 | |
|     False, if something read, but not a complete line
 | |
|     None, if nothing is read
 | |
| 
 | |
|   check if string contains prompt with:
 | |
|   tb.is_end_fd(fd, string)
 | |
|     fd: filedescriptor which is used, use tb.channel_con for boards console
 | |
|     string: buffer, in which a prompt gets searched.
 | |
| 
 | |
| - calling other TC:
 | |
|   eof_call_tc(name):
 | |
|     call another TC from "src/tc"
 | |
|     if the called TC fails with failure, tbot ends with failure
 | |
| 
 | |
|   call_tc(name):
 | |
|     call another TC from "src/tc"
 | |
|     if the TC which call_tc calls  fails, call_tc() returns False, else True
 | |
| 
 | |
| There are more functions, but for writting TC this should be enough. But
 | |
| its software, so new useful functions can always pop up.
 | |
| 
 | |
| Heiko Schocher <hs@denx.de>
 | |
| v1 2016.01.23
 |