add proc file tests
This commit is contained in:
@@ -4,7 +4,6 @@
|
|||||||
#include <kunity_t.h>
|
#include <kunity_t.h>
|
||||||
#include <linux/fs.h>
|
#include <linux/fs.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/proc_fs.h>
|
|
||||||
#include <linux/seq_file.h>
|
#include <linux/seq_file.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <linux/string.h>
|
#include <linux/string.h>
|
||||||
@@ -48,11 +47,13 @@ static result_code_e create_test_file_name(/* in */ const char* module_name, /*
|
|||||||
//}
|
//}
|
||||||
|
|
||||||
//{ global var implements region
|
//{ global var implements region
|
||||||
struct proc_dir_entry* proc_dir;
|
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//{ local var implements region
|
//{ local var implements region
|
||||||
|
|
||||||
|
static struct proc_dir_entry* proc_dir;
|
||||||
|
|
||||||
static const struct file_operations proc_test_file_ops = {
|
static const struct file_operations proc_test_file_ops = {
|
||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.open = proc_test_file_open,
|
.open = proc_test_file_open,
|
||||||
@@ -61,12 +62,19 @@ static const struct file_operations proc_test_file_ops = {
|
|||||||
.release = single_release,
|
.release = single_release,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct seq_file* test_proc_file;
|
static struct seq_file* test_proc_file;
|
||||||
|
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//{ global function implements region
|
//{ global function implements region
|
||||||
|
|
||||||
|
|
||||||
|
result_code_e set_proc_test_root_folder(/* in */ struct proc_dir_entry * folder)
|
||||||
|
{
|
||||||
|
proc_dir = folder;
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
result_code_e create_proc_test_file(/* in */ const ptr_test_list_item_s list_item)
|
result_code_e create_proc_test_file(/* in */ const ptr_test_list_item_s list_item)
|
||||||
{
|
{
|
||||||
char buffer[MAX_FILE_NAME_LEN];
|
char buffer[MAX_FILE_NAME_LEN];
|
||||||
@@ -141,8 +149,6 @@ static result_code_e create_test_file_name(/* in */ const char* module_name, /*
|
|||||||
strcpy(buffer, module_name);
|
strcpy(buffer, module_name);
|
||||||
strcat(buffer, "-");
|
strcat(buffer, "-");
|
||||||
strcat(buffer, test_name);
|
strcat(buffer, test_name);
|
||||||
|
|
||||||
pr_info("%s\n%s\n%s\n", module_name, test_name, buffer);
|
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
#include "kunity_proc_test_file_handler_t.h"
|
#include "kunity_proc_test_file_handler_t.h"
|
||||||
//{ global include region
|
//{ global include region
|
||||||
|
|
||||||
|
#include <linux/proc_fs.h>
|
||||||
|
|
||||||
//}
|
//}
|
||||||
//{ local include region
|
//{ local include region
|
||||||
|
|
||||||
@@ -18,6 +20,8 @@ extern "C" {
|
|||||||
|
|
||||||
extern result_code_e create_proc_test_file(/* in */ const ptr_test_list_item_s list_item);
|
extern result_code_e create_proc_test_file(/* in */ const ptr_test_list_item_s list_item);
|
||||||
|
|
||||||
|
extern result_code_e set_proc_test_root_folder(/* in */ struct proc_dir_entry * folder);
|
||||||
|
|
||||||
//}
|
//}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
#include <kunity_t.h>
|
#include <kunity_t.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/proc_fs.h>
|
|
||||||
#include <linux/workqueue.h>
|
#include <linux/workqueue.h>
|
||||||
|
|
||||||
//}
|
//}
|
||||||
@@ -44,7 +43,7 @@ static void kunity_exit(void);
|
|||||||
|
|
||||||
//{ global variabel implements region
|
//{ global variabel implements region
|
||||||
|
|
||||||
extern struct proc_dir_entry* proc_dir;
|
|
||||||
|
|
||||||
//}
|
//}
|
||||||
|
|
||||||
@@ -55,6 +54,8 @@ static struct workqueue_struct* queue;
|
|||||||
DECLARE_WORK(work, init_tests);
|
DECLARE_WORK(work, init_tests);
|
||||||
|
|
||||||
static test_query_s query = { KUNITY_DEFAULT_TEST_NAME_FITER_STR, "*" };
|
static test_query_s query = { KUNITY_DEFAULT_TEST_NAME_FITER_STR, "*" };
|
||||||
|
|
||||||
|
static struct proc_dir_entry* proc_test_root = NULL;
|
||||||
//}
|
//}
|
||||||
|
|
||||||
//{ global function implements region
|
//{ global function implements region
|
||||||
@@ -66,11 +67,12 @@ static test_query_s query = { KUNITY_DEFAULT_TEST_NAME_FITER_STR, "*" };
|
|||||||
static void init_tests(struct work_struct* work)
|
static void init_tests(struct work_struct* work)
|
||||||
{
|
{
|
||||||
pr_info("init tests");
|
pr_info("init tests");
|
||||||
proc_dir = proc_mkdir("kunity_test", NULL);
|
proc_test_root = proc_mkdir("kunity_test", NULL);
|
||||||
if (proc_dir == NULL || find_tests(&query) != OK) {
|
if (proc_test_root == NULL || find_tests(&query) != OK) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set_proc_test_root_folder(proc_test_root);
|
||||||
iterate_test_list(query.result_list, &create_proc_test_file);
|
iterate_test_list(query.result_list, &create_proc_test_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,7 +96,7 @@ static void kunity_exit()
|
|||||||
|
|
||||||
destroy_workqueue(queue);
|
destroy_workqueue(queue);
|
||||||
destroy_test_list(&query.result_list);
|
destroy_test_list(&query.result_list);
|
||||||
proc_remove(proc_dir);
|
proc_remove(proc_test_root);
|
||||||
}
|
}
|
||||||
|
|
||||||
//}
|
//}
|
||||||
|
|||||||
51
test/src/kunity_proc_test_file_handler_tests.c
Normal file
51
test/src/kunity_proc_test_file_handler_tests.c
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
#include <kunity.h>
|
||||||
|
#include <kunity_proc_test_file_handler.h>
|
||||||
|
#include <linux/module.h>
|
||||||
|
#include <linux/string.h>
|
||||||
|
|
||||||
|
|
||||||
|
//extern result_code_e kunity_module_runner_fake_test_function_ok(const ptr_output_functions_s output);
|
||||||
|
|
||||||
|
KUNITY_TEST(create_proc_test_file_null_argument)
|
||||||
|
{
|
||||||
|
TEST_ASSERT_EQUAL(ERROR_NULL_ARGUMENT, create_proc_test_file(NULL));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
KUNITY_TEST(create_proc_test_file_invalid_argument)
|
||||||
|
{
|
||||||
|
test_list_item_s test_item;
|
||||||
|
test_item.test = NULL;
|
||||||
|
TEST_ASSERT_EQUAL(ERROR_INVALID_ARGUMENT, create_proc_test_file(&test_item));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
KUNITY_TEST(create_proc_test_file_invalid_operation_null_names)
|
||||||
|
{
|
||||||
|
test_s test;
|
||||||
|
test_list_item_s test_item;
|
||||||
|
test.modul_name = NULL;
|
||||||
|
test.name = NULL;
|
||||||
|
test.test_function = NULL;
|
||||||
|
|
||||||
|
test_item.test = &test;
|
||||||
|
TEST_ASSERT_EQUAL(ERROR_INVALID_OPERATION, create_proc_test_file(&test_item));
|
||||||
|
}
|
||||||
|
|
||||||
|
KUNITY_TEST(create_proc_test_file_ok)
|
||||||
|
{
|
||||||
|
test_s test;
|
||||||
|
test_list_item_s test_item;
|
||||||
|
struct proc_dir_entry* test_root = proc_mkdir("test_kunity_test_root", NULL);
|
||||||
|
test.modul_name = "fake_test_module";
|
||||||
|
test.name = "fake_test_function";
|
||||||
|
test.test_function = NULL;
|
||||||
|
test_item.test = &test;
|
||||||
|
if (test_root == NULL) {
|
||||||
|
TEST_FAIL_MESSAGE("could not create \"test_kunity_test_root proc\" folder");
|
||||||
|
}
|
||||||
|
|
||||||
|
set_proc_test_root_folder(test_root);
|
||||||
|
TEST_ASSERT_EQUAL(OK, create_proc_test_file(&test_item));
|
||||||
|
proc_remove(test_root);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user