Loading android/pandora/mmi2grpc/mmi2grpc/avrcp.py +191 −6 Original line number Diff line number Diff line Loading @@ -59,7 +59,7 @@ class AVRCPProxy(ProfileProxy): the IUT connects to PTS to establish pairing. """ if "CT" in test: if ("TG" in test and "TG/VLH" not in test) or "CT/VLH" in test: self.connection = self.host.WaitConnection(address=pts_addr).connection try: Loading Loading @@ -149,11 +149,7 @@ class AVRCPProxy(ProfileProxy): Take action to disconnect all A2DP and/or AVRCP connections. """ if self.connection is None: self.connection = self.host.GetConnection(address=pts_addr).connection self.host.Disconnect(connection=self.connection) self.connection = None self.sink = None self.a2dp.Close(source=self.source) self.source = None return "OK" Loading Loading @@ -202,6 +198,7 @@ class AVRCPProxy(ProfileProxy): The IUT should then initiate an L2CAP_ConnectRsp and L2CAP_ConfigRsp. """ return "OK" @assert_description Loading Loading @@ -241,6 +238,7 @@ class AVRCPProxy(ProfileProxy): Press 'OK' to continue once the IUT has responded. """ return "OK" @assert_description Loading @@ -258,6 +256,7 @@ class AVRCPProxy(ProfileProxy): Press 'OK' to continue once the IUT has responded. """ return "OK" @assert_description Loading @@ -275,6 +274,7 @@ class AVRCPProxy(ProfileProxy): the following parameter values: * BD_ADDR = BD_ADDRLower_Tester """ return "OK" @assert_description Loading @@ -298,6 +298,7 @@ class AVRCPProxy(ProfileProxy): DATA[]Lower_Tester * Length = LengthOf(DATA[]Lower_Tester) """ return "OK" @assert_description Loading Loading @@ -327,6 +328,7 @@ class AVRCPProxy(ProfileProxy): * Length = LengthOf(DATA[]Lower_Tester) """ return "OK" @assert_description Loading Loading @@ -356,4 +358,187 @@ class AVRCPProxy(ProfileProxy): continue once the IUT has responded. """ #TODO: Remove trailing space post "values:" from docstring description return "OK" @assert_description def TSC_AVDTP_mmi_iut_initiate_connect(self, pts_addr: bytes, **kwargs): """ Create an AVDTP signaling channel. Action: Create an audio or video connection with PTS. """ self.connection = self.host.Connect(address=pts_addr).connection self.source = self.a2dp.OpenSource(connection=self.connection).source return "OK" @assert_description def _mmi_690(self, **kwargs): """ Press 'YES' if the IUT indicated receiving the [PLAY] command. Press 'NO' otherwise. Description: Verify that the Implementation Under Test (IUT) successfully indicated that the current operation was pressed. Not all commands (fast forward and rewind for example) have a noticeable effect when pressed for a short period of time. For commands like that it is acceptable to assume the effect took place and press 'YES'. """ return "Yes" @assert_description def _mmi_691(self, **kwargs): """ Press 'YES' if the IUT indicated receiving the [STOP] command. Press 'NO' otherwise. Description: Verify that the Implementation Under Test (IUT) successfully indicated that the current operation was pressed. Not all commands (fast forward and rewind for example) have a noticeable effect when pressed for a short period of time. For commands like that it is acceptable to assume the effect took place and press 'YES'. """ return "Yes" @assert_description def _mmi_540(self, **kwargs): """ Press 'YES' if the IUT supports press and hold functionality for the [PLAY] command. Press 'NO' otherwise. Description: Verify press and hold functionality of passthrough operations that support press and hold. Not all operations support press and hold, pressing 'NO' will not fail the test case. """ return "Yes" @assert_description def _mmi_615(self, **kwargs): """ Press 'YES' if the IUT indicated press and hold functionality for the [PLAY] command. Press 'NO' otherwise. Description: Verify that the Implementation Under Test (IUT) successfully indicated that the current operation was held. """ return "Yes" @assert_description def _mmi_541(self, **kwargs): """ Press 'YES' if the IUT supports press and hold functionality for the [STOP] command. Press 'NO' otherwise. Description: Verify press and hold functionality of passthrough operations that support press and hold. Not all operations support press and hold, pressing 'NO' will not fail the test case. """ return "Yes" @assert_description def _mmi_616(self, **kwargs): """ Press 'YES' if the IUT indicated press and hold functionality for the [STOP] command. Press 'NO' otherwise. Description: Verify that the Implementation Under Test (IUT) successfully indicated that the current operation was held. """ return "Yes" @assert_description def TSC_AVRCP_mmi_user_confirm_media_is_streaming(self, **kwargs): """ Press 'OK' when the IUT is in a state where media is playing. Description: PTS is preparing the streaming state for the next passthrough command, if the current streaming state is not relevant to this IUT, please press 'OK to continue. """ if not self.a2dp.IsSuspended(source=self.source).is_suspended: return "Yes" else: return "No" @assert_description def TSC_AVRCP_mmi_iut_reject_invalid_get_capabilities(self, **kwargs): """ The IUT should reject the invalid Get Capabilities command sent by PTS. Description: Verify that the IUT can properly reject a Get Capabilities command that contains an invalid capability. """ return "OK" @assert_description def TSC_AVRCP_mmi_iut_accept_get_capabilities(self, **kwargs): """ Take action to send a valid response to the [Get Capabilities] command sent by the PTS. """ # This will be done as part as the a2dp.OpenSource or a2dp.WaitSource return "OK" @assert_description def TSC_AVRCP_mmi_iut_accept_get_element_attributes(self, **kwargs): """ Take action to send a valid response to the [Get Element Attributes] command sent by the PTS. """ # This will be done as part as the a2dp.OpenSource or a2dp.WaitSource return "OK" @assert_description def TSC_AVRCP_mmi_iut_reject_invalid_command_control_channel(self, **kwargs): """ PTS has sent an invalid command over the control channel. The IUT must respond with a general reject on the control channel. Description: Verify that the IUT can properly reject an invalid command sent over the control channel. """ return "OK" @assert_description def TSC_AVRCP_mmi_iut_reject_invalid_command_browsing_channel(self, **kwargs): """ PTS has sent an invalid command over the browsing channel. The IUT must respond with a general reject on the browsing channel. Description: Verify that the IUT can properly reject an invalid command sent over the browsing channel. """ return "OK" @assert_description def TSC_AVCTP_mmi_register_ConnectCfm_CB(self, **kwargs): """ Using the Upper Tester send an AVCT_EventRegistration command from the AVCTP Upper Interface to the IUT with the following input parameter values: * Event = AVCT_Connect_Cfm * Callback = ConnectCfm_CBTest_System * PID = PIDTest_System Press 'OK' to continue once the IUT has responded. """ return "OK" No newline at end of file android/pandora/server/configs/pts_bot_tests_config.json +14 −27 Original line number Diff line number Diff line Loading @@ -91,13 +91,25 @@ "AVDTP/SNK/INT/SIG/SMG/BI-3", "AVRCP/TG/CEC/BV-01-I", "AVRCP/TG/CRC/BV-01-I", "AVRCP/TG/CRC/BV-02-I", "AVRCP/TG/ICC/BV-01-I", "AVRCP/TG/ICC/BV-02-I", "AVRCP/TG/INV/BI-01-C", "AVRCP/TG/INV/BI-02-C", "AVRCP/TG/MDI/BV-02-C", "AVRCP/TG/MDI/BV-04-C", "AVRCP/TG/MDI/BV-05-C", "AVRCP/TG/MPS/BV-02-C", "AVRCP/TG/MPS/BV-01-I", "AVRCP/TG/MPS/BV-02-I", "AVRCP/TG/MPS/BV-03-I", "AVRCP/TG/PTT/BV-01-I", "AVRCP/TG/PTT/BV-05-I", "AVRCP/CT/CEC/BV-02-I", "AVRCP/CT/CRC/BV-02-I", "AVRCP/TG/MDI/BV-02-C", "AVRCP/TG/MPS/BV-02-C", "AVRCP/TG/CON/BV-04-C", "AVRCP/TG/CFG/BV-02-C", "AVRCP/TG/CFG/BI-01-C", "GATT/CL/GAC/BV-01-C", "GATT/CL/GAD/BV-01-C", "GATT/CL/GAD/BV-02-C", Loading Loading @@ -293,23 +305,6 @@ "AVDTP/SRC/INT/SIG/SMG/BV-13-C", "AVDTP/SRC/INT/SIG/SMG/BV-23-C", "AVDTP/SRC/INT/SIG/SMG/ESR05/BV-13-C", "AVDTP/SNK/ACP/SIG/SMG/BV-14-C", "AVDTP/SNK/ACP/SIG/SMG/BV-20-C", "AVDTP/SNK/ACP/SIG/SMG/BI-11-C", "AVDTP/SNK/ACP/SIG/SMG/BI-23-C", "AVDTP/SNK/ACP/SIG/SMG/ESR05/BV-14-C", "AVDTP/SNK/ACP/SIG/SYN/BV-03-C", "AVDTP/SNK/INT/SIG/SMG/BV-11-C", "AVDTP/SNK/INT/SIG/SMG/BV-13-C", "AVDTP/SNK/INT/SIG/SMG/BV-19-C", "AVDTP/SNK/INT/SIG/SMG/BV-23-C", "AVDTP/SNK/INT/SIG/SMG/ESR05/BV-13-C", "AVDTP/SNK/INT/SIG/SYN/BV-02-C", "AVDTP/SNK/INT/SIG/SYN/BV-04-C", "AVRCP/TG/PTT/BV-01-I", "AVRCP/TG/PTT/BV-05-I", "AVRCP/TG/MPS/BV-02-I", "AVRCP/TG/MPS/BV-03-I", "AVRCP/TG/MCN/CB/BV-01-I", "AVRCP/TG/MCN/CB/BV-02-I", "AVRCP/TG/MCN/CB/BV-03-I", Loading @@ -319,18 +314,11 @@ "AVRCP/TG/MCN/NP/BV-04-I", "AVRCP/TG/MCN/NP/BV-05-I", "AVRCP/TG/MCN/NP/BV-06-I", "AVRCP/TG/CFG/BV-02-C", "AVRCP/TG/CFG/BI-01-C", "AVRCP/TG/MDI/BV-04-C", "AVRCP/TG/MDI/BV-05-C", "AVRCP/TG/CON/BV-04-C", "AVRCP/TG/NFY/BV-02-C", "AVRCP/TG/NFY/BV-04-C", "AVRCP/TG/NFY/BV-06-C", "AVRCP/TG/NFY/BV-07-C", "AVRCP/TG/NFY/BI-01-C", "AVRCP/TG/INV/BI-01-C", "AVRCP/TG/INV/BI-02-C", "AVRCP/TG/MPS/BI-01-C", "AVRCP/TG/MPS/BV-04-C", "AVRCP/TG/MPS/BI-02-C", Loading @@ -356,7 +344,6 @@ "AVRCP/CT/PTT/BV-01-I", "AVRCP/CT/PTH/BV-01-C", "AVRCP/CT/CRC/BV-01-I", "AVRCP/TG/CRC/BV-02-I", "AVRCP/CT/CEC/BV-01-I", "GATT/CL/GAR/BI-04-C", "GATT/CL/GAR/BI-05-C", Loading Loading
android/pandora/mmi2grpc/mmi2grpc/avrcp.py +191 −6 Original line number Diff line number Diff line Loading @@ -59,7 +59,7 @@ class AVRCPProxy(ProfileProxy): the IUT connects to PTS to establish pairing. """ if "CT" in test: if ("TG" in test and "TG/VLH" not in test) or "CT/VLH" in test: self.connection = self.host.WaitConnection(address=pts_addr).connection try: Loading Loading @@ -149,11 +149,7 @@ class AVRCPProxy(ProfileProxy): Take action to disconnect all A2DP and/or AVRCP connections. """ if self.connection is None: self.connection = self.host.GetConnection(address=pts_addr).connection self.host.Disconnect(connection=self.connection) self.connection = None self.sink = None self.a2dp.Close(source=self.source) self.source = None return "OK" Loading Loading @@ -202,6 +198,7 @@ class AVRCPProxy(ProfileProxy): The IUT should then initiate an L2CAP_ConnectRsp and L2CAP_ConfigRsp. """ return "OK" @assert_description Loading Loading @@ -241,6 +238,7 @@ class AVRCPProxy(ProfileProxy): Press 'OK' to continue once the IUT has responded. """ return "OK" @assert_description Loading @@ -258,6 +256,7 @@ class AVRCPProxy(ProfileProxy): Press 'OK' to continue once the IUT has responded. """ return "OK" @assert_description Loading @@ -275,6 +274,7 @@ class AVRCPProxy(ProfileProxy): the following parameter values: * BD_ADDR = BD_ADDRLower_Tester """ return "OK" @assert_description Loading @@ -298,6 +298,7 @@ class AVRCPProxy(ProfileProxy): DATA[]Lower_Tester * Length = LengthOf(DATA[]Lower_Tester) """ return "OK" @assert_description Loading Loading @@ -327,6 +328,7 @@ class AVRCPProxy(ProfileProxy): * Length = LengthOf(DATA[]Lower_Tester) """ return "OK" @assert_description Loading Loading @@ -356,4 +358,187 @@ class AVRCPProxy(ProfileProxy): continue once the IUT has responded. """ #TODO: Remove trailing space post "values:" from docstring description return "OK" @assert_description def TSC_AVDTP_mmi_iut_initiate_connect(self, pts_addr: bytes, **kwargs): """ Create an AVDTP signaling channel. Action: Create an audio or video connection with PTS. """ self.connection = self.host.Connect(address=pts_addr).connection self.source = self.a2dp.OpenSource(connection=self.connection).source return "OK" @assert_description def _mmi_690(self, **kwargs): """ Press 'YES' if the IUT indicated receiving the [PLAY] command. Press 'NO' otherwise. Description: Verify that the Implementation Under Test (IUT) successfully indicated that the current operation was pressed. Not all commands (fast forward and rewind for example) have a noticeable effect when pressed for a short period of time. For commands like that it is acceptable to assume the effect took place and press 'YES'. """ return "Yes" @assert_description def _mmi_691(self, **kwargs): """ Press 'YES' if the IUT indicated receiving the [STOP] command. Press 'NO' otherwise. Description: Verify that the Implementation Under Test (IUT) successfully indicated that the current operation was pressed. Not all commands (fast forward and rewind for example) have a noticeable effect when pressed for a short period of time. For commands like that it is acceptable to assume the effect took place and press 'YES'. """ return "Yes" @assert_description def _mmi_540(self, **kwargs): """ Press 'YES' if the IUT supports press and hold functionality for the [PLAY] command. Press 'NO' otherwise. Description: Verify press and hold functionality of passthrough operations that support press and hold. Not all operations support press and hold, pressing 'NO' will not fail the test case. """ return "Yes" @assert_description def _mmi_615(self, **kwargs): """ Press 'YES' if the IUT indicated press and hold functionality for the [PLAY] command. Press 'NO' otherwise. Description: Verify that the Implementation Under Test (IUT) successfully indicated that the current operation was held. """ return "Yes" @assert_description def _mmi_541(self, **kwargs): """ Press 'YES' if the IUT supports press and hold functionality for the [STOP] command. Press 'NO' otherwise. Description: Verify press and hold functionality of passthrough operations that support press and hold. Not all operations support press and hold, pressing 'NO' will not fail the test case. """ return "Yes" @assert_description def _mmi_616(self, **kwargs): """ Press 'YES' if the IUT indicated press and hold functionality for the [STOP] command. Press 'NO' otherwise. Description: Verify that the Implementation Under Test (IUT) successfully indicated that the current operation was held. """ return "Yes" @assert_description def TSC_AVRCP_mmi_user_confirm_media_is_streaming(self, **kwargs): """ Press 'OK' when the IUT is in a state where media is playing. Description: PTS is preparing the streaming state for the next passthrough command, if the current streaming state is not relevant to this IUT, please press 'OK to continue. """ if not self.a2dp.IsSuspended(source=self.source).is_suspended: return "Yes" else: return "No" @assert_description def TSC_AVRCP_mmi_iut_reject_invalid_get_capabilities(self, **kwargs): """ The IUT should reject the invalid Get Capabilities command sent by PTS. Description: Verify that the IUT can properly reject a Get Capabilities command that contains an invalid capability. """ return "OK" @assert_description def TSC_AVRCP_mmi_iut_accept_get_capabilities(self, **kwargs): """ Take action to send a valid response to the [Get Capabilities] command sent by the PTS. """ # This will be done as part as the a2dp.OpenSource or a2dp.WaitSource return "OK" @assert_description def TSC_AVRCP_mmi_iut_accept_get_element_attributes(self, **kwargs): """ Take action to send a valid response to the [Get Element Attributes] command sent by the PTS. """ # This will be done as part as the a2dp.OpenSource or a2dp.WaitSource return "OK" @assert_description def TSC_AVRCP_mmi_iut_reject_invalid_command_control_channel(self, **kwargs): """ PTS has sent an invalid command over the control channel. The IUT must respond with a general reject on the control channel. Description: Verify that the IUT can properly reject an invalid command sent over the control channel. """ return "OK" @assert_description def TSC_AVRCP_mmi_iut_reject_invalid_command_browsing_channel(self, **kwargs): """ PTS has sent an invalid command over the browsing channel. The IUT must respond with a general reject on the browsing channel. Description: Verify that the IUT can properly reject an invalid command sent over the browsing channel. """ return "OK" @assert_description def TSC_AVCTP_mmi_register_ConnectCfm_CB(self, **kwargs): """ Using the Upper Tester send an AVCT_EventRegistration command from the AVCTP Upper Interface to the IUT with the following input parameter values: * Event = AVCT_Connect_Cfm * Callback = ConnectCfm_CBTest_System * PID = PIDTest_System Press 'OK' to continue once the IUT has responded. """ return "OK" No newline at end of file
android/pandora/server/configs/pts_bot_tests_config.json +14 −27 Original line number Diff line number Diff line Loading @@ -91,13 +91,25 @@ "AVDTP/SNK/INT/SIG/SMG/BI-3", "AVRCP/TG/CEC/BV-01-I", "AVRCP/TG/CRC/BV-01-I", "AVRCP/TG/CRC/BV-02-I", "AVRCP/TG/ICC/BV-01-I", "AVRCP/TG/ICC/BV-02-I", "AVRCP/TG/INV/BI-01-C", "AVRCP/TG/INV/BI-02-C", "AVRCP/TG/MDI/BV-02-C", "AVRCP/TG/MDI/BV-04-C", "AVRCP/TG/MDI/BV-05-C", "AVRCP/TG/MPS/BV-02-C", "AVRCP/TG/MPS/BV-01-I", "AVRCP/TG/MPS/BV-02-I", "AVRCP/TG/MPS/BV-03-I", "AVRCP/TG/PTT/BV-01-I", "AVRCP/TG/PTT/BV-05-I", "AVRCP/CT/CEC/BV-02-I", "AVRCP/CT/CRC/BV-02-I", "AVRCP/TG/MDI/BV-02-C", "AVRCP/TG/MPS/BV-02-C", "AVRCP/TG/CON/BV-04-C", "AVRCP/TG/CFG/BV-02-C", "AVRCP/TG/CFG/BI-01-C", "GATT/CL/GAC/BV-01-C", "GATT/CL/GAD/BV-01-C", "GATT/CL/GAD/BV-02-C", Loading Loading @@ -293,23 +305,6 @@ "AVDTP/SRC/INT/SIG/SMG/BV-13-C", "AVDTP/SRC/INT/SIG/SMG/BV-23-C", "AVDTP/SRC/INT/SIG/SMG/ESR05/BV-13-C", "AVDTP/SNK/ACP/SIG/SMG/BV-14-C", "AVDTP/SNK/ACP/SIG/SMG/BV-20-C", "AVDTP/SNK/ACP/SIG/SMG/BI-11-C", "AVDTP/SNK/ACP/SIG/SMG/BI-23-C", "AVDTP/SNK/ACP/SIG/SMG/ESR05/BV-14-C", "AVDTP/SNK/ACP/SIG/SYN/BV-03-C", "AVDTP/SNK/INT/SIG/SMG/BV-11-C", "AVDTP/SNK/INT/SIG/SMG/BV-13-C", "AVDTP/SNK/INT/SIG/SMG/BV-19-C", "AVDTP/SNK/INT/SIG/SMG/BV-23-C", "AVDTP/SNK/INT/SIG/SMG/ESR05/BV-13-C", "AVDTP/SNK/INT/SIG/SYN/BV-02-C", "AVDTP/SNK/INT/SIG/SYN/BV-04-C", "AVRCP/TG/PTT/BV-01-I", "AVRCP/TG/PTT/BV-05-I", "AVRCP/TG/MPS/BV-02-I", "AVRCP/TG/MPS/BV-03-I", "AVRCP/TG/MCN/CB/BV-01-I", "AVRCP/TG/MCN/CB/BV-02-I", "AVRCP/TG/MCN/CB/BV-03-I", Loading @@ -319,18 +314,11 @@ "AVRCP/TG/MCN/NP/BV-04-I", "AVRCP/TG/MCN/NP/BV-05-I", "AVRCP/TG/MCN/NP/BV-06-I", "AVRCP/TG/CFG/BV-02-C", "AVRCP/TG/CFG/BI-01-C", "AVRCP/TG/MDI/BV-04-C", "AVRCP/TG/MDI/BV-05-C", "AVRCP/TG/CON/BV-04-C", "AVRCP/TG/NFY/BV-02-C", "AVRCP/TG/NFY/BV-04-C", "AVRCP/TG/NFY/BV-06-C", "AVRCP/TG/NFY/BV-07-C", "AVRCP/TG/NFY/BI-01-C", "AVRCP/TG/INV/BI-01-C", "AVRCP/TG/INV/BI-02-C", "AVRCP/TG/MPS/BI-01-C", "AVRCP/TG/MPS/BV-04-C", "AVRCP/TG/MPS/BI-02-C", Loading @@ -356,7 +344,6 @@ "AVRCP/CT/PTT/BV-01-I", "AVRCP/CT/PTH/BV-01-C", "AVRCP/CT/CRC/BV-01-I", "AVRCP/TG/CRC/BV-02-I", "AVRCP/CT/CEC/BV-01-I", "GATT/CL/GAR/BI-04-C", "GATT/CL/GAR/BI-05-C", Loading