diff --git a/run_l2.sh b/run_l2.sh index f2598d9b4..ca0ba69e8 100644 --- a/run_l2.sh +++ b/run_l2.sh @@ -44,6 +44,7 @@ echo "Status|Download In Progress" >> /opt/fwdnldstatus.txt echo "DnldFile|TESTIMAGE_DEV.bin" >> /opt/fwdnldstatus.txt echo "DnldURL|https://mockserver.tv/Images" >> /opt/fwdnldstatus.txt echo "FwUpdateState|Download complete" >> /opt/fwdnldstatus.txt +echo "uploaded" > /opt/loguploadstatus.txt cp ./src/integrationtest/conf/mgrlist.conf /etc/ @@ -95,6 +96,12 @@ pytest --json-report --json-report-summary --json-report-file $RESULT_DIR/custom pytest --json-report --json-report-summary --json-report-file $RESULT_DIR/dhcpv4.json test/functional-tests/tests/tr69hostif_dhcpv4.py pytest --json-report --json-report-summary --json-report-file $RESULT_DIR/moca.json test/functional-tests/tests/tr69hostif_moca.py +pytest --json-report --json-report-summary --json-report-file $RESULT_DIR/device_info.json test/functional-tests/tests/tr69hostif_device_info.py +pytest --json-report --json-report-summary --json-report-file $RESULT_DIR/interfacestack.json test/functional-tests/tests/tr69hostif_interfacestack.py +pytest --json-report --json-report-summary --json-report-file $RESULT_DIR/opsdevicemgmt_logging.json test/functional-tests/tests/tr69hostif_opsdevicemgmt_logging.py +pytest --json-report --json-report-summary --json-report-file $RESULT_DIR/opsdevicemgmt_rpc.json test/functional-tests/tests/tr69hostif_opsdevicemgmt_rpc.py +pytest --json-report --json-report-summary --json-report-file $RESULT_DIR/storageservice.json test/functional-tests/tests/tr69hostif_storageservice.py +pytest --json-report --json-report-summary --json-report-file $RESULT_DIR/bluetooth.json test/functional-tests/tests/tr69hostif_bluetooth.py pkill -f thunder-mock-server.js pytest --json-report --json-report-summary --json-report-file $RESULT_DIR/thunder_negative_edge.json test/functional-tests/tests/tr69hostif_thunder_negative_edge_cases.py diff --git a/test/functional-tests/features/tr69hostif_bluetooth.feature b/test/functional-tests/features/tr69hostif_bluetooth.feature new file mode 100755 index 000000000..77f115c64 --- /dev/null +++ b/test/functional-tests/features/tr69hostif_bluetooth.feature @@ -0,0 +1,107 @@ +#################################################################################### +# If not stated otherwise in this file or this component's Licenses.txt file the +# following copyright and licenses apply: +# +# Copyright 2026 RDK Management +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#################################################################################### + +# Source: ../tests/tr69hostif_bluetooth.py +# Source implementation: src/hostif/profiles/DeviceInfo/XrdkBlueTooth.cpp +# Feature: tr69hostif_bluetooth.feature + +Feature: Bluetooth xBlueTooth Parameter Handler Validation + + Background: + Given the tr69hostif daemon is running and initialized + And rbuscli is available on the system + + Scenario Outline: GET xBlueTooth top-level parameters returns error + When I GET "" via rbus + Then the rbus response should contain an error + + Examples: + | parameter | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.enable | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.DiscoveryEnabled | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.DiscoveredDeviceCnt| + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.PairedDeviceCnt | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.ConnectedDeviceCnt | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.GetDeviceInfo | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.LimitBeaconDetection | + + Scenario Outline: GET xBlueTooth DeviceInfo parameters returns error + When I GET "" via rbus + Then the rbus response should contain an error + + Examples: + | parameter | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.DeviceInfo.DeviceID | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.DeviceInfo.Manufacturer | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.DeviceInfo.Profile | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.DeviceInfo.MAC | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.DeviceInfo.SignalStrength | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.DeviceInfo.RSSI | + + Scenario Outline: GET xBlueTooth discovered and paired list parameters returns error + When I GET "" via rbus + Then the rbus response should contain an error + + Examples: + | parameter | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.DiscoveredDevice.1.Name | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.DiscoveredDevice.1.DeviceID | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.DiscoveredDevice.1.DeviceType | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.DiscoveredDevice.1.Paired | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.DiscoveredDevice.1.Connected | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.PairedDevice.1.Name | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.PairedDevice.1.DeviceID | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.PairedDevice.1.Connected | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.PairedDevice.1.DeviceType | + + Scenario Outline: GET xBlueTooth connected device list parameters returns error + When I GET "" via rbus + Then the rbus response should contain an error + + Examples: + | parameter | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.ConnectedDevice.1.Name | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.ConnectedDevice.1.DeviceID | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.ConnectedDevice.1.DeviceType | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.ConnectedDevice.1.Active | + + Scenario Outline: SET xBlueTooth writable parameters returns set failure + When I SET "" to "" as via rbus + Then the rbus set response should contain "setvalues failed" + + Examples: + | parameter | type | value | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.GetDeviceInfo | int | 1 | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.LimitBeaconDetection | boolean | true | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.BLE.Tile.Ring.Id | string | TILE-TEST-001 | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.BLE.Tile.Ring.SessionId | string | SESSION-TEST-001 | + | Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.BLE.Tile.Cmd.Request | string | test-cmd | + + Scenario: GET xBlueTooth BLE Tile Ring parameters returns error + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.BLE.Tile.Ring.Id" via rbus + Then the rbus response should contain an error + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.BLE.Tile.Ring.SessionId" via rbus + Then the rbus response should contain an error + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.BLE.Tile.Ring.Trigger" via rbus + Then the rbus response should contain an error + + Scenario: SET xBlueTooth BLE Tile Ring Trigger returns set failure + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.BLE.Tile.Ring.Id" to "TILE-TEST-001" as string via rbus + And I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.BLE.Tile.Ring.Trigger" to "false" as boolean via rbus + Then the rbus set response should contain "setvalues failed" diff --git a/test/functional-tests/features/tr69hostif_custom.feature b/test/functional-tests/features/tr69hostif_custom.feature index 7e377c1d0..a61e53b22 100755 --- a/test/functional-tests/features/tr69hostif_custom.feature +++ b/test/functional-tests/features/tr69hostif_custom.feature @@ -41,8 +41,6 @@ Feature: Comcast/RDK Custom Parameter GET and SET via rbus | Device.DeviceInfo.X_RDKCENTRAL-COM.CPUTemp | | Device.DeviceInfo.X_RDKCENTRAL-COM_Experience | | Device.DeviceInfo.X_RDK_FirmwareName | - | Device.DeviceInfo.X_RDKCENTRAL-COM_MigrationPreparer.MigrationReady | - | Device.DeviceInfo.X_RDKCENTRAL-COM_Migration.MigrationStatus | Scenario Outline: SET then GET writable custom parameter When I SET "" to "" as via rbus @@ -52,15 +50,60 @@ Feature: Comcast/RDK Custom Parameter GET and SET via rbus Examples: | parameter | type | value | | Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareToDownload | string | fw_image.bin | - | Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadStatus| string | IDLE | | Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadProtocol | string | https | | Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadURL | string | https://example.com/fw.bin | - | Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadUseCodebig | boolean | true | | Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadDeferReboot | boolean | true | | Device.DeviceInfo.X_RDKCENTRAL-COM_PreferredGatewayType | string | DOCSIS | | Device.DeviceInfo.X_RDKCENTRAL-COM.IUI.Version | string | 1.0.0 | | Device.DeviceInfo.X_RDKCENTRAL-COM.IUI.AppsVersion | string | 1.0.0 | + Scenario: GET Device.DeviceInfo.X_COMCAST-COM_STB_MAC returns error + When I GET "Device.DeviceInfo.X_COMCAST-COM_STB_MAC" via rbus + Then the rbus response should contain an error + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadStatus returns error + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadStatus" to "IDLE" as string via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadStatus + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadStatus" via rbus + Then the rbus response should not contain an error + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadUseCodebig + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadUseCodebig" to "true" as boolean via rbus + Then the rbus response should indicate success + + Scenario: GET Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadUseCodebig returns error + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadUseCodebig" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadPercent returns error + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadPercent" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.X_RDKCENTRAL-COM_LastRebootReason returns error + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_LastRebootReason" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.X_RDKCENTRAL-COM_MigrationPreparer.MigrationReady returns error + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_MigrationPreparer.MigrationReady" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.X_RDKCENTRAL-COM_Migration.MigrationStatus returns error + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_Migration.MigrationStatus" via rbus + Then the rbus response should contain an error + + Scenario: SET and GET FirmwareDownloadProtocol COMCAST alias value + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadProtocol" to "http" as string via rbus + And I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadProtocol" via rbus + Then the rbus response should not contain an error + And the rbus response should contain "http" + + Scenario: SET and GET FirmwareDownloadURL COMCAST alias value + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadURL" to "https://example.com/fw-comcast.bin" as string via rbus + And I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadURL" via rbus + Then the rbus response should not contain an error + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_Reset When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_Reset" to "Factory" as string via rbus Then the rbus response should indicate success diff --git a/test/functional-tests/features/tr69hostif_device_info.feature b/test/functional-tests/features/tr69hostif_device_info.feature new file mode 100755 index 000000000..8bf06c267 --- /dev/null +++ b/test/functional-tests/features/tr69hostif_device_info.feature @@ -0,0 +1,153 @@ +#################################################################################### +# If not stated otherwise in this file or this component's Licenses.txt file the +# following copyright and licenses apply: +# +# Copyright 2026 RDK Management +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#################################################################################### + +# Source: ../tests/tr69hostif_device_info.py +# Feature: tr69hostif_device_info.feature + +Feature: DeviceInfo Extended Parameter GET/SET Handler Validation + + Background: + Given the tr69hostif daemon is running and initialized + And rbuscli is available on the system + + Scenario: GET Device.DeviceInfo.AdditionalHardwareVersion returns error + When I GET "Device.DeviceInfo.AdditionalHardwareVersion" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.AdditionalSoftwareVersion returns error + When I GET "Device.DeviceInfo.AdditionalSoftwareVersion" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.FirstUseDate returns error + When I GET "Device.DeviceInfo.FirstUseDate" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.HardwareVersion returns error + When I GET "Device.DeviceInfo.HardwareVersion" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.Manufacturer returns error + When I GET "Device.DeviceInfo.Manufacturer" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.ManufacturerOUI returns error + When I GET "Device.DeviceInfo.ManufacturerOUI" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.Migration.MigrationStatus + When I GET "Device.DeviceInfo.Migration.MigrationStatus" via rbus + Then the rbus response should not contain an error + + Scenario: GET Device.DeviceInfo.MigrationPreparer.MigrationReady returns error + When I GET "Device.DeviceInfo.MigrationPreparer.MigrationReady" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.SerialNumber returns error + When I GET "Device.DeviceInfo.SerialNumber" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.SupportedDataModelNumberOfEntries + When I GET "Device.DeviceInfo.SupportedDataModelNumberOfEntries" via rbus + Then the rbus response should not contain an error + + Scenario: GET Device.DeviceInfo.VendorConfigFileNumberOfEntries returns error + When I GET "Device.DeviceInfo.VendorConfigFileNumberOfEntries" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.VendorLogFileNumberOfEntries returns error + When I GET "Device.DeviceInfo.VendorLogFileNumberOfEntries" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.X_COMCAST-COM_FirmwareDownloadStatus + When I GET "Device.DeviceInfo.X_COMCAST-COM_FirmwareDownloadStatus" via rbus + Then the rbus response should not contain an error + + Scenario: GET Device.DeviceInfo.X_COMCAST-COM_FirmwareToDownload + When I GET "Device.DeviceInfo.X_COMCAST-COM_FirmwareToDownload" via rbus + Then the rbus response should not contain an error + + Scenario: GET Device.DeviceInfo.X_COMCAST-COM_Reset returns error + When I GET "Device.DeviceInfo.X_COMCAST-COM_Reset" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.X_RDKCENTRAL-COM_RDKVersion + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_RDKVersion" via rbus + Then the rbus response should not contain an error + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.NonRootSupport.ApparmorBlocklist + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.NonRootSupport.ApparmorBlocklist" to "sample-profile:enforce" as string via rbus + Then the rbus response should not contain an error + + Scenario: GET Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.NonRootSupport.ApparmorBlocklist returns error + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.NonRootSupport.ApparmorBlocklist" via rbus + Then the rbus response should contain an error + + Scenario: SET and GET Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.NonRootSupport.Blocklist + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.NonRootSupport.Blocklist" to "sample-block-entry" as string via rbus + And I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.NonRootSupport.Blocklist" via rbus + Then the rbus response should not contain an error + And the rbus response should contain "sample-block-entry" + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_XRPolling.Action returns error + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_XRPolling.Action" to "XRPoll" as string via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.X_RDKCENTRAL-COM_XRPolling.Action returns error + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_XRPolling.Action" via rbus + Then the rbus response should contain an error + + Scenario: SET Device.DeviceInfo.X_COMCAST-COM_FirmwareDownloadStatus returns error + When I SET "Device.DeviceInfo.X_COMCAST-COM_FirmwareDownloadStatus" to "IDLE" as string via rbus + Then the rbus response should contain an error + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareToDownload + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareToDownload" to "fw_image.bin" as string via rbus + Then the rbus response should not contain an error + + Scenario: SET Device.DeviceInfo.X_COMCAST-COM_Reset + When I SET "Device.DeviceInfo.X_COMCAST-COM_Reset" to "Factory" as string via rbus + Then the rbus response should not contain an error + + Scenario: SET and GET Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.RebootStop.Detection + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.RebootStop.Detection" to "true" as boolean via rbus + And I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.RebootStop.Detection" via rbus + Then the rbus response should not contain an error + + Scenario: SET and GET Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.RebootStop.Duration + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.RebootStop.Duration" to "10" as int via rbus + And I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.RebootStop.Duration" via rbus + Then the rbus response should not contain an error + And the rbus response should contain "10" + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.meminsight.Trigger to start + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.meminsight.Trigger" to "start" as string via rbus + Then the rbus response should not contain an error + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.meminsight.Trigger to stop + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.meminsight.Trigger" to "stop" as string via rbus + Then the rbus response should not contain an error + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.meminsight.Enable to true + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.meminsight.Enable" to "true" as boolean via rbus + Then the rbus response should not contain an error + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.meminsight.Enable to false + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.meminsight.Enable" to "false" as boolean via rbus + Then the rbus response should not contain an error + diff --git a/test/functional-tests/features/tr69hostif_devicetime.feature b/test/functional-tests/features/tr69hostif_devicetime.feature index 3315b4472..3433991b3 100755 --- a/test/functional-tests/features/tr69hostif_devicetime.feature +++ b/test/functional-tests/features/tr69hostif_devicetime.feature @@ -74,6 +74,23 @@ Feature: Device.Time Parameter GET/SET via rbus Then the rbus response should not contain an error And the rbus response should contain "UTC" + Scenario: SET Device.Time.LocalTimeZone returns error + When I SET "Device.Time.LocalTimeZone" to "UTC" as string via rbus + Then the rbus response should contain an error + Scenario: GET Device.Time.X_RDK_CurrentUTCTime When I GET "Device.Time.X_RDK_CurrentUTCTime" via rbus Then the rbus response should not contain an error + + Scenario: SET Device.Time.Enable to true returns error + When I SET "Device.Time.Enable" to "true" as boolean via rbus + Then the rbus response should contain an error + + Scenario: GET Device.Time.Enable remains false + When I GET "Device.Time.Enable" via rbus + Then the rbus response should not contain an error + And the rbus response should contain "false" + + Scenario: SET Device.Time.Enable to false returns error + When I SET "Device.Time.Enable" to "false" as boolean via rbus + Then the rbus response should contain an error diff --git a/test/functional-tests/features/tr69hostif_ethernet_handlers.feature b/test/functional-tests/features/tr69hostif_ethernet_handlers.feature index 3078ab2bd..2bb6a0b7b 100755 --- a/test/functional-tests/features/tr69hostif_ethernet_handlers.feature +++ b/test/functional-tests/features/tr69hostif_ethernet_handlers.feature @@ -20,7 +20,7 @@ # Source: ../tests/tr69hostif_ethernet_handlers.py # Feature: tr69hostif_ethernet_handlers.feature -Feature: Ethernet Interface and Stats GET Handler Validation +Feature: Ethernet Interface and Stats GET/SET Handler Validation Background: Given the tr69hostif daemon is running and initialized @@ -36,11 +36,23 @@ Feature: Ethernet Interface and Stats GET Handler Validation Then the rbus response should not contain an error And the rbus response should contain "eth0" + Scenario: SET Device.Ethernet.Interface.1.Enable + When I SET "Device.Ethernet.Interface.1.Enable" to "true" as boolean via rbus + Then the rbus response should not contain an error + Scenario: GET Device.Ethernet.Interface.1.Enable When I GET "Device.Ethernet.Interface.1.Enable" via rbus Then the rbus response should not contain an error And the rbus response should contain "true" + Scenario: SET Device.Ethernet.Interface.1.Alias returns error + When I SET "Device.Ethernet.Interface.1.Alias" to "eth0_alias" as string via rbus + Then the rbus response should contain an error + + Scenario: GET Device.Ethernet.Interface.1.Alias returns error + When I GET "Device.Ethernet.Interface.1.Alias" via rbus + Then the rbus response should contain an error + Scenario: GET Device.Ethernet.Interface.1.Status When I GET "Device.Ethernet.Interface.1.Status" via rbus Then the rbus response should not contain an error @@ -50,6 +62,10 @@ Feature: Ethernet Interface and Stats GET Handler Validation When I GET "Device.Ethernet.Interface.1.LastChange" via rbus Then the rbus response should contain an error + Scenario: SET Device.Ethernet.Interface.1.LowerLayers returns error + When I SET "Device.Ethernet.Interface.1.LowerLayers" to "eth0" as string via rbus + Then the rbus response should contain an error + Scenario: GET Device.Ethernet.Interface.1.LowerLayers returns error When I GET "Device.Ethernet.Interface.1.LowerLayers" via rbus Then the rbus response should contain an error @@ -63,10 +79,18 @@ Feature: Ethernet Interface and Stats GET Handler Validation When I GET "Device.Ethernet.Interface.1.MACAddress" via rbus Then the rbus response should not contain an error + Scenario: SET Device.Ethernet.Interface.1.MaxBitRate + When I SET "Device.Ethernet.Interface.1.MaxBitRate" to "1000" as int via rbus + Then the rbus response should not contain an error + Scenario: GET Device.Ethernet.Interface.1.MaxBitRate When I GET "Device.Ethernet.Interface.1.MaxBitRate" via rbus Then the rbus response should not contain an error + Scenario: SET Device.Ethernet.Interface.1.DuplexMode returns error + When I SET "Device.Ethernet.Interface.1.DuplexMode" to "full" as string via rbus + Then the rbus response should contain an error + Scenario: GET Device.Ethernet.Interface.1.DuplexMode When I GET "Device.Ethernet.Interface.1.DuplexMode" via rbus Then the rbus response should not contain an error diff --git a/test/functional-tests/features/tr69hostif_interfacestack.feature b/test/functional-tests/features/tr69hostif_interfacestack.feature new file mode 100755 index 000000000..f251a1db0 --- /dev/null +++ b/test/functional-tests/features/tr69hostif_interfacestack.feature @@ -0,0 +1,39 @@ +#################################################################################### +# If not stated otherwise in this file or this component's Licenses.txt file the +# following copyright and licenses apply: +# +# Copyright 2026 RDK Management +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#################################################################################### + +# Source: ../tests/tr69hostif_interfacestack.py +# Feature: tr69hostif_interfacestack.feature + +Feature: InterfaceStack Parameter Handler Validation + + Background: + Given the tr69hostif daemon is running and initialized + And rbuscli is available on the system + + Scenario: GET Device.InterfaceStackNumberOfEntries + When I GET "Device.InterfaceStackNumberOfEntries" via rbus + Then the rbus response should not contain an error + + Scenario: GET Device.InterfaceStack.1.HigherLayer + When I GET "Device.InterfaceStack.1.HigherLayer" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.InterfaceStack.1.LowerLayer + When I GET "Device.InterfaceStack.1.LowerLayer" via rbus + Then the rbus response should contain an error diff --git a/test/functional-tests/features/tr69hostif_ip.feature b/test/functional-tests/features/tr69hostif_ip.feature index 933c4cfe7..6cb0042d2 100755 --- a/test/functional-tests/features/tr69hostif_ip.feature +++ b/test/functional-tests/features/tr69hostif_ip.feature @@ -18,7 +18,7 @@ #################################################################################### -Feature: Device.IP Interface, Address, Stats and ActivePort GET Handlers +Feature: Device.IP Interface, Address, Stats and ActivePort GET/SET Handlers Background: Given the tr69hostif daemon is running and initialized @@ -33,6 +33,26 @@ Feature: Device.IP Interface, Address, Stats and ActivePort GET Handlers | Device.IP.InterfaceNumberOfEntries | | Device.IP.ActivePortNumberOfEntries | + Scenario: SET and GET Device.IP.Interface.1.Enable + When I SET "Device.IP.Interface.1.Enable" to "true" as boolean via rbus + And I GET "Device.IP.Interface.1.Enable" via rbus + Then the rbus response should not contain an error + And the rbus response should contain "true" + + Scenario: SET and GET Device.IP.Interface.1.IPv4Enable + When I SET "Device.IP.Interface.1.IPv4Enable" to "true" as boolean via rbus + And I GET "Device.IP.Interface.1.IPv4Enable" via rbus + Then the rbus response should not contain an error + And the rbus response should contain "true" + + Scenario: SET Device.IP.Interface.1.IPv6Enable returns error + When I SET "Device.IP.Interface.1.IPv6Enable" to "true" as boolean via rbus + Then the rbus response should contain an error + + Scenario: SET Device.IP.Interface.1.ULAEnable returns error + When I SET "Device.IP.Interface.1.ULAEnable" to "true" as boolean via rbus + Then the rbus response should contain an error + Scenario Outline: GET Device.IP.Interface.1 core parameters with expected values When I GET "" via rbus Then the rbus response should not contain an error @@ -48,10 +68,42 @@ Feature: Device.IP Interface, Address, Stats and ActivePort GET Handlers | Device.IP.Interface.1.Type | Loopback | | Device.IP.Interface.1.Loopback | true | + Scenario: GET Device.IP.Interface.1.ULAEnable returns error + When I GET "Device.IP.Interface.1.ULAEnable" via rbus + Then the rbus response should contain an error + + Scenario: SET Device.IP.Interface.1.Alias returns error + When I SET "Device.IP.Interface.1.Alias" to "ip_interface_alias" as string via rbus + Then the rbus response should contain an error + + Scenario: GET Device.IP.Interface.1.Alias returns error + When I GET "Device.IP.Interface.1.Alias" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.IP.Interface.1.LastChange returns error + When I GET "Device.IP.Interface.1.LastChange" via rbus + Then the rbus response should contain an error + Scenario: GET Device.IP.Interface.1.LowerLayers When I GET "Device.IP.Interface.1.LowerLayers" via rbus Then the rbus response should not contain an error + Scenario: SET Device.IP.Interface.1.LowerLayers returns error + When I SET "Device.IP.Interface.1.LowerLayers" to "eth0" as string via rbus + Then the rbus response should contain an error + + Scenario: SET Device.IP.Interface.1.Router returns error + When I SET "Device.IP.Interface.1.Router" to "true" as boolean via rbus + Then the rbus response should contain an error + + Scenario: GET Device.IP.Interface.1.Router returns error + When I GET "Device.IP.Interface.1.Router" via rbus + Then the rbus response should contain an error + + Scenario: SET Device.IP.Interface.1.Loopback returns error + When I SET "Device.IP.Interface.1.Loopback" to "true" as boolean via rbus + Then the rbus response should contain an error + Scenario Outline: GET Device.IP.Interface.1.IPv4Address.1 parameters with expected values When I GET "" via rbus Then the rbus response should not contain an error @@ -70,6 +122,36 @@ Feature: Device.IP Interface, Address, Stats and ActivePort GET Handlers When I GET "Device.IP.Interface.1.IPv4AddressNumberOfEntries" via rbus Then the rbus response should not contain an error + Scenario: GET Device.IP.Interface.1.IPv6AddressNumberOfEntries + When I GET "Device.IP.Interface.1.IPv6AddressNumberOfEntries" via rbus + Then the rbus response should not contain an error + + Scenario: SET and GET Device.IP.Interface.1.IPv4Address.1.Enable + When I SET "Device.IP.Interface.1.IPv4Address.1.Enable" to "true" as boolean via rbus + And I GET "Device.IP.Interface.1.IPv4Address.1.Enable" via rbus + Then the rbus response should not contain an error + And the rbus response should contain "true" + + Scenario: SET Device.IP.Interface.1.IPv4Address.1.Alias returns error + When I SET "Device.IP.Interface.1.IPv4Address.1.Alias" to "ipv4_alias" as string via rbus + Then the rbus response should contain an error + + Scenario: GET Device.IP.Interface.1.IPv4Address.1.Alias returns error + When I GET "Device.IP.Interface.1.IPv4Address.1.Alias" via rbus + Then the rbus response should contain an error + + Scenario: SET and GET Device.IP.Interface.1.IPv4Address.1.IPAddress + When I SET "Device.IP.Interface.1.IPv4Address.1.IPAddress" to "127.0.0.1" as string via rbus + And I GET "Device.IP.Interface.1.IPv4Address.1.IPAddress" via rbus + Then the rbus response should not contain an error + And the rbus response should contain "127.0.0.1" + + Scenario: SET and GET Device.IP.Interface.1.IPv4Address.1.SubnetMask + When I SET "Device.IP.Interface.1.IPv4Address.1.SubnetMask" to "255.0.0.0" as string via rbus + And I GET "Device.IP.Interface.1.IPv4Address.1.SubnetMask" via rbus + Then the rbus response should not contain an error + And the rbus response should contain "255.0.0.0" + Scenario Outline: GET Device.IP.Interface.1.IPv6Address.1 key parameters When I GET "" via rbus Then the rbus response should not contain an error @@ -83,6 +165,14 @@ Feature: Device.IP Interface, Address, Stats and ActivePort GET Handlers | Device.IP.Interface.1.IPv6Address.1.Origin | WellKnown | | Device.IP.Interface.1.IPv6Address.1.Anycast | false | + Scenario: SET Device.IP.Interface.1.IPv6Address.1.Enable returns error + When I SET "Device.IP.Interface.1.IPv6Address.1.Enable" to "true" as boolean via rbus + Then the rbus response should contain an error + + Scenario: SET Device.IP.Interface.1.IPv6Address.1.IPAddress returns error + When I SET "Device.IP.Interface.1.IPv6Address.1.IPAddress" to "::1" as string via rbus + Then the rbus response should contain an error + Scenario Outline: GET Device.IP.Interface.1.IPv6Address.1 additional parameters When I GET "" via rbus Then the rbus response should not contain an error @@ -117,6 +207,7 @@ Feature: Device.IP Interface, Address, Stats and ActivePort GET Handlers | Device.IP.Interface.1.Stats.BytesSent | | Device.IP.Interface.1.Stats.BytesReceived | | Device.IP.Interface.1.Stats.PacketsSent | + | Device.IP.Interface.1.Stats.PacketsReceived | | Device.IP.Interface.1.Stats.ErrorsSent | | Device.IP.Interface.1.Stats.ErrorsReceived | | Device.IP.Interface.1.Stats.UnicastPacketsSent | @@ -143,3 +234,7 @@ Feature: Device.IP Interface, Address, Stats and ActivePort GET Handlers Scenario: GET Device.IP.ActivePort.1.LocalPort When I GET "Device.IP.ActivePort.1.LocalPort" via rbus Then the rbus response should not contain an error + + Scenario: GET Device.IP.ActivePort.1.Status + When I GET "Device.IP.ActivePort.1.Status" via rbus + Then the rbus response should not contain an error diff --git a/test/functional-tests/features/tr69hostif_moca.feature b/test/functional-tests/features/tr69hostif_moca.feature index 5e56a6f22..20b555196 100644 --- a/test/functional-tests/features/tr69hostif_moca.feature +++ b/test/functional-tests/features/tr69hostif_moca.feature @@ -238,3 +238,27 @@ Feature: MoCA Interface Parameter Handler Validation When I SET "Device.MoCA.Interface.1.LowerLayers" to "" as string via rbus Then the rbus set response should contain "setvalues failed" + Scenario: GET Device.MoCA.Interface.1.KeyPassphrase + When I GET "Device.MoCA.Interface.1.KeyPassphrase" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.MoCA.Interface.1.TxPowerLimit + When I GET "Device.MoCA.Interface.1.TxPowerLimit" via rbus + Then the rbus response should contain an error + + Scenario: GET Device.MoCA.Interface.1.BeaconPowerLimit + When I GET "Device.MoCA.Interface.1.BeaconPowerLimit" via rbus + Then the rbus response should contain an error + + Scenario: SET Device.MoCA.Interface.1.KeyPassphrase + When I SET "Device.MoCA.Interface.1.KeyPassphrase" to "123456" as string via rbus + Then the rbus set response should contain "setvalues failed" + + Scenario: SET Device.MoCA.Interface.1.TxPowerLimit + When I SET "Device.MoCA.Interface.1.TxPowerLimit" to "0" as int via rbus + Then the rbus set response should contain "setvalues failed" + + Scenario: SET Device.MoCA.Interface.1.BeaconPowerLimit + When I SET "Device.MoCA.Interface.1.BeaconPowerLimit" to "0" as int via rbus + Then the rbus set response should contain "setvalues failed" + diff --git a/test/functional-tests/features/tr69hostif_opsdevicemgmt_logging.feature b/test/functional-tests/features/tr69hostif_opsdevicemgmt_logging.feature new file mode 100755 index 000000000..b60caf48b --- /dev/null +++ b/test/functional-tests/features/tr69hostif_opsdevicemgmt_logging.feature @@ -0,0 +1,59 @@ +#################################################################################### +# If not stated otherwise in this file or this component's Licenses.txt file the +# following copyright and licenses apply: +# +# Copyright 2026 RDK Management +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#################################################################################### + +# Source: ../tests/tr69hostif_opsdevicemgmt_logging.py +# Feature: tr69hostif_opsdevicemgmt_logging.feature + +Feature: xOpsDeviceMgmt Logging Parameter Handler Validation + + Background: + Given the tr69hostif daemon is running and initialized + And rbuscli is available on the system + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMUploadLogsNow + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMUploadLogsNow" to "true" as boolean via rbus + Then the rbus response should not contain an error + And the log should contain "Start executing script to upload logs... " + + Scenario: GET Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMUploadLogsNow + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMUploadLogsNow" via rbus + Then the rbus response should not contain an error + And the rbus response should contain "false" + + Scenario: GET Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMLogsUploadStatus + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMLogsUploadStatus" via rbus + Then the rbus response should not contain an error + And the rbus response should contain "uploaded" + And the log should contain "Successfully read from /opt/loguploadstatus.txt." + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMMoCALogEnabled + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMMoCALogEnabled" to "true" as boolean via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMMoCALogEnabled + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMMoCALogEnabled" via rbus + Then the rbus response should contain an error + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMMoCALogPeriod + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMMoCALogPeriod" to "300" as int via rbus + Then the rbus response should contain an error + + Scenario: GET Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMMoCALogPeriod + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMMoCALogPeriod" via rbus + Then the rbus response should contain an error diff --git a/test/functional-tests/features/tr69hostif_opsdevicemgmt_rpc.feature b/test/functional-tests/features/tr69hostif_opsdevicemgmt_rpc.feature new file mode 100755 index 000000000..864e0601f --- /dev/null +++ b/test/functional-tests/features/tr69hostif_opsdevicemgmt_rpc.feature @@ -0,0 +1,71 @@ +#################################################################################### +# If not stated otherwise in this file or this component's Licenses.txt file the +# following copyright and licenses apply: +# +# Copyright 2026 RDK Management +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#################################################################################### + +# Source: ../tests/tr69hostif_opsdevicemgmt_rpc.py +# Feature: tr69hostif_opsdevicemgmt_rpc.feature + +Feature: xOpsDeviceMgmt RPC Parameter Handler Validation + + Background: + Given the tr69hostif daemon is running and initialized + And rbuscli is available on the system + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.RebootNow to true + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.RebootNow" to "true" as boolean via rbus + Then the rbus response should not contain an error + And the log should contain "Successfully executed reboot script" + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.RebootNow to false + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.RebootNow" to "false" as boolean via rbus + Then the rbus response should not contain an error + And the log should contain "Not rebooting. Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.RebootNow = false" + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.DeviceManageableNotification + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.DeviceManageableNotification" to "manageable" as string via rbus + Then the rbus response should not contain an error + + Scenario: GET Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.DeviceManageableNotification + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.DeviceManageableNotification" via rbus + Then the rbus response should not contain an error + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.FirmwareDownloadStartedNotification + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.FirmwareDownloadStartedNotification" to "started" as string via rbus + Then the rbus response should not contain an error + + Scenario: GET Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.FirmwareDownloadStartedNotification + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.FirmwareDownloadStartedNotification" via rbus + Then the rbus response should not contain an error + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.FirmwareDownloadCompletedNotification + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.FirmwareDownloadCompletedNotification" to "false" as boolean via rbus + Then the rbus response should not contain an error + + Scenario: GET Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.FirmwareDownloadCompletedNotification + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.FirmwareDownloadCompletedNotification" via rbus + Then the rbus response should not contain an error + And the rbus response should contain "false" + + Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.RebootPendingNotification + When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.RebootPendingNotification" to "0" as uint32 via rbus + Then the rbus response should not contain an error + + Scenario: GET Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.RebootPendingNotification + When I GET "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.RebootPendingNotification" via rbus + Then the rbus response should not contain an error + And the rbus response should contain "0" diff --git a/test/functional-tests/features/tr69hostif_processor_processstatus.feature b/test/functional-tests/features/tr69hostif_processor_processstatus.feature index 43c3cbdc1..974eb1f45 100755 --- a/test/functional-tests/features/tr69hostif_processor_processstatus.feature +++ b/test/functional-tests/features/tr69hostif_processor_processstatus.feature @@ -58,3 +58,10 @@ Feature: Processor and ProcessStatus Parameter GET via rbus Scenario: GET Device.DeviceInfo.ProcessStatus.ProcessNumberOfEntries When I GET "Device.DeviceInfo.ProcessStatus.ProcessNumberOfEntries" via rbus Then the rbus response should not contain an error + + Scenario: GET Device.DeviceInfo.ProcessStatus.CPUUsage + # TR-181: System CPU usage as a percentage (0-100%) + When I GET "Device.DeviceInfo.ProcessStatus.CPUUsage" via rbus + Then the rbus response should not contain an error + And the rbus response should contain a numeric value + And the CPU usage value should be between 0 and 100 diff --git a/test/functional-tests/features/tr69hostif_storageservice.feature b/test/functional-tests/features/tr69hostif_storageservice.feature new file mode 100755 index 000000000..4bd943fca --- /dev/null +++ b/test/functional-tests/features/tr69hostif_storageservice.feature @@ -0,0 +1,86 @@ +#################################################################################### +# If not stated otherwise in this file or this component's Licenses file the +# following copyright and licenses apply: +# +# Copyright 2026 RDK Management +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#################################################################################### + +# Source: src/hostif/profiles/StorageService/ + +Feature: Device.StorageService Parameter Handlers + + Background: + Given the tr69hostif daemon is running and initialized + And rbuscli is available on the system + + Scenario: GET StorageServiceNumberOfEntries + When I GET "Device.Services.StorageServiceNumberOfEntries" via rbus + Then the rbus response should not contain an error + + Scenario: GET PhysicalMedium.1.Alias (read-only/not implemented) + When I GET "Device.Services.StorageService.1.PhysicalMedium.1.Alias" via rbus + Then the rbus response should contain an error + + Scenario: GET PhysicalMedium.1.Name (implemented) + When I GET "Device.Services.StorageService.1.PhysicalMedium.1.Name" via rbus + Then the rbus response should not contain an error + + Scenario: GET PhysicalMedium.1.Vendor (read-only/not implemented) + When I GET "Device.Services.StorageService.1.PhysicalMedium.1.Vendor" via rbus + Then the rbus response should contain an error + + Scenario: GET PhysicalMedium.1.Model (read-only/not implemented) + When I GET "Device.Services.StorageService.1.PhysicalMedium.1.Model" via rbus + Then the rbus response should contain an error + + Scenario: GET PhysicalMedium.1.SerialNumber (read-only/not implemented) + When I GET "Device.Services.StorageService.1.PhysicalMedium.1.SerialNumber" via rbus + Then the rbus response should contain an error + + Scenario: GET PhysicalMedium.1.FirmwareVersion (read-only/not implemented) + When I GET "Device.Services.StorageService.1.PhysicalMedium.1.FirmwareVersion" via rbus + Then the rbus response should contain an error + + Scenario: GET PhysicalMedium.1.ConnectionType (read-only/not implemented) + When I GET "Device.Services.StorageService.1.PhysicalMedium.1.ConnectionType" via rbus + Then the rbus response should contain an error + + Scenario: GET PhysicalMedium.1.Removable (read-only/not implemented) + When I GET "Device.Services.StorageService.1.PhysicalMedium.1.Removable" via rbus + Then the rbus response should contain an error + + Scenario: GET PhysicalMedium.1.Status (read-only/not implemented) + When I GET "Device.Services.StorageService.1.PhysicalMedium.1.Status" via rbus + Then the rbus response should contain an error + + Scenario: GET PhysicalMedium.1.Uptime (read-only/not implemented) + When I GET "Device.Services.StorageService.1.PhysicalMedium.1.Uptime" via rbus + Then the rbus response should contain an error + + Scenario: GET PhysicalMedium.1.SmartCapable (read-only/implemented) + When I GET "Device.Services.StorageService.1.PhysicalMedium.1.SmartCapable" via rbus + Then the rbus response should not contain an error + + Scenario: GET PhysicalMedium.1.Health (read-only/implemented) + When I GET "Device.Services.StorageService.1.PhysicalMedium.1.Health" via rbus + Then the rbus response should not contain an error + + Scenario: GET PhysicalMedium.1.HotSwappable (read-only/not implemented) + When I GET "Device.Services.StorageService.1.PhysicalMedium.1.HotSwappable" via rbus + Then the rbus response should contain an error + + Scenario: GET PhysicalMediumNumberOfEntries + When I GET "Device.Services.StorageService.1.PhysicalMediumNumberOfEntries" via rbus + Then the rbus response should not contain an error diff --git a/test/functional-tests/features/tr69hostif_webpa_rdkdlmgr.feature b/test/functional-tests/features/tr69hostif_webpa_rdkdlmgr.feature index 0192f3b0f..ed4d59aab 100755 --- a/test/functional-tests/features/tr69hostif_webpa_rdkdlmgr.feature +++ b/test/functional-tests/features/tr69hostif_webpa_rdkdlmgr.feature @@ -54,3 +54,11 @@ Feature: WebPA DNSText and RDK Download Manager/Remote Debugger Parameters SET/G Scenario: SET Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.RDKRemoteDebugger.WebCfgData When I SET "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.RDKRemoteDebugger.WebCfgData" to "testcfgdata" as string via rbus Then the rbus response should indicate success + + Scenario: GET Device.X_RDK_WebPA_Server.URL + When I GET "Device.X_RDK_WebPA_Server.URL" via rbus + Then the rbus response should not contain an error + + Scenario: GET Device.X_RDK_WebPA_TokenServer.URL + When I GET "Device.X_RDK_WebPA_TokenServer.URL" via rbus + Then the rbus response should not contain an error diff --git a/test/functional-tests/tests/basic_constants.py b/test/functional-tests/tests/basic_constants.py index 4ad938cda..fa007a867 100644 --- a/test/functional-tests/tests/basic_constants.py +++ b/test/functional-tests/tests/basic_constants.py @@ -44,6 +44,9 @@ RBUS_SUCCESS_STRING = "setvalues succeeded.." RBUS_SET_EXCEPTION_STRING = "setvalues failed" +BT_ROOT = "Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth." +BT_ENABLE = BT_ROOT + "enable" + LOG_FILE = "/opt/logs/tr69hostif.log.0" PARODUS_LOG_FILE = "/opt/logs/parodus.log" diff --git a/test/functional-tests/tests/tr69hostif_bluetooth.py b/test/functional-tests/tests/tr69hostif_bluetooth.py new file mode 100755 index 000000000..6c73e5f47 --- /dev/null +++ b/test/functional-tests/tests/tr69hostif_bluetooth.py @@ -0,0 +1,279 @@ +#################################################################################### +# If not stated otherwise in this file or this component's Licenses file the +# following copyright and licenses apply: +# +# Copyright 2026 RDK Management +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#################################################################################### +# +# Source: src/hostif/profiles/DeviceInfo/XrdkBlueTooth.cpp +# Guard: USE_XRDK_BT_PROFILE (outer), BLE_TILE_PROFILE (Tile sub-section) +# Root: Device.DeviceInfo.X_RDKCENTRAL-COM_xBlueTooth.* +# +#################################################################################### + +import pytest + +from helper_functions import * + + +@pytest.mark.run(order=437) +def test_xBlueTooth_Enable_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "enable" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=438) +def test_xBlueTooth_DiscoveryEnabled_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "DiscoveryEnabled" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=439) +def test_xBlueTooth_DiscoveredDeviceCnt_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "DiscoveredDeviceCnt" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=440) +def test_xBlueTooth_PairedDeviceCnt_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "PairedDeviceCnt" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=441) +def test_xBlueTooth_ConnectedDeviceCnt_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "ConnectedDeviceCnt" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + + +@pytest.mark.run(order=442) +def test_xBlueTooth_GetDeviceInfo_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "GetDeviceInfo" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=443) +def test_xBlueTooth_DeviceInfo_DeviceID_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "DeviceInfo.DeviceID" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=444) +def test_xBlueTooth_DeviceInfo_Manufacturer_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "DeviceInfo.Manufacturer" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=445) +def test_xBlueTooth_DeviceInfo_Profile_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "DeviceInfo.Profile" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=446) +def test_xBlueTooth_DeviceInfo_MAC_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "DeviceInfo.MAC" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=447) +def test_xBlueTooth_DeviceInfo_SignalStrength_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "DeviceInfo.SignalStrength" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=448) +def test_xBlueTooth_DeviceInfo_RSSI_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "DeviceInfo.RSSI" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=449) +def test_xBlueTooth_SetDeviceInfo_Set_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "GetDeviceInfo" + VALUE = "1" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "int", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + + + +@pytest.mark.run(order=450) +def test_xBlueTooth_DiscoveredDevice_Name_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "DiscoveredDevice.1.Name" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=451) +def test_xBlueTooth_DiscoveredDevice_DeviceID_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "DiscoveredDevice.1.DeviceID" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=452) +def test_xBlueTooth_DiscoveredDevice_DeviceType_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "DiscoveredDevice.1.DeviceType" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=453) +def test_xBlueTooth_DiscoveredDevice_Paired_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "DiscoveredDevice.1.Paired" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=454) +def test_xBlueTooth_DiscoveredDevice_Connected_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "DiscoveredDevice.1.Connected" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + + +@pytest.mark.run(order=455) +def test_xBlueTooth_PairedDevice_Name_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "PairedDevice.1.Name" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=456) +def test_xBlueTooth_PairedDevice_DeviceID_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "PairedDevice.1.DeviceID" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=457) +def test_xBlueTooth_PairedDevice_Connected_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "PairedDevice.1.Connected" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=458) +def test_xBlueTooth_PairedDevice_DeviceType_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "PairedDevice.1.DeviceType" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + + +@pytest.mark.run(order=459) +def test_xBlueTooth_ConnectedDevice_Name_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "ConnectedDevice.1.Name" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=460) +def test_xBlueTooth_ConnectedDevice_DeviceID_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "ConnectedDevice.1.DeviceID" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=461) +def test_xBlueTooth_ConnectedDevice_DeviceType_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "ConnectedDevice.1.DeviceType" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=462) +def test_xBlueTooth_ConnectedDevice_Active_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "ConnectedDevice.1.Active" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=463) +def test_xBlueTooth_LimitBeaconDetection_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "LimitBeaconDetection" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=464) +def test_xBlueTooth_LimitBeaconDetection_Set_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "LimitBeaconDetection" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", "true") + assert RBUS_SET_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=465) +def test_xBlueTooth_BLE_Tile_Ring_Id_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "BLE.Tile.Ring.Id" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=466) +def test_xBlueTooth_BLE_Tile_Ring_Id_Set_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "BLE.Tile.Ring.Id" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", "TILE-TEST-001") + assert RBUS_SET_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=467) +def test_xBlueTooth_BLE_Tile_Ring_SessionId_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "BLE.Tile.Ring.SessionId" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=468) +def test_xBlueTooth_BLE_Tile_Ring_SessionId_Set_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "BLE.Tile.Ring.SessionId" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", "SESSION-TEST-001") + assert RBUS_SET_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=469) +def test_xBlueTooth_BLE_Tile_Ring_Trigger_Get_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "BLE.Tile.Ring.Trigger" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=470) +def test_xBlueTooth_BLE_Tile_Ring_Trigger_Set_Handler(): + rbus_set_data(BT_ROOT + "BLE.Tile.Ring.Id", "string", "TILE-TEST-001") + DATA_ELEMENT_NAME = BT_ROOT + "BLE.Tile.Ring.Trigger" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", "false") + assert RBUS_SET_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=471) +def test_xBlueTooth_BLE_Tile_Cmd_Request_Set_Handler(): + DATA_ELEMENT_NAME = BT_ROOT + "BLE.Tile.Cmd.Request" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", "test-cmd") + assert RBUS_SET_EXCEPTION_STRING in rstdout diff --git a/test/functional-tests/tests/tr69hostif_custom.py b/test/functional-tests/tests/tr69hostif_custom.py index 2dfa8a782..79ff86c7d 100755 --- a/test/functional-tests/tests/tr69hostif_custom.py +++ b/test/functional-tests/tests/tr69hostif_custom.py @@ -70,6 +70,14 @@ def test_DeviceInfo_FirmwareToDownload_Set_Handler(): assert RBUS_SUCCESS_STRING in rstdout +@pytest.mark.run(order=224) +def test_DeviceInfo_FirmwareDownloadStatus_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadStatus" + VALUE = "IDLE" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + + @pytest.mark.run(order=225) def test_DeviceInfo_FirmwareDownloadStatus_Get_Handler(): DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadStatus" @@ -293,3 +301,57 @@ def test_DeviceInfo_IUI_AppsVersion_Set_Handler(): VALUE = "1.0.0" rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) assert RBUS_SUCCESS_STRING in rstdout + + +@pytest.mark.run(order=431) +def test_DeviceInfo_FirmwareDownloadProtocol_Get_Handler_COMCAST_Alias(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadProtocol" + VALUE = "http" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + assert VALUE in rstdout + + +@pytest.mark.run(order=430) +def test_DeviceInfo_FirmwareDownloadProtocol_Set_Handler_COMCAST_Alias(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadProtocol" + VALUE = "http" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + + +@pytest.mark.run(order=432) +def test_DeviceInfo_FirmwareDownloadURL_Get_Handler_COMCAST_Alias(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadURL" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + + +@pytest.mark.run(order=433) +def test_DeviceInfo_FirmwareDownloadURL_Set_Handler_COMCAST_Alias(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadURL" + VALUE = "https://example.com/fw-comcast.bin" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + + +@pytest.mark.run(order=434) +def test_DeviceInfo_FirmwareDownloadPercent_Get_Handler_COMCAST_Alias(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareDownloadPercent" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=435) +def test_DeviceInfo_BootStatus_Get_Handler_Underscore_Alias(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM.BootStatus" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + + +@pytest.mark.run(order=436) +def test_DeviceInfo_CPUTemp_Get_Handler_Underscore_Alias(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM.CPUTemp" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + diff --git a/test/functional-tests/tests/tr69hostif_device_info.py b/test/functional-tests/tests/tr69hostif_device_info.py new file mode 100755 index 000000000..941348db0 --- /dev/null +++ b/test/functional-tests/tests/tr69hostif_device_info.py @@ -0,0 +1,276 @@ +#################################################################################### +# If not stated otherwise in this file or this component's Licenses file the +# following copyright and licenses apply: +# +# Copyright 2026 RDK Management +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#################################################################################### + +import pytest + +from helper_functions import * + + +@pytest.mark.run(order=360) +def test_DeviceInfo_AdditionalHardwareVersion_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.AdditionalHardwareVersion" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=361) +def test_DeviceInfo_AdditionalSoftwareVersion_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.AdditionalSoftwareVersion" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=362) +def test_DeviceInfo_FirstUseDate_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.FirstUseDate" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=363) +def test_DeviceInfo_HardwareVersion_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.HardwareVersion" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=364) +def test_DeviceInfo_Manufacturer_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.Manufacturer" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=365) +def test_DeviceInfo_ManufacturerOUI_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.ManufacturerOUI" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=366) +def test_DeviceInfo_Migration_MigrationStatus_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.Migration.MigrationStatus" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + + +@pytest.mark.run(order=367) +def test_DeviceInfo_MigrationPreparer_MigrationReady_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.MigrationPreparer.MigrationReady" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=368) +def test_DeviceInfo_SerialNumber_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.SerialNumber" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=369) +def test_DeviceInfo_SupportedDataModelNumberOfEntries_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.SupportedDataModelNumberOfEntries" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + + +@pytest.mark.run(order=370) +def test_DeviceInfo_VendorConfigFileNumberOfEntries_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.VendorConfigFileNumberOfEntries" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=371) +def test_DeviceInfo_VendorLogFileNumberOfEntries_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.VendorLogFileNumberOfEntries" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=372) +def test_DeviceInfo_COMCAST_FirmwareDownloadStatus_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_COMCAST-COM_FirmwareDownloadStatus" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + + +@pytest.mark.run(order=373) +def test_DeviceInfo_COMCAST_FirmwareToDownload_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_COMCAST-COM_FirmwareToDownload" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + + +@pytest.mark.run(order=374) +def test_DeviceInfo_COMCAST_Reset_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_COMCAST-COM_Reset" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=375) +def test_DeviceInfo_RDKVersion_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RDKVersion" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + + +@pytest.mark.run(order=376) +def test_DeviceInfo_ApparmorBlocklist_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.NonRootSupport.ApparmorBlocklist" + profile = run_shell_command("awk -F: 'NF>0{print $1; exit}' /opt/secure/Apparmor_blocklist 2>/dev/null") + if not profile: + profile = run_shell_command("ls /etc/apparmor/service_profiles/*.service.sp 2>/dev/null | head -n 1 | xargs -r basename | sed 's/\\.service\\.sp$//'") + if not profile: + pytest.skip("No valid AppArmor profile found for ApparmorBlocklist set validation") + VALUE = f"{profile}:enforce" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + + +@pytest.mark.run(order=377) +def test_DeviceInfo_ApparmorBlocklist_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.NonRootSupport.ApparmorBlocklist" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=378) +def test_DeviceInfo_Blocklist_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.NonRootSupport.Blocklist" + VALUE = "sample-block-entry" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + + +@pytest.mark.run(order=379) +def test_DeviceInfo_Blocklist_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.NonRootSupport.Blocklist" + VALUE = "sample-block-entry" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + assert VALUE in rstdout + + +@pytest.mark.run(order=380) +def test_DeviceInfo_XRPollingAction_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_XRPolling.Action" + VALUE = "XRPoll" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=381) +def test_DeviceInfo_XRPollingAction_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_XRPolling.Action" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=382) +def test_DeviceInfo_COMCAST_FirmwareDownloadStatus_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_COMCAST-COM_FirmwareDownloadStatus" + VALUE = "IDLE" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=383) +def test_DeviceInfo_FirmwareToDownload_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_FirmwareToDownload" + VALUE = "fw_image.bin" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + + +@pytest.mark.run(order=384) +def test_DeviceInfo_COMCAST_Reset_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_COMCAST-COM_Reset" + VALUE = "Factory" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + + +@pytest.mark.run(order=385) +def test_DeviceInfo_RebootStop_Detection_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.RebootStop.Detection" + VALUE = "true" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + + +@pytest.mark.run(order=386) +def test_DeviceInfo_RebootStop_Detection_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.RebootStop.Detection" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + + +@pytest.mark.run(order=387) +def test_DeviceInfo_RebootStop_Duration_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.RebootStop.Duration" + VALUE = "10" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "int", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + + +@pytest.mark.run(order=388) +def test_DeviceInfo_RebootStop_Duration_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.RebootStop.Duration" + VALUE = "10" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + assert VALUE in rstdout + + +@pytest.mark.run(order=389) +def test_DeviceInfo_MemInsight_Trigger_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.meminsight.Trigger" + VALUE = "start" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + + +@pytest.mark.run(order=390) +def test_DeviceInfo_MemInsight_Trigger_Stop_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.meminsight.Trigger" + VALUE = "stop" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + + +@pytest.mark.run(order=391) +def test_DeviceInfo_MemInsight_Enable_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.meminsight.Enable" + VALUE = "true" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + + +@pytest.mark.run(order=392) +def test_DeviceInfo_MemInsight_Enable_False_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.meminsight.Enable" + VALUE = "false" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + + diff --git a/test/functional-tests/tests/tr69hostif_devicetime.py b/test/functional-tests/tests/tr69hostif_devicetime.py index 466b3139e..9de3dacab 100644 --- a/test/functional-tests/tests/tr69hostif_devicetime.py +++ b/test/functional-tests/tests/tr69hostif_devicetime.py @@ -160,6 +160,14 @@ def test_DeviceTime_TimeZone_Get_Handler(): assert TIMEZONE in rstdout @pytest.mark.run(order=141) +def test_DeviceTime_TimeZone_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.Time.LocalTimeZone" + VALUE = "UTC" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=142) def test_DeviceTime_UTCTIME_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.Time.X_RDK_CurrentUTCTime" @@ -167,3 +175,25 @@ def test_DeviceTime_UTCTIME_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout +@pytest.mark.run(order=143) +def test_DeviceTime_Enable_SetTrue_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.Time.Enable" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", "true") + assert RBUS_SET_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=144) +def test_DeviceTime_Enable_GetFalse_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.Time.Enable" + STATUS_MSG = "false" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + assert STATUS_MSG in rstdout + +@pytest.mark.run(order=145) +def test_DeviceTime_Enable_SetFalse_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.Time.Enable" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", "false") + assert RBUS_SET_EXCEPTION_STRING in rstdout diff --git a/test/functional-tests/tests/tr69hostif_ethernet_handlers.py b/test/functional-tests/tests/tr69hostif_ethernet_handlers.py old mode 100644 new mode 100755 index 5a04668f2..bbbc05af1 --- a/test/functional-tests/tests/tr69hostif_ethernet_handlers.py +++ b/test/functional-tests/tests/tr69hostif_ethernet_handlers.py @@ -46,6 +46,14 @@ def test_Ethernet_InterfaceName_Get_Handler(): assert IF_NAME in rstdout @pytest.mark.run(order=105) +def test_Ethernet_Enable_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.Enable" + VALUE = "true" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + +@pytest.mark.run(order=106) def test_Ethernet_Enable_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.Enable" @@ -55,7 +63,23 @@ def test_Ethernet_Enable_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert ENABLE_MSG in rstdout -@pytest.mark.run(order=106) +@pytest.mark.run(order=107) +def test_Ethernet_Alias_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.Alias" + VALUE = "eth0_alias" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=108) +def test_Ethernet_Alias_Get_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.Alias" + # Force reload config fetch from xconf + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=109) def test_Ethernet_Status_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.Status" @@ -65,14 +89,22 @@ def test_Ethernet_Status_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert STATUS_MSG in rstdout -@pytest.mark.run(order=107) +@pytest.mark.run(order=110) def test_Ethernet_LastChange_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.LastChange" rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING in rstdout -@pytest.mark.run(order=108) +@pytest.mark.run(order=111) +def test_Ethernet_LowerLayers_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.LowerLayers" + VALUE = "eth0" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=112) def test_Ethernet_LowerLayers_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.LowerLayers" @@ -80,7 +112,7 @@ def test_Ethernet_LowerLayers_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING in rstdout -@pytest.mark.run(order=109) +@pytest.mark.run(order=113) def test_Ethernet_Upstream_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.Upstream" @@ -90,7 +122,7 @@ def test_Ethernet_Upstream_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert STATE_MSG in rstdout -@pytest.mark.run(order=110) +@pytest.mark.run(order=114) def test_Ethernet_MACAddr_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME ="Device.Ethernet.Interface.1.MACAddress" @@ -98,7 +130,15 @@ def test_Ethernet_MACAddr_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=111) +@pytest.mark.run(order=115) +def test_Ethernet_MAXBitRate_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.MaxBitRate" + VALUE = "1000" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "int", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + +@pytest.mark.run(order=116) def test_Ethernet_MAXBitRate_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME ="Device.Ethernet.Interface.1.MaxBitRate" @@ -106,7 +146,15 @@ def test_Ethernet_MAXBitRate_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=112) +@pytest.mark.run(order=117) +def test_Ethernet_DuplexMode_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.DuplexMode" + VALUE = "full" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=118) def test_Ethernet_DuplexMode_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME ="Device.Ethernet.Interface.1.DuplexMode" @@ -116,7 +164,7 @@ def test_Ethernet_DuplexMode_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert DUPLEX_MODE_MSG in rstdout -@pytest.mark.run(order=113) +@pytest.mark.run(order=119) def test_Ethernet_BytesSent_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME ="Device.Ethernet.Interface.1.Stats.BytesSent" @@ -124,7 +172,7 @@ def test_Ethernet_BytesSent_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=114) +@pytest.mark.run(order=120) def test_Ethernet_BytesReceived_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME ="Device.Ethernet.Interface.1.Stats.BytesReceived" @@ -132,7 +180,7 @@ def test_Ethernet_BytesReceived_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=115) +@pytest.mark.run(order=121) def test_Ethernet_PacketsSent_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME ="Device.Ethernet.Interface.1.Stats.PacketsSent" @@ -140,7 +188,7 @@ def test_Ethernet_PacketsSent_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=116) +@pytest.mark.run(order=122) def test_Ethernet_PacketsReceived_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.Stats.PacketsReceived" @@ -148,7 +196,7 @@ def test_Ethernet_PacketsReceived_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=117) +@pytest.mark.run(order=123) def test_Ethernet_ErrorsSent_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.Stats.ErrorsSent" @@ -156,7 +204,7 @@ def test_Ethernet_ErrorsSent_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=118) +@pytest.mark.run(order=124) def test_Ethernet_ErrorsReceived_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.Stats.ErrorsReceived" @@ -164,7 +212,7 @@ def test_Ethernet_ErrorsReceived_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=119) +@pytest.mark.run(order=125) def test_Ethernet_UnicastPacketsSent_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.Stats.UnicastPacketsSent" @@ -172,7 +220,7 @@ def test_Ethernet_UnicastPacketsSent_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=120) +@pytest.mark.run(order=126) def test_Ethernet_UnicastPacketsReceived_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.Stats.UnicastPacketsReceived" @@ -180,7 +228,7 @@ def test_Ethernet_UnicastPacketsReceived_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=121) +@pytest.mark.run(order=481) def test_Ethernet_DiscardPacketsSent_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.Stats.DiscardPacketsSent" @@ -188,7 +236,7 @@ def test_Ethernet_DiscardPacketsSent_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=122) +@pytest.mark.run(order=482) def test_Ethernet_DiscardPacketsReceived_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.Stats.DiscardPacketsReceived" @@ -196,15 +244,15 @@ def test_Ethernet_DiscardPacketsReceived_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=123) -def test_Etherne_MulticastPacketsSent_Get_Handler(): +@pytest.mark.run(order=483) +def test_Ethernet_MulticastPacketsSent_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.Stats.MulticastPacketsSent" # Force reload config fetch from xconf rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=124) +@pytest.mark.run(order=484) def test_Ethernet_MulticastPacketsReceived_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.Stats.MulticastPacketsReceived" @@ -212,7 +260,7 @@ def test_Ethernet_MulticastPacketsReceived_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=125) +@pytest.mark.run(order=485) def test_Ethernet_BroadcastPacketsSent_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.Stats.BroadcastPacketsSent" @@ -220,7 +268,7 @@ def test_Ethernet_BroadcastPacketsSent_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=126) +@pytest.mark.run(order=486) def test_Ethernet_BroadcastPacketsReceived_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.Ethernet.Interface.1.Stats.BroadcastPacketsReceived" diff --git a/test/functional-tests/tests/tr69hostif_interfacestack.py b/test/functional-tests/tests/tr69hostif_interfacestack.py new file mode 100755 index 000000000..decee370b --- /dev/null +++ b/test/functional-tests/tests/tr69hostif_interfacestack.py @@ -0,0 +1,47 @@ +#################################################################################### +# If not stated otherwise in this file or this component's Licenses file the +# following copyright and licenses apply: +# +# Copyright 2026 RDK Management +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#################################################################################### + + +import pytest + +from helper_functions import * + + +@pytest.mark.run(order=523) +def test_InterfaceStack_NumberOfEntries_Get_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.InterfaceStackNumberOfEntries" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + + +@pytest.mark.run(order=524) +def test_InterfaceStack_HigherLayer_Get_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.InterfaceStack.1.HigherLayer" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=525) +def test_InterfaceStack_LowerLayer_Get_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.InterfaceStack.1.LowerLayer" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout diff --git a/test/functional-tests/tests/tr69hostif_ip.py b/test/functional-tests/tests/tr69hostif_ip.py old mode 100644 new mode 100755 index 01b534b04..6ed0b8c1f --- a/test/functional-tests/tests/tr69hostif_ip.py +++ b/test/functional-tests/tests/tr69hostif_ip.py @@ -25,7 +25,7 @@ from helper_functions import * -@pytest.mark.run(order=142) +@pytest.mark.run(order=487) def test_IP_InterfaceNumberOfEntries_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.InterfaceNumberOfEntries" @@ -33,7 +33,7 @@ def test_IP_InterfaceNumberOfEntries_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=143) +@pytest.mark.run(order=488) def test_IP_ActivePortNumberOfEntries_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.ActivePortNumberOfEntries" @@ -41,7 +41,15 @@ def test_IP_ActivePortNumberOfEntries_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=144) +@pytest.mark.run(order=489) +def test_IP_Enable_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.Enable" + VALUE = "true" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + +@pytest.mark.run(order=490) def test_IP_Enable_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Enable" @@ -51,7 +59,15 @@ def test_IP_Enable_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=145) +@pytest.mark.run(order=146) +def test_IP_IPv4Enable_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv4Enable" + VALUE = "true" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + +@pytest.mark.run(order=147) def test_IP_IPv4Enable_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv4Enable" @@ -62,7 +78,15 @@ def test_IP_IPv4Enable_Get_Handler(): assert VALUE in rstdout -@pytest.mark.run(order=146) +@pytest.mark.run(order=148) +def test_IP_IPv6Enable_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv6Enable" + VALUE = "true" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=149) def test_IP_IPv6Enable_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv6Enable" @@ -72,16 +96,40 @@ def test_IP_IPv6Enable_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=147) +@pytest.mark.run(order=150) +def test_IP_ULAEnable_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.ULAEnable" + VALUE = "true" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=151) def test_IP_ULAEnable_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.ULAEnable" VALUE = "true" # Force reload config fetch from xconf rstdout = rbus_get_data(DATA_ELEMENT_NAME) - assert RBUS_EXCEPTION_STRING in rstdout + assert RBUS_EXCEPTION_STRING in rstdout -@pytest.mark.run(order=148) +@pytest.mark.run(order=152) +def test_IP_Alias_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.Alias" + VALUE = "ip_interface_alias" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=153) +def test_IP_Alias_Get_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.Alias" + # Force reload config fetch from xconf + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=154) def test_IP_Status_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Status" @@ -91,7 +139,7 @@ def test_IP_Status_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=149) +@pytest.mark.run(order=155) def test_IP_Name_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Name" @@ -101,7 +149,23 @@ def test_IP_Name_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=150) +@pytest.mark.run(order=156) +def test_IP_LastChange_Get_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.LastChange" + # Force reload config fetch from xconf + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=157) +def test_IP_LowerLayers_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.LowerLayers" + VALUE = "eth0" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=158) def test_IP_LowerLayers_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.LowerLayers" @@ -109,7 +173,7 @@ def test_IP_LowerLayers_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=151) +@pytest.mark.run(order=159) def test_IP_Type_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Type" @@ -120,7 +184,33 @@ def test_IP_Type_Get_Handler(): assert VALUE in rstdout -@pytest.mark.run(order=152) +@pytest.mark.run(order=160) +def test_IP_Router_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.Router" + VALUE = "true" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=161) +def test_IP_Router_Get_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.Router" + VALUE = "true" + # Force reload config fetch from xconf + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=162) +def test_IP_Loopback_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.Loopback" + VALUE = "true" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=163) def test_IP_Loopback_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Loopback" @@ -130,7 +220,7 @@ def test_IP_Loopback_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=153) +@pytest.mark.run(order=164) def test_IP_IPv4AddressNumberOfEntries_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv4AddressNumberOfEntries" @@ -138,7 +228,23 @@ def test_IP_IPv4AddressNumberOfEntries_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=154) +@pytest.mark.run(order=165) +def test_IP_IPv6AddressNumberOfEntries_Get_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv6AddressNumberOfEntries" + # Force reload config fetch from xconf + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + +@pytest.mark.run(order=166) +def test_IP_IPv4Address_Enable_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv4Address.1.Enable" + VALUE = "true" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + +@pytest.mark.run(order=167) def test_IP_IPv4Address_Enable_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv4Address.1.Enable" @@ -148,7 +254,7 @@ def test_IP_IPv4Address_Enable_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=155) +@pytest.mark.run(order=168) def test_IP_IPv4Address_Status_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv4Address.1.Status" @@ -158,7 +264,31 @@ def test_IP_IPv4Address_Status_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=156) +@pytest.mark.run(order=169) +def test_IP_IPv4Address_Alias_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv4Address.1.Alias" + VALUE = "ipv4_alias" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=170) +def test_IP_IPv4Address_Alias_Get_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv4Address.1.Alias" + # Force reload config fetch from xconf + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=171) +def test_IP_IPv4Address_IPAddress_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv4Address.1.IPAddress" + VALUE = "127.0.0.1" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + +@pytest.mark.run(order=172) def test_IP_IPv4Address_IPAddress_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv4Address.1.IPAddress" @@ -169,7 +299,15 @@ def test_IP_IPv4Address_IPAddress_Get_Handler(): assert VALUE in rstdout -@pytest.mark.run(order=157) +@pytest.mark.run(order=173) +def test_IP_IPv4Address_SubnetMask_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv4Address.1.SubnetMask" + VALUE = "255.0.0.0" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + +@pytest.mark.run(order=174) def test_IP_IPAddress_SubnetMask_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv4Address.1.SubnetMask" @@ -180,7 +318,7 @@ def test_IP_IPAddress_SubnetMask_Get_Handler(): assert VALUE in rstdout -@pytest.mark.run(order=158) +@pytest.mark.run(order=175) def test_IP_IPAddress_AddressingType_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv4Address.1.AddressingType" @@ -190,7 +328,15 @@ def test_IP_IPAddress_AddressingType_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=159) +@pytest.mark.run(order=176) +def test_IP_IPv6Address_Enable_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv6Address.1.Enable" + VALUE = "true" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=177) def test_IP_IPv6Address_Enable_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv6Address.1.Enable" @@ -200,7 +346,7 @@ def test_IP_IPv6Address_Enable_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=160) +@pytest.mark.run(order=178) def test_IP_IPv6Address_Status_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv6Address.1.Status" @@ -210,7 +356,15 @@ def test_IP_IPv6Address_Status_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=161) +@pytest.mark.run(order=179) +def test_IP_IPv6Address_IPv6Address_Set_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv6Address.1.IPAddress" + VALUE = "::1" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=180) def test_IP_IPv6Address_IPv6Address_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv6Address.1.IPAddress" @@ -220,7 +374,7 @@ def test_IP_IPv6Address_IPv6Address_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=162) +@pytest.mark.run(order=181) def test_IP_IPv6Address_Prefix_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv6Address.1.Prefix" @@ -228,7 +382,7 @@ def test_IP_IPv6Address_Prefix_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=163) +@pytest.mark.run(order=182) def test_IP_IPv6Address_Origin_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv6Address.1.Origin" @@ -238,7 +392,7 @@ def test_IP_IPv6Address_Origin_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=164) +@pytest.mark.run(order=183) def test_IP_IPv6Address_Anycast_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv6Address.1.Anycast" @@ -249,7 +403,7 @@ def test_IP_IPv6Address_Anycast_Get_Handler(): assert VALUE in rstdout -@pytest.mark.run(order=165) +@pytest.mark.run(order=184) def test_IP_IPv6Address_PreferredLifetime_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv6Address.1.PreferredLifetime" @@ -257,7 +411,7 @@ def test_IP_IPv6Address_PreferredLifetime_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=166) +@pytest.mark.run(order=185) def test_IP_IPv6Address_ValidLifetime_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv6Address.1.ValidLifetime" @@ -266,7 +420,7 @@ def test_IP_IPv6Address_ValidLifetime_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=167) +@pytest.mark.run(order=186) def test_IP_IPv6Prefix_Autonomous_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv6Prefix.1.Autonomous" @@ -276,7 +430,7 @@ def test_IP_IPv6Prefix_Autonomous_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=168) +@pytest.mark.run(order=187) def test_IP_IPv6Prefix_StaticType_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv6Prefix.1.StaticType" @@ -286,7 +440,7 @@ def test_IP_IPv6Prefix_StaticType_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=169) +@pytest.mark.run(order=188) def test_IP_IPv6Prefix_PrefixStatus_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv6Prefix.1.PrefixStatus" @@ -296,7 +450,7 @@ def test_IP_IPv6Prefix_PrefixStatus_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=170) +@pytest.mark.run(order=189) def test_IP_IPv6Prefix_ValidLifetime_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.IPv6Prefix.1.ValidLifetime" @@ -304,7 +458,7 @@ def test_IP_IPv6Prefix_ValidLifetime_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=171) +@pytest.mark.run(order=190) def test_IP_Stats_BytesSent_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Stats.BytesSent" @@ -313,7 +467,7 @@ def test_IP_Stats_BytesSent_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=172) +@pytest.mark.run(order=191) def test_IP_Stats_BytesReceived_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Stats.BytesReceived" @@ -321,7 +475,7 @@ def test_IP_Stats_BytesReceived_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=173) +@pytest.mark.run(order=192) def test_IP_Stats_PacketsSent_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Stats.PacketsSent" @@ -329,7 +483,15 @@ def test_IP_Stats_PacketsSent_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=174) +@pytest.mark.run(order=193) +def test_IP_Stats_PacketsReceived_Get_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.Interface.1.Stats.PacketsReceived" + # Force reload config fetch from xconf + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + +@pytest.mark.run(order=194) def test_IP_Stats_ErrorsSent_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Stats.ErrorsSent" @@ -337,7 +499,7 @@ def test_IP_Stats_ErrorsSent_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=175) +@pytest.mark.run(order=195) def test_IP_Stats_ErrorsReceived_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Stats.ErrorsReceived" @@ -345,7 +507,7 @@ def test_IP_Stats_ErrorsReceived_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=176) +@pytest.mark.run(order=196) def test_IP_Stats_UnicastPacketsSent_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Stats.UnicastPacketsSent" @@ -353,7 +515,7 @@ def test_IP_Stats_UnicastPacketsSent_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=177) +@pytest.mark.run(order=197) def test_IP_Stats_UnicastPacketsReceived_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Stats.UnicastPacketsReceived" @@ -361,7 +523,7 @@ def test_IP_Stats_UnicastPacketsReceived_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=178) +@pytest.mark.run(order=198) def test_IP_Stats_DiscardPacketsSent_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Stats.DiscardPacketsSent" @@ -370,7 +532,7 @@ def test_IP_Stats_DiscardPacketsSent_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=179) +@pytest.mark.run(order=199) def test_IP_Stats_DiscardPacketsReceived_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Stats.DiscardPacketsReceived" @@ -378,7 +540,7 @@ def test_IP_Stats_DiscardPacketsReceived_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=180) +@pytest.mark.run(order=200) def test_IP_Stats_MulticastPacketsSent_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Stats.MulticastPacketsSent" @@ -386,7 +548,7 @@ def test_IP_Stats_MulticastPacketsSent_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=181) +@pytest.mark.run(order=201) def test_IP_Stats_MulticastPacketsReceived_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Stats.MulticastPacketsReceived" @@ -394,7 +556,7 @@ def test_IP_Stats_MulticastPacketsReceived_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=182) +@pytest.mark.run(order=202) def test_IP_Stats_BroadcastPacketsSent_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Stats.BroadcastPacketsSent" @@ -402,7 +564,7 @@ def test_IP_Stats_BroadcastPacketsSent_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=183) +@pytest.mark.run(order=203) def test_IP_Stats_BroadcastPacketsReceived_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Stats.BroadcastPacketsReceived" @@ -410,7 +572,7 @@ def test_IP_Stats_BroadcastPacketsReceived_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=184) +@pytest.mark.run(order=204) def test_IP_Stats_UnknownProtoPacketsReceived_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.Interface.1.Stats.UnknownProtoPacketsReceived" @@ -418,7 +580,7 @@ def test_IP_Stats_UnknownProtoPacketsReceived_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=185) +@pytest.mark.run(order=205) def test_IP_ActivePort_LocalIPAddress_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.ActivePort.1.LocalIPAddress" @@ -428,7 +590,7 @@ def test_IP_ActivePort_LocalIPAddress_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=186) +@pytest.mark.run(order=206) def test_IP_ActivePort_LocalPort_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.ActivePort.1.LocalPort" @@ -437,7 +599,7 @@ def test_IP_ActivePort_LocalPort_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=187) +@pytest.mark.run(order=207) def test_IP_ActivePort_RemoteIPAddress_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.ActivePort.1.RemoteIPAddress" @@ -447,7 +609,7 @@ def test_IP_ActivePort_RemoteIPAddress_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=188) +@pytest.mark.run(order=208) def test_IP_ActivePort_RemotePort_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.IP.ActivePort.1.RemotePort" @@ -456,6 +618,14 @@ def test_IP_ActivePort_RemotePort_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout + +@pytest.mark.run(order=209) +def test_IP_ActivePort_Status_Get_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.IP.ActivePort.1.Status" + # Force reload config fetch from xconf + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout diff --git a/test/functional-tests/tests/tr69hostif_ipremotesupport.py b/test/functional-tests/tests/tr69hostif_ipremotesupport.py old mode 100644 new mode 100755 index dab783d2f..2e905807b --- a/test/functional-tests/tests/tr69hostif_ipremotesupport.py +++ b/test/functional-tests/tests/tr69hostif_ipremotesupport.py @@ -25,7 +25,7 @@ from helper_functions import * -@pytest.mark.run(order=189) +@pytest.mark.run(order=491) def test_IPRemoteSupport_Set_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_IPRemoteSupport.Enable" @@ -34,7 +34,7 @@ def test_IPRemoteSupport_Set_Handler(): rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) assert RBUS_SUCCESS_STRING in rstdout -@pytest.mark.run(order=190) +@pytest.mark.run(order=492) def test_IPRemoteSupport_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_IPRemoteSupport.Enable" @@ -44,7 +44,7 @@ def test_IPRemoteSupport_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=191) +@pytest.mark.run(order=493) def test_IPRemoteSupport_IPAddr_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_IPRemoteSupport.IPAddr" @@ -54,7 +54,7 @@ def test_IPRemoteSupport_IPAddr_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=192) +@pytest.mark.run(order=494) def test_IPRemoteSupport_MACAddr_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_IPRemoteSupport.MACAddr" @@ -64,7 +64,7 @@ def test_IPRemoteSupport_MACAddr_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=193) +@pytest.mark.run(order=495) def test_PartnerId_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_Syndication.PartnerId" diff --git a/test/functional-tests/tests/tr69hostif_moca.py b/test/functional-tests/tests/tr69hostif_moca.py old mode 100644 new mode 100755 index 77b55e0af..4487e9350 --- a/test/functional-tests/tests/tr69hostif_moca.py +++ b/test/functional-tests/tests/tr69hostif_moca.py @@ -396,3 +396,73 @@ def test_MoCA_Interface_LowerLayers_Set_Handler(): rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", "lower") assert RBUS_SET_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=513) +def test_MoCA_Interface_PreferredNC_Set_Handler(): + DATA_ELEMENT_NAME = "Device.MoCA.Interface.1.PreferredNC" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", "true") + assert RBUS_SET_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=514) +def test_MoCA_Interface_PrivacyEnabledSetting_Set_Handler(): + DATA_ELEMENT_NAME = "Device.MoCA.Interface.1.PrivacyEnabledSetting" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", "true") + assert RBUS_SET_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=515) +def test_MoCA_Interface_FreqCurrentMaskSetting_Set_Handler(): + DATA_ELEMENT_NAME = "Device.MoCA.Interface.1.FreqCurrentMaskSetting" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", "0") + assert RBUS_SET_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=516) +def test_MoCA_Interface_PowerCntlPhyTarget_Set_Handler(): + DATA_ELEMENT_NAME = "Device.MoCA.Interface.1.PowerCntlPhyTarget" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "int32", "0") + assert RBUS_SET_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=517) +def test_MoCA_Interface_KeyPassphrase_Get_Handler(): + DATA_ELEMENT_NAME = "Device.MoCA.Interface.1.KeyPassphrase" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=518) +def test_MoCA_Interface_TxPowerLimit_Get_Handler(): + DATA_ELEMENT_NAME = "Device.MoCA.Interface.1.TxPowerLimit" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=519) +def test_MoCA_Interface_BeaconPowerLimit_Get_Handler(): + DATA_ELEMENT_NAME = "Device.MoCA.Interface.1.BeaconPowerLimit" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=520) +def test_MoCA_Interface_KeyPassphrase_Set_Handler(): + DATA_ELEMENT_NAME = "Device.MoCA.Interface.1.KeyPassphrase" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", "123456") + assert RBUS_SET_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=521) +def test_MoCA_Interface_TxPowerLimit_Set_Handler(): + DATA_ELEMENT_NAME = "Device.MoCA.Interface.1.TxPowerLimit" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "int32", "0") + assert RBUS_SET_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=522) +def test_MoCA_Interface_BeaconPowerLimit_Set_Handler(): + DATA_ELEMENT_NAME = "Device.MoCA.Interface.1.BeaconPowerLimit" + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "int32", "0") + assert RBUS_SET_EXCEPTION_STRING in rstdout + diff --git a/test/functional-tests/tests/tr69hostif_opsdevicemgmt_logging.py b/test/functional-tests/tests/tr69hostif_opsdevicemgmt_logging.py new file mode 100755 index 000000000..75e8de88e --- /dev/null +++ b/test/functional-tests/tests/tr69hostif_opsdevicemgmt_logging.py @@ -0,0 +1,90 @@ +#################################################################################### +# If not stated otherwise in this file or this component's Licenses file the +# following copyright and licenses apply: +# +# Copyright 2024 RDK Management +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#################################################################################### + + +import pytest + +from helper_functions import * + + +@pytest.mark.run(order=327) +def test_xOpsDeviceMgmt_Logging_xOpsDMUploadLogsNow_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMUploadLogsNow" + VALUE = "true" + UPLOAD_MSG = "Start executing script to upload logs... " + + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + assert UPLOAD_MSG in grep_tr69hostiflogs(UPLOAD_MSG) + + +@pytest.mark.run(order=328) +def test_xOpsDeviceMgmt_Logging_xOpsDMUploadLogsNow_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMUploadLogsNow" + VALUE = "false" + + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + assert VALUE in rstdout + + +@pytest.mark.run(order=329) +def test_xOpsDeviceMgmt_Logging_xOpsDMLogsUploadStatus_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMLogsUploadStatus" + UPLOAD_STATUS_MSG = "uploaded" + STATUS_MSG = "Successfully read from /opt/loguploadstatus.txt." + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + assert UPLOAD_STATUS_MSG in rstdout + assert STATUS_MSG in grep_tr69hostiflogs(STATUS_MSG) + + +@pytest.mark.run(order=330) +def test_xOpsDeviceMgmt_Logging_xOpsDMMoCALogEnabled_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMMoCALogEnabled" + VALUE = "true" + + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + +@pytest.mark.run(order=331) +def test_xOpsDeviceMgmt_Logging_xOpsDMMoCALogEnabled_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMMoCALogEnabled" + VALUE = "true" + + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=332) +def test_xOpsDeviceMgmt_Logging_xOpsDMMoCALogPeriod_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMMoCALogPeriod" + VALUE = "300" + + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "int", VALUE) + assert RBUS_SET_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=333) +def test_xOpsDeviceMgmt_Logging_xOpsDMMoCALogPeriod_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMMoCALogPeriod" + VALUE = "300" + + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout diff --git a/test/functional-tests/tests/tr69hostif_opsdevicemgmt_rpc.py b/test/functional-tests/tests/tr69hostif_opsdevicemgmt_rpc.py new file mode 100755 index 000000000..02f742e4d --- /dev/null +++ b/test/functional-tests/tests/tr69hostif_opsdevicemgmt_rpc.py @@ -0,0 +1,118 @@ +#################################################################################### +# If not stated otherwise in this file or this component's Licenses file the +# following copyright and licenses apply: +# +# Copyright 2024 RDK Management +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#################################################################################### + + +import pytest + +from helper_functions import * + + +@pytest.mark.run(order=334) +def test_xOpsDeviceMgmt_RPC_RebootNow_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.RebootNow" + VALUE = "true" + SUCCESS_MSG = "Successfully executed reboot script" + + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + assert SUCCESS_MSG in grep_tr69hostiflogs(SUCCESS_MSG) + +@pytest.mark.run(order=335) +def test_xOpsDeviceMgmt_RPC_RebootNow_Set_False_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.RebootNow" + VALUE = "false" + SUCCESS_MSG = "Not rebooting. Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.RebootNow = false" + + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + assert SUCCESS_MSG in grep_tr69hostiflogs(SUCCESS_MSG) + + +@pytest.mark.run(order=336) +def test_xOpsDeviceMgmt_RPC_DeviceManageableNotification_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.DeviceManageableNotification" + VALUE = "manageable" + + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + + +@pytest.mark.run(order=337) +def test_xOpsDeviceMgmt_RPC_DeviceManageableNotification_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.DeviceManageableNotification" + VALUE = "manageable" + + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + + +@pytest.mark.run(order=338) +def test_xOpsDeviceMgmt_RPC_FirmwareDownloadStartedNotification_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.FirmwareDownloadStartedNotification" + VALUE = "started" + + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + + +@pytest.mark.run(order=339) +def test_xOpsDeviceMgmt_RPC_FirmwareDownloadStartedNotification_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.FirmwareDownloadStartedNotification" + VALUE = "started" + + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + + +@pytest.mark.run(order=340) +def test_xOpsDeviceMgmt_RPC_FirmwareDownloadCompletedNotification_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.FirmwareDownloadCompletedNotification" + VALUE = "false" + + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "boolean", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + + +@pytest.mark.run(order=341) +def test_xOpsDeviceMgmt_RPC_FirmwareDownloadCompletedNotification_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.FirmwareDownloadCompletedNotification" + VALUE = "false" + + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + assert VALUE in rstdout + + +@pytest.mark.run(order=342) +def test_xOpsDeviceMgmt_RPC_RebootPendingNotification_Set_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.RebootPendingNotification" + VALUE = "0" + + rstdout = rbus_set_data(DATA_ELEMENT_NAME, "uint32", VALUE) + assert RBUS_SUCCESS_STRING in rstdout + + +@pytest.mark.run(order=343) +def test_xOpsDeviceMgmt_RPC_RebootPendingNotification_Get_Handler(): + DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.RPC.RebootPendingNotification" + VALUE = "0" + + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + assert VALUE in rstdout diff --git a/test/functional-tests/tests/tr69hostif_processor_processstatus.py b/test/functional-tests/tests/tr69hostif_processor_processstatus.py index cc23b90c0..3ff0d0c52 100644 --- a/test/functional-tests/tests/tr69hostif_processor_processstatus.py +++ b/test/functional-tests/tests/tr69hostif_processor_processstatus.py @@ -25,7 +25,7 @@ from helper_functions import * -@pytest.mark.run(order=194) +@pytest.mark.run(order=526) def test_Processor_Architecture_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.Processor.1.Architecture" @@ -35,7 +35,7 @@ def test_Processor_Architecture_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout assert VALUE in rstdout -@pytest.mark.run(order=195) +@pytest.mark.run(order=527) def test_ProcessStatus_PID_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.ProcessStatus.Process.1.PID" @@ -43,7 +43,7 @@ def test_ProcessStatus_PID_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=196) +@pytest.mark.run(order=528) def test_ProcessStatus_Command_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.ProcessStatus.Process.1.Command" @@ -51,7 +51,7 @@ def test_ProcessStatus_Command_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=197) +@pytest.mark.run(order=529) def test_ProcessStatus_Size_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.ProcessStatus.Process.1.Size" @@ -59,7 +59,7 @@ def test_ProcessStatus_Size_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=198) +@pytest.mark.run(order=530) def test_ProcessStatus_Priority_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.ProcessStatus.Process.1.Priority" @@ -67,7 +67,7 @@ def test_ProcessStatus_Priority_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=199) +@pytest.mark.run(order=531) def test_ProcessStatus_CPUTime_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.ProcessStatus.Process.1.CPUTime" @@ -76,7 +76,7 @@ def test_ProcessStatus_CPUTime_Get_Handler(): assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=200) +@pytest.mark.run(order=532) def test_ProcessStatus_State_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.ProcessStatus.Process.1.State" @@ -84,7 +84,7 @@ def test_ProcessStatus_State_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout -@pytest.mark.run(order=201) +@pytest.mark.run(order=533) def test_ProcessStatus_NumberOfEntries_Get_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.ProcessStatus.ProcessNumberOfEntries" @@ -92,3 +92,11 @@ def test_ProcessStatus_NumberOfEntries_Get_Handler(): rstdout = rbus_get_data(DATA_ELEMENT_NAME) assert RBUS_EXCEPTION_STRING not in rstdout +@pytest.mark.run(order=534) +def test_ProcessStatus_CPUUsage_Get_Handler(): + #clear_tr69hostiflogs() + DATA_ELEMENT_NAME = "Device.DeviceInfo.ProcessStatus.CPUUsage" + # Force reload config fetch from xconf + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING not in rstdout + diff --git a/test/functional-tests/tests/tr69hostif_rfc_store_params.py b/test/functional-tests/tests/tr69hostif_rfc_store_params.py index 29227893c..6d2e65775 100644 --- a/test/functional-tests/tests/tr69hostif_rfc_store_params.py +++ b/test/functional-tests/tests/tr69hostif_rfc_store_params.py @@ -26,7 +26,7 @@ from helper_functions import * @pytest.mark.run(order=81) -def test_RFC_ClearDB_Get_Handler(): +def test_RFC_ClearDB_Set_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Control.ClearDB" VALUE = "true" @@ -35,7 +35,7 @@ def test_RFC_ClearDB_Get_Handler(): assert RBUS_SUCCESS_STRING in rstdout @pytest.mark.run(order=82) -def test_RFC_ClearDBEnd_Get_Handler(): +def test_RFC_ClearDBEnd_Set_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Control.ClearDBEnd" VALUE = "true" @@ -55,7 +55,7 @@ def test_RFC_RetrieveNow_Set_Handler(): @pytest.mark.run(order=84) -def test_RFC_RoamTrigger_Get_Handler(): +def test_RFC_RoamTrigger_Set_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.RoamTrigger" VALUE = "triggered" @@ -65,7 +65,7 @@ def test_RFC_RoamTrigger_Get_Handler(): @pytest.mark.run(order=85) -def test_RFC_DAPv2_Get_Handler(): +def test_RFC_DAPv2_Set_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.MS12.DAPv2_Enable" VALUE = "true" @@ -75,7 +75,7 @@ def test_RFC_DAPv2_Get_Handler(): @pytest.mark.run(order=86) -def test_RFC_MS12_DE_Get_Handler(): +def test_RFC_MS12_DE_Set_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.MS12.DE_Enable" VALUE = "true" @@ -84,7 +84,7 @@ def test_RFC_MS12_DE_Get_Handler(): assert RBUS_SUCCESS_STRING in rstdout @pytest.mark.run(order=87) -def test_RFC_LoudnessEquivalence_Get_Handler(): +def test_RFC_LoudnessEquivalence_Set_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.LoudnessEquivalence.Enable" VALUE = "true" @@ -93,7 +93,7 @@ def test_RFC_LoudnessEquivalence_Get_Handler(): assert RBUS_SUCCESS_STRING in rstdout @pytest.mark.run(order=88) -def test_RFC_DAB_Get_Handler(): +def test_RFC_DAB_Set_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.DAB.Enable" VALUE = "true" @@ -102,7 +102,7 @@ def test_RFC_DAB_Get_Handler(): assert RBUS_SUCCESS_STRING in rstdout @pytest.mark.run(order=89) -def test_RFC_AutoReboot_Get_Handler(): +def test_RFC_AutoReboot_Set_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.AutoReboot.Enable" VALUE = "true" @@ -112,7 +112,7 @@ def test_RFC_AutoReboot_Get_Handler(): @pytest.mark.run(order=90) -def test_RFC_RebootStop_Get_Handler(): +def test_RFC_RebootStop_Set_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.RebootStop.Enable" VALUE = "true" @@ -121,7 +121,7 @@ def test_RFC_RebootStop_Get_Handler(): assert RBUS_SUCCESS_STRING in rstdout @pytest.mark.run(order=91) -def test_RFC_wakeUpStart_Get_Handler(): +def test_RFC_wakeUpStart_Set_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.Canary.wakeUpStart" VALUE = "100" @@ -131,7 +131,7 @@ def test_RFC_wakeUpStart_Get_Handler(): @pytest.mark.run(order=92) -def test_RFC_wakeUpEnd_Get_Handler(): +def test_RFC_wakeUpEnd_Set_Handler(): #clear_tr69hostiflogs() DATA_ELEMENT_NAME = "Device.DeviceInfo.X_RDKCENTRAL-COM_RFC.Feature.Canary.wakeUpEnd" VALUE = "100" diff --git a/test/functional-tests/tests/tr69hostif_storageservice.py b/test/functional-tests/tests/tr69hostif_storageservice.py new file mode 100755 index 000000000..32016d637 --- /dev/null +++ b/test/functional-tests/tests/tr69hostif_storageservice.py @@ -0,0 +1,132 @@ +#################################################################################### +# If not stated otherwise in this file or this component's Licenses file the +# following copyright and licenses apply: +# +# Copyright 2026 RDK Management +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#################################################################################### + + +import subprocess +import os +import pytest +from time import sleep + +from helper_functions import * + + +@pytest.mark.run(order=344) +def test_StorageService_ClientNumberOfEntries_Get_Handler(): + DATA_ELEMENT_NAME = "Device.Services.StorageServiceNumberOfEntries" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=345) +def test_StorageService_PhysicalMedium_Alias_Get_Handler(): + DATA_ELEMENT_NAME = "Device.Services.StorageService.1.PhysicalMedium.1.Alias" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=346) +def test_StorageService_PhysicalMedium_Name_Get_Handler(): + DATA_ELEMENT_NAME = "Device.Services.StorageService.1.PhysicalMedium.1.Name" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=347) +def test_StorageService_PhysicalMedium_Vendor_Get_Handler(): + DATA_ELEMENT_NAME = "Device.Services.StorageService.1.PhysicalMedium.1.Vendor" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=348) +def test_StorageService_PhysicalMedium_Model_Get_Handler(): + DATA_ELEMENT_NAME = "Device.Services.StorageService.1.PhysicalMedium.1.Model" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=349) +def test_StorageService_PhysicalMedium_SerialNumber_Get_Handler(): + DATA_ELEMENT_NAME = "Device.Services.StorageService.1.PhysicalMedium.1.SerialNumber" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=350) +def test_StorageService_PhysicalMedium_FirmwareVersion_Get_Handler(): + DATA_ELEMENT_NAME = "Device.Services.StorageService.1.PhysicalMedium.1.FirmwareVersion" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=351) +def test_StorageService_PhysicalMedium_ConnectionType_Get_Handler(): + DATA_ELEMENT_NAME = "Device.Services.StorageService.1.PhysicalMedium.1.ConnectionType" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=352) +def test_StorageService_PhysicalMedium_Removable_Get_Handler(): + DATA_ELEMENT_NAME = "Device.Services.StorageService.1.PhysicalMedium.1.Removable" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=353) +def test_StorageService_PhysicalMedium_Status_Get_Handler(): + DATA_ELEMENT_NAME = "Device.Services.StorageService.1.PhysicalMedium.1.Status" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=354) +def test_StorageService_PhysicalMedium_Uptime_Get_Handler(): + DATA_ELEMENT_NAME = "Device.Services.StorageService.1.PhysicalMedium.1.Uptime" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=355) +def test_StorageService_PhysicalMedium_SMARTCapable_Get_Handler(): + DATA_ELEMENT_NAME = "Device.Services.StorageService.1.PhysicalMedium.1.SmartCapable" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=356) +def test_StorageService_PhysicalMedium_Health_Get_Handler(): + DATA_ELEMENT_NAME = "Device.Services.StorageService.1.PhysicalMedium.1.Health" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=357) +def test_StorageService_PhysicalMedium_HotSwappable_Get_Handler(): + DATA_ELEMENT_NAME = "Device.Services.StorageService.1.PhysicalMedium.1.HotSwappable" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=358) +def test_StorageService_PhysicalMedium_NumberOfEntries_Get_Handler(): + # TR-181 mapping: Device.StorageService.{i}.PhysicalMedium.NumberOfEntries + DATA_ELEMENT_NAME = "Device.Services.StorageService.1.PhysicalMediumNumberOfEntries" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout diff --git a/test/functional-tests/tests/tr69hostif_webpa_rdkdlmgr.py b/test/functional-tests/tests/tr69hostif_webpa_rdkdlmgr.py index 12e818707..4b2ff0dcf 100644 --- a/test/functional-tests/tests/tr69hostif_webpa_rdkdlmgr.py +++ b/test/functional-tests/tests/tr69hostif_webpa_rdkdlmgr.py @@ -91,3 +91,17 @@ def test_RDKRemoteDebugger_WebCfgData_Set_Handler(): rstdout = rbus_set_data(DATA_ELEMENT_NAME, "string", VALUE) assert RBUS_SUCCESS_STRING in rstdout + +@pytest.mark.run(order=472) +def test_X_RDK_WebPA_Server_URL_Get_Handler(): + DATA_ELEMENT_NAME = "Device.X_RDK_WebPA_Server.URL" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout + + +@pytest.mark.run(order=473) +def test_X_RDK_WebPA_TokenServer_URL_Get_Handler(): + DATA_ELEMENT_NAME = "Device.X_RDK_WebPA_TokenServer.URL" + rstdout = rbus_get_data(DATA_ELEMENT_NAME) + assert RBUS_EXCEPTION_STRING in rstdout +