You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by pe...@apache.org on 2016/11/19 00:37:54 UTC

incubator-mynewt-core git commit: MYNEWT-139 Refactor test suites for target

Repository: incubator-mynewt-core
Updated Branches:
  refs/heads/develop 4fcb950cf -> 38b7cddc3


MYNEWT-139 Refactor test suites for target

More refactoring of existing test code so that it may run on
target devices independent of configuration and architecture.
Added callback to run at completion of testsuite.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/38b7cddc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/38b7cddc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/38b7cddc

Branch: refs/heads/develop
Commit: 38b7cddc3eb072526a6e08cb3aba4ad5f75a8f40
Parents: 4fcb950
Author: Peter Snyder <pe...@apache.org>
Authored: Fri Nov 18 16:34:15 2016 -0800
Committer: Peter Snyder <pe...@apache.org>
Committed: Fri Nov 18 16:34:15 2016 -0800

----------------------------------------------------------------------
 fs/fcb/test/src/fcb_test.c                      | 49 ++++++++++++++++++++
 fs/fcb/test/src/testcases/fcb_test_append.c     |  4 ++
 .../test/src/testcases/fcb_test_append_fill.c   |  4 ++
 .../src/testcases/fcb_test_append_too_big.c     |  4 ++
 fs/fcb/test/src/testcases/fcb_test_empty_walk.c |  3 ++
 .../src/testcases/fcb_test_multiple_scratch.c   |  5 ++
 fs/fcb/test/src/testcases/fcb_test_reset.c      |  4 ++
 fs/fcb/test/src/testcases/fcb_test_rotate.c     |  4 ++
 sys/flash_map/test/src/flash_map_test.c         | 12 +++++
 .../test/src/testcases/flash_map_test_case_1.c  | 27 ++++++-----
 .../test/src/testcases/flash_map_test_case_2.c  | 17 ++++---
 test/testutil/include/testutil/testutil.h       |  7 +++
 test/testutil/src/suite.c                       |  3 ++
 13 files changed, 126 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/38b7cddc/fs/fcb/test/src/fcb_test.c
----------------------------------------------------------------------
diff --git a/fs/fcb/test/src/fcb_test.c b/fs/fcb/test/src/fcb_test.c
index 3e5280b..1f764c8 100644
--- a/fs/fcb/test/src/fcb_test.c
+++ b/fs/fcb/test/src/fcb_test.c
@@ -31,6 +31,7 @@
 
 struct fcb test_fcb;
 
+#if MYNEWT_VAL(SELFTEST)
 struct flash_area test_fcb_area[] = {
     [0] = {
         .fa_device_id = 0,
@@ -53,6 +54,7 @@ struct flash_area test_fcb_area[] = {
         .fa_size = 0x4000
     }
 };
+#endif
 
 void
 fcb_test_wipe(void)
@@ -115,6 +117,34 @@ fcb_test_cnt_elems_cb(struct fcb_entry *loc, void *arg)
     return 0;
 }
 
+void
+fcb_tc_pretest(void* arg)
+{
+    struct fcb *fcb;
+    int rc = 0;
+
+    fcb_test_wipe();
+    fcb = &test_fcb;
+    memset(fcb, 0, sizeof(*fcb));
+    fcb->f_sector_cnt = (int)arg;
+    fcb->f_sectors = test_fcb_area; /* XXX */
+
+    rc = 0;
+    rc = fcb_init(fcb);
+    if (rc != 0) {
+        printf("fcb_tc_pretest rc == %x, %d\n", rc, rc);
+        TEST_ASSERT(rc == 0);
+    }
+
+    return;
+}
+
+void
+fcb_ts_init(void *arg)
+{
+    return;
+}
+
 TEST_CASE_DECL(fcb_test_len)
 TEST_CASE_DECL(fcb_test_init)
 TEST_CASE_DECL(fcb_test_empty_walk)
@@ -127,14 +157,32 @@ TEST_CASE_DECL(fcb_test_multiple_scratch)
 
 TEST_SUITE(fcb_test_all)
 {
+
+    tu_case_set_pre_cb(fcb_tc_pretest, (void*)2);
     fcb_test_len();
+
+    /* pretest not needed */
     fcb_test_init();
+
+    tu_case_set_pre_cb(fcb_tc_pretest, (void*)2);
     fcb_test_empty_walk();
+
+    tu_case_set_pre_cb(fcb_tc_pretest, (void*)2);
     fcb_test_append();
+
+    tu_case_set_pre_cb(fcb_tc_pretest, (void*)2);
     fcb_test_append_too_big();
+
+    tu_case_set_pre_cb(fcb_tc_pretest, (void*)2);
     fcb_test_append_fill();
+
+    tu_case_set_pre_cb(fcb_tc_pretest, (void*)2);
     fcb_test_reset();
+
+    tu_case_set_pre_cb(fcb_tc_pretest, (void*)2);
     fcb_test_rotate();
+
+    tu_case_set_pre_cb(fcb_tc_pretest, (void*)4);
     fcb_test_multiple_scratch();
 }
 
