]> granicus.if.org Git - esp-idf/commitdiff
test: add NVS compatible test case and CI job
authorHe Yin Ling <heyinling@espressif.com>
Fri, 2 Jun 2017 07:03:56 +0000 (15:03 +0800)
committerHe Yin Ling <heyinling@espressif.com>
Sun, 4 Jun 2017 02:29:15 +0000 (10:29 +0800)
.gitlab-ci.yml
components/idf_test/integration_test/CIConfigs/nvs_compatible_test.yml [new file with mode: 0644]
components/idf_test/integration_test/TestCaseAll.yml
components/idf_test/integration_test/TestCaseScript/NVSTest/NVSCompatibleWiFi.py [new file with mode: 0644]
components/idf_test/integration_test/TestCaseScript/NVSTest/__init__.py [new file with mode: 0644]

index 26d42b77fa9b1b32194d6126bf74a908fb8f1458..45e4d28db1e7f58a2a09e6d95e43083012d663d3 100644 (file)
@@ -418,6 +418,38 @@ assign_test:
     CONFIG_FILE: "$CI_PROJECT_DIR/components/idf_test/unit_test/CIConfigs/$CI_JOB_NAME.yml"
     IDF_PATH: "$CI_PROJECT_DIR"
 
+nvs_compatible_test:
+  <<: *test_template
+  artifacts:
+    when: always
+    paths:
+      - $LOG_PATH
+      - $IDF_PATH/nvs_wifi.bin
+    expire_in: 6 mos
+  tags:
+    - ESP32_IDF
+    - NVS_Compatible
+  script:
+    # remove artifacts from last stage (UT logs)
+    - rm -rf $LOG_PATH
+    # add gitlab ssh key
+    - mkdir -p ~/.ssh
+    - chmod 700 ~/.ssh
+    - echo -n $GITLAB_KEY > ~/.ssh/id_rsa_base64
+    - base64 --decode --ignore-garbage ~/.ssh/id_rsa_base64 > ~/.ssh/id_rsa
+    - chmod 600 ~/.ssh/id_rsa
+    - echo -e "Host gitlab.espressif.cn\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
+    # clone local test env configs
+    - git clone $TEST_ENV_CONFIG_REPOSITORY
+    # clone test bench
+    - git clone $TEST_SCRIPT_REPOSITORY
+    - cd auto_test_script
+    - git checkout ${CI_COMMIT_REF_NAME} || echo "Using default branch..."
+    # prepare nvs bins
+    - ./Tools/prepare_nvs_bin.sh
+    # run test
+    - python CIRunner.py -l "$LOG_PATH/$CI_JOB_NAME" -c $CONFIG_FILE -e $LOCAL_ENV_CONFIG_PATH -t $TEST_CASE_FILE_PATH -m $MODULE_UPDATE_FILE
+
 UT_001_01:
   <<: *unit_test_template
   tags:
diff --git a/components/idf_test/integration_test/CIConfigs/nvs_compatible_test.yml b/components/idf_test/integration_test/CIConfigs/nvs_compatible_test.yml
new file mode 100644 (file)
index 0000000..ac552ad
--- /dev/null
@@ -0,0 +1,11 @@
+BinPath: 
+    path: test_bins/ESP32_IDF/SSC_BLE
+    test app: SSC_BLE
+
+DUT: [SSC1]
+
+Filter:
+- Add:
+    SDK: ESP32_IDF
+    Test App: SSC_BLE
+    summary: 'use old NVS data WIFI function test'
index f6072151225688867005afc462ed57ea5d493f70..9bfd9c5805a53050f340a0a4e11e98715f8dc12a 100644 (file)
@@ -8432,4 +8432,35 @@ test cases:
     2 SSC target connect with PC by UART.'
   test point 1: interaction
   test point 2: Scan interact with other WiFi operation
