
When ptp-notification application is used with a ts2phc instance, the name of nmea serial port (ttyGNSS device) is retrieved from the kernel logs. This change fixes the look for 'dmesg' file which is not available by replacing it by 'kern.log' where that information could be found. Test Plan: PASS: Updated ptp-notification-ptptracking container running in environment with ts2phc instance configured and running. Closes-Bug: #1995718 Signed-off-by: Douglas Henrique Koerich <douglashenrique.koerich@windriver.com> Change-Id: I39a147f2eb626ad843035935de334d9f3dcf33d7
78 lines
3.6 KiB
Python
78 lines
3.6 KiB
Python
#
|
|
# Copyright (c) 2022 Wind River Systems, Inc.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
|
|
import unittest
|
|
import mock
|
|
from trackingfunctionsdk.common.helpers.cgu_handler import CguHandler
|
|
import os
|
|
|
|
testpath = os.environ.get("TESTPATH", "")
|
|
|
|
class CguHandlerTests(unittest.TestCase):
|
|
testCguHandler = CguHandler(testpath + "test_input_files/ts2phc_valid.conf")
|
|
missingCguHandler = CguHandler("./no_such_file.conf")
|
|
invalidCguHandler = CguHandler(testpath + "test_input_files/ts2phc_invalid.conf")
|
|
|
|
def test_get_gnss_nmea_serialport(self):
|
|
# Test success path
|
|
self.testCguHandler.get_gnss_nmea_serialport_from_ts2phc_config()
|
|
self.assertEqual(self.testCguHandler.nmea_serialport, "/dev/ttyGNSS_1800_0")
|
|
|
|
# Test missing / incorrect config file path
|
|
with self.assertRaises(FileNotFoundError):
|
|
self.missingCguHandler.get_gnss_nmea_serialport_from_ts2phc_config()
|
|
|
|
# Test missing nmea_serialport in config
|
|
self.invalidCguHandler.get_gnss_nmea_serialport_from_ts2phc_config()
|
|
self.assertEqual(self.invalidCguHandler.nmea_serialport,
|
|
None)
|
|
|
|
def test_convert_nmea_serialport_to_pci_addr(self):
|
|
# Test success path
|
|
self.testCguHandler.get_gnss_nmea_serialport_from_ts2phc_config()
|
|
self.testCguHandler.convert_nmea_serialport_to_pci_addr(
|
|
testpath + "test_input_files/mock_kern.log")
|
|
self.assertEqual(self.testCguHandler.pci_addr, "0000:18:00.0")
|
|
|
|
# Test pci address not found
|
|
self.testCguHandler.nmea_serialport = "/dev/ttyGNSS_not_present"
|
|
self.testCguHandler.convert_nmea_serialport_to_pci_addr(
|
|
testpath + "test_input_files/mock_kern.log")
|
|
self.assertEqual(self.testCguHandler.pci_addr, None)
|
|
|
|
@mock.patch('trackingfunctionsdk.common.helpers.cgu_handler.os.path')
|
|
def test_get_cgu_path_from_pci_addr(self, mock_path):
|
|
# Setup mock
|
|
mock_path.exists.return_value = True
|
|
self.testCguHandler.get_gnss_nmea_serialport_from_ts2phc_config()
|
|
self.testCguHandler.convert_nmea_serialport_to_pci_addr(
|
|
testpath + "test_input_files/mock_kern.log")
|
|
self.testCguHandler.get_cgu_path_from_pci_addr()
|
|
self.assertEqual(self.testCguHandler.cgu_path, "/ice/0000:18:00.0/cgu")
|
|
|
|
mock_path.exists.return_value = False
|
|
with self.assertRaises(FileNotFoundError):
|
|
self.testCguHandler.get_cgu_path_from_pci_addr()
|
|
|
|
def test_cgu_output_to_dict(self):
|
|
reference_dict = {
|
|
'input':
|
|
{'CVL-SDP22': {'state': 'invalid', 'priority': {'EEC': '8', 'PPS': '8'}},
|
|
'CVL-SDP20': {'state': 'invalid', 'priority': {'EEC': '15', 'PPS': '3'}},
|
|
'C827_0-RCLKA': {'state': 'invalid', 'priority': {'EEC': '4', 'PPS': '4'}},
|
|
'C827_0-RCLKB': {'state': 'invalid', 'priority': {'EEC': '5', 'PPS': '5'}},
|
|
'SMA1': {'state': 'invalid', 'priority': {'EEC': '1', 'PPS': '1'}},
|
|
'SMA2/U.FL2': {'state': 'invalid', 'priority': {'EEC': '2', 'PPS': '2'}},
|
|
'GNSS-1PPS': {'state': 'valid', 'priority': {'EEC': '0', 'PPS': '0'}}},
|
|
'EEC DPLL': {'Current reference': 'GNSS-1PPS', 'Status': 'locked_ho_ack'},
|
|
'PPS DPLL': {'Current reference': 'GNSS-1PPS', 'Status': 'locked_ho_ack',
|
|
'Phase offset': '295'}}
|
|
|
|
self.testCguHandler.cgu_path = testpath + "test_input_files/mock_cgu_output"
|
|
self.testCguHandler.read_cgu()
|
|
self.testCguHandler.cgu_output_to_dict()
|
|
self.assertDictEqual(self.testCguHandler.cgu_output_parsed, reference_dict)
|