Skip to content

Commit 420f424

Browse files
trupthi1403tboova469_comcast
authored andcommitted
RDKEMW-9172: L2testcase for rdkNativeScript
Reason for change: Added jsruntime_L2tests.yml and updated to run L2 test cases Test Procedure: Able to build and run test cases in CI Risks: low Priority: P2
1 parent 08d5c85 commit 420f424

5 files changed

Lines changed: 189 additions & 3 deletions

File tree

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
name: JSRuntime L2 Tests with Coverage
2+
permissions:
3+
contents: read
4+
checks: write
5+
6+
on:
7+
workflow_dispatch:
8+
push:
9+
branches: [topic/RDKEMW-9172]
10+
pull_request:
11+
branches: [topic/RDKEMW-9172]
12+
13+
jobs:
14+
build-nativescript:
15+
runs-on: ubuntu-latest
16+
17+
steps:
18+
- name: Checkout main source repository
19+
uses: actions/checkout@v3
20+
21+
- name: Install dependencies
22+
run: |
23+
sudo apt-get update && sudo apt-get install -y \
24+
git cmake gperf ruby-dev libglew-dev libglut-dev \
25+
libglib2.0-dev libglib2.0-0 g++ meson bison libjpeg-dev libpng-dev \
26+
libfreetype6-dev libicu-dev autoconf libtool libxml2-dev \
27+
libcurl4-openssl-dev libexpat1-dev doxygen vim libcjson-dev \
28+
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
29+
gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \
30+
gstreamer1.0-plugins-ugly gstreamer1.0-libav \
31+
gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa \
32+
libwayland-bin libwayland-dev wayland-protocols \
33+
libreadline-dev net-tools libmount1 libpcre3 libselinux1 zlib1g \
34+
libunwind-dev libboost-dev libboost-system-dev libboost-thread-dev libboost-chrono-dev libwebsocketpp-dev jq \
35+
lcov
36+
37+
- name: Print GCC/G++/GCOV version
38+
run: |
39+
echo "GCC version:"; gcc --version
40+
echo "G++ version:"; g++ --version
41+
echo "GCOV version:"; gcov --version
42+
43+
- name: Get asset ID for externals.zip
44+
id: asset
45+
run: |
46+
ASSET_ID=$(curl -s -H "Authorization: Bearer ${{ secrets.GH_PAT }}" \
47+
https://api.github.com/repos/rdk-e/rdkNativeScript_tests/releases/tags/extlibs | \
48+
jq '.assets[] | select(.name=="externals.zip") | .id')
49+
echo "ASSET_ID=$ASSET_ID" >> $GITHUB_ENV
50+
51+
- name: Download externals.zip using asset ID
52+
run: |
53+
curl -L \
54+
-H "Authorization: Bearer ${{ secrets.GH_PAT }}" \
55+
-H "Accept: application/octet-stream" \
56+
-o externals.zip \
57+
https://api.github.com/repos/rdk-e/rdkNativeScript_tests/releases/assets/$ASSET_ID
58+
59+
- name: Check externals.zip download
60+
run: |
61+
file externals.zip
62+
ls -lh externals.zip
63+
unzip -l externals.zip | head -20
64+
65+
- name: Extract externals.zip
66+
run: |
67+
unzip -o externals.zip
68+
69+
- name: Set LD_LIBRARY_PATH for ICU 66
70+
run: echo "LD_LIBRARY_PATH=$(pwd)/externals/extlibs/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV
71+
72+
- name: Configure and build nativescript with coverage
73+
run: |
74+
mkdir -p build
75+
cd build
76+
cmake .. \
77+
-DENABLE_JSRUNTIME_ESSOS=ON \
78+
-DJSRUNTIME_ENGINE_NAME=jsc \
79+
-DENABLE_JSRUNTIME_PLAYER=ON \
80+
-DENABLE_AAMP_JSBINDINGS_DYNAMIC=ON \
81+
-DBUILD_JSRUNTIME_CLIENT=ON \
82+
-DENABLE_JSRUNTIME_SERVER=ON \
83+
-DENABLE_COVERAGE=ON \
84+
-DNATIVEJS_DEVELOPER_MODE=ON \
85+
-DNATIVEJS_L2_BUILD=ON \
86+
-DCMAKE_CXX_FLAGS="-I../externals/extlibs/include/rtcore" \
87+
-DCMAKE_BUILD_TYPE=Debug
88+
cmake --build .
89+
90+
- name: Setup modules directory
91+
run: |
92+
cd build
93+
mkdir -p modules
94+
cp -R ../utils jsc_modules
95+
cp -R ../src/jsc/modules/* modules/.
96+
cp -R ../utils/* modules/.
97+
98+
- name: Set library paths
99+
run: |
100+
echo "LD_LIBRARY_PATH=$(pwd)/build:$(pwd)/externals/extlibs/lib:/usr/lib/javascriptcore:$LD_LIBRARY_PATH" >> $GITHUB_ENV
101+
102+
- name: Checkout L2 test repository
103+
uses: actions/checkout@v3
104+
with:
105+
repository: rdk-e/rdkNativeScript_tests
106+
token: ${{ secrets.GH_PAT }}
107+
path: rdkNativeScript_tests
108+
ref: topic/RDKEMW-9172
109+
110+
- name: Run L2 tests with coverage
111+
run: |
112+
export SRC_REPO_DIR="${GITHUB_WORKSPACE}"
113+
export BUILD_DIR="${SRC_REPO_DIR}/build"
114+
export TEST_REPO_DIR="${GITHUB_WORKSPACE}/rdkNativeScript_tests"
115+
export TEST_FRAMEWORK_DIR="${TEST_REPO_DIR}/L2/test_framework"
116+
export TEST_SCRIPTS_DIR="${TEST_REPO_DIR}/L2/test_scripts"
117+
export TEST_RESULTS_DIR="${TEST_FRAMEWORK_DIR}/../test_results"
118+
export JSRUNTIME_BINARY="${BUILD_DIR}/JSRuntimeJSC"
119+
export LD_LIBRARY_PATH="${BUILD_DIR}:${SRC_REPO_DIR}/externals/extlibs/lib:${SRC_REPO_DIR}/externals/extlibs/lib/x86_64-linux-gnu:${LD_LIBRARY_PATH}"
120+
cd "${TEST_FRAMEWORK_DIR}"
121+
chmod +x ./coverage.sh ./run_tests.sh
122+
./coverage.sh
123+
124+
- name: Upload coverage report
125+
uses: actions/upload-artifact@v4
126+
with:
127+
name: l2-coverage-report
128+
path: rdkNativeScript_tests/L2/coverage_report/
129+
if-no-files-found: error
130+
131+
- name: Upload test results
132+
uses: actions/upload-artifact@v4
133+
with:
134+
name: l2-test-results
135+
path: rdkNativeScript_tests/L2/test_results/
136+
if-no-files-found: warn
137+
138+
- name: Check coverage summary
139+
run: |
140+
if [ -f "rdkNativeScript_tests/L2/coverage_report/coverage_summary.txt" ]; then
141+
echo "=== Coverage Summary ==="
142+
cat rdkNativeScript_tests/L2/coverage_report/coverage_summary.txt
143+
fi

CMakeLists.txt

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ option(BUILD_JSRUNTIME_APP "BUILD_JSRUNTIME_APP" ON)
2626
option(ENABLE_JSRUNTIME_SERVER "ENABLE_JSRUNTIME_SERVER" OFF)
2727
option(BUILD_JSRUNTIME_CLIENT "BUILD_JSRUNTIME_CLIENT" OFF)
2828
option(NATIVEJS_DEVELOPER_MODE "NATIVEJS_DEVELOPER_MODE" OFF)
29+
option(NATIVEJS_L2_BUILD "NATIVEJS_L2_BUILD" OFF)
2930

3031
#can be jsc or node or v8 or quickjs
3132
option(JSRUNTIME_ENGINE_NAME "JSRUNTIME_ENGINE_NAME" "jsc")
@@ -39,6 +40,7 @@ option(ENABLE_JSRUNTIME_PLAYER "ENABLE_JSRUNTIME_PLAYER" OFF)
3940
option(ENABLE_JSRUNTIME_THUNDER_SECURITYAGENT "ENABLE_JSRUNTIME_THUNDER_SECURITYAGENT" OFF)
4041
option(BUILD_JSRUNTIME_DESKTOP "BUILD_JSRUNTIME_DESKTOP" ON)
4142
option(USE_ETHANLOG "USE_ETHANLOG" OFF)
43+
option(ENABLE_COVERAGE "ENABLE_COVERAGE" OFF)
4244
option(PKG_CONFIG_SYSROOT_DIR "PKG_CONFIG_SYSROOT_DIR" "${CMAKE_CURRENT_SOURCE_DIR}/externals/extlibs")
4345

4446
if(JSRUNTIME_ENGINE_NAME STREQUAL "jsc")
@@ -101,6 +103,14 @@ if (ENABLE_JSRUNTIME_THUNDER_SECURITYAGENT)
101103
add_definitions("-DENABLE_JSRUNTIME_THUNDER_SECURITYAGENT")
102104
endif (ENABLE_JSRUNTIME_THUNDER_SECURITYAGENT)
103105

106+
if (NATIVEJS_DEVELOPER_MODE)
107+
add_definitions("-DNATIVEJS_DEVELOPER_MODE")
108+
endif (NATIVEJS_DEVELOPER_MODE)
109+
110+
if (NATIVEJS_L2_BUILD)
111+
add_definitions("-DNATIVEJS_L2_BUILD")
112+
endif (NATIVEJS_L2_BUILD)
113+
104114
include (${JSRUNTIME_SOURCE_DIRECTORY}/include.cmake)
105115
set(JSRUNTIME_APP_FILES
106116
${JSRUNTIME_COMMON_SOURCE_DIRECTORY}/jsruntime.cpp
@@ -188,6 +198,16 @@ if (APPLE)
188198
endif (APPLE)
189199

190200
add_definitions("-std=c++17 -DUSE_LIBUV")
201+
202+
# Coverage support
203+
if (ENABLE_COVERAGE)
204+
message("Enabling code coverage support")
205+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 --coverage -fprofile-arcs -ftest-coverage")
206+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 --coverage -fprofile-arcs -ftest-coverage")
207+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --coverage")
208+
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} --coverage")
209+
endif (ENABLE_COVERAGE)
210+
191211
set_target_properties(${JSRUNTIME_LIBRARY_NAME} PROPERTIES
192212
CXX_STANDARD 17
193213
CXX_STANDARD_REQUIRED YES)

include/NativeJSRenderer.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
#include <ModuleSettings.h>
3232
#include <condition_variable>
3333
#include <list>
34+
#include <thread>
3435

3536
namespace JsRuntime {
3637

src/NativeJSRenderer.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,12 @@ void NativeJSRenderer::runDeveloperConsole(ModuleSettings moduleSettings)
571571
// Short-cirtuit: in case consoleLoop was altered by signal handler we shouldn't execute lines below
572572
if (!consoleLoop || input == "exit") {
573573
delete mConsoleState->consoleContext;
574-
break;
574+
575+
#ifdef NATIVEJS_L2_BUILD
576+
std::this_thread::sleep_for(std::chrono::milliseconds(200));
577+
terminate();
578+
#endif
579+
break;
575580
}
576581

577582
mConsoleState->inputMutex.lock();

src/jsruntime.cpp

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,25 @@ int main(int argc, char* argv[])
140140
#if defined(NATIVEJS_DEVELOPER_MODE)
141141
std::this_thread::sleep_for(std::chrono::milliseconds(500));
142142
renderer->getApplications();
143-
sleep(10);
144-
renderer->terminateApplication(id);
143+
144+
#ifdef NATIVEJS_L2_BUILD
145+
int waitTime = 10;
146+
if (moduleSettings.enableWebSocket || moduleSettings.enableWebSocketEnhanced) {
147+
waitTime = 30;
148+
NativeJSLogger::log(INFO, "WebSocket enabled - using extended wait time: %d seconds\n", waitTime);
149+
}
150+
sleep(waitTime);
151+
#else
152+
sleep(10) ;
153+
#endif
154+
155+
renderer->terminateApplication(id);
156+
157+
#ifdef NATIVEJS_L2_BUILD
158+
std::this_thread::sleep_for(std::chrono::milliseconds(2000));
159+
renderer->terminate();
160+
#endif
161+
145162
#endif
146163
});
147164
}

0 commit comments

Comments
 (0)