Source code for pykiso.lib.auxiliaries.simulated_auxiliary.scenario

##########################################################################
# Copyright (c) 2010-2022 Robert Bosch GmbH
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# http://www.eclipse.org/legal/epl-2.0.
#
# SPDX-License-Identifier: EPL-2.0
##########################################################################

"""
Scenario
********

:module: scenario

:synopsis: base object used to create pre-defined virtual DUT scenario.

.. currentmodule:: scenario

.. warning:: Still under test
"""

from collections import UserList

from .response_templates import ResponseTemplates


[docs]class Scenario(UserList): """Container used to create pre-defined virtual DUT scenario.""" pass
[docs]class TestScenario: """Encapsulate all possible test's scenarios."""
[docs] @classmethod def handle_successful(cls) -> Scenario: """Return a scenario to handle a complete successful test case exchange(TEST CASE setup->run->teardown). :return: Scenario instance containing all steps """ return Scenario( [ ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack_with_report_ok, ] )
@classmethod def handle_communication_lost(cls) -> Scenario: return Scenario([ResponseTemplates.ack])
[docs] class VirtualTestCase: """Used to gather all virtual DUT test case scenarios based on their fixture level (setup, run, teardown). """
[docs] class Setup: """Used to gather all possible scenarios linked to a test case setup execution. """
[docs] @classmethod def handle_failed_report_setup(cls) -> Scenario: """Return a scenario to handle a complete test case with failed report at setup phase. :return: Scenario instance containing all steps """ return Scenario( [ ResponseTemplates.ack_with_report_nok, ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack_with_report_ok, ] )
[docs] @classmethod def handle_not_implemented_report_setup(cls) -> Scenario: """Return a scenario to handle a complete test case with not implemented report at setup phase. :return: Scenario instance containing all steps """ return Scenario( [ ResponseTemplates.ack_with_report_not_implemented, ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack_with_report_ok, ] )
[docs] @classmethod def handle_lost_communication_during_setup_ack(cls) -> Scenario: """Return a scenario to handle a complete test case with lost of communication during ACK to setup Command. :return: Scenario instance containing all steps """ return Scenario( [ None, None, ResponseTemplates.ack, ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack_with_report_ok, ] )
[docs] @classmethod def handle_lost_communication_during_setup_report(cls) -> Scenario: """Return a scenario to handle a complete test case with lost of communication during report to setup Command. :return: Scenario instance containing all steps """ return Scenario( [ ResponseTemplates.ack, None, None, ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack_with_report_ok, ] )
[docs] class Run: """Used to gather all possible scenarios linked to a test case run execution. """
[docs] @classmethod def handle_failed_report_run(cls) -> Scenario: """Return a scenario to handle a complete test case with failed report at run phase. :return: Scenario instance containing all steps """ return Scenario( [ ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack_with_report_nok, ResponseTemplates.ack_with_report_ok, ] )
[docs] @classmethod def handle_successful_report_run_with_log(cls) -> Scenario: """Return a scenario to handle a complete test case with successful log and report at run phase. :return: Scenario instance containing all steps """ return Scenario( [ ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack_with_logs_and_report_ok, ResponseTemplates.ack_with_report_ok, ] )
[docs] @classmethod def handle_failed_report_run_with_log(cls) -> Scenario: """Return a scenario to handle a complete test case with failed log and report at run phase. :return: Scenario instance containing all steps """ return Scenario( [ ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack_with_logs_and_report_nok, ResponseTemplates.ack_with_report_ok, ] )
[docs] @classmethod def handle_not_implemented_report_run(cls) -> Scenario: """Return a scenario to handle a complete test case with not implemented report at run phase. :return: Scenario instance containing all steps """ return Scenario( [ ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack_with_report_not_implemented, ResponseTemplates.ack_with_report_ok, ] )
[docs] @classmethod def handle_lost_communication_during_run_ack(cls) -> Scenario: """Return a scenario to handle a complete test case with lost of communication during ACK to run Command. :return: Scenario instance containing all steps """ return Scenario( [ ResponseTemplates.ack_with_report_ok, None, None, ResponseTemplates.ack, ResponseTemplates.ack_with_report_ok, ] )
[docs] @classmethod def handle_lost_communication_during_run_report(cls) -> Scenario: """Return a scenario to handle a complete test case with lost of communication during report to run Command. :return: Scenario instance containing all steps """ return Scenario( [ ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack, None, None, ResponseTemplates.ack_with_report_ok, ] )
[docs] class Teardown: """Used to gather all possible scenarios linked to a test case teardown execution. """
[docs] @classmethod def handle_failed_report_teardown(cls) -> Scenario: """Return a scenario to handle a complete test case with failed report at teardown phase. :return: Scenario instance containing all steps """ return Scenario( [ ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack_with_report_nok, ] )
[docs] @classmethod def handle_not_implemented_report_teardown(cls) -> Scenario: """Return a scenario to handle a complete test case with not implemented report at teardown phase. :return: Scenario instance containing all steps """ return Scenario( [ ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack_with_report_not_implemented, ] )
[docs] @classmethod def handle_lost_communication_during_teardown_ack(cls) -> Scenario: """Return a scenario to handle a complete test case with lost of communication during ACK to teardown Command. :return: Scenario instance containing all steps """ return Scenario( [ ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack_with_report_ok, None, None, ResponseTemplates.ack, ] )
[docs] @classmethod def handle_lost_communication_during_teardown_report(cls) -> Scenario: """Return a scenario to handle a complete test case with lost of communication during report to teardown Command. :return: Scenario instance containing all steps """ return Scenario( [ ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack_with_report_ok, ResponseTemplates.ack, None, None, ] )
[docs] class VirtualTestSuite: """Used to gather all virtual DUT test suite scenarios based on their fixture level (setup, teardown). """
[docs] class Setup: """Used to gather all possible scenarios linked to a test suite setup execution. """
[docs] @classmethod def handle_failed_report_setup(cls) -> Scenario: """Return a scenario to handle a test suite setup with report failed. :return: Scenario instance containing all steps """ return Scenario([ResponseTemplates.ack_with_report_nok])
[docs] @classmethod def handle_not_implemented_report_setup(cls) -> Scenario: """Return a scenario to handle a test suite setup with report not implemented. :return: Scenario instance containing all steps """ return Scenario([ResponseTemplates.ack_with_report_not_implemented])
[docs] @classmethod def handle_lost_communication_during_setup_ack(cls) -> Scenario: """Return a scenario to handle a lost of communication during ACK to setup command. :return: Scenario instance containing all steps """ return Scenario([None, None, ResponseTemplates.ack])
[docs] @classmethod def handle_lost_communication_during_setup_report(cls) -> Scenario: """Return a scenario to handle a lost of communication during report to setup command. :return: Scenario instance containing all steps """ return Scenario([ResponseTemplates.ack, None, None])
[docs] class Teardown: """Used to gather all possible scenarios linked to a test suite teardown execution. """
[docs] @classmethod def handle_failed_report_teardown(cls) -> Scenario: """Return a scenario to handle a test suite teardown with report failed. :return: Scenario instance containing all steps """ return Scenario([ResponseTemplates.ack_with_report_nok])
[docs] @classmethod def handle_not_implemented_report_teardown(cls) -> Scenario: """Return a scenario to handle a test suite teardown with report not implemented. :return: Scenario instance containing all steps """ return Scenario([ResponseTemplates.ack_with_report_not_implemented])
[docs] @classmethod def handle_lost_communication_during_teardown_ack(cls) -> Scenario: """Return a scenario to handle a lost of communication during ACK to teardown command. :return: Scenario instance containing all steps """ return Scenario([None, None, ResponseTemplates.ack])
[docs] @classmethod def handle_lost_communication_during_teardown_report(cls) -> Scenario: """Return a scenario to handle a lost of communication during report to teardown command. :return: Scenario instance containing all steps """ return Scenario([ResponseTemplates.ack, None, None])