Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
84631a3
Update L2-tests.yml
Abhinavpv28 Sep 24, 2025
61e9798
Update CMakeLists.txt
Abhinavpv28 Sep 24, 2025
ad2171b
Update CMakeLists.txt
Abhinavpv28 Sep 24, 2025
4bf9c67
Create MaintenancemanagerL2.cpp
Abhinavpv28 Sep 24, 2025
f79b310
Update MaintenancemanagerL2.cpp
Abhinavpv28 Sep 28, 2025
7f8cf2b
Merge pull request #152 from rdkcentral/develop
Abhinavpv28 Sep 28, 2025
25568fc
Update MaintenancemanagerL2.cpp
Abhinavpv28 Sep 28, 2025
f7d5bb1
Update MaintenancemanagerL2.cpp
Abhinavpv28 Sep 28, 2025
3637864
Update MaintenancemanagerL2.cpp
Abhinavpv28 Sep 28, 2025
581ff47
Update MaintenancemanagerL2.cpp
Abhinavpv28 Sep 28, 2025
1864d74
Update MaintenancemanagerL2.cpp
Abhinavpv28 Sep 28, 2025
d44d318
Update MaintenancemanagerL2.cpp
Abhinavpv28 Sep 28, 2025
fb85ffc
Update MaintenancemanagerL2.cpp
Abhinavpv28 Sep 28, 2025
d5e5b2d
Create CMakeLists.txt
Abhinavpv28 Sep 28, 2025
d1da887
Create MockSecManagerPlugin.conf.in
Abhinavpv28 Sep 28, 2025
b340d41
Create MockSecManagerPlugin.config
Abhinavpv28 Sep 28, 2025
2b53c46
Create MockSecManagerPlugin.cpp
Abhinavpv28 Sep 28, 2025
66750d5
Create MockSecManagerPlugin.h
Abhinavpv28 Sep 28, 2025
66f62fe
Create Module.cpp
Abhinavpv28 Sep 28, 2025
589e71c
Create Module.h
Abhinavpv28 Sep 28, 2025
c6fff5c
Create CMakeLists.txt
Abhinavpv28 Sep 28, 2025
3ac0afd
Create MockAuthServicePlugin.conf.in
Abhinavpv28 Sep 28, 2025
50231c4
Create MockAuthServicePlugin.config
Abhinavpv28 Sep 28, 2025
7ef48b0
Create MockAuthServicePlugin.cpp
Abhinavpv28 Sep 28, 2025
c028bef
Create MockAuthServicePlugin.h
Abhinavpv28 Sep 28, 2025
e16bca8
Create Module.cpp
Abhinavpv28 Sep 28, 2025
0e4157e
Create Module.h
Abhinavpv28 Sep 28, 2025
fe0e1d3
Update CMakeLists.txt
Abhinavpv28 Sep 28, 2025
fdad9fa
Update L2-tests.yml
Abhinavpv28 Sep 28, 2025
6456b37
Update CMakeLists.txt
Abhinavpv28 Sep 28, 2025
680bd98
Update CMakeLists.txt
Abhinavpv28 Sep 28, 2025
4768b7e
Update L2-tests.yml
Abhinavpv28 Sep 28, 2025
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
51 changes: 51 additions & 0 deletions .github/workflows/L2-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,14 @@ jobs:
with:
repository: rdkcentral/entservices-testframework
path: entservices-testframework
ref: feature/RDK-57739_test
token: ${{ secrets.RDKCM_RDKE }}

- name: Checkout networkmanager
uses: actions/checkout@v3
with:
repository: rdkcentral/networkmanager
path: networkmanager
ref: develop
token: ${{ secrets.RDKCM_RDKE }}

Expand All @@ -128,6 +136,13 @@ jobs:
run: |
cd $GITHUB_WORKSPACE/entservices-softwareupdate
patch -p1 < $GITHUB_WORKSPACE/entservices-testframework/patches/Firmware_postFlash.patch
patch -p1 < $GITHUB_WORKSPACE/entservices-testframework/patches/Maintenancemanager.patch
cd -

- name: Apply patches Network manager
run: |
cd $GITHUB_WORKSPACE/networkmanager
patch -p1 < $GITHUB_WORKSPACE/entservices-testframework/patches/Networkmanager.patch
cd -

- name: Build ThunderTools
Expand Down Expand Up @@ -312,6 +327,38 @@ jobs:
&&
cmake --install build/mocks


- name: Generate IARM headers
run: |
touch install/usr/lib/libIARMBus.so
mkdir -p install/usr/include/rdk/iarmbus
touch install/usr/include/rdk/iarmbus/libIARM.h
cd "${{github.workspace}}/networkmanager/tests/"
mkdir -p headers/rdk/iarmbus
cd headers
touch rdk/iarmbus/libIARM.h rdk/iarmbus/libIBus.h

