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:
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"
+ - ['']
--- /dev/null
+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")