Skip to content
Draft
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
4b333eb
DELIA-70280: Box boot up time is extended due to Privacy control hang…
shibu-kv Mar 31, 2026
96522ab
Changelog updates for hotfix 1.8.5v1
shibu-kv Mar 31, 2026
36cc492
BES1-941: Update dcautil.h
yogeswaransky Apr 1, 2026
5ed035d
Update dcaproc.c
yogeswaransky Apr 3, 2026
fa217de
Update dcaproc.c
yogeswaransky Apr 5, 2026
686b55d
Update dcaproc.c
yogeswaransky Apr 5, 2026
4691dfe
Update dcaproc.c
yogeswaransky Apr 6, 2026
b61db1a
Update dcaproc.c
yogeswaransky Apr 6, 2026
166397e
BES1-941: Update dcaproc.c
yogeswaransky Apr 6, 2026
64b8ebb
BES1-941: Update dcaproc.c
yogeswaransky Apr 6, 2026
85a438c
BES1-941: Update dcaproc.c
yogeswaransky Apr 6, 2026
dc06b86
BES1-941: Update reportgen.c
yogeswaransky Apr 7, 2026
934c31e
BES1-941: Update dcaproc.c
yogeswaransky Apr 7, 2026
c732533
RDKEMW-16851: Update dcautil.h
yogeswaransky Apr 9, 2026
d7703f9
RDKEMW-16851: Update dcaproc.c
yogeswaransky Apr 9, 2026
8423c8b
RDKEMW-16851: Update dcaproc.c
yogeswaransky Apr 9, 2026
349537a
RDKEMW-16851: Revert Info log lines to debug log lines
yogeswaransky Apr 9, 2026
8640655
Initial plan
Copilot Apr 10, 2026
9c62c11
Merge remote-tracking branch 'origin/support/1.8' into copilot/sub-pr…
Copilot Apr 10, 2026
280222b
RDKEMW-16851: Update dcaproc.c
yogeswaransky Apr 13, 2026
c990e15
RDKEMW-16851: Update dcaproc.c
yogeswaransky Apr 13, 2026
13ecfda
Initial plan
Copilot Apr 13, 2026
f14f9a1
Add L1 test cases for getCPUInfo matching/parsing logic
Copilot Apr 13, 2026
0ec0a02
RDKEMW-16851: Increase Process name buffer length from 16 to 64 (#322…
shibu-kv Apr 14, 2026
e406202
Merge branch 'support/1.8' to rebase PR onto support/1.8
Copilot Apr 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
254 changes: 254 additions & 0 deletions source/test/dcautils/dcautilTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -809,6 +809,260 @@ TEST_F(dcaTestFixture, removeTopOutput1)
removeTopOutput(filename);
}

//getCPUInfo tests - direct file read path (filename accessible)
TEST_F(dcaTestFixture, getCPUInfo_DirectFileRead_NameMatch)
{
procMemCpuInfo pInfo;
memset(&pInfo, 0, sizeof(procMemCpuInfo));
memcpy(pInfo.processName, "telemetry2_0", strlen("telemetry2_0") + 1);
pInfo.total_instance = 1;

EXPECT_CALL(*g_systemMock, access(_, _))
.Times(1)
.WillOnce(Return(0));

FILE* fp = (FILE*)0xFFFFFFFF;
EXPECT_CALL(*g_fileIOMock, fopen(_, _))
.Times(1)
.WillOnce(Return(fp));

EXPECT_CALL(*g_fileIOMock, fgets(_, _, _))
.WillOnce([](char* buf, int size, FILE* stream) {
const char* test_line = "2268 root 20 0 831m 66m 20m S 27.0 1.3 491:06.82 telemetry2_0\n";
strncpy(buf, test_line, size - 1);
buf[size - 1] = '\0';
return buf;
})
.WillOnce(Return((char*)NULL));

EXPECT_CALL(*g_fileIOMock, fclose(_))
.Times(1)
.WillOnce(Return(0));

EXPECT_EQ(1, getCPUInfo(&pInfo, "/tmp/test_top.txt"));
}

