cts: Added meta tests (testing cts suite itself)

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>
This commit is contained in:
Chris Chen
2016-07-29 10:13:26 -07:00
committed by chrome-bot
parent 67f6964aef
commit 59342032e5
3 changed files with 249 additions and 0 deletions

64
cts/meta/cts.testlist Normal file
View File

@@ -0,0 +1,64 @@
/* Copyright 2016 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
/* Currently tests will execute in the order they are listed here */
/* Test should succeed show the following debug output:
* You should see #'s 1-4 on sequential lines:
* 1
* 2
* 3
* 4
*/
CTS_TEST(debug_test)
/* Test should succeed if both report success
* (expected result: success)
*/
CTS_TEST(success_test)
/* Test should fail if one reports success and
* (one reports failure (expected result: failure)
*/
CTS_TEST(fail_dut_test)
/* Test should fail if one reports success and
* (one reports failure (expected result: failure)
*/
CTS_TEST(fail_th_test)
/* Test should fail when both boards report failure
* (expected result: failure)
*/
CTS_TEST(fail_both_test)
/* Test should fail with bad sync if one reports bad
* sync and the other reports success (expected result:
* bad_sync)
*/
CTS_TEST(bad_sync_and_success_test)
/* Test should fail with bad sync if both boards report
* bad sync (expected result: bad_sync)
*/
CTS_TEST(bad_sync_both_test)
/* Test should report conflict if one reports bad sync
* and the other reports failure
* (expected result: conflict)
*/
CTS_TEST(bad_sync_failure_test)
/* Test should be listed as corrupted if one test hangs,
* regardless of what the other test outputs
* (expected result: corrupted)
*/
CTS_TEST(hang_test)
/* Test should be corrupted if it follows a corrupted
* test, regardless of what the actual result was
* reported as
*/
CTS_TEST(post_corruption_success)

89
cts/meta/dut.c Normal file
View File

@@ -0,0 +1,89 @@
/* Copyright 2016 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "common.h"
#include "uart.h"
#include "timer.h"
#include "watchdog.h"
#include "dut_common.h"
#include "cts_common.h"
enum cts_rc debug_test(void)
{
return CTS_RC_SUCCESS;
}
enum cts_rc success_test(void)
{
return CTS_RC_SUCCESS;
}
enum cts_rc fail_dut_test(void)
{
return CTS_RC_FAILURE;
}
enum cts_rc fail_th_test(void)
{
return CTS_RC_SUCCESS;
}
enum cts_rc fail_both_test(void)
{
return CTS_RC_FAILURE;
}
enum cts_rc bad_sync_and_success_test(void)
{
return CTS_RC_BAD_SYNC;
}
enum cts_rc bad_sync_both_test(void)
{
return CTS_RC_BAD_SYNC;
}
enum cts_rc bad_sync_failure_test(void)
{
return CTS_RC_BAD_SYNC;
}
enum cts_rc hang_test(void)
{
while (1) {
watchdog_reload();
sleep(1);
}
return CTS_RC_SUCCESS;
}
enum cts_rc post_corruption_success(void)
{
return CTS_RC_SUCCESS;
}
#include "cts_testlist.h"
void cts_task(void)
{
enum cts_rc result;
int i;
cflush();
for (i = 0; i < CTS_TEST_ID_COUNT; i++) {
sync();
result = tests[i].run();
CPRINTF("\n%s %d\n", tests[i].name, result);
cflush();
}
CPRINTS("GPIO test suite finished");
cflush();
while (1) {
watchdog_reload();
sleep(1);
}
}

96
cts/meta/th.c Normal file
View File

@@ -0,0 +1,96 @@
/* Copyright 2016 The Chromium OS Authors. All rights reserved.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "common.h"
#include "uart.h"
#include "timer.h"
#include "watchdog.h"
#include "dut_common.h"
#include "cts_common.h"
enum cts_rc debug_test(void)
{
CTS_DEBUG_PRINTF("You should see #'s 1-4 on sequential lines:");
CTS_DEBUG_PRINTF("1");
CTS_DEBUG_PRINTF("2\n3");
CTS_DEBUG_PRINTF("4");
return CTS_RC_SUCCESS;
}
enum cts_rc success_test(void)
{
CTS_DEBUG_PRINTF("Expect: Success");
return CTS_RC_SUCCESS;
}
enum cts_rc fail_dut_test(void)
{
CTS_DEBUG_PRINTF("Expect: Failure");
return CTS_RC_SUCCESS;
}
enum cts_rc fail_th_test(void)
{
CTS_DEBUG_PRINTF("Expect: Failure");
return CTS_RC_FAILURE;
}
enum cts_rc fail_both_test(void)
{
CTS_DEBUG_PRINTF("Expect: Failure");
return CTS_RC_FAILURE;
}
enum cts_rc bad_sync_and_success_test(void)
{
CTS_DEBUG_PRINTF("Expect: Bad Sync");
return CTS_RC_BAD_SYNC;
}
enum cts_rc bad_sync_both_test(void)
{
CTS_DEBUG_PRINTF("Expect: Bad Sync");
return CTS_RC_BAD_SYNC;
}
enum cts_rc bad_sync_failure_test(void)
{
CTS_DEBUG_PRINTF("Expect: Conflict");
return CTS_RC_FAILURE;
}
enum cts_rc hang_test(void)
{
CTS_DEBUG_PRINTF("This and next, expect: Corrupted");
return CTS_RC_SUCCESS;
}
enum cts_rc post_corruption_success(void)
{
return CTS_RC_SUCCESS;
}
#include "cts_testlist.h"
void cts_task(void)
{
enum cts_rc result;
int i;
cflush();
for (i = 0; i < CTS_TEST_ID_COUNT; i++) {
sync();
result = tests[i].run();
CPRINTF("\n%s %d\n", tests[i].name, result);
cflush();
}
CPRINTS("GPIO test suite finished");
cflush();
while (1) {
watchdog_reload();
sleep(1);
}
}