@@ -145,6 +193,7 @@ main(int argc, char **argv)
     ts_config.ts_print_results = 1;
     tu_init();
 
+    tu_suite_set_init_cb(fcb_ts_init, NULL);
     fcb_test_all();
 
     return tu_any_failed;

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/38b7cddc/fs/fcb/test/src/testcases/fcb_test_append.c
----------------------------------------------------------------------
diff --git a/fs/fcb/test/src/testcases/fcb_test_append.c b/fs/fcb/test/src/testcases/fcb_test_append.c
index 7df5a7d..4a6db45 100644
--- a/fs/fcb/test/src/testcases/fcb_test_append.c
+++ b/fs/fcb/test/src/testcases/fcb_test_append.c
@@ -28,6 +28,7 @@ TEST_CASE(fcb_test_append)
     int j;
     int var_cnt;
 
+#if 0
     fcb_test_wipe();
     fcb = &test_fcb;
     memset(fcb, 0, sizeof(*fcb));
@@ -36,6 +37,9 @@ TEST_CASE(fcb_test_append)
 
     rc = fcb_init(fcb);
     TEST_ASSERT(rc == 0);
+#endif
+
+    fcb = &test_fcb;
 
     for (i = 0; i < sizeof(test_data); i++) {
         for (j = 0; j < i; j++) {

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/38b7cddc/fs/fcb/test/src/testcases/fcb_test_append_fill.c
----------------------------------------------------------------------
diff --git a/fs/fcb/test/src/testcases/fcb_test_append_fill.c b/fs/fcb/test/src/testcases/fcb_test_append_fill.c
index e4c85b8..0b5f351 100644
--- a/fs/fcb/test/src/testcases/fcb_test_append_fill.c
+++ b/fs/fcb/test/src/testcases/fcb_test_append_fill.c
@@ -35,6 +35,7 @@ TEST_CASE(fcb_test_append_fill)
         .elem_cnts = aa_separate_cnts
     };
 
+#if 0
     fcb_test_wipe();
     fcb = &test_fcb;
     memset(fcb, 0, sizeof(*fcb));
@@ -43,6 +44,9 @@ TEST_CASE(fcb_test_append_fill)
 
     rc = fcb_init(fcb);
     TEST_ASSERT(rc == 0);
+#endif
+
+    fcb = &test_fcb;
 
     for (i = 0; i < sizeof(test_data); i++) {
         test_data[i] = fcb_test_append_data(sizeof(test_data), i);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/38b7cddc/fs/fcb/test/src/testcases/fcb_test_append_too_big.c
----------------------------------------------------------------------
diff --git a/fs/fcb/test/src/testcases/fcb_test_append_too_big.c b/fs/fcb/test/src/testcases/fcb_test_append_too_big.c
index a487a53..99b3642 100644
--- a/fs/fcb/test/src/testcases/fcb_test_append_too_big.c
+++ b/fs/fcb/test/src/testcases/fcb_test_append_too_big.c
@@ -25,6 +25,7 @@ TEST_CASE(fcb_test_append_too_big)
     int len;
     struct fcb_entry elem_loc;
 
+#if 0
     fcb_test_wipe();
     fcb = &test_fcb;
     memset(fcb, 0, sizeof(*fcb));
@@ -33,6 +34,9 @@ TEST_CASE(fcb_test_append_too_big)
 
     rc = fcb_init(fcb);
     TEST_ASSERT(rc == 0);
+#endif
+
+    fcb = &test_fcb;
 
     /*
      * Max element which fits inside sector is

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/38b7cddc/fs/fcb/test/src/testcases/fcb_test_empty_walk.c
----------------------------------------------------------------------
diff --git a/fs/fcb/test/src/testcases/fcb_test_empty_walk.c b/fs/fcb/test/src/testcases/fcb_test_empty_walk.c
index a5041b1..5d8f1fe 100644
--- a/fs/fcb/test/src/testcases/fcb_test_empty_walk.c
+++ b/fs/fcb/test/src/testcases/fcb_test_empty_walk.c
@@ -23,6 +23,7 @@ TEST_CASE(fcb_test_empty_walk)
     int rc;
     struct fcb *fcb;
 
+#if 0
     fcb_test_wipe();
     fcb = &test_fcb;
     memset(fcb, 0, sizeof(*fcb));
@@ -32,6 +33,8 @@ TEST_CASE(fcb_test_empty_walk)
 
     rc = fcb_init(fcb);
     TEST_ASSERT(rc == 0);
+#endif
+    fcb = &test_fcb;
 
     rc = fcb_walk(fcb, 0, fcb_test_empty_walk_cb, NULL);
     TEST_ASSERT(rc == 0);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/38b7cddc/fs/fcb/test/src/testcases/fcb_test_multiple_scratch.c
----------------------------------------------------------------------
diff --git a/fs/fcb/test/src/testcases/fcb_test_multiple_scratch.c b/fs/fcb/test/src/testcases/fcb_test_multiple_scratch.c
index 9cd3d29..bc1608e 100644
--- a/fs/fcb/test/src/testcases/fcb_test_multiple_scratch.c
+++ b/fs/fcb/test/src/testcases/fcb_test_multiple_scratch.c
@@ -31,6 +31,7 @@ TEST_CASE(fcb_test_multiple_scratch)
         .elem_cnts = cnts
     };
 
+#if 0
     fcb_test_wipe();
     fcb = &test_fcb;
     memset(fcb, 0, sizeof(*fcb));
@@ -40,6 +41,10 @@ TEST_CASE(fcb_test_multiple_scratch)
 
     rc = fcb_init(fcb);
     TEST_ASSERT(rc == 0);
+#endif
+
+    fcb = &test_fcb;
+    fcb->f_scratch_cnt = 1;
 
     /*
      * Now fill up everything. We should be able to get 3 of the sectors

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/38b7cddc/fs/fcb/test/src/testcases/fcb_test_reset.c
----------------------------------------------------------------------
diff --git a/fs/fcb/test/src/testcases/fcb_test_reset.c b/fs/fcb/test/src/testcases/fcb_test_reset.c
index be82a7c..54441c9 100644
--- a/fs/fcb/test/src/testcases/fcb_test_reset.c
+++ b/fs/fcb/test/src/testcases/fcb_test_reset.c
@@ -27,6 +27,7 @@ TEST_CASE(fcb_test_reset)
     uint8_t test_data[128];
     int var_cnt;
 
+#if 0
     fcb_test_wipe();
     fcb = &test_fcb;
     memset(fcb, 0, sizeof(*fcb));
@@ -35,6 +36,9 @@ TEST_CASE(fcb_test_reset)
 
     rc = fcb_init(fcb);
     TEST_ASSERT(rc == 0);
+#endif
+
+    fcb = &test_fcb;
 
     var_cnt = 0;
     rc = fcb_walk(fcb, 0, fcb_test_data_walk_cb, &var_cnt);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/38b7cddc/fs/fcb/test/src/testcases/fcb_test_rotate.c
----------------------------------------------------------------------
diff --git a/fs/fcb/test/src/testcases/fcb_test_rotate.c b/fs/fcb/test/src/testcases/fcb_test_rotate.c
index 9386c3f..a44cf07 100644
--- a/fs/fcb/test/src/testcases/fcb_test_rotate.c
+++ b/fs/fcb/test/src/testcases/fcb_test_rotate.c
@@ -31,6 +31,7 @@ TEST_CASE(fcb_test_rotate)
         .elem_cnts = cnts
     };
 
+#if 0
     fcb_test_wipe();
     fcb = &test_fcb;
     memset(fcb, 0, sizeof(*fcb));
@@ -39,6 +40,9 @@ TEST_CASE(fcb_test_rotate)
 
     rc = fcb_init(fcb);
     TEST_ASSERT(rc == 0);
+#endif
+
+    fcb = &test_fcb;
 
     old_id = fcb->f_active_id;
     rc = fcb_rotate(fcb);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/38b7cddc/sys/flash_map/test/src/flash_map_test.c
----------------------------------------------------------------------
diff --git a/sys/flash_map/test/src/flash_map_test.c b/sys/flash_map/test/src/flash_map_test.c
index a2ca85b..a12b9db 100644
--- a/sys/flash_map/test/src/flash_map_test.c
+++ b/sys/flash_map/test/src/flash_map_test.c
@@ -29,6 +29,15 @@
 #include "hal/hal_flash.h"
 #include "hal/hal_flash_int.h"
 
+struct flash_area *fa_sectors;
+
+#if MYNEWT_VAL(SELFTEST)
+/*
+ * Max number sectors per area (for native BSP)
+ */
+#define SELFTEST_FA_SECTOR_COUNT    64
+#endif
+
 TEST_CASE_DECL(flash_map_test_case_1)
 TEST_CASE_DECL(flash_map_test_case_2)
 
@@ -45,6 +54,9 @@ main(int argc, char **argv)
     ts_config.ts_print_results = 1;
     tu_init();
 
+    fa_sectors = (struct flash_area *)
+                malloc(sizeof(struct flash_area*) * SELFTEST_FA_SECTOR_COUNT);
+
     flash_map_test_suite();
 
     return tu_any_failed;

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/38b7cddc/sys/flash_map/test/src/testcases/flash_map_test_case_1.c
----------------------------------------------------------------------
diff --git a/sys/flash_map/test/src/testcases/flash_map_test_case_1.c b/sys/flash_map/test/src/testcases/flash_map_test_case_1.c
index 9b70cc1..b4a7f79 100644
--- a/sys/flash_map/test/src/testcases/flash_map_test_case_1.c
+++ b/sys/flash_map/test/src/testcases/flash_map_test_case_1.c
@@ -18,6 +18,9 @@
  */
 #include "flash_map_test.h"
 
+extern int flash_map_entries;
+extern struct flash_area *fa_sectors;
+
 /*
  * Test flash_area_to_sectors()
  */
@@ -27,13 +30,14 @@ TEST_CASE(flash_map_test_case_1)
     int areas_checked = 0;
     int i, j, rc;
     const struct hal_flash *hf;
-    struct flash_area my_secs[32];
-    int my_sec_cnt;
+    int sect_cnt;
     uint32_t end;
 
+#if MYNEWT_VAL(SELFTEST)
     sysinit();
+#endif
 
-    for (i = 0; i < 8; i++) {
+    for (i = 0; i < flash_map_entries; i++) {
         rc = flash_area_open(i, &fa);
         if (rc) {
             continue;
@@ -42,20 +46,21 @@ TEST_CASE(flash_map_test_case_1)
         hf = hal_bsp_flash_dev(fa->fa_device_id);
         TEST_ASSERT_FATAL(hf != NULL, "hal_bsp_flash_dev");
 
-        rc = flash_area_to_sectors(i, &my_sec_cnt, my_secs);
+        rc = flash_area_to_sectors(i, &sect_cnt, fa_sectors);
         TEST_ASSERT_FATAL(rc == 0, "flash_area_to_sectors failed");
 
         end = fa->fa_off;
-        for (j = 0; j < my_sec_cnt; j++) {
-            TEST_ASSERT_FATAL(end == my_secs[j].fa_off, "Non contiguous area");
-            TEST_ASSERT_FATAL(my_secs[j].fa_device_id == fa->fa_device_id,
+        for (j = 0; j < sect_cnt; j++) {
+            TEST_ASSERT_FATAL(end == fa_sectors[j].fa_off,
+                              "Non contiguous area");
+            TEST_ASSERT_FATAL(fa_sectors[j].fa_device_id == fa->fa_device_id,
               "Sectors not in same flash?");
-            end = my_secs[j].fa_off + my_secs[j].fa_size;
+            end = fa_sectors[j].fa_off + fa_sectors[j].fa_size;
         }
-        if (my_sec_cnt) {
+        if (sect_cnt) {
             areas_checked++;
-            TEST_ASSERT_FATAL(my_secs[my_sec_cnt - 1].fa_off +
-              my_secs[my_sec_cnt - 1].fa_size == fa->fa_off + fa->fa_size,
+            TEST_ASSERT_FATAL(fa_sectors[sect_cnt - 1].fa_off +
+              fa_sectors[sect_cnt - 1].fa_size == fa->fa_off + fa->fa_size,
               "Last sector not in the end");
         }
     }

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/38b7cddc/sys/flash_map/test/src/testcases/flash_map_test_case_2.c
----------------------------------------------------------------------
diff --git a/sys/flash_map/test/src/testcases/flash_map_test_case_2.c b/sys/flash_map/test/src/testcases/flash_map_test_case_2.c
index 3dccdc4..412c320 100644
--- a/sys/flash_map/test/src/testcases/flash_map_test_case_2.c
+++ b/sys/flash_map/test/src/testcases/flash_map_test_case_2.c
@@ -18,13 +18,14 @@
  */
 #include "flash_map_test.h"
 
+extern struct flash_area *fa_sectors;
+
 /*
  * Test flash_erase
  */
 TEST_CASE(flash_map_test_case_2)
 {
     const struct flash_area *fa;
-    struct flash_area secs[32];
     int sec_cnt;
     int i;
     int rc;
@@ -32,19 +33,22 @@ TEST_CASE(flash_map_test_case_2)
     uint8_t wd[256];
     uint8_t rd[256];
 
+#if MYNEWT_VAL(SELFTEST)
     sysinit();
+#endif
 
     rc = flash_area_open(FLASH_AREA_IMAGE_0, &fa);
     TEST_ASSERT_FATAL(rc == 0, "flash_area_open() fail");
 
-    rc = flash_area_to_sectors(FLASH_AREA_IMAGE_0, &sec_cnt, secs);
+    rc = flash_area_to_sectors(FLASH_AREA_IMAGE_0, &sec_cnt, fa_sectors);
     TEST_ASSERT_FATAL(rc == 0, "flash_area_to_sectors failed");
 
     /*
      * First erase the area so it's ready for use.
      */
     for (i = 0; i < sec_cnt; i++) {
-        rc = hal_flash_erase_sector(secs[i].fa_device_id, secs[i].fa_off);
+        rc = hal_flash_erase_sector(fa_sectors[i].fa_device_id,
+                                    fa_sectors[i].fa_off);
         TEST_ASSERT_FATAL(rc == 0, "hal_flash_erase_sector() failed");
     }
     TEST_ASSERT_FATAL(rc == 0, "read data != write data");
@@ -66,19 +70,20 @@ TEST_CASE(flash_map_test_case_2)
 
         /* write stuff to end of area */
         rc = hal_flash_write(fa->fa_device_id,
-          fa->fa_off + off + secs[i].fa_size - sizeof(wd), wd, sizeof(wd));
+                         fa->fa_off + off + fa_sectors[i].fa_size - sizeof(wd),
+                         wd, sizeof(wd));
         TEST_ASSERT_FATAL(rc == 0, "hal_flash_write() fail");
 
         /* and read it back */
         memset(rd, 0, sizeof(rd));
-        rc = flash_area_read(fa, off + secs[i].fa_size - sizeof(rd),
+        rc = flash_area_read(fa, off + fa_sectors[i].fa_size - sizeof(rd),
           rd, sizeof(rd));
         TEST_ASSERT_FATAL(rc == 0, "hal_flash_read() fail");
 
         rc = memcmp(wd, rd, sizeof(rd));
         TEST_ASSERT_FATAL(rc == 0, "read data != write data");
 
-        off += secs[i].fa_size;
+        off += fa_sectors[i].fa_size;
     }
     /* erase it */
     rc = flash_area_erase(fa, 0, fa->fa_size);

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/38b7cddc/test/testutil/include/testutil/testutil.h
----------------------------------------------------------------------
diff --git a/test/testutil/include/testutil/testutil.h b/test/testutil/include/testutil/testutil.h
index eebc13c..db411f3 100644
--- a/test/testutil/include/testutil/testutil.h
+++ b/test/testutil/include/testutil/testutil.h
@@ -63,6 +63,7 @@ typedef void tu_testsuite_fn_t(void);
  * Private declarations - Test Suite configuration
  */
 void tu_suite_set_init_cb(tu_init_test_fn_t *cb, void *cb_arg);
+void tu_suite_set_complete_cb(tu_init_test_fn_t *cb, void *cb_arg);
 void tu_suite_set_pre_test_cb(tu_pre_test_fn_t *cb, void *cb_arg);
 void tu_suite_set_post_test_cb(tu_post_test_fn_t *cb, void *cb_arg);
 void tu_suite_set_pass_cb(tu_case_report_fn_t *cb, void *cb_arg);
@@ -96,6 +97,12 @@ struct ts_config {
     void *ts_suite_init_arg;
 
     /*
+     * Called after the last test in the suite
+     */
+    tu_init_test_fn_t *ts_suite_complete_cb;
+    void *ts_suite_complete_arg;
+
+    /*
      * Called before every test in the suite
      */
     tu_pre_test_fn_t *ts_case_pre_test_cb;

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/38b7cddc/test/testutil/src/suite.c
----------------------------------------------------------------------
diff --git a/test/testutil/src/suite.c b/test/testutil/src/suite.c
index 887a966..d13a6fd 100644
--- a/test/testutil/src/suite.c
+++ b/test/testutil/src/suite.c
@@ -115,6 +115,9 @@ tu_suite_complete(void)
     tu_suite_set_init_cb(NULL, NULL);
     tu_suite_set_pre_test_cb(NULL, NULL);
     tu_suite_set_post_test_cb(NULL, NULL);
+    if (ts_config.ts_suite_complete_cb != NULL) {
+        ts_config.ts_suite_complete_cb(ts_config.ts_suite_complete_arg);
+    }
 }
 
 void