TEST_F(dcaTestFixture, getCPUInfo_DirectFileRead_CaseInsensitiveMatch)
{
procMemCpuInfo pInfo;
memset(&pInfo, 0, sizeof(procMemCpuInfo));
memcpy(pInfo.processName, "telemetry2_0", strlen("telemetry2_0") + 1);
pInfo.total_instance = 1;

EXPECT_CALL(*g_systemMock, access(_, _))
.Times(1)
.WillOnce(Return(0));

FILE* fp = (FILE*)0xFFFFFFFF;
EXPECT_CALL(*g_fileIOMock, fopen(_, _))
.Times(1)
.WillOnce(Return(fp));

EXPECT_CALL(*g_fileIOMock, fgets(_, _, _))
.WillOnce([](char* buf, int size, FILE* stream) {
const char* test_line = "2268 root 20 0 831m 66m 20m S 27.0 1.3 491:06.82 TELEMETRY2_0\n";
strncpy(buf, test_line, size - 1);
buf[size - 1] = '\0';
return buf;
})
.WillOnce(Return((char*)NULL));

EXPECT_CALL(*g_fileIOMock, fclose(_))
.Times(1)
.WillOnce(Return(0));

EXPECT_EQ(1, getCPUInfo(&pInfo, "/tmp/test_top.txt"));
}

TEST_F(dcaTestFixture, getCPUInfo_DirectFileRead_PidFallback)
{
procMemCpuInfo pInfo;
memset(&pInfo, 0, sizeof(procMemCpuInfo));
memcpy(pInfo.processName, "telemetry2_0", strlen("telemetry2_0") + 1);
pid_t pids[1] = {2268};
pInfo.pid = pids;
pInfo.total_instance = 1;

EXPECT_CALL(*g_systemMock, access(_, _))
.Times(1)
.WillOnce(Return(0));

FILE* fp = (FILE*)0xFFFFFFFF;
EXPECT_CALL(*g_fileIOMock, fopen(_, _))
.Times(1)
.WillOnce(Return(fp));

EXPECT_CALL(*g_fileIOMock, fgets(_, _, _))
.WillOnce([](char* buf, int size, FILE* stream) {
const char* test_line = "2268 root 20 0 831m 66m 20m S 27.0 1.3 491:06.82 /usr/bin/foo\n";
strncpy(buf, test_line, size - 1);
buf[size - 1] = '\0';
return buf;
})
.WillOnce(Return((char*)NULL));

EXPECT_CALL(*g_fileIOMock, fclose(_))
.Times(1)
.WillOnce(Return(0));

EXPECT_EQ(1, getCPUInfo(&pInfo, "/tmp/test_top.txt"));
}

//getCPUInfo tests - popen path (filename NULL or inaccessible)
TEST_F(dcaTestFixture, getCPUInfo_Popen_NameMatch)
{
procMemCpuInfo pInfo;
memset(&pInfo, 0, sizeof(procMemCpuInfo));
memcpy(pInfo.processName, "telemetry2_0", strlen("telemetry2_0") + 1);
pInfo.total_instance = 1;

#ifdef LIBSYSWRAPPER_BUILD
EXPECT_CALL(*g_systemMock, v_secure_system(_))
.Times(1)
.WillOnce(Return(0));
#else
EXPECT_CALL(*g_systemMock, system(_))
.Times(1)
.WillOnce(Return(0));
#endif

FILE* fp = (FILE*)0xFFFFFFFF;
#ifdef LIBSYSWRAPPER_BUILD
EXPECT_CALL(*g_fileIOMock, v_secure_popen(_, _))
.Times(1)
.WillOnce(Return(fp));
#else
EXPECT_CALL(*g_fileIOMock, popen(_, _))
.Times(1)
.WillOnce(Return(fp));
#endif

EXPECT_CALL(*g_fileIOMock, fgets(_, _, _))
.WillOnce([](char* buf, int size, FILE* stream) {
const char* test_line = "2268 root 20 0 831m 66m 20m S 27.0 1.3 491:06.82 telemetry2_0\n";
strncpy(buf, test_line, size - 1);
buf[size - 1] = '\0';
return buf;
})
.WillOnce(Return((char*)NULL));

#ifdef LIBSYSWRAPPER_BUILD
EXPECT_CALL(*g_fileIOMock, v_secure_pclose(_))
.Times(1)
.WillOnce(Return(0));
#else
EXPECT_CALL(*g_fileIOMock, pclose(_))
.Times(1)
.WillOnce(Return(0));
#endif

EXPECT_EQ(1, getCPUInfo(&pInfo, NULL));
}

