Skip to content

Commit 8fbfbb2

Browse files
authored
RDK-57197: Analytics backend as ext dynamic lib (rdkcentral#6306) (rdkcentral#6325)
* RDK-57197: Analytics backend as an external lib * RDK-57197: Analytics align L2 tests * RDK-57197: Analytics update documentation
1 parent d31262e commit 8fbfbb2

34 files changed

+752
-3356
lines changed

.github/workflows/L2-tests-R4-4-1.yml

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -280,11 +280,7 @@ jobs:
280280
-DRDK_SERVICE_L2_TEST=ON
281281
-DDS_FOUND=ON
282282
-DPLUGIN_ANALYTICS=ON
283-
-DPLUGIN_ANALYTICS_SIFT_BACKEND=ON
284-
-DPLUGIN_ANALYTICS_SIFT_2_0_ENABLED="true"
285-
-DPLUGIN_ANALYTICS_SIFT_MAX_RANDOMISATION_WINDOW_TIME=15
286-
-DPLUGIN_ANALYTICS_SIFT_STORE_PATH="/tmp/AnalyticsSiftStore"
287-
-DPLUGIN_ANALYTICS_SIFT_URL="127.0.0.1:12345"
283+
-DPLUGIN_ANALYTICS_BACKEND_LIBRARY_NAME="libWPEFrameworkAnalyticsBackendMock.so"
288284
-DPLUGIN_ANALYTICS_EVENTS_MAP="/tmp/AnalyticsEventsMap.json"
289285
&&
290286
cmake --build build/rdkservices -j8

Analytics/Analytics.conf.in

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,8 @@ startuporder = "@PLUGIN_ANALYTICS_STARTUPORDER@"
55

66
configuration = JSON()
77

8-
configuration.add("deviceosname", "@PLUGIN_ANALYTICS_DEVICE_OS_NAME@")
98
configuration.add("eventsmap", "@PLUGIN_ANALYTICS_EVENTS_MAP@")
9+
configuration.add("loggername", "@PLUGIN_ANALYTICS_LOGGER_NAME@")
10+
configuration.add("loggerversion", "@PLUGIN_ANALYTICS_LOGGER_VERSION@")
11+
configuration.add("backendlib", "@PLUGIN_ANALYTICS_BACKEND_LIBRARY_NAME@")
1012

11-
if boolean("@PLUGIN_ANALYTICS_SIFT_BACKEND_ENABLED@"):
12-
sift = JSON()
13-
sift.add("schema2", "@PLUGIN_ANALYTICS_SIFT_2_0_ENABLED@")
14-
sift.add("commonschema", "@PLUGIN_ANALYTICS_SIFT_COMMON_SCHEMA@")
15-
sift.add("env", "@PLUGIN_ANALYTICS_SIFT_ENV@")
16-
sift.add("productname", "@PLUGIN_ANALYTICS_SIFT_PRODUCT_NAME@")
17-
sift.add("loggername", "@PLUGIN_ANALYTICS_SIFT_LOGGER_NAME@")
18-
sift.add("loggerversion", "@PLUGIN_ANALYTICS_SIFT_LOGGER_VERSION@")
19-
sift.add("platformdefault", "@PLUGIN_ANALYTICS_SIFT_PLATFORM_DEFAULT@")
20-
sift.add("maxrandomisationwindowtime", "@PLUGIN_ANALYTICS_SIFT_MAX_RANDOMISATION_WINDOW_TIME@")
21-
sift.add("maxeventsinpost", "@PLUGIN_ANALYTICS_SIFT_MAX_EVENTS_IN_POST@")
22-
sift.add("maxretries", "@PLUGIN_ANALYTICS_SIFT_MAX_RETRIES@")
23-
sift.add("minretryperiod", "@PLUGIN_ANALYTICS_SIFT_MIN_RETRY_PERIOD@")
24-
sift.add("maxretryperiod", "@PLUGIN_ANALYTICS_SIFT_MAX_RETRY_PERIOD@")
25-
sift.add("exponentialperiodicfactor", "@PLUGIN_ANALYTICS_SIFT_EXPONENTIAL_PERIODIC_FACTOR@")
26-
sift.add("storepath", "@PLUGIN_ANALYTICS_SIFT_STORE_PATH@")
27-
sift.add("eventslimit", "@PLUGIN_ANALYTICS_SIFT_STORE_EVENTS_LIMIT@")
28-
sift.add("url", "@PLUGIN_ANALYTICS_SIFT_URL@")
29-
configuration.add("sift", sift)

Analytics/Analytics.config

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,31 +7,9 @@ set (startuporder ${PLUGIN_ANALYTICS_STARTUPORDER})
77
endif()
88

99
map()
10-
kv(deviceosname ${PLUGIN_ANALYTICS_DEVICE_OS_NAME})
1110
kv(eventsmap, ${PLUGIN_ANALYTICS_EVENTS_MAP})
11+
kv(loggername, ${PLUGIN_ANALYTICS_LOGGER_NAME})
12+
kv(loggerversion, ${PLUGIN_ANALYTICS_LOGGER_VERSION})
13+
kv(backendlib, ${PLUGIN_ANALYTICS_BACKEND_LIBRARY_NAME})
1214
end()
1315
ans(configuration)
14-
15-
16-
if(PLUGIN_ANALYTICS_SIFT_BACKEND_ENABLED)
17-
map()
18-
kv(schema2 ${PLUGIN_ANALYTICS_SIFT_2_0_ENABLED})
19-
kv(commonschema ${PLUGIN_ANALYTICS_SIFT_COMMON_SCHEMA})
20-
kv(env ${PLUGIN_ANALYTICS_SIFT_ENV})
21-
kv(productname ${PLUGIN_ANALYTICS_SIFT_PRODUCT_NAME})
22-
kv(loggername ${PLUGIN_ANALYTICS_SIFT_LOGGER_NAME})
23-
kv(loggerversion ${PLUGIN_ANALYTICS_SIFT_LOGGER_VERSION})
24-
kv(platformdefault ${PLUGIN_ANALYTICS_SIFT_PLATFORM_DEFAULT})
25-
kv(maxrandomisationwindowtime, ${PLUGIN_ANALYTICS_SIFT_MAX_RANDOMISATION_WINDOW_TIME})
26-
kv(maxeventsinpost, ${PLUGIN_ANALYTICS_SIFT_MAX_EVENTS_IN_POST})
27-
kv(maxretries, ${PLUGIN_ANALYTICS_SIFT_MAX_RETRIES})
28-
kv(minretryperiod, ${PLUGIN_ANALYTICS_SIFT_MIN_RETRY_PERIOD})
29-
kv(maxretryperiod, ${PLUGIN_ANALYTICS_SIFT_MAX_RETRY_PERIOD})
30-
kv(exponentialperiodicfactor, ${PLUGIN_ANALYTICS_SIFT_EXPONENTIAL_PERIODIC_FACTOR})
31-
kv(storepath, ${PLUGIN_ANALYTICS_SIFT_STORE_PATH})
32-
kv(eventslimit, ${PLUGIN_ANALYTICS_SIFT_STORE_EVENTS_LIMIT})
33-
kv(url, ${PLUGIN_ANALYTICS_SIFT_URL})
34-
end()
35-
ans(siftobject)
36-
map_append(${configuration} sift ${siftobject})
37-
endif()

Analytics/Analytics.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@
4848
"type": "integer",
4949
"example": 35000
5050
},
51+
"appId":{
52+
"summary": "Durable App ID string",
53+
"type": "string",
54+
"example": "app-id-app1"
55+
},
5156
"eventPayload":{
5257
"summary": "Custom payload of the event in JSON format. User defined colection of objects and keys. May be an empty object",
5358
"type": "object",
@@ -87,6 +92,9 @@
8792
"uptimeTimestamp":{
8893
"$ref": "#/definitions/uptimeTimestamp"
8994
},
95+
"appId":{
96+
"$ref": "#/definitions/appId"
97+
},
9098
"eventPayload":{
9199
"$ref": "#/definitions/eventPayload"
92100
}

Analytics/AnalyticsPlugin.json

Lines changed: 14 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -5,112 +5,35 @@
55
"callsign":"org.rdk.Analytics",
66
"locator":"libWPEFrameworkAnalytics.so",
77
"status":"development",
8-
"description":"The `Analytics` plugin allows to send analytics events to dedicated backends. Currently the SIFT backend is supported."
8+
"description":"The `Analytics` plugin allows to send analytics events to dedicated backends"
99
},
1010
"configuration":{
1111
"type":"object",
1212
"properties":{
1313
"configuration":{
1414
"type":"object",
1515
"properties":{
16-
"deviceosname":{
17-
"description":"Device OS name",
16+
"loggername":{
17+
"description":"Logger name used by backend",
18+
"type":"string"
19+
},
20+
"loggerversion":{
21+
"description":"Logger version used by backend",
1822
"type":"string"
1923
},
2024
"eventsmap":{
2125
"description":"Optional path to json file with array of mapped events name",
2226
"type":"string"
2327
},
24-
"sift":{
25-
"type":"object",
26-
"properties":{
27-
"schema2":{
28-
"description":"If true, enables Sift 2.0 schema, otherwise uses Sift 1.0 schema",
29-
"type":"boolean"
30-
},
31-
"commonschema":{
32-
"description":"Sift schema common schema",
33-
"type":"string"
34-
},
35-
"env":{
36-
"description":"Sift schema environment",
37-
"type":"string"
38-
},
39-
"productname":{
40-
"description":"Sift schema product name",
41-
"type":"string"
42-
},
43-
"loggername":{
44-
"description":"Sift schema logger name",
45-
"type":"string"
46-
},
47-
"loggerversion":{
48-
"description":"Sift schema logger version",
49-
"type":"string"
50-
},
51-
"platformdefault":{
52-
"description":"Sift schema platform default value",
53-
"type":"string"
54-
},
55-
"maxrandomisationwindowtime":{
56-
"description":"Sift uploader max randomisation window time of posting queued events in seconds",
57-
"type":"number"
58-
},
59-
"maxeventsinpost":{
60-
"description":"Sift uploader max events in single post",
61-
"type":"number"
62-
},
63-
"maxretries":{
64-
"description":"Sift uploader max retries posting events",
65-
"type":"number"
66-
},
67-
"minretryperiod":{
68-
"description":"Sift uploader min retry period seconds",
69-
"type":"number"
70-
},
71-
"maxretryperiod":{
72-
"description":"Sift uploader max retry period seconds",
73-
"type":"number"
74-
},
75-
"exponentialperiodicfactor":{
76-
"description":"Sift uploader exponential periodic factor for retry delay",
77-
"type":"number"
78-
},
79-
"storepath":{
80-
"description":"Sift store path to persistent queue with events",
81-
"type":"number"
82-
},
83-
"eventslimit":{
84-
"description":"Sift store events limit",
85-
"type":"number"
86-
},
87-
"url":{
88-
"description":"URL to Sift server endpoint",
89-
"type":"string"
90-
}
91-
},
92-
"required":[
93-
"schema2",
94-
"commonschema",
95-
"productname",
96-
"loggername",
97-
"loggerversion",
98-
"platformdefault",
99-
"maxrandomisationwindowtime",
100-
"maxeventsinpost",
101-
"maxretries",
102-
"minretryperiod",
103-
"maxretryperiod",
104-
"exponentialperiodicfactor",
105-
"storepath",
106-
"eventslimit",
107-
"url"
108-
]
28+
"backendlib":{
29+
"description":"Name of backend library",
30+
"type":"string"
10931
}
11032
},
11133
"required":[
112-
"deviceosname",
113-
"sift"
34+
"loggername",
35+
"loggerversion",
36+
"backendlib"
11437
]
11538
}
11639
},
@@ -121,4 +44,4 @@
12144
"interface":{
12245
"$ref":"Analytics.json#"
12346
}
124-
}
47+
}

Analytics/CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ All notable changes to this RDK Service will be documented in this file.
1414

1515
For more details, refer to versioning section under Main README.
1616

17+
## [1.0.4] - 2025-06-12
18+
- Backend as an external dynamic library
19+
1720
## [1.0.3] - 2025-02-07
1821
### Fixed
1922
- Fix hang on call to zdump

Analytics/CMakeLists.txt

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -20,41 +20,26 @@ set(MODULE_NAME ${NAMESPACE}${PLUGIN_NAME})
2020

2121
set(VERSION_MAJOR 1)
2222
set(VERSION_MINOR 0)
23-
set(VERSION_PATCH 3)
23+
set(VERSION_PATCH 4)
2424

2525
add_compile_definitions(ANALYTICS_MAJOR_VERSION=${VERSION_MAJOR})
2626
add_compile_definitions(ANALYTICS_MINOR_VERSION=${VERSION_MINOR})
2727
add_compile_definitions(ANALYTICS_PATCH_VERSION=${VERSION_PATCH})
2828

2929
set(MODULE_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
3030

31-
option(PLUGIN_ANALYTICS_SIFT_BACKEND "Enable Sift backend" OFF)
32-
3331
set(PLUGIN_ANALYTICS_STARTUPORDER "" CACHE STRING "To configure startup order of Analytics plugin")
3432
set(PLUGIN_ANALYTICS_AUTOSTART "false" CACHE STRING "Automatically start Analytics plugin")
35-
set(PLUGIN_ANALYTICS_DEVICE_OS_NAME "rdk" CACHE STRING "Device OS name")
3633
set(PLUGIN_ANALYTICS_EVENTS_MAP "" CACHE STRING "Optional path to events mapping file")
37-
38-
set(PLUGIN_ANALYTICS_SIFT_BACKEND_ENABLED ${PLUGIN_ANALYTICS_SIFT_BACKEND} CACHE BOOL "Enable Sift backend configuration")
39-
set(PLUGIN_ANALYTICS_SIFT_2_0_ENABLED "false" CACHE STRING "Enable Sift 2.0 schema")
40-
set(PLUGIN_ANALYTICS_SIFT_COMMON_SCHEMA "entos/common/v1" CACHE STRING "Sift common schema")
41-
set(PLUGIN_ANALYTICS_SIFT_ENV "prod" CACHE STRING "Sift environment")
42-
set(PLUGIN_ANALYTICS_SIFT_PRODUCT_NAME "entos" CACHE STRING "Sift product name") #entos-immerse in Sift2.0
43-
set(PLUGIN_ANALYTICS_SIFT_LOGGER_NAME "Analytics" CACHE STRING "Sift logger name")
44-
set(PLUGIN_ANALYTICS_SIFT_LOGGER_VERSION "${MODULE_VERSION}" CACHE STRING "Sift logger version")
45-
set(PLUGIN_ANALYTICS_SIFT_PLATFORM_DEFAULT "entos:rdk" CACHE STRING "Sift platform default value")
46-
set(PLUGIN_ANALYTICS_SIFT_MAX_RANDOMISATION_WINDOW_TIME 300 CACHE STRING "Sift max randomisation window time of posting queued events")
47-
set(PLUGIN_ANALYTICS_SIFT_MAX_EVENTS_IN_POST 10 CACHE STRING "Sift max events in post")
48-
set(PLUGIN_ANALYTICS_SIFT_MAX_RETRIES 10 CACHE STRING "Sift max retries posting events")
49-
set(PLUGIN_ANALYTICS_SIFT_MIN_RETRY_PERIOD 1 CACHE STRING "Sift min retry period seconds")
50-
set(PLUGIN_ANALYTICS_SIFT_MAX_RETRY_PERIOD 30 CACHE STRING "Sift max retry period seconds")
51-
set(PLUGIN_ANALYTICS_SIFT_EXPONENTIAL_PERIODIC_FACTOR 2 CACHE STRING "Sift exponential periodic factor")
52-
set(PLUGIN_ANALYTICS_SIFT_STORE_PATH "/persistent/AnalyticsSiftStore" CACHE STRING "Sift store path")
53-
set(PLUGIN_ANALYTICS_SIFT_STORE_EVENTS_LIMIT 1000 CACHE STRING "Sift store events limit")
54-
set(PLUGIN_ANALYTICS_SIFT_URL "" CACHE STRING "Sift URL")
34+
set(PLUGIN_ANALYTICS_LOGGER_NAME "${PLUGIN_NAME}" CACHE STRING "Logger name")
35+
set(PLUGIN_ANALYTICS_LOGGER_VERSION "${MODULE_VERSION}" CACHE STRING "Logger version")
36+
set(PLUGIN_ANALYTICS_BACKEND_LIBRARY_NAME "" CACHE STRING "Analytics backend library name")
5537

5638
message("Setup ${MODULE_NAME} v${MODULE_VERSION}")
5739

40+
set(PLUGIN_ANALYTICS_INTERFACES_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/include/${NAMESPACE}/interfaces/analytics/")
41+
set(PLUGIN_ANALYTICS_LIBLOADER_DFL_DIR "${CMAKE_INSTALL_PREFIX}/lib/${STORAGE_DIRECTORY}/plugins/")
42+
5843
find_package(${NAMESPACE}Plugins REQUIRED)
5944
find_package(${NAMESPACE}Definitions REQUIRED)
6045
find_package(CompileSettingsDebug CONFIG REQUIRED)
@@ -66,9 +51,17 @@ add_library(${MODULE_NAME} SHARED
6651

6752
target_include_directories(${MODULE_NAME} PRIVATE Implementation)
6853
target_include_directories(${MODULE_NAME} PRIVATE Implementation/SystemTime)
54+
target_include_directories(${MODULE_NAME} PRIVATE Implementation/LocalStore)
55+
target_include_directories(${MODULE_NAME} PRIVATE Implementation/Backend)
56+
target_include_directories(${MODULE_NAME} PRIVATE Implementation/Interfaces)
6957
target_include_directories(${MODULE_NAME} PRIVATE ../)
7058
target_include_directories(${MODULE_NAME} PRIVATE ../helpers)
7159

60+
file(GLOB PLUGIN_ANALYTICS_INTERFACES_HEADERS Implementation/Interfaces/I*.h)
61+
message(STATUS "Installing Analytics interfaces: ${PLUGIN_ANALYTICS_INTERFACES_HEADERS} into ${PLUGIN_ANALYTICS_INTERFACES_INSTALL_DIR}")
62+
install(FILES ${PLUGIN_ANALYTICS_INTERFACES_HEADERS}
63+
DESTINATION ${PLUGIN_ANALYTICS_INTERFACES_INSTALL_DIR})
64+
7265
add_subdirectory(Implementation/SystemTime)
7366
add_subdirectory(Implementation/LocalStore)
7467
add_subdirectory(Implementation/Backend)
@@ -78,14 +71,16 @@ set_target_properties(${MODULE_NAME} PROPERTIES
7871
CXX_STANDARD_REQUIRED YES)
7972

8073
target_compile_definitions(${MODULE_NAME} PRIVATE MODULE_NAME=Plugin_${PLUGIN_NAME})
74+
target_compile_definitions(${MODULE_NAME} PRIVATE LIBLOADER_DFL_DIR="${PLUGIN_ANALYTICS_LIBLOADER_DFL_DIR}")
8175

8276
target_link_libraries(${MODULE_NAME}
8377
PRIVATE
8478
CompileSettingsDebug::CompileSettingsDebug
8579
${NAMESPACE}Plugins::${NAMESPACE}Plugins
8680
${NAMESPACE}Definitions::${NAMESPACE}Definitions
8781
${MODULE_NAME}Backends
88-
${MODULE_NAME}SystemTime)
82+
${MODULE_NAME}SystemTime
83+
${MODULE_NAME}LocalStore)
8984

9085
if (RDK_SERVICE_L2_TEST)
9186
target_compile_definitions(${MODULE_NAME} PRIVATE MODULE_NAME=Plugin_${PLUGIN_NAME})
@@ -98,6 +93,8 @@ if (RDK_SERVICE_L2_TEST)
9893
else (TESTMOCKLIB_LIBRARIES)
9994
message ("Require ${TESTMOCKLIB_LIBRARIES} library")
10095
endif (TESTMOCKLIB_LIBRARIES)
96+
97+
add_subdirectory(Tests/AnalyticsBackendMock)
10198
endif (RDK_SERVICES_L2_TEST)
10299

103100
install(TARGETS ${MODULE_NAME}

0 commit comments

Comments
 (0)