- name: Build networkmanager
run: |
# Configure networkmanager
cmake \
-S "$GITHUB_WORKSPACE/networkmanager" \
-B build/networkmanager_rdk \
-DCMAKE_TOOLCHAIN_FILE="${{ env.TOOLCHAIN_FILE }}" \
-DCMAKE_INSTALL_PREFIX="$GITHUB_WORKSPACE/install/usr" \
-DCMAKE_PREFIX_PATH="$GITHUB_WORKSPACE/install/usr" \
-DCMAKE_MODULE_PATH="$GITHUB_WORKSPACE/install/tools/cmake" \
-DCMAKE_CXX_FLAGS="-I$GITHUB_WORKSPACE/networkmanager/tests/headers -I$GITHUB_WORKSPACE/networkmanager/tests/headers/rdk/iarmbus --include $GITHUB_WORKSPACE/networkmanager/tests/mocks/Iarm.h --include $GITHUB_WORKSPACE/networkmanager/tests/mocks/secure_wrappermock.h -Wall --coverage" \
-DENABLE_UNIT_TESTING=ON \
-DENABLE_ROUTER_DISCOVERY_TOOL=OFF

# Build
cmake --build build/networkmanager_rdk -j8

# Install
cmake --install build/networkmanager_rdk
cat /home/runner/work/entservices-softwareupdate/entservices-softwareupdate/install/usr/../etc/WPEFramework/plugins/LegacyNetworkAPIs.json

- name: Build entservices-softwareupdate
run: >
cmake
Expand Down Expand Up @@ -373,6 +420,7 @@ jobs:
-DCMAKE_DISABLE_FIND_PACKAGE_RFC=ON
-DCMAKE_DISABLE_FIND_PACKAGE_RBus=ON
-DPLUGIN_FIRMWAREUPDATE=ON
-DPLUGIN_MAINTENANCEMANAGER=ON
-DUSE_THUNDER_R4=ON
-DPLUGIN_L2Tests=ON
-DRDK_SERVICE_L2_TEST=ON
Expand Down Expand Up @@ -445,6 +493,7 @@ jobs:
-DCMAKE_DISABLE_FIND_PACKAGE_RFC=ON
-DCMAKE_DISABLE_FIND_PACKAGE_RBus=ON
-DPLUGIN_FIRMWAREUPDATE=ON
-DPLUGIN_MAINTENANCEMANAGER=ON
-DUSE_THUNDER_R4=ON
-DPLUGIN_L2Tests=ON
-DRDK_SERVICE_L2_TEST=ON
Expand Down Expand Up @@ -604,6 +653,8 @@ jobs:
-o coverage
-t "entservices-softwareupdate coverage"
filtered_coverage.info
&&
lcov --extract filtered_coverage.info "*/MaintenanceManager/MaintenanceManager.cpp" -o maintenancemanager_coverage.info

- name: Upload artifacts
if: ${{ !env.ACT }}
Expand Down
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ include(CmakeHelperFunctions)

if(RDK_SERVICE_L2_TEST)
add_subdirectory(Tests/L2Tests)
add_subdirectory(Tests/L2Tests/tests/MockAuthService)
add_subdirectory(Tests/L2Tests/tests/MockSecManager)
endif()

option(DISABLE_SECURITY_TOKEN "Disable security token" OFF)
Expand Down
11 changes: 11 additions & 0 deletions MaintenanceManager/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,17 @@ if (ENABLE_JOURNAL_LOGGING)
target_link_libraries(${MODULE_NAME} PRIVATE systemd)
endif()

if (RDK_SERVICE_L2_TEST)
find_library(TESTMOCKLIB_LIBRARIES NAMES TestMocklib)
if (TESTMOCKLIB_LIBRARIES)
message ("linking mock libraries ${TESTMOCKLIB_LIBRARIES} library")
target_link_libraries(${MODULE_NAME} PRIVATE ${TESTMOCKLIB_LIBRARIES})
target_link_options(${MODULE_NAME} PRIVATE -Wl,--wrap,open -Wl,--wrap,mkdir -Wl,--wrap,mount -Wl,--wrap,umount -Wl,--wrap,ioctl -Wl,--wrap,statvfs -Wl,--wrap,statfs -Wl,--wrap,stat -Wl,--wrap,rmdir)
else (TESTMOCKLIB_LIBRARIES)
message ("Require ${TESTMOCKLIB_LIBRARIES} library")
endif (TESTMOCKLIB_LIBRARIES)
endif (RDK_SERVICES_L2_TEST)

# Add Task Timeout
if (TASK_TIMEOUT)
message(STATUS "Task Timeout set to ${TASK_TIMEOUT}")
Expand Down
4 changes: 4 additions & 0 deletions Tests/L2Tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@ if(PLUGIN_FIRMWAREUPDATE)
set(SRC_FILES ${SRC_FILES} tests/FirmwareUpdate_L2Test.cpp)
endif()

if(PLUGIN_MAINTENANCEMANAGER)
set(SRC_FILES ${SRC_FILES} tests/MaintenancemanagerL2.cpp)
endif()

add_library(${MODULE_NAME} SHARED ${SRC_FILES})

set_target_properties(${MODULE_NAME} PROPERTIES
Expand Down
201 changes: 201 additions & 0 deletions Tests/L2Tests/tests/MaintenancemanagerL2.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
#include <gtest/gtest.h>
#include <gmock/gmock.h>
#include "L2Tests.h"
#include "L2TestsMock.h"
#include <fstream>
#include <iostream>
#include <condition_variable>

using ::testing::_;
using ::testing::Invoke;
using ::testing::Test;
using ::testing::StrEq;
using namespace WPEFramework;

/*
#define TEST_LOG(x, ...) fprintf( stderr, "\033[1;32m[%s:%d](%s)<PID:%d><TID:%d>" x "\n\033[0m", __FILE__, __LINE__, __FUNCTION__, getpid(), gettid(), ##__VA_ARGS__); fflush(stderr);

#define JSON_TIMEOUT (1000)
*/
#define MAINTENANCEMANAGER_CALLSIGN _T("org.rdk.MaintenanceManager")
#define MAINTENANCEMANAGERL2TEST_CALLSIGN _T("L2tests.1")



class MaintenanceManagerTest : public L2TestMocks {
protected:
virtual ~MaintenanceManagerTest() override;

public:
MaintenanceManagerTest();
};


MaintenanceManagerTest::MaintenanceManagerTest() : L2TestMocks() {
std::ofstream devicePropertiesFile("/etc/device.properties");
if (devicePropertiesFile.is_open()) {

devicePropertiesFile << "WHOAMI_SUPPORT=true";
devicePropertiesFile.close();

std::ifstream devicePropertiesFile("/etc/device.properties");
if (!devicePropertiesFile) {
std::cerr << "Failed to open /etc/device.properties for reading." << std::endl;
}

std::string line;
while (std::getline(devicePropertiesFile, line)) {
std::cout << line << std::endl;
}
}

std::ofstream MaintenanceManagerConfFile("/opt/rdk_maintenance.conf");

if (MaintenanceManagerConfFile.is_open()) {
MaintenanceManagerConfFile << "start_hr=\"8\"\n";
MaintenanceManagerConfFile << "start_min=\"30\"\n";
MaintenanceManagerConfFile << "tz_mode=\"UTC\"\n";
MaintenanceManagerConfFile.close();

std::ifstream MaintenanceManagerConfFile("/opt/rdk_maintenance.conf");
if (!MaintenanceManagerConfFile) {
std::cerr << "Failed to open /opt/rdk_maintenance.conf for reading." << std::endl;
}

std::string line;
while (std::getline(MaintenanceManagerConfFile, line)) {
std::cout << line << std::endl;
}
}
IARM_EventHandler_t controlEventHandler_;
uint32_t status = Core::ERROR_GENERAL;
status = ActivateService("org.rdk.MaintenanceManager");
EXPECT_EQ(Core::ERROR_NONE, status);
status =ActivateService("org.rdk.Network");
EXPECT_EQ(Core::ERROR_NONE, status);
status =ActivateService("org.rdk.SecManager");
EXPECT_EQ(Core::ERROR_NONE, status);
status =ActivateService("org.rdk.AuthService");
EXPECT_EQ(Core::ERROR_NONE, status);
}

MaintenanceManagerTest::~MaintenanceManagerTest() {
uint32_t status = Core::ERROR_GENERAL;
status = DeactivateService("org.rdk.MaintenanceManager");
}

TEST_F(MaintenanceManagerTest,knowWhoamI)
{
uint32_t status = Core::ERROR_GENERAL;
JsonObject params,params1;
JsonObject results,results1;
params["maintenanceMode"] = "BACKGROUND";
params["optOut"] = "IGNORE_UPDATE";
sleep(60);

status = InvokeServiceMethod("org.rdk.MaintenanceManager","getMaintenanceActivityStatus",params1, results1);
ASSERT_EQ(results1["maintenanceStatus"].String(), "MAINTENANCE_STARTED");
ASSERT_EQ(results1["isRebootPending"].Boolean(), false);
ASSERT_EQ(results1["success"].Boolean(), true);

ASSERT_EQ(status, Core::ERROR_NONE);
status = InvokeServiceMethod("org.rdk.MaintenanceManager", "getMaintenanceStartTime", params, results);
ASSERT_EQ(status, Core::ERROR_NONE);

status = InvokeServiceMethod("org.rdk.MaintenanceManager", "setMaintenanceMode", params, results);
ASSERT_EQ(status, Core::ERROR_NONE);

status = InvokeServiceMethod("org.rdk.MaintenanceManager","stopMaintenance",params1, results1);
ASSERT_EQ(results1["success"].Boolean(), true);
ASSERT_EQ(status, Core::ERROR_NONE);

sleep(5);
status = InvokeServiceMethod("org.rdk.MaintenanceManager","getMaintenanceActivityStatus",params1, results1);
ASSERT_EQ(results1["maintenanceStatus"].String(), "MAINTENANCE_ERROR");
ASSERT_EQ(results1["isRebootPending"].Boolean(), false);
ASSERT_EQ(status, Core::ERROR_NONE);
ASSERT_EQ(results1["success"].Boolean(), true);

status = InvokeServiceMethod("org.rdk.MaintenanceManager","stopMaintenance",params1, results1);
ASSERT_EQ(results1["success"].Boolean(), false);
ASSERT_EQ(status, Core::ERROR_GENERAL);
}
TEST_F(MaintenanceManagerTest, TestStartMaintenance)
{
DeactivateService("org.rdk.Network");
}

TEST_F(MaintenanceManagerTest,Test1)
{
uint32_t status = Core::ERROR_GENERAL;
JsonObject params1;
JsonObject results1;
sleep(60);
status = InvokeServiceMethod("org.rdk.MaintenanceManager","getMaintenanceActivityStatus",params1, results1);
ASSERT_EQ(results1["maintenanceStatus"].String(), "MAINTENANCE_STARTED");
ASSERT_EQ(status, Core::ERROR_NONE);
}

TEST_F(MaintenanceManagerTest,Test2)
{
uint32_t status = Core::ERROR_GENERAL;
JsonObject params1;
JsonObject results1;
status = InvokeServiceMethod("org.rdk.MaintenanceManager", "getMaintenanceStartTime", params1, results1);
ASSERT_EQ(status, Core::ERROR_NONE);
}
TEST_F(MaintenanceManagerTest,Test3)
{
uint32_t status = Core::ERROR_GENERAL;
JsonObject params;
JsonObject results;
params["maintenanceMode"] = "BACKGROUND";
params["optOut"] = "IGNORE_UPDATE";
status = InvokeServiceMethod("org.rdk.MaintenanceManager", "setMaintenanceMode", params, results);
ASSERT_EQ(status, Core::ERROR_NONE);
}

TEST_F(MaintenanceManagerTest,Test4)
{
uint32_t status = Core::ERROR_GENERAL;
JsonObject params1, results1;
status = InvokeServiceMethod("org.rdk.MaintenanceManager","stopMaintenance",params1, results1);
ASSERT_EQ(results1["success"].Boolean(), true);
ASSERT_EQ(status, Core::ERROR_NONE);
}

TEST_F(MaintenanceManagerTest, Test5)
{
JsonObject params1, results1;
uint32_t status = InvokeServiceMethod("org.rdk.MaintenanceManager", "startMaintenance", params1, results1);
ASSERT_EQ(status, Core::ERROR_GENERAL);
ASSERT_EQ(results1["success"].Boolean(), false);

status = InvokeServiceMethod("org.rdk.MaintenanceManager","getMaintenanceActivityStatus",params1, results1);
ASSERT_EQ(results1["maintenanceStatus"].String(), "MAINTENANCE_STARTED");
ASSERT_EQ(results1["isRebootPending"].Boolean(), false);
ASSERT_EQ(status, Core::ERROR_NONE);
ASSERT_EQ(results1["success"].Boolean(), true);
}
TEST_F(MaintenanceManagerTest, Test6)
{
uint32_t status = Core::ERROR_GENERAL;
JsonObject params1, results1;
sleep(20);
status = InvokeServiceMethod("org.rdk.MaintenanceManager","stopMaintenance",params1, results1);
ASSERT_EQ(results1["success"].Boolean(), true);
ASSERT_EQ(status, Core::ERROR_NONE);
sleep(5);
status = InvokeServiceMethod("org.rdk.MaintenanceManager", "startMaintenance", params1, results1);
ASSERT_EQ(status, Core::ERROR_NONE);

status = InvokeServiceMethod("org.rdk.MaintenanceManager","stopMaintenance",params1, results1);
ASSERT_EQ(results1["success"].Boolean(), true);
ASSERT_EQ(status, Core::ERROR_NONE);

status = InvokeServiceMethod("org.rdk.MaintenanceManager","getMaintenanceActivityStatus",params1, results1);
ASSERT_EQ(results1["maintenanceStatus"].String(), "MAINTENANCE_ERROR");
ASSERT_EQ(results1["isRebootPending"].Boolean(), true);
ASSERT_EQ(status, Core::ERROR_NONE);
ASSERT_EQ(results1["success"].Boolean(), true);
}
Loading
Loading