summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Chen <twothreecc@google.com>2016-07-29 10:13:26 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-08-10 15:30:26 -0700
commit59342032e522842566370cdedbee77394e1092ea (patch)
tree3df49c58c815e5e4ed4044003368f433e83f389e
parent67f6964aefccb60eb7e1284da2186cb5d3b3dfbd (diff)
downloadchrome-ec-59342032e522842566370cdedbee77394e1092ea.tar.gz
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>
-rw-r--r--cts/meta/cts.testlist64
-rw-r--r--cts/meta/dut.c89
-rw-r--r--cts/meta/th.c96
3 files changed, 249 insertions, 0 deletions
diff --git a/cts/meta/cts.testlist b/cts/meta/cts.testlist
new file mode 100644
index 0000000000..778b0f62cc
--- /dev/null
+++ b/cts/meta/cts.testlist
@@ -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) \ No newline at end of file
diff --git a/cts/meta/dut.c b/cts/meta/dut.c
new file mode 100644
index 0000000000..ad772bc10b
--- /dev/null
+++ b/cts/meta/dut.c
@@ -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);
+ }
+}
diff --git a/cts/meta/th.c b/cts/meta/th.c
new file mode 100644
index 0000000000..bdab9ce6f1
--- /dev/null
+++ b/cts/meta/th.c
@@ -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);
+ }
+}