3
0
mirror of https://git.kernel.org/pub/scm/network/wireless/iwd.git synced 2024-11-25 09:39:25 +01:00

t-runner: Make start of IWD instance optional

This commit is contained in:
Tim Kourt 2016-10-05 14:58:01 -07:00 committed by Denis Kenzior
parent 8642b70b82
commit 5d7f523bbf

View File

@ -784,6 +784,7 @@ static bool find_test_configuration(const char *path, int level,
#define HW_CONFIG_SETUP_RADIO_CONFS "radio_confs" #define HW_CONFIG_SETUP_RADIO_CONFS "radio_confs"
#define HW_CONFIG_SETUP_MAX_EXEC_SEC "max_test_exec_interval_sec" #define HW_CONFIG_SETUP_MAX_EXEC_SEC "max_test_exec_interval_sec"
#define HW_CONFIG_SETUP_ABS_PATH_DIRS "abs_path_dir_list" #define HW_CONFIG_SETUP_ABS_PATH_DIRS "abs_path_dir_list"
#define HW_CONFIG_SETUP_START_IWD "start_iwd"
static struct l_settings *read_hw_config(const char *test_dir_path) static struct l_settings *read_hw_config(const char *test_dir_path)
{ {
@ -1065,6 +1066,20 @@ static void terminate_iwd(pid_t iwd_pid)
kill_process(iwd_pid); kill_process(iwd_pid);
} }
static void terminate_all_iwd(void)
{
char *argv[3];
pid_t pid;
argv[0] = "killall";
argv[1] = "iwd";
argv[2] = NULL;
pid = execute_program(argv, true);
if (pid < 0)
l_error("Failed to kill all IWD instances");
}
static bool create_absolute_path_dirs(char **abs_path_dirs, static bool create_absolute_path_dirs(char **abs_path_dirs,
const char *config_dir_path) const char *config_dir_path)
{ {
@ -1412,13 +1427,15 @@ static void create_network_and_run_tests(const void *key, void *value,
{ {
int hwsim_radio_ids[HWSIM_RADIOS_MAX]; int hwsim_radio_ids[HWSIM_RADIOS_MAX];
pid_t hostapd_pids[HWSIM_RADIOS_MAX]; pid_t hostapd_pids[HWSIM_RADIOS_MAX];
pid_t iwd_pid, medium_pid; pid_t iwd_pid = -1;
pid_t medium_pid = -1;
char *config_dir_path; char *config_dir_path;
char **abs_path_dirs = NULL; char **abs_path_dirs = NULL;
struct l_settings *hw_settings; struct l_settings *hw_settings;
struct l_hashmap *if_name_map; struct l_hashmap *if_name_map;
struct l_queue *test_queue; struct l_queue *test_queue;
struct l_queue *test_stats_queue; struct l_queue *test_stats_queue;
bool start_iwd_daemon = true;
if (!key || !value) if (!key || !value)
return; return;
@ -1472,9 +1489,14 @@ static void create_network_and_run_tests(const void *key, void *value,
if_name_map, hostapd_pids)) if_name_map, hostapd_pids))
goto exit_hostapd; goto exit_hostapd;
l_settings_get_bool(hw_settings, HW_CONFIG_GROUP_SETUP,
HW_CONFIG_SETUP_START_IWD, &start_iwd_daemon);
if (start_iwd_daemon) {
iwd_pid = start_iwd(); iwd_pid = start_iwd();
if (iwd_pid == -1) if (iwd_pid == -1)
goto exit_hostapd; goto exit_hostapd;
}
if (chdir(config_dir_path) < 0) { if (chdir(config_dir_path) < 0) {
l_error("Failed to change directory"); l_error("Failed to change directory");
@ -1487,7 +1509,11 @@ static void create_network_and_run_tests(const void *key, void *value,
remove_absolute_path_dirs(abs_path_dirs, config_dir_path); remove_absolute_path_dirs(abs_path_dirs, config_dir_path);
if (iwd_pid > 0)
terminate_iwd(iwd_pid); terminate_iwd(iwd_pid);
else
terminate_all_iwd();
terminate_medium(medium_pid); terminate_medium(medium_pid);
exit_hostapd: exit_hostapd: