summaryrefslogtreecommitdiff
path: root/cts
Commit message (Collapse)AuthorAgeFilesLines
* Remove __7b, __8b and __7bfDenis Brockus2019-07-201-7/+7
| | | | | | | | | | | | | | | | | | | The extentions were added to make the compiler perform most of the verification that the conversion was being done correctly to remove 8bit addressing as the standard I2C/SPI address type. Now that the compiler has verified the code, the extra extentions are being removed BUG=chromium:971296 BRANCH=none TEST=make buildall -j TEST=verify sensor functionality on arcada_ish Change-Id: I36894f8bb9daefb5b31b5e91577708f6f9af2a4f Signed-off-by: Denis Brockus <dbrockus@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1704792 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
* Use 7bit I2C/SPI slave addresses in ECDenis Brockus2019-07-191-7/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Opt for 7bit slave addresses in EC code. If 8bit is expected by a driver, make it local and show this in the naming. Use __7b, __7bf and __8b as name extensions for i2c/spi addresses used in the EC codebase. __7b indicates a 7bit address by itself. __7bf indicates a 7bit address with optional flags attached. __8b indicates a 8bit address by itself. Allow space for 10bit addresses, even though this is not currently being used by any of our attached devices. These extensions are for verification purposes only and will be removed in the last pass of this ticket. I want to make sure the variable names reflect the type to help eliminate future 7/8/7-flags confusion. BUG=chromium:971296 BRANCH=none TEST=make buildall -j Change-Id: I2fc3d1b52ce76184492b2aaff3060f486ca45f45 Signed-off-by: Denis Brockus <dbrockus@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1699893 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
* LICENSE: remove unnecessary (c) after CopyrightTom Hughes2019-06-193-3/+3
| | | | | | | | | | | | | | | | Ran the following command: git grep -l 'Copyright (c)' | \ xargs sed -i 's/Copyright (c)/Copyright/g' BRANCH=none BUG=none TEST=make buildall -j Change-Id: I6cc4a0f7e8b30d5b5f97d53c031c299f3e164ca7 Signed-off-by: Tom Hughes <tomhughes@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1663262 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
* Makefile: Replace flag -DX with -DX= to be supported by IS_ENABLED().Yilun Lin2019-06-031-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | IS_ENABLED works for an empty-string-defined macro. However, -D options default to define the macro to 1. This CL forces those macros, such as BOARD_* CHIP_*, CORE_*, CHIP_VARIANT_* and CHIP_FAMILIY_*, to be defined as an empty string, so that it can be supported by IS_ENABLED macro. TEST=use if(IS_ENABLED(BOARD_KRANE)) and see compilation success. TEST=compares build directory w/ and w/o this CL, and see the .smap are the same: ls build/*/*/ec.*.smap | sed -e 's|build/||' | \ xargs -I{} diff -u -a build/{} build.new/{} BUG=none BRANCH=None Change-Id: I96e2aa1cb5f3369e5e445a674595a9234f26707a Signed-off-by: Yilun Lin <yllin@google.com> Reviewed-on: https://chromium-review.googlesource.com/1627840 Commit-Ready: Yilun Lin <yllin@chromium.org> Tested-by: Yilun Lin <yllin@chromium.org> Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
* ec.tasklist: Consolidate duplicate commentsDaisuke Nojiri2019-04-083-29/+3
| | | | | | | | | | | | | | | | | | | | | | | It's simply a bad idea to describe a macro in multiple locations. It'll make it hard to change. It'll be difficult to keep all locations in sync. This patch replaces the comment duplicated in all ec.tasklist with a pointer to the CONFIG_TASK_LIST definition. The macro will be described in a single place (just like all/most other macros). Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> BUG=none BRANCH=none TEST=buildall Change-Id: Id658b9d68e742e4334c692b804d9c98c8de21313 Reviewed-on: https://chromium-review.googlesource.com/1551579 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org>
* eCTS: Run openocd and lsusb as a rootDaisuke Nojiri2017-07-081-3/+4
| | | | | | | | | | | | | | | | Running lsusb (to get iSerial) and openocd requires a privilege. This patch makes cts.py run these commands as a root. Opening ttyACM0 requires a privilege as well but it'll be done by asking a user to add themselves to dialout group. BUG=chromium:664309 BRANCH=none TEST=Run cts.py on a freshly set up cros_sdk chroot. Change-Id: Ib9d007459c4b1322b15f521a5253d833e2304c3c Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/558804 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* eCTS: Use proper methods to reset boardsDaisuke Nojiri2017-06-282-11/+15
| | | | | | | | | | | | | | This patch makes cts.py call reset_halt and resume instead of calling send_openocd_commands directly. BUG=none BRANCH=none TEST=Run util/run_ects.py. Change-Id: I179fb73d41842b927fda81c153848887bb2dff57 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/553581 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* eCTS: Use pySerial to read from tty portsDaisuke Nojiri2017-06-281-29/+20
| | | | | | | | | | | | | | | In a different environment, returned characters are corrupted if baudrate isn't specified. This patch replaces tty_read method with the one using pySerial. BUG=chromium:736778 BRANCH=none TEST=Run run_ects.py and verify all tests pass. Change-Id: I8c14f6a04c900d2670ad86c1b91f3fe6625ba69c Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/550848 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* eCTS: Add I2C suite to run_ects.pyDaisuke Nojiri2017-06-284-61/+65
| | | | | | | | | | | | | | This patch adds i2c suite to run_ects.py. It also adds checks for return values from i2c_read and i2c_write functions. BUG=chromium:653183 BRANCH=none TEST=Run run_ects.py and verify all test pass. Change-Id: Ie3d6e1e6f131235e2b28f39e1546c9cb4c3b92f6 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/547024 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* eCTS: Fix alignment of test resultsstabilize-9693.BDaisuke Nojiri2017-06-284-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | This patch fixes the alignment of test results. It also displays 'YES' or 'NO' instead of '1' or '0' for expected string columns: TEST NAME TH_RC DUT_RC TH_STR DUT_STR RESULT success_test SUCCESS SUCCESS YES YES PASS fail_dut_test SUCCESS FAILURE YES YES PASS fail_th_test FAILURE SUCCESS YES YES PASS fail_both_test FAILURE FAILURE YES YES PASS bad_sync_test BAD_SYNC SUCCESS YES YES PASS bad_sync_both_test BAD_SYNC BAD_SYNC YES YES PASS hang_test SUCCESS DID_NOT_END YES YES PASS did_not_start_test DID_NOT_END DID_NOT_START YES YES PASS BUG=chromium:664309 BRANCH=none TEST=Run cts.py -m meta Change-Id: I7d266b9a6458fcabafa4da484b54d9d1dffbad61 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/545257 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* eCTS: Convert mutex test suite to current formatDaisuke Nojiri2017-06-274-17/+21
| | | | | | | | | | | | | | | This patch updates the mutex test suite so that it can be run within the current framework. BUG=chromium:736155 BRANCH=none TEST=run cts.py -m mutex test name TH_RETURN_CODE DUT_RETURN_CODE TH_STR DUT_STR RESULT lock_unlock_test SUCCESS SUCCESS 1 1 PASS Change-Id: I69ee0857a0c633d7c6c8909f8c6f58ca6fd272ce Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/544790
* eCTS: Print start marker before syncDaisuke Nojiri2017-06-2722-351/+169
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes each test print start marker before sync. This will allow us to distinguish the failure before even sync is attempted (CTS_RC_DID_NOT_START, thus probably caused by the previous test) and the failure caused by the hanging partner, in which case the one good and alive will be stuck in sync (and should return _DID_NOT_END or even better _BAD_SYNC once we implement timeout in sync). This patch also: * Adds did_not_start_test to and removes debug_test from meta suite * Consolidates test runner loops into common cts_main_loop * Removes dut_common.h and th_common.h * Removes debug print macro and CTS_DEBUG * Replaces all infinite loops after tests with task_wait_event(-1) * Removes meaningless comments and debug printfs * Removes CTS_TEST_ID_* * Adds sync() to task suite BUG=chromium:736104 BRANCH=none TEST=Run run_ects.sh and verify all tests pass Change-Id: I6ccdf26afac6b8e8cb16483c5d75e4e77e7962f4 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/545176
* eCTS: Convert hook test suite to current formatDaisuke Nojiri2017-06-274-194/+108
| | | | | | | | | | | | | | | | | | This patch updates the hook test suite so that it can be run within the current framework. BUG=chromium:736047 BRANCH=none TEST=cts.py -m hook test name TH_RETURN_CODE DUT_RETURN_CODE TH_STR DUT_STR RESULT test_init_hook SUCCESS SUCCESS 1 1 PASS test_ticks SUCCESS SUCCESS 1 1 PASS test_priority SUCCESS SUCCESS 1 1 PASS test_deferred SUCCESS SUCCESS 1 1 PASS Change-Id: I3e7f29da61e794b06b03241f3d7706c2db94b5be Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/545084
* eCTS: Close ttyDaisuke Nojiri2017-06-232-2/+7
| | | | | | | | | | | | | This patch makes cts.py close tty files explicitly. BUG=none BRANCH=none TEST=cts.py -m meta Change-Id: Ifebfdd9607a603075492a59b5fb588e3cbc4ab12 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/544106 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* eCTS: Strip board serial stringDaisuke Nojiri2017-06-231-4/+11
| | | | | | | | | | | | | | | | | | If we don't strip a serial string read from a file, TH serial doesn't match with the one read from lsusb. It causes TH to be recognized as a DUT. This patch also makes error messages more helpful when DUT is not found or multiple DUTs are connected. BUG=none BRANCH=none TEST=cts/cts.py -m meta, task Change-Id: Ifcf96089b9620ef8809a7d2924dacf67d3af419c Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/542019 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* eCTS: Switch execution environment to chrootDaisuke Nojiri2017-06-231-1/+1
| | | | | | | | | | | | | | | | Openocd is upgraded to 0.10.0, which supports stm32l476. So, now we can run eCTS inside chroot. This allows new developers to spend no time on setting up software as all necessary tools (e.g. specific version of make, openocd, lsusb, ARM toolchains) come with cros_sdk. BUG=chromium:653949 BRANCH=none TEST=cts/cts.py -m meta Change-Id: Iba7ba94e95ceadcedcb53b76e47054ba1b2b47dd Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/542017 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* eCTS: Check order and expectation of test resultsDaisuke Nojiri2017-06-2319-199/+313
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes the framework verify not only the result but also the execution order of the tests. It also allows each test to specify expected return code and strings printed by TH and DUT. The final test results depends on the return code and the expectation. Therefore, the output now includes 'RESULT' column showing PASS or FAIL: test name TH_RETURN_CODE DUT_RETURN_CODE TH_STR DUT_STR RESULT test_task_switch SUCCESS SUCCESS 1 1 PASS test_task_priority SUCCESS FAILURE 1 1 FAIL test_stack_overflow DID_NOT_END DID_NOT_END 1 1 PASS Additionally, this patch: * Adds CTS_RC_DID_NOT_START and CTS_RC_DID_NOT_END to indicate whether the test did start or end, respectively. * Makes stack overflow test check whether stack overflow was detected and reboot occurred * Removes post_corruption_test and conflict test since now the test results are stricly compared against expected results. * Fixes gpylint errors. BUG=none BRANCH=none TEST=Run gpio, meta, timer, interrupt, and cts/cts.py -m task Change-Id: I3b7005236e705dcac0c8f4711b44c85ff9a4f676 Reviewed-on: https://chromium-review.googlesource.com/538878 Commit-Ready: Daisuke Nojiri <dnojiri@chromium.org> Tested-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
* eCTS: Add stack overflow testDaisuke Nojiri2017-06-232-1/+27
| | | | | | | | | | | | | | | | This patch adds a test for stack overflow detection. CTS task tries to overflow by calling a function recursively. This function sleeps to incur context switch, where stack overflow is checked. Reboot is expected but not checked. BUG=chromium:663873 BRANCH=none TEST=cts.py -m task Change-Id: I6ad98d209acf873d2d23b48bac6fc751fa8c2f74 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/410283 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* eCTS: Refactor return code handlingDaisuke Nojiri2017-06-172-18/+44
| | | | | | | | | | | | | | | | | | | | | | | | | This patch adds host only return codes to cts.rc and derive names from there. BUG=chromium:664309 BRANCH=none TEST=cts.py -m task, interrupt, gpio test name TH DUT debug_test SUCCESS SUCCESS success_test SUCCESS SUCCESS fail_dut_test SUCCESS FAILURE fail_th_test FAILURE SUCCESS fail_both_test FAILURE FAILURE bad_sync_and_success_test BAD_SYNC BAD_SYNC bad_sync_both_test BAD_SYNC BAD_SYNC bad_sync_failure_test FAILURE BAD_SYNC hang_test SUCCESS NO_RESULT post_corruption_success NO_RESULT NO_RESULT Change-Id: I169b2466646d6236571a8a4c5d3e208d928b9dd2 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/410282 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* eCTS: Limit tty reads by boot countsDaisuke Nojiri2017-06-162-242/+115
| | | | | | | | | | | | | | | | | | | | | | | | Currently, read_tty reads characters from tty as long as there is something to read. This causes read_tty to loop forever if the board is in reboot loop. This patch makes cts.py stop reading tty if boot count exceeds max_boot_count. Reboot is detected by detecting REBOOT_MARKER. This patch also does: - Remove debug option: This adds complexity for no real value. Developers should debug tests using regular tools (make, uart console, etc.). - Remove html output. Nobody use it. Should be redone when it's needed using proper libraries. BUG=chromium:664309 BRANCH=none TEST=cts.py -m task/gpio/interrupt Change-Id: I51d1dd51c4097e8115ef04ad46853720295141b4 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/410281 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* eCTS: Hide expected messagesDaisuke Nojiri2017-06-162-34/+92
| | | | | | | | | | | | | | | | | | | | | | | This patch hides expected messages from output to the terminal and reorganizes log directory as follows: - All test output goes under /tmp/ects/$dut/$module - Openocd output is recorded in openocd.log - uart outputs are recorded in uart_th.log and uart_dut.log - build output is recorded in build.log - Check exit code from all subprocess calls - Dump build log if build fails - Dump openocd log if openocd fails BUG=chromium:664309 BRANCH=none TEST=cts.py --setup and build images in chroot then run cts.py -m meta outside chroot. Change-Id: I13294c3bf777ad7ae590459d3cf5aea405d59f96 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/409536 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* board: Add support for nucleo-f411reGwendal Grignou2017-06-061-1/+3
| | | | | | | | | | | | | | | | | Add nucleo-f411re for testing STM32F411. Fix registers.h to include F411 specific features. TEST=Check uart,gpio works. Check BMI160 accel/gyro sensor works over i2c Install firmware with "make BOARD=nucleo-f411re flash" BUG=b:38018926 BRANCH=none Change-Id: I8514d1aa48e06708053e72f8d4be15738eda6cf4 Signed-off-by: Gwendal Grignou <gwendal@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/249994 Reviewed-by: Alexandru M Stan <amstan@chromium.org>
* eCTS: Test task priorityDaisuke Nojiri2016-11-102-0/+39
| | | | | | | | | | | | | | | | | | CTS task wakes up A and C then goes to sleep: CTS -> A, C -> A -> B -> C Since C has a higher priority, C should run first. This should result in C running one more time than A (or B). BUG=chromium:663873 BRANCH=none TEST=cts.py -m task Change-Id: I89c733ba3aab09b293edf8583d6ed73791531e59 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/409535 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* eCTS: Add task suiteDaisuke Nojiri2016-11-106-143/+125
| | | | | | | | | | | | | | | | | | | | Task A wakes up B and goes to sleep. Task B wakes up C then goes to sleep. Task C wakes up A then goes to sleep. This is repeated repeat_count times: A -> B -> C -> A -> ... It's expected all tasks to run exactly repeat_count times. Tick task runs to inject some irregularity. BUG=chromium:663873 BRANCH=none TEST=cts.py -m task Change-Id: Ib7227f05f09b7a49f8528aff6e6e8d3e6df93ba7 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/409534 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* eCTS: Add nested interrupt test (High->Low)Daisuke Nojiri2016-11-094-5/+45
| | | | | | | | | | | | | | | | | | | | | | Add a nested interrupt test to eCTS. Higher priority IRQ is fired, followed by lower priority IRQ. Handlers should be executed sequentially. P1 *-----* / \ P2 / *-----* / \ task_cts ----* *---- B C A D BUG=chromium:653195 BRANCH=none TEST=cts.py -m interrupt; make buildall Change-Id: Ia9f1bf4205cefe8bdc11cc0aa3ad2057359b73ef Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/409611 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* eCTS: Add nested interrupt test (Low->High)Daisuke Nojiri2016-11-093-9/+81
| | | | | | | | | | | | | | | | | | | | | | Add a nested interrupt test to eCTS. Lower priority IRQ is fired, followed by higher priority IRQ. Handler executions should be nested. P1 *-----* / \ P2 *----* *----* / \ task_cts ----* *---- A B C D BUG=chromium:653195 BRANCH=none TEST=cts.py -m gpio, interrupt, timer; make buildall Change-Id: I34dc7b4e819051b9070a11e69d13d6be704f2e5f Reviewed-on: https://chromium-review.googlesource.com/408797 Commit-Ready: Daisuke Nojiri <dnojiri@chromium.org> Tested-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* eCTS: Pause a few seconds before flushing ttyDaisuke Nojiri2016-11-091-14/+15
| | | | | | | | | | | | | | | | After a board is reset for setting up a tty port, the host should wait for a few seconds before flushing the port as the board may still be booting. This should prevent output from the previous boot from creeping into a test run. BUG=none BRANCH=none TEST=cts.py -m gpio, interrupt, timer Change-Id: I1fb567a3a8ddcfff61865b6db3866c56be386c4a Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/408759 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* cts: Fix back-to-back buildDaisuke Nojiri2016-10-142-6/+9
| | | | | | | | | | | | | | | | | | | Currently eCTS suites share the same directory (e.g. build/stm32l476g -eval) to put build artifacts even though some files (e.g. board.c) compile differently suite to suite. So, if cts-i2c-stm32l476g-eval is built, followed by cts-gpio-stm32l476g-eval, build fails or produces incorrect binary. This patch makes eCTS create different directories for each suite. As a bonus, we can now builds eCTS suites in parallel. BUG=chromium:654549 BRANCH=none TEST=make buildall -j (with uncommitted change) Change-Id: I4abedc917787be5f79b97e0e50d0d08e01bd5f9d Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/398281
* cts: Add real interrupt testDaisuke Nojiri2016-10-074-110/+165
| | | | | | | | | | | | | | | | | | Interrupt test checks whether DUT can be interrupted by an interrupt and an interrupt handler can be invoked as expected. Note the previous interrupt test ported from test/interrupt.c runs in an emulated environment on the host, thus does not test the real interrupt capability of the chip. BUG=chromium:653195 BRANCH=none TEST=Run cts.py -m interrupt Change-Id: I21cecff07594f048633d1c1b699fb3a1876379e0 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/363943 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* cts: Add I2C tests for read8/16/32 and write8/16/32Daisuke Nojiri2016-10-055-0/+313
| | | | | | | | | | | | | | This patch adds tests for i2c_read8/16/32 and i2c_write8/16/32. BUG=chromium:653183 BRANCH=none TEST=make buildall. Run cts.py -m i2c for 100kHz with 10k ohms pull-up registers on SCL and SDA. TH=stm32l476g-eval DUT=nucleo-f072rb. Change-Id: I8121b1c5dc7542da45141543e35036ef41364c38 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/393331 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* cts: Add a return code indicating timeoutDaisuke Nojiri2016-10-051-0/+1
| | | | | | | | | | | | | | This patch adds CTS_RC_TIMEOUT, which is returned when test encounters some sort of timeout. BUG=none BRANCH=none TEST=Run cts.py -m i2c. Make buildall Change-Id: I6d5cbcdde40f24e797e795f30f002da7621d089e Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/393330 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* cts: Fix error message for uart port being occupiedDaisuke Nojiri2016-10-052-6/+6
| | | | | | | | | | | | | This patch fixes the error messages displayed when a UART port connected to DUT or TH is being occupied. BUG=none BRANCH=none TEST=run cts.py -m i2c Change-Id: I3fbb4068e8ee3af7a1b04f70ae70b3d870a19d2e Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/393327
* cts: Fail script when build or flash failsDaisuke Nojiri2016-10-052-7/+11
| | | | | | | | | | | | | | This change makes cts.py fail when building or flashing a module for DUT or TH fails. BUG=none BRANCH=none TEST=Made cts.py fail by injecting build and flash error Change-Id: Iec1e11f4a8c261eb4c989b118df218e86cb6f5f1 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/393326 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* cts: Refactor cts.pyDaisuke Nojiri2016-09-133-431/+433
| | | | | | | | | | | | | | | | | | | | Noteworthy changes: - Move Board and its child classes in common/board.py - Separate flashing and resetting. Flashing used to imply running tests. - Move up constants up for better visibility - Change default suite to 'meta' - Removed redundant code - Lots of renames (all lower case names, shorter names, etc.) BUG=none BRANCH=none TEST=Ran meta test and verify the results match the expectations Change-Id: I158d96e2ee104767d25b2e721d5206e528600381 Reviewed-on: https://chromium-review.googlesource.com/383911 Commit-Ready: Daisuke Nojiri <dnojiri@chromium.org> Tested-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* cts: Fixed bug with conflicting error codesChris Chen2016-08-101-0/+2
| | | | | | | | | | | | | BRANCH=None BUG=None TEST=Manual - Build and run meta tests, look for listed output Change-Id: Idd46fb92791c1d0576be95f3e4cda8cdca66daef Reviewed-on: https://chromium-review.googlesource.com/367401 Commit-Ready: Chris Chen <twothreecc@google.com> Tested-by: Chris Chen <twothreecc@google.com> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* cts: Added meta tests (testing cts suite itself)Chris Chen2016-08-103-0/+249
| | | | | | | | | | | | | | | | | | | | | This is a test suite with certain expected failures. If making any changes to cts code other than simply adding a test suite, run this to make sure you didn't break cts. BRANCH=None BUG=None TEST=Manual - Build with "./cts.py -b --debug -m meta" - Flash with "./cts.py -f -m meta" - View results at /tmp/cts_results/<board_name>/meta.html - Results should match debug descriptions Change-Id: Ia5c10c7ce0e0d852fe6b14e481798eaff2a82c9c Reviewed-on: https://chromium-review.googlesource.com/364273 Commit-Ready: Chris Chen <twothreecc@google.com> Tested-by: Chris Chen <twothreecc@google.com> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* cts: Debug message support added to cts testsChris Chen2016-08-102-30/+128
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | You can now add debug messages into a cts test and they will be displayed with the test report html page. The macro to use is CTS_DEBUG_PRINTF Adding debug messages can potentially change test results by slowing down the test, so you can choose when compiling a test suite if you want the debug messages present or not by adding --debug as an argument when you call ./cts --build. BRANCH=None BUG=None TEST=Manual - Add a debug statement to a test - Build the test suite with --debug specified - Flash the boards - Run './cts/cts.py -r' - Open /tmp/cts_results/<board_name>/<test_suite>.html to view see your debug message for the test Change-Id: Icad8e0ac5cc905010caa4e7616f81572ce6ac771 Reviewed-on: https://chromium-review.googlesource.com/362475 Commit-Ready: Chris Chen <twothreecc@google.com> Tested-by: Chris Chen <twothreecc@google.com> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* cts: Added corruption detectionChris Chen2016-08-092-13/+22
| | | | | | | | | | | | | | | | | | | | | | | If test suite doesn't finish or results are received out of order, this is likely an indication of reset or hang by one of the boards and all tests after the point of corruption are marked as corrupted. BRANCH=None BUG=None TEST=Manual - Edit the gpio th code to change ordering of tests or hang or reset, etc. - Build and flash tests - Run './cts/cts.py -r' - You should see the results for all of the tests, with all corrupted tests marked as corrupted Change-Id: I7925e37db285a4e90e6e09bf3b187400ddfe9edf Reviewed-on: https://chromium-review.googlesource.com/362614 Commit-Ready: Chris Chen <twothreecc@google.com> Tested-by: Chris Chen <twothreecc@google.com> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* cts: Added html output to ctsChris Chen2016-08-081-2/+39
| | | | | | | | | | | | | | | | | | | | When you run a test suite, cts will now save your results for the suite/dut combo as a basic html page BRANCH=None BUG=None TEST=Manual - Connect dut, th - Build/flash desired test suite - Run './cts -r' to run tests - Open /tmp/cts_results/<board_name>/<test_suite>.html - You should see a table with test names/results Change-Id: Id3de3bd7833be1bc5dde437c516db411aac47579 Reviewed-on: https://chromium-review.googlesource.com/362091 Commit-Ready: Chris Chen <twothreecc@google.com> Tested-by: Chris Chen <twothreecc@google.com> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* cts: Refactored scriptChris Chen2016-08-081-296/+398
| | | | | | | | | | | | | | | | | | | | Added in classes for Board (parent), DeviceUnderTest, and TestHarness. Reading, etc. should be easier now BRANCH=None BUG=None TEST=Manual - Build default - Flash default - Run - Open /tmp/cts_results/nucleo-f072rb/gpio.html - Should see a clean results page Change-Id: Ide3f75281f0b5b8b40dabd36f8c239737dc527d6 Reviewed-on: https://chromium-review.googlesource.com/364236 Commit-Ready: Chris Chen <twothreecc@google.com> Tested-by: Chris Chen <twothreecc@google.com> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
* cts: Add timer testDaisuke Nojiri2016-07-294-0/+144
| | | | | | | | | | | | | | | | | | | | | The timer test checks the accuracy of the internal timer. After sync, DUT and TH start counting down one second. After one second, DUT raises GPIO level. TH determines whether the test passes or not based on how much more or less time elapsed than one second, assuming its clock is calibrated. This test takes advantage of TH running on a bare chip. If the host were measuring (instead of TH), the timing would be affected by many software and hardware layers (e.g. UART drivers on DUT and host, python interpreter, etc.). BUG=chromium:624520 BRANCH=none TEST=cts.py --module timer && cts.py --module gpio && make buildall Change-Id: I535e7772b4d93f1f5d248506f7ea167429a50174 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/361384
* cts: Added parsing for cts suitesChris Chen2016-07-265-143/+462
| | | | | | | | | | | | | | | | | | | | | | Added test recording when calling reset from command line. These results are printed on the screen and saved in /tmp/results/<board>/<module>.txt BRANCH=None BUG=None TEST=Manual - Connect, build and flash boards - Navigate to ec/cts - ./cts.py --run - Find test results /tmp/results/<board>/<module>.txt - Tests names should be left aligned in one column and their results right aligned in a 2nd column Change-Id: I3429d6092f2bd5d5f6825245f5439ace3f47f1fa Reviewed-on: https://chromium-review.googlesource.com/360653 Commit-Ready: Chris Chen <twothreecc@google.com> Tested-by: Chris Chen <twothreecc@google.com> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* cts: Move C flags to cts/build.mkDaisuke Nojiri2016-07-261-0/+2
| | | | | | | | | | | | | | | We should separate global Makefile from CTS stuff as much as possible. This makes reading and chaging code simpler. BUG=none BRANCH=none TEST=make buildall Change-Id: If9e99e0e9b660707b1e22f2362bd6f782930dc09 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/363006 Reviewed-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Chris Chen <twothreecc@google.com>
* cts: Added file to list error codes as integersChris Chen2016-07-219-89/+57
| | | | | | | | | | | | | | | | | | | | BRANCH=None BUG=None TEST=Manual - Connect handshake and gpio test lines between th and dut - Build tests - run 'cat /dev/ttyACM0' in one terminal - run 'cat /def/ttyACM1' in another - Flash boards - All test results print their test name followed by a space and and integer error code Change-Id: If52e9b50705779b3a291e2d0f6b0721a5b6197d8 Reviewed-on: https://chromium-review.googlesource.com/359988 Commit-Ready: Chris Chen <twothreecc@google.com> Tested-by: Chris Chen <twothreecc@google.com> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* cts: Add interrupt testDaisuke Nojiri2016-07-152-0/+168
| | | | | | | | | | | | | It's imported from test/interrupt.c and adjusted to CTS. BUG=chromium:624520 BRANCH=none TEST=make buildall. Test passed on stm32l476-geval and nucleo-f072rb. Change-Id: Ie948d284cebad60d97aab1512bb9e3af8838004e Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/360660 Reviewed-by: Chris Chen <twothreecc@google.com>
* cts: Add hook testDaisuke Nojiri2016-07-152-0/+294
| | | | | | | | | | | | | It's imported from test/hooks.c and adjusted to CTS. BUG=chromium:624520 BRANCH=none TEST=make buildall. Test passed on stm32l476-geval and nucleo-f072rb. Change-Id: I70673f2c0f8316a2b1fd9472eeb7db350fdc2d84 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/360631 Reviewed-by: Chris Chen <twothreecc@google.com>
* cts: Add mutext testDaisuke Nojiri2016-07-153-0/+257
| | | | | | | | | | | | | It's imported from test/mutex.c and adjusted to CTS. BUG=chromium:624520 BRANCH=none TEST=Test passed on stm32l476-geval and nucleo-f072rb. make -j buildall Change-Id: I8cab0541ecbb1daa26b4d728fbd3e45e903ee512 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/360600 Reviewed-by: Chris Chen <twothreecc@google.com>
* cts: Disambiguate enum cts_error_codeDaisuke Nojiri2016-07-155-31/+31
| | | | | | | | | | | BUG=none BRANCH=none TEST=make -j buildall Change-Id: I8008fcf8ea5a429ec6c3bd2cc59fe86f43d87ada Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/360180 Reviewed-by: Chris Chen <twothreecc@google.com>
* cts: Use pointers for test functionsDaisuke Nojiri2016-07-156-65/+69
| | | | | | | | | | | | | | | | Test functions are listed in cts.testlist and shared by th.c and dut.c. This way, we can gurantee the two files are in sync. Also, cts.testlist is used to count the number of tests automatically. This allows us to use a for loop to execute each test. BUG=none BRANCH=none TEST=build buildall Change-Id: I0c811405134fad04f5c6914b1ac38835e212cbd2 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/359619
* cts: Added GPIO test suiteChris Chen2016-07-156-8/+221
| | | | | | | | | | | | | | | | | | | | | | | Contains code for all the gpio tests so far. Code in cts_task for th and dut is for testing purposes and test result reporting will be updated in the next patch. BRANCH=None BUG=None TEST=Manual - Connect handshake and gpio test lines between th and dut - Build tests - run 'cat /dev/ttyACM0' in one terminal - run 'cat /def/ttyACM1' in another - Flash boards - All test results should print either passed or unknown Change-Id: I7142fb87a6ce0a20c571cde608fbbe60e35898ea Reviewed-on: https://chromium-review.googlesource.com/359935 Commit-Ready: Daisuke Nojiri <dnojiri@chromium.org> Tested-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>