提交 614cdccf 编写于 作者: L lnlan

fix(test): 修复sys部分用例因依赖passwd、group文件而失败

【背景】
1.sys部分用例因依赖passwd、group文件而失败

【修改方案】
1.用例执行前检查是否存在这些配置文件,不存在就跳过该用例

re#I48IUC

Change-Id: I787ce4b200f2a7546e57290b7dd073127caa07bb
Signed-off-by: Nlnlan <lanleinan@163.com>
上级 0507b9e8
...@@ -107,6 +107,8 @@ ...@@ -107,6 +107,8 @@
#define HWI_NUM_INTVALID OS_HWI_MAX_NUM #define HWI_NUM_INTVALID OS_HWI_MAX_NUM
#define writel(value, address) WRITE_UINT32(value, address) #define writel(value, address) WRITE_UINT32(value, address)
extern UINT32 PrepareFileEnv(CHAR *pathList[], CHAR *streamList[], INT32 streamLen[], INT32 listCnt);
extern UINT32 RecoveryFileEnv(CHAR *pathList[], INT32 listCnt);
extern UINT32 PosixPthreadInit(pthread_attr_t *attr, int pri); extern UINT32 PosixPthreadInit(pthread_attr_t *attr, int pri);
extern UINT32 PosixPthreadDestroy(pthread_attr_t *attr, pthread_t thread); extern UINT32 PosixPthreadDestroy(pthread_attr_t *attr, pthread_t thread);
...@@ -233,18 +235,6 @@ UINT32 LosTaskDelay(UINT32 tick); ...@@ -233,18 +235,6 @@ UINT32 LosTaskDelay(UINT32 tick);
#define TEST_TASKDELAY_20TICK 20 #define TEST_TASKDELAY_20TICK 20
#define TEST_TASKDELAY_50TICK 50 #define TEST_TASKDELAY_50TICK 50
#ifdef TEST3731
#define TestTimer2ValueGet(temp) READ_UINT32(temp, TIMER1_REG_BASE + TIMER_VALUE)
#elif defined TEST3559
#define TestTimer2ValueGet(temp) READ_UINT32(temp, TIMER3_REG_BASE + TIMER_VALUE)
#else
#define TestTimer2ValueGet(temp) READ_UINT32(temp, TIMER2_REG_BASE + TIMER_VALUE)
#endif
extern void TestTimer2Config(void);
#define REALTIME(time) (UINT32)((UINT64)(0xffffffff - time) * 1000 / OS_SYS_CLOCK) /* accuracy:ms */
#define HW_TMI(time) (UINT32)((UINT64)(0xffffffff - time) * 1000 / (OS_SYS_CLOCK / 1000000)) /* accuracy:ns */
#define uart_printf_func printf #define uart_printf_func printf
#ifndef VFS_STAT_PRINTF #ifndef VFS_STAT_PRINTF
...@@ -268,7 +258,6 @@ extern void TestTimer2Config(void); ...@@ -268,7 +258,6 @@ extern void TestTimer2Config(void);
#endif #endif
extern UINT32 g_shellTestQueueID; extern UINT32 g_shellTestQueueID;
extern int g_min_mempool_size;
extern UINT32 g_testCount; extern UINT32 g_testCount;
extern UINT32 g_testCount1; extern UINT32 g_testCount1;
extern UINT32 g_testCount2; extern UINT32 g_testCount2;
...@@ -400,10 +389,6 @@ void Test_usb_shellcmd(controller_type ctype, device_type dtype, usb_test_type t ...@@ -400,10 +389,6 @@ void Test_usb_shellcmd(controller_type ctype, device_type dtype, usb_test_type t
extern int Gettid(void); extern int Gettid(void);
#define COLOR(c) "\033[" c "m"
#define COLOR_RED(text) COLOR("1;31") text COLOR("0")
#define COLOR_GREEN(text) COLOR("1;32") text COLOR("0")
/* like the ctime/asctime api, use static buffer, though not thread-safe. */ /* like the ctime/asctime api, use static buffer, though not thread-safe. */
static inline const char *Curtime() static inline const char *Curtime()
{ {
......
...@@ -129,6 +129,70 @@ VOID test_init_spinor(VOID); ...@@ -129,6 +129,70 @@ VOID test_init_spinor(VOID);
VOID test_deinit_jffs(VOID); VOID test_deinit_jffs(VOID);
VOID test_mtd_jffs(VOID); VOID test_mtd_jffs(VOID);
UINT32 PrepareFileEnv(CHAR *pathList[], CHAR *streamList[], INT32 streamLen[], INT32 listCnt)
{
CHAR nameBuf[256] = {0};
for (UINT32 i = 0; i < listCnt; i++) {
UINT32 ret = access(pathList[i], 0);
if (ret == 0) {
ret = memcpy_s(nameBuf, sizeof(nameBuf), pathList[i], strlen(pathList[i]) + 1);
if (ret != 0) {
return -1;
}
ret = strcat_s(nameBuf, sizeof(nameBuf), "_bak_for_test");
if (ret != 0) {
return -1;
}
ret = rename(pathList[i], nameBuf);
if (ret != 0) {
return -1;
}
}
FILE *fp = fopen(pathList[i], "w");
if (fp == NULL) {
return -1;
}
ret = fwrite(streamList[i], 1, streamLen[i], fp);
if (ret != streamLen[i]) {
(VOID)fclose(fp);
return -1;
}
ret = fclose(fp);
if (ret != 0) {
printf("%d\n", errno);
}
}
return 0;
}
UINT32 RecoveryFileEnv(CHAR *pathList[], INT32 listCnt)
{
UINT32 ret;
CHAR nameBuf[256] = {0};
for (UINT32 i = 0; i < listCnt; i++) {
ret = remove(pathList[i]);
if (ret != 0) {
printf("ret = %d, err = %d\n", ret, errno);
}
ret = memcpy_s(nameBuf, sizeof(nameBuf), pathList[i], strlen(pathList[i]) + 1);
if (ret != 0) {
return -1;
}
ret = strcat_s(nameBuf, sizeof(nameBuf), "_bak_for_test");
if (ret != 0) {
return -1;
}
ret = access(nameBuf, 0);
if (ret == 0) {
ret = rename(nameBuf, pathList[i]);
if (ret != 0) {
return -1;
}
}
}
return 0;
}
VOID Wfi(VOID) VOID Wfi(VOID)
{ {
__asm__ __volatile__("wfi" : : : "memory"); __asm__ __volatile__("wfi" : : : "memory");
......
...@@ -51,6 +51,8 @@ ...@@ -51,6 +51,8 @@
#define FE_UPWARD 0x800 #define FE_UPWARD 0x800
#define FE_TOWARDZERO 0xc00 #define FE_TOWARDZERO 0xc00
extern CHAR *g_groupFileStream;
extern CHAR *g_passwdFileStream;
extern VOID ItTestSys001(VOID); extern VOID ItTestSys001(VOID);
extern VOID IT_TEST_SYS_002(VOID); extern VOID IT_TEST_SYS_002(VOID);
extern VOID IT_TEST_SYS_003(VOID); extern VOID IT_TEST_SYS_003(VOID);
...@@ -78,7 +80,7 @@ extern VOID ItTestSys024(VOID); ...@@ -78,7 +80,7 @@ extern VOID ItTestSys024(VOID);
extern VOID ItTestSys025(VOID); extern VOID ItTestSys025(VOID);
extern VOID ItTestSys026(VOID); extern VOID ItTestSys026(VOID);
extern VOID ItTestSys027(VOID); extern VOID ItTestSys027(VOID);
extern VOID IT_TEST_SYS_028(VOID); extern VOID ItTestSys028(VOID);
extern VOID ItTestSys029(VOID); extern VOID ItTestSys029(VOID);
extern VOID IT_TEST_SYS_030(VOID); extern VOID IT_TEST_SYS_030(VOID);
extern VOID IT_TEST_SYS_031(VOID); extern VOID IT_TEST_SYS_031(VOID);
......
...@@ -30,51 +30,66 @@ ...@@ -30,51 +30,66 @@
*/ */
#include "It_test_sys.h" #include "It_test_sys.h"
static UINT32 TestCase(VOID) STATIC UINT32 TestCase(VOID)
{ {
struct passwd *user1 = nullptr; struct passwd *user1 = nullptr;
struct passwd *user2 = nullptr; struct passwd *user2 = nullptr;
struct passwd *user3 = nullptr; struct passwd *user3 = nullptr;
struct passwd *user4 = nullptr; struct passwd *user4 = nullptr;
INT32 ret;
CHAR *pathList[] = {"/etc/group", "/etc/passwd"};
CHAR *streamList[] = {g_groupFileStream, g_passwdFileStream};
INT32 streamLen[] = {strlen(g_groupFileStream), strlen(g_passwdFileStream)};
ret = PrepareFileEnv(pathList, streamList, streamLen, 2); /* 2, group & passwd */
if (ret != 0) {
printf("error: need some env file, but prepare is not ok");
(VOID)RecoveryFileEnv(pathList, 2); /* 2, group & passwd */
return -1;
}
user1 = getpwnam("root"); user1 = getpwnam("root");
ICUNIT_ASSERT_NOT_EQUAL(user1, nullptr, -1); ICUNIT_GOTO_NOT_EQUAL(user1, nullptr, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_name, "root", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_name, "root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user1->pw_uid, 0, -1); ICUNIT_GOTO_EQUAL(user1->pw_uid, 0, -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user1->pw_gid, 0, -1); ICUNIT_GOTO_EQUAL(user1->pw_gid, 0, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_gecos, "root", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_gecos, "root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_dir, "/root", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_dir, "/root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_shell, "/bin/bash", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_shell, "/bin/bash", -1, ERROUT);
user2 = getpwnam("daemon"); user2 = getpwnam("daemon");
ICUNIT_ASSERT_NOT_EQUAL(user2, nullptr, -1); ICUNIT_GOTO_NOT_EQUAL(user2, nullptr, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_name, "daemon", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_name, "daemon", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user2->pw_uid, 1, -1); ICUNIT_GOTO_EQUAL(user2->pw_uid, 1, -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user2->pw_gid, 1, -1); ICUNIT_GOTO_EQUAL(user2->pw_gid, 1, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_gecos, "daemon", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_gecos, "daemon", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_dir, "/usr/sbin", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_dir, "/usr/sbin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_shell, "/usr/sbin/nologin", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_shell, "/usr/sbin/nologin", -1, ERROUT);
user3 = getpwnam("bin"); user3 = getpwnam("bin");
ICUNIT_ASSERT_NOT_EQUAL(user3, nullptr, -1); ICUNIT_GOTO_NOT_EQUAL(user3, nullptr, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_name, "bin", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_name, "bin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user3->pw_uid, 2, -1); ICUNIT_GOTO_EQUAL(user3->pw_uid, 2, -1, ERROUT); /* 2, from etc/group */
ICUNIT_ASSERT_EQUAL(user3->pw_gid, 2, -1); ICUNIT_GOTO_EQUAL(user3->pw_gid, 2, -1, ERROUT); /* 2, from etc/group */
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_gecos, "bin", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_gecos, "bin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_dir, "/bin", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_dir, "/bin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_shell, "/usr/sbin/nologin", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_shell, "/usr/sbin/nologin", -1, ERROUT);
user4 = getpwnam("lyw"); user4 = getpwnam("lyw");
ICUNIT_ASSERT_EQUAL(user4, nullptr, -1); ICUNIT_GOTO_EQUAL(user4, nullptr, -1, ERROUT);
user4 = getpwnam(""); user4 = getpwnam("");
ICUNIT_ASSERT_EQUAL(user4, nullptr, -1); ICUNIT_GOTO_EQUAL(user4, nullptr, -1, ERROUT);
(VOID)RecoveryFileEnv(pathList, 2); /* 2, group & passwd */
return 0; return 0;
ERROUT:
(VOID)RecoveryFileEnv(pathList, 2); /* 2, group & passwd */
return -1;
} }
VOID ItTestSys018(VOID) VOID ItTestSys018(VOID)
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
*/ */
#include "It_test_sys.h" #include "It_test_sys.h"
static UINT32 TestCase(VOID) STATIC UINT32 TestCase(VOID)
{ {
struct passwd pwd; struct passwd pwd;
struct passwd *user1 = nullptr; struct passwd *user1 = nullptr;
...@@ -38,61 +38,75 @@ static UINT32 TestCase(VOID) ...@@ -38,61 +38,75 @@ static UINT32 TestCase(VOID)
struct passwd *user3 = nullptr; struct passwd *user3 = nullptr;
struct passwd *user4 = nullptr; struct passwd *user4 = nullptr;
struct passwd *user5 = nullptr; struct passwd *user5 = nullptr;
char buf1[1024] = { 0 }; CHAR buf1[1024] = { 0 }; /* 1024, buffer for test */
char buf2[2] = { 0 }; CHAR buf2[2] = { 0 }; /* 2, for test,this buffer is not enough large to save data */
int ret; INT32 ret;
CHAR *pathList[] = {"/etc/group", "/etc/passwd"};
CHAR *streamList[] = {g_groupFileStream, g_passwdFileStream};
INT32 streamLen[] = {strlen(g_groupFileStream), strlen(g_passwdFileStream)};
ret = PrepareFileEnv(pathList, streamList, streamLen, 2); /* 2, group & passwd */
if (ret != 0) {
printf("error: need some env file, but prepare is not ok");
(VOID)RecoveryFileEnv(pathList, 2); /* 2, group & passwd */
return -1;
}
ret = getpwnam_r("root", &pwd, buf1, sizeof(buf1), &user1); ret = getpwnam_r("root", &pwd, buf1, sizeof(buf1), &user1);
ICUNIT_ASSERT_EQUAL(ret, 0, ret); ICUNIT_GOTO_EQUAL(ret, 0, ret, ERROUT);
ICUNIT_ASSERT_NOT_EQUAL(user1, nullptr, -1); ICUNIT_GOTO_NOT_EQUAL(user1, nullptr, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_name, "root", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_name, "root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user1->pw_uid, 0, -1); ICUNIT_GOTO_EQUAL(user1->pw_uid, 0, -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user1->pw_gid, 0, -1); ICUNIT_GOTO_EQUAL(user1->pw_gid, 0, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_gecos, "root", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_gecos, "root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_dir, "/root", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_dir, "/root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_shell, "/bin/bash", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_shell, "/bin/bash", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(pwd.pw_name, "root", -1); ICUNIT_GOTO_STRING_EQUAL(pwd.pw_name, "root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(pwd.pw_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(pwd.pw_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(pwd.pw_uid, 0, -1); ICUNIT_GOTO_EQUAL(pwd.pw_uid, 0, -1, ERROUT);
ICUNIT_ASSERT_EQUAL(pwd.pw_gid, 0, -1); ICUNIT_GOTO_EQUAL(pwd.pw_gid, 0, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(pwd.pw_gecos, "root", -1); ICUNIT_GOTO_STRING_EQUAL(pwd.pw_gecos, "root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(pwd.pw_dir, "/root", -1); ICUNIT_GOTO_STRING_EQUAL(pwd.pw_dir, "/root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(pwd.pw_shell, "/bin/bash", -1); ICUNIT_GOTO_STRING_EQUAL(pwd.pw_shell, "/bin/bash", -1, ERROUT);
ret = getpwnam_r("daemon", &pwd, buf1, sizeof(buf1), &user2); ret = getpwnam_r("daemon", &pwd, buf1, sizeof(buf1), &user2);
ICUNIT_ASSERT_NOT_EQUAL(user2, nullptr, -1); ICUNIT_GOTO_NOT_EQUAL(user2, nullptr, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_name, "daemon", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_name, "daemon", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user2->pw_uid, 1, -1); ICUNIT_GOTO_EQUAL(user2->pw_uid, 1, -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user2->pw_gid, 1, -1); ICUNIT_GOTO_EQUAL(user2->pw_gid, 1, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_gecos, "daemon", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_gecos, "daemon", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_dir, "/usr/sbin", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_dir, "/usr/sbin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_shell, "/usr/sbin/nologin", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_shell, "/usr/sbin/nologin", -1, ERROUT);
ret = getpwnam_r("bin", &pwd, buf1, sizeof(buf1), &user3); ret = getpwnam_r("bin", &pwd, buf1, sizeof(buf1), &user3);
ICUNIT_ASSERT_NOT_EQUAL(user3, nullptr, -1); ICUNIT_GOTO_NOT_EQUAL(user3, nullptr, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_name, "bin", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_name, "bin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user3->pw_uid, 2, -1); ICUNIT_GOTO_EQUAL(user3->pw_uid, 2, -1, ERROUT); /* 2, from etc/group */
ICUNIT_ASSERT_EQUAL(user3->pw_gid, 2, -1); ICUNIT_GOTO_EQUAL(user3->pw_gid, 2, -1, ERROUT); /* 2, from etc/group */
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_gecos, "bin", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_gecos, "bin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_dir, "/bin", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_dir, "/bin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_shell, "/usr/sbin/nologin", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_shell, "/usr/sbin/nologin", -1, ERROUT);
ret = getpwnam_r("root", &pwd, buf2, sizeof(buf2), &user4); ret = getpwnam_r("root", &pwd, buf2, sizeof(buf2), &user4);
ICUNIT_ASSERT_EQUAL(ret, ERANGE, ret); ICUNIT_GOTO_EQUAL(ret, ERANGE, ret, ERROUT);
ICUNIT_ASSERT_EQUAL(user4, nullptr, -1); ICUNIT_GOTO_EQUAL(user4, nullptr, -1, ERROUT);
ret = getpwnam_r(nullptr, &pwd, buf1, sizeof(buf1), &user5); ret = getpwnam_r(nullptr, &pwd, buf1, sizeof(buf1), &user5);
ICUNIT_ASSERT_EQUAL(ret, 0, -1); ICUNIT_GOTO_EQUAL(ret, 0, -1, ERROUT);
ret = getpwnam_r("", &pwd, buf1, sizeof(buf1), &user5); ret = getpwnam_r("", &pwd, buf1, sizeof(buf1), &user5);
ICUNIT_ASSERT_NOT_EQUAL(ret, 0, -1); ICUNIT_GOTO_NOT_EQUAL(ret, 0, -1, ERROUT);
ret = getpwnam_r("sssssss", &pwd, buf1, sizeof(buf1), &user5); ret = getpwnam_r("sssssss", &pwd, buf1, sizeof(buf1), &user5);
ICUNIT_ASSERT_NOT_EQUAL(ret, 0, -1); ICUNIT_GOTO_NOT_EQUAL(ret, 0, -1, ERROUT);
(VOID)RecoveryFileEnv(pathList, 2); /* 2, group & passwd */
return 0; return 0;
ERROUT:
(VOID)RecoveryFileEnv(pathList, 2); /* 2, group & passwd */
return -1;
} }
VOID ItTestSys019(VOID) VOID ItTestSys019(VOID)
......
...@@ -30,53 +30,68 @@ ...@@ -30,53 +30,68 @@
*/ */
#include "It_test_sys.h" #include "It_test_sys.h"
static UINT32 TestCase(VOID) STATIC UINT32 TestCase(VOID)
{ {
struct passwd *user1 = nullptr; struct passwd *user1 = nullptr;
struct passwd *user2 = nullptr; struct passwd *user2 = nullptr;
struct passwd *user3 = nullptr; struct passwd *user3 = nullptr;
struct passwd *user4 = nullptr; struct passwd *user4 = nullptr;
INT32 ret;
CHAR *pathList[] = {"/etc/group", "/etc/passwd"};
CHAR *streamList[] = {g_groupFileStream, g_passwdFileStream};
INT32 streamLen[] = {strlen(g_groupFileStream), strlen(g_passwdFileStream)};
ret = PrepareFileEnv(pathList, streamList, streamLen, 2); /* 2, group & passwd */
if (ret != 0) {
printf("error: need some env file, but prepare is not ok");
(VOID)RecoveryFileEnv(pathList, 2); /* 2, group & passwd */
return -1;
}
user1 = getpwuid(0); user1 = getpwuid(0);
ICUNIT_ASSERT_NOT_EQUAL(user1, nullptr, -1); ICUNIT_GOTO_NOT_EQUAL(user1, nullptr, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_name, "root", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_name, "root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user1->pw_uid, 0, -1); ICUNIT_GOTO_EQUAL(user1->pw_uid, 0, -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user1->pw_gid, 0, -1); ICUNIT_GOTO_EQUAL(user1->pw_gid, 0, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_gecos, "root", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_gecos, "root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_dir, "/root", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_dir, "/root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_shell, "/bin/bash", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_shell, "/bin/bash", -1, ERROUT);
user2 = getpwuid(1); user2 = getpwuid(1);
ICUNIT_ASSERT_NOT_EQUAL(user2, nullptr, -1); ICUNIT_GOTO_NOT_EQUAL(user2, nullptr, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_name, "daemon", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_name, "daemon", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user2->pw_uid, 1, -1); ICUNIT_GOTO_EQUAL(user2->pw_uid, 1, -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user2->pw_gid, 1, -1); ICUNIT_GOTO_EQUAL(user2->pw_gid, 1, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_gecos, "daemon", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_gecos, "daemon", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_dir, "/usr/sbin", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_dir, "/usr/sbin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_shell, "/usr/sbin/nologin", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_shell, "/usr/sbin/nologin", -1, ERROUT);
user3 = getpwuid(2); user3 = getpwuid(2); /* 2, from etc/group */
ICUNIT_ASSERT_NOT_EQUAL(user3, nullptr, -1); ICUNIT_GOTO_NOT_EQUAL(user3, nullptr, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_name, "bin", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_name, "bin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user3->pw_uid, 2, -1); ICUNIT_GOTO_EQUAL(user3->pw_uid, 2, -1, ERROUT); /* 2, from etc/group */
ICUNIT_ASSERT_EQUAL(user3->pw_gid, 2, -1); ICUNIT_GOTO_EQUAL(user3->pw_gid, 2, -1, ERROUT); /* 2, from etc/group */
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_gecos, "bin", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_gecos, "bin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_dir, "/bin", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_dir, "/bin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_shell, "/usr/sbin/nologin", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_shell, "/usr/sbin/nologin", -1, ERROUT);
user4 = getpwuid(200); user4 = getpwuid(200);
ICUNIT_ASSERT_EQUAL(user4, nullptr, -1); ICUNIT_GOTO_EQUAL(user4, nullptr, -1, ERROUT);
user4 = getpwuid(-100); user4 = getpwuid(-100);
ICUNIT_ASSERT_EQUAL(user4, nullptr, -1); ICUNIT_GOTO_EQUAL(user4, nullptr, -1, ERROUT);
user4 = getpwuid(100000); user4 = getpwuid(100000);
ICUNIT_ASSERT_EQUAL(user4, nullptr, -1); ICUNIT_GOTO_EQUAL(user4, nullptr, -1, ERROUT);
(VOID)RecoveryFileEnv(pathList, 2); /* 2, group & passwd */
return 0; return 0;
ERROUT:
(VOID)RecoveryFileEnv(pathList, 2); /* 2, group & passwd */
return -1;
} }
VOID ItTestSys020(VOID) VOID ItTestSys020(VOID)
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
*/ */
#include "It_test_sys.h" #include "It_test_sys.h"
static UINT32 TestCase(VOID) STATIC UINT32 TestCase(VOID)
{ {
struct passwd pwd; struct passwd pwd;
struct passwd *user1 = nullptr; struct passwd *user1 = nullptr;
...@@ -38,69 +38,83 @@ static UINT32 TestCase(VOID) ...@@ -38,69 +38,83 @@ static UINT32 TestCase(VOID)
struct passwd *user3 = nullptr; struct passwd *user3 = nullptr;
struct passwd *user4 = nullptr; struct passwd *user4 = nullptr;
struct passwd *user5 = nullptr; struct passwd *user5 = nullptr;
char buf1[1024] = { 0 }; CHAR buf1[1024] = { 0 }; /* 1024, buffer for test */
char buf2[2] = { 0 }; CHAR buf2[2] = { 0 }; /* 2, for test,this buffer is not enough large to save data */
int ret; INT32 ret;
CHAR *pathList[] = {"/etc/group", "/etc/passwd"};
CHAR *streamList[] = {g_groupFileStream, g_passwdFileStream};
INT32 streamLen[] = {strlen(g_groupFileStream), strlen(g_passwdFileStream)};
ret = PrepareFileEnv(pathList, streamList, streamLen, 2); /* 2, group & passwd */
if (ret != 0) {
printf("error: need some env file, but prepare is not ok");
(VOID)RecoveryFileEnv(pathList, 2); /* 2, group & passwd */
return -1;
}
ret = getpwuid_r(0, &pwd, buf1, sizeof(buf1), &user1); ret = getpwuid_r(0, &pwd, buf1, sizeof(buf1), &user1);
ICUNIT_ASSERT_EQUAL(ret, 0, ret); ICUNIT_GOTO_EQUAL(ret, 0, ret, ERROUT);
ICUNIT_ASSERT_NOT_EQUAL(user1, NULL, -1); ICUNIT_GOTO_NOT_EQUAL(user1, NULL, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_name, "root", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_name, "root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user1->pw_uid, 0, -1); ICUNIT_GOTO_EQUAL(user1->pw_uid, 0, -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user1->pw_gid, 0, -1); ICUNIT_GOTO_EQUAL(user1->pw_gid, 0, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_gecos, "root", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_gecos, "root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_dir, "/root", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_dir, "/root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_shell, "/bin/bash", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_shell, "/bin/bash", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(pwd.pw_name, "root", -1); ICUNIT_GOTO_STRING_EQUAL(pwd.pw_name, "root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(pwd.pw_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(pwd.pw_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(pwd.pw_uid, 0, -1); ICUNIT_GOTO_EQUAL(pwd.pw_uid, 0, -1, ERROUT);
ICUNIT_ASSERT_EQUAL(pwd.pw_gid, 0, -1); ICUNIT_GOTO_EQUAL(pwd.pw_gid, 0, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(pwd.pw_gecos, "root", -1); ICUNIT_GOTO_STRING_EQUAL(pwd.pw_gecos, "root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(pwd.pw_dir, "/root", -1); ICUNIT_GOTO_STRING_EQUAL(pwd.pw_dir, "/root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(pwd.pw_shell, "/bin/bash", -1); ICUNIT_GOTO_STRING_EQUAL(pwd.pw_shell, "/bin/bash", -1, ERROUT);
ret = getpwuid_r(1, &pwd, buf1, sizeof(buf1), &user2); ret = getpwuid_r(1, &pwd, buf1, sizeof(buf1), &user2);
ICUNIT_ASSERT_EQUAL(ret, 0, ret); ICUNIT_GOTO_EQUAL(ret, 0, ret, ERROUT);
ICUNIT_ASSERT_NOT_EQUAL(user2, nullptr, -1); ICUNIT_GOTO_NOT_EQUAL(user2, nullptr, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_name, "daemon", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_name, "daemon", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user2->pw_uid, 1, -1); ICUNIT_GOTO_EQUAL(user2->pw_uid, 1, -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user2->pw_gid, 1, -1); ICUNIT_GOTO_EQUAL(user2->pw_gid, 1, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_gecos, "daemon", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_gecos, "daemon", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_dir, "/usr/sbin", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_dir, "/usr/sbin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_shell, "/usr/sbin/nologin", -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_shell, "/usr/sbin/nologin", -1, ERROUT);
ret = getpwuid_r(2, &pwd, buf1, sizeof(buf1), &user3); ret = getpwuid_r(2, &pwd, buf1, sizeof(buf1), &user3); /* 2, from etc/group */
ICUNIT_ASSERT_EQUAL(ret, 0, ret); ICUNIT_GOTO_EQUAL(ret, 0, ret, ERROUT);
ICUNIT_ASSERT_NOT_EQUAL(user3, nullptr, -1); ICUNIT_GOTO_NOT_EQUAL(user3, nullptr, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_name, "bin", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_name, "bin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user3->pw_uid, 2, -1); ICUNIT_GOTO_EQUAL(user3->pw_uid, 2, -1, ERROUT); /* 2, from etc/group */
ICUNIT_ASSERT_EQUAL(user3->pw_gid, 2, -1); ICUNIT_GOTO_EQUAL(user3->pw_gid, 2, -1, ERROUT); /* 2, from etc/group */
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_gecos, "bin", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_gecos, "bin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_dir, "/bin", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_dir, "/bin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user3->pw_shell, "/usr/sbin/nologin", -1); ICUNIT_GOTO_STRING_EQUAL(user3->pw_shell, "/usr/sbin/nologin", -1, ERROUT);
ret = getpwuid_r(0, &pwd, buf2, sizeof(buf2), &user4); ret = getpwuid_r(0, &pwd, buf2, sizeof(buf2), &user4);
ICUNIT_ASSERT_EQUAL(ret, ERANGE, ret); ICUNIT_GOTO_EQUAL(ret, ERANGE, ret, ERROUT);
ICUNIT_ASSERT_EQUAL(user4, nullptr, -1); ICUNIT_GOTO_EQUAL(user4, nullptr, -1, ERROUT);
ret = getpwuid_r(200, &pwd, buf1, sizeof(buf1), &user5); ret = getpwuid_r(200, &pwd, buf1, sizeof(buf1), &user5); /* 200, invalid param for test */
ICUNIT_ASSERT_EQUAL(user5, nullptr, -1); ICUNIT_GOTO_EQUAL(user5, nullptr, -1, ERROUT);
ICUNIT_ASSERT_NOT_EQUAL(ret, 0, -1); ICUNIT_GOTO_NOT_EQUAL(ret, 0, -1, ERROUT);
ret = getpwuid_r(100000, &pwd, buf1, sizeof(buf1), &user5); ret = getpwuid_r(100000, &pwd, buf1, sizeof(buf1), &user5); /* 100000, invalid param for test */
ICUNIT_ASSERT_EQUAL(user5, nullptr, -1); ICUNIT_GOTO_EQUAL(user5, nullptr, -1, ERROUT);
ICUNIT_ASSERT_NOT_EQUAL(ret, 0, -1); ICUNIT_GOTO_NOT_EQUAL(ret, 0, -1, ERROUT);
ret = getpwuid_r(-100, &pwd, buf1, sizeof(buf1), &user5); ret = getpwuid_r(-100, &pwd, buf1, sizeof(buf1), &user5); /* -100, invalid param for test */
ICUNIT_ASSERT_EQUAL(user5, nullptr, -1); ICUNIT_GOTO_EQUAL(user5, nullptr, -1, ERROUT);
ICUNIT_ASSERT_NOT_EQUAL(ret, 0, -1); ICUNIT_GOTO_NOT_EQUAL(ret, 0, -1, ERROUT);
(VOID)RecoveryFileEnv(pathList, 2); /* 2, group & passwd */
return 0; return 0;
ERROUT:
(VOID)RecoveryFileEnv(pathList, 2); /* 2, group & passwd */
return -1;
} }
VOID ItTestSys021(VOID) VOID ItTestSys021(VOID)
......
...@@ -30,47 +30,64 @@ ...@@ -30,47 +30,64 @@
*/ */
#include "It_test_sys.h" #include "It_test_sys.h"
static UINT32 TestCase(VOID) STATIC UINT32 TestCase(VOID)
{ {
struct passwd *user1 = nullptr; struct passwd *user1 = nullptr;
struct passwd *user2 = nullptr; struct passwd *user2 = nullptr;
INT32 ret;
CHAR *pathList[] = {"/etc/group", "/etc/passwd"};
CHAR *streamList[] = {g_groupFileStream, g_passwdFileStream};
INT32 streamLen[] = {strlen(g_groupFileStream), strlen(g_passwdFileStream)};
ret = PrepareFileEnv(pathList, streamList, streamLen, 2); /* 2, group & passwd */
if (ret != 0) {
printf("error: need some env file, but prepare is not ok");
(VOID)RecoveryFileEnv(pathList, 2); /* 2, group & passwd */
return -1;
}
user1 = getpwent(); user1 = getpwent();
ICUNIT_ASSERT_NOT_EQUAL(user1, NULL, -1); ICUNIT_GOTO_NOT_EQUAL(user1, NULL, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_name, "root", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_name, "root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user1->pw_uid, 0, -1); ICUNIT_GOTO_EQUAL(user1->pw_uid, 0, -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user1->pw_gid, 0, -1); ICUNIT_GOTO_EQUAL(user1->pw_gid, 0, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_gecos, "root", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_gecos, "root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_dir, "/root", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_dir, "/root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_shell, "/bin/bash", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_shell, "/bin/bash", -1, ERROUT);
user1 = getpwent(); user1 = getpwent();
ICUNIT_ASSERT_NOT_EQUAL(user1, NULL, -1); ICUNIT_GOTO_NOT_EQUAL(user1, NULL, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_name, "daemon", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_name, "daemon", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user1->pw_uid, 1, -1); ICUNIT_GOTO_EQUAL(user1->pw_uid, 1, -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user1->pw_gid, 1, -1); ICUNIT_GOTO_EQUAL(user1->pw_gid, 1, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_gecos, "daemon", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_gecos, "daemon", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_dir, "/usr/sbin", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_dir, "/usr/sbin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_shell, "/usr/sbin/nologin", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_shell, "/usr/sbin/nologin", -1, ERROUT);
user1 = getpwent(); user1 = getpwent();
ICUNIT_ASSERT_NOT_EQUAL(user1, NULL, -1); ICUNIT_GOTO_NOT_EQUAL(user1, NULL, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_name, "bin", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_name, "bin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(user1->pw_uid, 2, -1); ICUNIT_GOTO_EQUAL(user1->pw_uid, 2, -1, ERROUT); /* 2, from etc/group */
ICUNIT_ASSERT_EQUAL(user1->pw_gid, 2, -1); ICUNIT_GOTO_EQUAL(user1->pw_gid, 2, -1, ERROUT); /* 2, from etc/group */
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_gecos, "bin", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_gecos, "bin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_dir, "/bin", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_dir, "/bin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user1->pw_shell, "/usr/sbin/nologin", -1); ICUNIT_GOTO_STRING_EQUAL(user1->pw_shell, "/usr/sbin/nologin", -1, ERROUT);
setpwent(); setpwent();
user2 = getpwent(); user2 = getpwent();
ICUNIT_ASSERT_NOT_EQUAL(user2, NULL, -1); ICUNIT_GOTO_NOT_EQUAL(user2, NULL, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(user2->pw_name, user1->pw_name, -1); ICUNIT_GOTO_STRING_EQUAL(user2->pw_name, user1->pw_name, -1, ERROUT);
setpwent();
(VOID)RecoveryFileEnv(pathList, 2); /* 2, group & passwd */
return 0; return 0;
ERROUT:
setpwent();
(VOID)RecoveryFileEnv(pathList, 2); /* 2, group & passwd */
return -1;
} }
VOID ItTestSys022(VOID) VOID ItTestSys022(VOID)
......
...@@ -31,39 +31,55 @@ ...@@ -31,39 +31,55 @@
#include "It_test_sys.h" #include "It_test_sys.h"
#include "grp.h" #include "grp.h"
static UINT32 TestCase(VOID) STATIC UINT32 TestCase(VOID)
{ {
struct group *grp1 = nullptr; struct group *grp1 = nullptr;
struct group *grp2 = nullptr; struct group *grp2 = nullptr;
struct group *grp3 = nullptr; struct group *grp3 = nullptr;
struct group *grp4 = nullptr; struct group *grp4 = nullptr;
INT32 ret;
CHAR *pathList[] = {"/etc/group"};
CHAR *streamList[] = {g_groupFileStream};
INT32 streamLen[] = {strlen(g_groupFileStream)};
ret = PrepareFileEnv(pathList, streamList, streamLen, 1);
if (ret != 0) {
printf("error: need some env file, but prepare is not ok");
(VOID)RecoveryFileEnv(pathList, 1);
return -1;
}
grp1 = getgrent(); grp1 = getgrent();
ICUNIT_ASSERT_NOT_EQUAL(grp1, nullptr, -1); ICUNIT_GOTO_NOT_EQUAL(grp1, nullptr, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(grp1->gr_name, "root", -1); ICUNIT_GOTO_STRING_EQUAL(grp1->gr_name, "root", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(grp1->gr_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(grp1->gr_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(grp1->gr_gid, 0, -1); ICUNIT_GOTO_EQUAL(grp1->gr_gid, 0, -1, ERROUT);
grp2 = getgrent(); grp2 = getgrent();
ICUNIT_ASSERT_NOT_EQUAL(grp2, nullptr, -1); ICUNIT_GOTO_NOT_EQUAL(grp2, nullptr, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(grp2->gr_name, "daemon", -1); ICUNIT_GOTO_STRING_EQUAL(grp2->gr_name, "daemon", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(grp2->gr_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(grp2->gr_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(grp2->gr_gid, 1, -1); ICUNIT_GOTO_EQUAL(grp2->gr_gid, 1, -1, ERROUT);
grp3 = getgrent(); grp3 = getgrent();
ICUNIT_ASSERT_NOT_EQUAL(grp3, nullptr, -1); ICUNIT_GOTO_NOT_EQUAL(grp3, nullptr, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(grp3->gr_name, "bin", -1); ICUNIT_GOTO_STRING_EQUAL(grp3->gr_name, "bin", -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(grp3->gr_passwd, "x", -1); ICUNIT_GOTO_STRING_EQUAL(grp3->gr_passwd, "x", -1, ERROUT);
ICUNIT_ASSERT_EQUAL(grp3->gr_gid, 2, -1); ICUNIT_GOTO_EQUAL(grp3->gr_gid, 2, -1, ERROUT); /* 2, from etc/group */
setgrent(); setgrent();
grp4 = getgrent(); grp4 = getgrent();
ICUNIT_ASSERT_NOT_EQUAL(grp4, nullptr, -1); ICUNIT_GOTO_NOT_EQUAL(grp4, nullptr, -1, ERROUT);
ICUNIT_ASSERT_STRING_EQUAL(grp1->gr_name, grp4->gr_name, -1); ICUNIT_GOTO_STRING_EQUAL(grp1->gr_name, grp4->gr_name, -1, ERROUT);
setgrent(); setgrent();
(VOID)RecoveryFileEnv(pathList, 1);
return 0; return 0;
ERROUT:
setgrent();
(VOID)RecoveryFileEnv(pathList, 1);
return -1;
} }
VOID ItTestSys023(VOID) VOID ItTestSys023(VOID)
......
...@@ -34,17 +34,17 @@ ...@@ -34,17 +34,17 @@
#define GROUPFILE "/etc/group" #define GROUPFILE "/etc/group"
static int TestCase0(void) STATIC INT32 TestCase0(void)
{ {
struct group getNam1 = { nullptr }; struct group getNam1 = { nullptr };
struct group *getNam2 = nullptr; struct group *getNam2 = nullptr;
struct group getData1 = { nullptr }; struct group getData1 = { nullptr };
struct group *getData2 = nullptr; struct group *getData2 = nullptr;
struct group *groupRet = nullptr; struct group *groupRet = nullptr;
char buf[1000]; CHAR buf[1000]; /* 1000, buffer for test */
size_t len = 1000; size_t len = sizeof(buf);
int ret = getgrgid_r(0, &getNam1, buf, len, &getNam2); INT32 ret = getgrgid_r(0, &getNam1, buf, len, &getNam2);
ICUNIT_ASSERT_EQUAL(ret, 0, ret); ICUNIT_ASSERT_EQUAL(ret, 0, ret);
ICUNIT_ASSERT_NOT_EQUAL(getNam2, nullptr, getNam2); ICUNIT_ASSERT_NOT_EQUAL(getNam2, nullptr, getNam2);
...@@ -73,17 +73,17 @@ static int TestCase0(void) ...@@ -73,17 +73,17 @@ static int TestCase0(void)
return 0; return 0;
} }
static int TestCase1(void) STATIC INT32 TestCase1(void)
{ {
int len = 1000; INT32 len = 1000;
char buf[1000]; CHAR buf[1000];
struct group getNam1 = { nullptr }; struct group getNam1 = { nullptr };
struct group *getNam2 = nullptr; struct group *getNam2 = nullptr;
struct group getData1 = { nullptr }; struct group getData1 = { nullptr };
struct group *getData2 = nullptr; struct group *getData2 = nullptr;
struct group *groupRet = nullptr; struct group *groupRet = nullptr;
int ret = getgrgid_r(-1, &getNam1, buf, len, &getNam2); INT32 ret = getgrgid_r(-1, &getNam1, buf, len, &getNam2);
ICUNIT_ASSERT_NOT_EQUAL(ret, 0, ret); ICUNIT_ASSERT_NOT_EQUAL(ret, 0, ret);
ICUNIT_ASSERT_EQUAL(errno, EAFNOSUPPORT, errno); ICUNIT_ASSERT_EQUAL(errno, EAFNOSUPPORT, errno);
errno = 0; errno = 0;
...@@ -103,39 +103,33 @@ static int TestCase1(void) ...@@ -103,39 +103,33 @@ static int TestCase1(void)
ICUNIT_ASSERT_EQUAL(errno, EAFNOSUPPORT, errno); ICUNIT_ASSERT_EQUAL(errno, EAFNOSUPPORT, errno);
errno = 0; errno = 0;
remove(GROUPFILE);
ret = getgrgid_r(0, &getNam1, buf, len, &getNam2);
ICUNIT_ASSERT_NOT_EQUAL(ret, 0, ret);
ICUNIT_ASSERT_EQUAL(errno, ENOENT, errno);
errno = 0;
groupRet = getgrgid(0);
ICUNIT_ASSERT_EQUAL(groupRet, 0, ret);
ICUNIT_ASSERT_EQUAL(errno, ENOENT, errno);
errno = 0;
groupRet = getgrnam("root");
ICUNIT_ASSERT_EQUAL(groupRet, 0, ret);
ICUNIT_ASSERT_EQUAL(errno, ENOENT, errno);
errno = 0;
ret = getgrnam_r("root", &getData1, buf, len, &getData2);
ICUNIT_ASSERT_NOT_EQUAL(ret, 0, ret);
ICUNIT_ASSERT_EQUAL(errno, ENOENT, errno);
return 0; return 0;
} }
static int TestCase(void) STATIC INT32 TestCase(void)
{ {
int ret = TestCase0(); CHAR *pathList[] = {"/etc/group"};
ICUNIT_ASSERT_EQUAL(ret, 0, ret); CHAR *streamList[] = {g_groupFileStream};
INT32 streamLen[] = {strlen(g_groupFileStream)};
INT32 ret = PrepareFileEnv(pathList, streamList, streamLen, 1);
if (ret != 0) {
printf("error: need some env file, but prepare is not ok");
(VOID)RecoveryFileEnv(pathList, 1);
return -1;
}
ret = TestCase0();
ICUNIT_GOTO_EQUAL(ret, 0, ret, ERROUT);
ret = TestCase1(); ret = TestCase1();
ICUNIT_ASSERT_EQUAL(ret, 0, ret); ICUNIT_GOTO_EQUAL(ret, 0, re, ERROUT);
(VOID)RecoveryFileEnv(pathList, 1);
return 0; return 0;
ERROUT:
(VOID)RecoveryFileEnv(pathList, 1);
return -1;
} }
VOID ItTestSys025(VOID) VOID ItTestSys025(VOID)
......
...@@ -31,20 +31,30 @@ ...@@ -31,20 +31,30 @@
static UINT32 TestCase(VOID) static UINT32 TestCase(VOID)
{ {
int ret; int ret, status;
pid_t pid = fork(); pid_t pid = fork();
if (pid == 0) { if (pid == 0) {
ret = setpriority(PRIO_PROCESS, 0, 15); /* 15, set priority for test */
if (ret != 0) {
exit(0);
}
ret = nice(0); ret = nice(0);
ICUNIT_ASSERT_EQUAL(ret, 15, ret); exit(ret);
} else { } else {
ret = nice(-15); ret = waitpid(pid, &status, 0);
ICUNIT_ASSERT_EQUAL(ret, pid, ret);
status = WEXITSTATUS(status);
ICUNIT_ASSERT_EQUAL(status, 15, status); /* 15, set priority for test */
ret = nice(-40); /* -40, set invaild priority for test */
ICUNIT_ASSERT_EQUAL(ret, -1, ret); ICUNIT_ASSERT_EQUAL(ret, -1, ret);
ICUNIT_ASSERT_EQUAL(errno, EINVAL, errno); ICUNIT_ASSERT_EQUAL(errno, EINVAL, errno);
} }
return 0; return 0;
} }
VOID IT_TEST_SYS_028(VOID) VOID ItTestSys028(VOID)
{ {
TEST_ADD_CASE(IT_TEST_SYS_028, TestCase, TEST_POSIX, TEST_MEM, TEST_LEVEL0, TEST_FUNCTION); TEST_ADD_CASE(ItTestSys028, TestCase, TEST_POSIX, TEST_MEM, TEST_LEVEL0, TEST_FUNCTION);
} }
...@@ -34,6 +34,10 @@ ...@@ -34,6 +34,10 @@
#include "It_test_sys.h" #include "It_test_sys.h"
CHAR *g_groupFileStream = "root:x:0:\ndaemon:x:1:\nbin:x:2:\n";
CHAR *g_passwdFileStream = "root:x:0:0:root:/root:/bin/bash\n" \
"daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin\nbin:x:2:2:bin:/bin:/usr/sbin/nologin\n";
using namespace testing::ext; using namespace testing::ext;
namespace OHOS { namespace OHOS {
class SysTest : public testing::Test { class SysTest : public testing::Test {
...@@ -343,14 +347,14 @@ HWTEST_F(SysTest, ItTestSys027, TestSize.Level0) ...@@ -343,14 +347,14 @@ HWTEST_F(SysTest, ItTestSys027, TestSize.Level0)
} }
/* * /* *
* @tc.name: IT_TEST_SYS_028 * @tc.name: ItTestSys028
* @tc.desc: function for nice:set pthread priority * @tc.desc: function for nice:set pthread priority
* @tc.type: FUNC * @tc.type: FUNC
* @tc.require: AR000EEMQ9 * @tc.require: AR000EEMQ9
*/ */
HWTEST_F(SysTest, IT_TEST_SYS_028, TestSize.Level0) HWTEST_F(SysTest, ItTestSys028, TestSize.Level0)
{ {
IT_TEST_SYS_028(); ItTestSys028();
} }
#endif #endif
} // namespace OHOS } // namespace OHOS
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册