# 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