-  version: v1 (2015-8-15)
\ No newline at end of file
+  version: v1 (2015-8-15)
+- ID: SYS_NVS_01001
+  SDK: ESP32_IDF
+  Test App: SSC_BLE
+  auto test: 'Yes'
+  category: Function
+  test point 1: compatiable test
+  test point 2: test if latest SDK work with pervious version of NVS data
+  summary: use old NVS data WIFI function test
+  steps: |
+    1. get NVS data from earlier released branches and last master
+    2. download each NVS data to target
+    3. check if auto connected to the same AP
+    4. check if SoftAP config is correct
+  expected result: |
+    1. succeed
+    2. succeed
+    3. succeed
+    4. succeed
+  initial condition: None
+  test environment: SSC_T1_1
+  execution time: 0
+  module: System
+  sub module: NVS
+  version: v1 (2017-06-01)
+  CI ready: 'SpecialJob'
+  level: Integration
+  allow fail: ''
+  cmd set:
+  - "NVSTest/NVSCompatibleWiFi"
+  - - nvs_path = "nvs_bin_folder"
+    - ['']
diff --git a/components/idf_test/integration_test/TestCaseScript/NVSTest/NVSCompatibleWiFi.py b/components/idf_test/integration_test/TestCaseScript/NVSTest/NVSCompatibleWiFi.py
new file mode 100644 (file)
index 0000000..c9d577f
--- /dev/null
@@ -0,0 +1,98 @@
+import os
+import time
+
+from TCAction import TCActionBase
+from TCAction import PerformanceTCBase
+from NativeLog import NativeLog
+
+
+SOFTAP_SSID = "SoftAPSSID4NVSCompatibleTest"
+SOFTAP_PASSWORD = "SoftAPPassword4NVSCompatibleTest"
+
+NVS_FILE_NAME = "nvs_wifi.bin"
+
+
+class TestCase(PerformanceTCBase.PerformanceTCBase):
+
+    def __init__(self, test_case, test_env, timeout=30, log_path=TCActionBase.LOG_PATH):
+        PerformanceTCBase.PerformanceTCBase.__init__(self, test_case, test_env, timeout=timeout, log_path=log_path)
+        self.nvs_path = ""
+        # load param from excel
+        cmd_set = test_case["cmd set"]
+        for i in range(1, len(cmd_set)):
+            if cmd_set[i][0] != "dummy":
+                cmd_string = "self." + cmd_set[i][0]
+                exec cmd_string
+
+    def get_nvs_bins(self):
+        if os.path.exists(self.nvs_path) is False:
+            NativeLog.add_trace_critical("NVS path is not correct")
+            files = []
+        else:
+            files = [os.path.join(self.nvs_path, x) for x in os.listdir(self.nvs_path)]
+        return filter(lambda f: NVS_FILE_NAME in f, files)
+
+    def check_nvs(self, nvs_bin):
+        branch_name = os.path.basename(nvs_bin)
+        branch_name.replace("___", "/")
+        result = True
+
+        ssc1_port = self.test_env.get_port_by_name("SSC1")
+        ap_ssid = self.get_parameter("ap_ssid")
+
+        self.flush_data("SSC1")
+
+        # first download
+        ssc1_port.flash_nvs(nvs_bin)
+        self.check_response("SSC1", "ready!!!")
+        # set to sta mode and join ap
+        if self.check_response("SSC1", "+JAP:CONNECTED,%s" % ap_ssid, timeout=15) is False:
+            NativeLog.add_trace_critical("Failed to join AP on: " + branch_name)
+            result = False
+
+        self.serial_write_line("SSC1", "op -Q")
+        if self.check_response("SSC1", "+CURMODE:3") is False:
+            NativeLog.add_trace_critical("Failed on verifying WIFI mode on: " + branch_name)
+            result = False
+
+        self.serial_write_line("SSC1", "ap -Q")
+        if self.check_response("SSC1", "+APCONFIG:%s,%s" % (SOFTAP_SSID, SOFTAP_PASSWORD)) is False:
+            NativeLog.add_trace_critical("Failed on verifying SoftAP config on: " + branch_name)
+            result = False
+        return result
+
+    def dump_nvs(self):
+        ssc1_port = self.test_env.get_port_by_name("SSC1")
+        ap_ssid = self.get_parameter("ap_ssid")
+        ap_password = self.get_parameter("ap_password")
+
+        # first erase NVS
+        ssc1_port.flash_nvs(None)
+
+        self.check_response("SSC1", "ready!!!")
+
+        self.serial_write_line("SSC1", "op -S -o 3")
+        self.check_response("SSC1", "+MODE:OK")
+        self.serial_write_line("SSC1", "sta -C -s %s -p %s" % (ap_ssid, ap_password))
+        self.check_response("SSC1", "+JAP:CONNECTED,%s" % ap_ssid, timeout=20)
+        self.serial_write_line("SSC1", "ap -S -s %s -p %s -t 3" % (SOFTAP_SSID, SOFTAP_PASSWORD))
+        self.check_response("SSC1", "+SAP:OK")
+        time.sleep(1)
+
+        idf_path = os.getenv("IDF_PATH")
+
+        ssc1_port.dump_nvs(os.path.join(idf_path, NVS_FILE_NAME))
+
+    def cleanup(self):
+        # make sure dump nvs will be executed
+        self.dump_nvs()
+
+    def process(self):
+        result = True
+        nvs_bins = self.get_nvs_bins()
+
+        for nvs_bin in nvs_bins:
+            result = result and self.check_nvs(nvs_bin)
+
+        if result is True:
+            self.set_result("Succeed")
diff --git a/components/idf_test/integration_test/TestCaseScript/NVSTest/__init__.py b/components/idf_test/integration_test/TestCaseScript/NVSTest/__init__.py
new file mode 100644 (file)
index 0000000..e69de29