system: add test for simulating single core esp32 startup

This commit is contained in:
Renz Bagaporo 2021-03-10 14:07:52 +08:00 committed by bot
parent 8d32232899
commit 0a3ae58a61
5 changed files with 46 additions and 1 deletions

View File

@ -2,9 +2,11 @@
import glob
import os
import re
import ttfw_idf
from tiny_test_fw import Utility
from ttfw_idf.IDFDUT import ESP32DUT
@ttfw_idf.idf_custom_test(env_tag='Example_GENERIC', group='test-apps')
@ -15,7 +17,14 @@ def test_startup(env, extra_data):
Utility.console_log("Checking config \"{}\"... ".format(name), end='')
dut = env.get_dut('startup', 'tools/test_apps/system/startup', app_config_name=name)
dut.start_app()
dut.expect('app_main running')
if (name == 'single_core_variant' and isinstance(dut, ESP32DUT)):
dut.allow_dut_exception = True
dut.expect('Running on single core variant of a chip, but app is built with multi-core support.')
dut.expect(re.compile(r'abort\(\) was called at PC [0-9xa-f]+ on core 0'))
else:
dut.expect('app_main running')
env.close_dut(dut.name)
Utility.console_log('done')

View File

@ -1,2 +1,7 @@
idf_component_register(SRCS "test_startup_main.c"
INCLUDE_DIRS ".")
if(CONFIG_SINGLE_CORE_VARIANT)
target_sources(${COMPONENT_LIB} PRIVATE "${CMAKE_CURRENT_LIST_DIR}/chip_info_patch.c")
target_link_libraries(${COMPONENT_LIB} INTERFACE "-Wl,--wrap=esp_chip_info")
endif()

View File

@ -0,0 +1,6 @@
menu "Test app config"
config SINGLE_CORE_VARIANT
bool "Patch esp_chip_info to return single core in a multicore chip"
default "n"
depends on IDF_TARGET_ESP32 || IDF_TARGET_ESP32S3
endmenu

View File

@ -0,0 +1,24 @@
// Copyright 2013-2016 Espressif Systems (Shanghai) PTE LTD
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#include "esp_system.h"
extern void __real_esp_chip_info(esp_chip_info_t* out_info);
// Fake a single core chip for testing purposes only, see CONFIG_SINGLE_CORE_VARIANT
void __wrap_esp_chip_info(esp_chip_info_t* out_info)
{
__real_esp_chip_info(out_info);
out_info->cores = 1;
}

View File

@ -0,0 +1 @@
CONFIG_SINGLE_CORE_VARIANT=y