TEST_F(dcaTestFixture, getCPUInfo_Popen_PidFallback)
{
procMemCpuInfo pInfo;
memset(&pInfo, 0, sizeof(procMemCpuInfo));
memcpy(pInfo.processName, "telemetry2_0", strlen("telemetry2_0") + 1);
pid_t pids[1] = {2268};
pInfo.pid = pids;
pInfo.total_instance = 1;

#ifdef LIBSYSWRAPPER_BUILD
EXPECT_CALL(*g_systemMock, v_secure_system(_))
.Times(1)
.WillOnce(Return(0));
#else
EXPECT_CALL(*g_systemMock, system(_))
.Times(1)
.WillOnce(Return(0));
#endif

FILE* fp = (FILE*)0xFFFFFFFF;
#ifdef LIBSYSWRAPPER_BUILD
EXPECT_CALL(*g_fileIOMock, v_secure_popen(_, _))
.Times(1)
.WillOnce(Return(fp));
#else
EXPECT_CALL(*g_fileIOMock, popen(_, _))
.Times(1)
.WillOnce(Return(fp));
#endif

EXPECT_CALL(*g_fileIOMock, fgets(_, _, _))
.WillOnce([](char* buf, int size, FILE* stream) {
const char* test_line = "2268 root 20 0 831m 66m 20m S 27.0 1.3 491:06.82 /usr/bin/foo\n";
strncpy(buf, test_line, size - 1);
buf[size - 1] = '\0';
return buf;
})
.WillOnce(Return((char*)NULL));

#ifdef LIBSYSWRAPPER_BUILD
EXPECT_CALL(*g_fileIOMock, v_secure_pclose(_))
.Times(1)
.WillOnce(Return(0));
#else
EXPECT_CALL(*g_fileIOMock, pclose(_))
.Times(1)
.WillOnce(Return(0));
#endif

EXPECT_EQ(1, getCPUInfo(&pInfo, NULL));
}

TEST_F(dcaTestFixture, getCPUInfo_Popen_NoMatch)
{
procMemCpuInfo pInfo;
memset(&pInfo, 0, sizeof(procMemCpuInfo));
memcpy(pInfo.processName, "telemetry2_0", strlen("telemetry2_0") + 1);
pid_t pids[1] = {9999};
pInfo.pid = pids;
pInfo.total_instance = 1;

#ifdef LIBSYSWRAPPER_BUILD
EXPECT_CALL(*g_systemMock, v_secure_system(_))
.Times(1)
.WillOnce(Return(0));
#else
EXPECT_CALL(*g_systemMock, system(_))
.Times(1)
.WillOnce(Return(0));
#endif

FILE* fp = (FILE*)0xFFFFFFFF;
#ifdef LIBSYSWRAPPER_BUILD
EXPECT_CALL(*g_fileIOMock, v_secure_popen(_, _))
.Times(1)
.WillOnce(Return(fp));
#else
EXPECT_CALL(*g_fileIOMock, popen(_, _))
.Times(1)
.WillOnce(Return(fp));
#endif

EXPECT_CALL(*g_fileIOMock, fgets(_, _, _))
.WillOnce([](char* buf, int size, FILE* stream) {
const char* test_line = "2268 root 20 0 831m 66m 20m S 27.0 1.3 491:06.82 /usr/bin/foo\n";
strncpy(buf, test_line, size - 1);
buf[size - 1] = '\0';
return buf;
})
.WillOnce(Return((char*)NULL));

#ifdef LIBSYSWRAPPER_BUILD
EXPECT_CALL(*g_fileIOMock, v_secure_pclose(_))
.Times(1)
.WillOnce(Return(0));
#else
EXPECT_CALL(*g_fileIOMock, pclose(_))
.Times(1)
.WillOnce(Return(0));
#endif

EXPECT_EQ(0, getCPUInfo(&pInfo, NULL));
}

#else
TEST_F(dcaTestFixture, getTotalCpuTimes)
{
Expand Down