mirror of
https://github.com/uhi22/pyPLC.git
synced 2024-11-10 01:05:42 +00:00
testsuite: added test case titles, filled some test cases, added injection points
This commit is contained in:
parent
518a0c60a2
commit
ccd7cb4e4e
3 changed files with 81 additions and 2 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -3,6 +3,7 @@
|
||||||
/doc/*.jar
|
/doc/*.jar
|
||||||
*.bat
|
*.bat
|
||||||
PevExiLog*.txt
|
PevExiLog*.txt
|
||||||
|
testresults.txt
|
||||||
*.ini
|
*.ini
|
||||||
/log
|
/log
|
||||||
/local
|
/local
|
||||||
|
|
|
@ -131,6 +131,9 @@ class fsmEvse():
|
||||||
if (strConverterResult.find("PowerDeliveryReq")>0):
|
if (strConverterResult.find("PowerDeliveryReq")>0):
|
||||||
# todo: check the request content, and fill response parameters
|
# todo: check the request content, and fill response parameters
|
||||||
msg = addV2GTPHeader(exiEncode("EDh")) # EDh for Encode, Din, PowerDeliveryResponse
|
msg = addV2GTPHeader(exiEncode("EDh")) # EDh for Encode, Din, PowerDeliveryResponse
|
||||||
|
if (testsuite_faultinjection_is_triggered(TC_EVSE_ResponseCode_Failed_for_PowerDeliveryRes)):
|
||||||
|
# send a PowerDeliveryResponse with Responsecode Failed
|
||||||
|
msg = addV2GTPHeader("809a0125e6cecc51408420400000")
|
||||||
self.addToTrace("responding " + prettyHexMessage(msg))
|
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||||
self.publishStatus("PowerDelivery")
|
self.publishStatus("PowerDelivery")
|
||||||
self.Tcp.transmit(msg)
|
self.Tcp.transmit(msg)
|
||||||
|
@ -138,6 +141,9 @@ class fsmEvse():
|
||||||
if (strConverterResult.find("ChargeParameterDiscoveryReq")>0):
|
if (strConverterResult.find("ChargeParameterDiscoveryReq")>0):
|
||||||
# todo: check the request content, and fill response parameters
|
# todo: check the request content, and fill response parameters
|
||||||
msg = addV2GTPHeader(exiEncode("EDe")) # EDe for Encode, Din, ChargeParameterDiscoveryResponse
|
msg = addV2GTPHeader(exiEncode("EDe")) # EDe for Encode, Din, ChargeParameterDiscoveryResponse
|
||||||
|
if (testsuite_faultinjection_is_triggered(TC_EVSE_ResponseCode_ServiceSelectionInvalid_for_ChargeParameterDiscovery)):
|
||||||
|
# send a ChargeParameterDiscoveryResponse with Responsecode ServiceSelectionInvalid
|
||||||
|
msg = addV2GTPHeader("809a0125e6cecd50810001ec00201004051828758405500080000101844138101c2432c04081436c900c0c000041435ecc044606000200")
|
||||||
self.addToTrace("responding " + prettyHexMessage(msg))
|
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||||
self.publishStatus("ChargeParamDiscovery")
|
self.publishStatus("ChargeParamDiscovery")
|
||||||
self.Tcp.transmit(msg)
|
self.Tcp.transmit(msg)
|
||||||
|
@ -183,6 +189,9 @@ class fsmEvse():
|
||||||
if (strConverterResult.find("ContractAuthenticationReq")>0):
|
if (strConverterResult.find("ContractAuthenticationReq")>0):
|
||||||
# todo: check the request content, and fill response parameters
|
# todo: check the request content, and fill response parameters
|
||||||
msg = addV2GTPHeader(exiEncode("EDl")) # EDl for Encode, Din, ContractAuthenticationResponse
|
msg = addV2GTPHeader(exiEncode("EDl")) # EDl for Encode, Din, ContractAuthenticationResponse
|
||||||
|
if (testsuite_faultinjection_is_triggered(TC_EVSE_ResponseCode_SequenceError_for_ContractAuthenticationRes)):
|
||||||
|
# send a ContractAuthenticationResponse with Responsecode SequenceError
|
||||||
|
msg = addV2GTPHeader("809a021a3b7c417774813310c0A200")
|
||||||
self.addToTrace("responding " + prettyHexMessage(msg))
|
self.addToTrace("responding " + prettyHexMessage(msg))
|
||||||
self.publishStatus("ContractAuthentication")
|
self.publishStatus("ContractAuthentication")
|
||||||
self.Tcp.transmit(msg)
|
self.Tcp.transmit(msg)
|
||||||
|
|
|
@ -33,21 +33,28 @@ TC_EVSE_Shutdown_during_PreCharge = 12
|
||||||
TC_EVSE_Shutdown_during_CurrentDemand = 13
|
TC_EVSE_Shutdown_during_CurrentDemand = 13
|
||||||
TC_EVSE_Malfunction_during_CurrentDemand = 14
|
TC_EVSE_Malfunction_during_CurrentDemand = 14
|
||||||
TC_EVSE_Timeout_during_CurrentDemand = 15
|
TC_EVSE_Timeout_during_CurrentDemand = 15
|
||||||
TC_EVSE_LastTest = 16
|
TC_EVSE_GoodCase = 16
|
||||||
|
TC_EVSE_LastTest = 17
|
||||||
|
|
||||||
|
|
||||||
# variables
|
# variables
|
||||||
testsuite_testcase_number = 0
|
testsuite_testcase_number = 0
|
||||||
testsuite_delayCycles = 0
|
testsuite_delayCycles = 0
|
||||||
|
testsuite_TcTitle = "(title not initialized)"
|
||||||
|
|
||||||
# Counter variable for delaying the trigger
|
# Counter variable for delaying the trigger
|
||||||
testsuite_counter = 0
|
testsuite_counter = 0
|
||||||
|
|
||||||
|
def testsuite_printToTestLog(s):
|
||||||
|
fileOut = open('testresults.txt', 'a') # open the result file for appending
|
||||||
|
print(s, file=fileOut)
|
||||||
|
fileOut.close()
|
||||||
|
|
||||||
def testsuite_getTcNumber():
|
def testsuite_getTcNumber():
|
||||||
if (testsuite_testcase_number==0):
|
if (testsuite_testcase_number==0):
|
||||||
return "(no tests)"
|
return "(no tests)"
|
||||||
else:
|
else:
|
||||||
return testsuite_testcase_number
|
return str(testsuite_testcase_number) + testsuite_TcTitle
|
||||||
|
|
||||||
def testsuite_faultinjection_is_triggered(context):
|
def testsuite_faultinjection_is_triggered(context):
|
||||||
global testsuite_counter, testsuite_testcase_number, testsuite_delayCycles
|
global testsuite_counter, testsuite_testcase_number, testsuite_delayCycles
|
||||||
|
@ -66,6 +73,7 @@ def testsuite_choose_testcase():
|
||||||
global testsuite_counter, testsuite_testcase_number, testsuite_delayCycles
|
global testsuite_counter, testsuite_testcase_number, testsuite_delayCycles
|
||||||
global testsuite_observedResult
|
global testsuite_observedResult
|
||||||
global testsuite_expectedResult
|
global testsuite_expectedResult
|
||||||
|
global testsuite_TcTitle
|
||||||
|
|
||||||
if (not getConfigValueBool("testsuite_enable")):
|
if (not getConfigValueBool("testsuite_enable")):
|
||||||
testsuite_testcase_number = TC_NOTHING_TO_TEST
|
testsuite_testcase_number = TC_NOTHING_TO_TEST
|
||||||
|
@ -87,6 +95,9 @@ def testsuite_choose_testcase():
|
||||||
s = "PASS " + s
|
s = "PASS " + s
|
||||||
print(s)
|
print(s)
|
||||||
udplog_log(s, "testsuite")
|
udplog_log(s, "testsuite")
|
||||||
|
x = "Result for Testcase " + str(testsuite_testcase_number) + " " + testsuite_TcTitle
|
||||||
|
testsuite_printToTestLog(x)
|
||||||
|
testsuite_printToTestLog(s)
|
||||||
if (testsuite_testcase_number<TC_EVSE_LastTest):
|
if (testsuite_testcase_number<TC_EVSE_LastTest):
|
||||||
testsuite_testcase_number+=1
|
testsuite_testcase_number+=1
|
||||||
print("[TESTSUITE] Setting up test case " + str(testsuite_testcase_number) + " TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT")
|
print("[TESTSUITE] Setting up test case " + str(testsuite_testcase_number) + " TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT")
|
||||||
|
@ -96,29 +107,87 @@ def testsuite_choose_testcase():
|
||||||
testsuite_delayCycles = 5 # just a default
|
testsuite_delayCycles = 5 # just a default
|
||||||
testsuite_expectedResult = "" # just a default
|
testsuite_expectedResult = "" # just a default
|
||||||
testsuite_observedResult = "" # just a default
|
testsuite_observedResult = "" # just a default
|
||||||
|
testsuite_TcTitle = "(title missing)" # just a default
|
||||||
|
|
||||||
# For each test case, configure the test parameters and the expected result
|
# For each test case, configure the test parameters and the expected result
|
||||||
if (testsuite_testcase_number == TC_EVSE_Timeout_during_CableCheck):
|
if (testsuite_testcase_number == TC_EVSE_Timeout_during_CableCheck):
|
||||||
testsuite_delayCycles=0 # immediately timeout
|
testsuite_delayCycles=0 # immediately timeout
|
||||||
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
||||||
|
testsuite_TcTitle = "Timeout during CableCheck shall lead to SafeShutdown"
|
||||||
|
|
||||||
|
if (testsuite_testcase_number == TC_EVSE_Timeout_during_PreCharge):
|
||||||
|
testsuite_delayCycles=0 # immediately timeout
|
||||||
|
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
||||||
|
testsuite_TcTitle = "Timeout during PreCharge shall lead to SafeShutdown"
|
||||||
|
|
||||||
|
if (testsuite_testcase_number == TC_EVSE_Shutdown_during_PreCharge):
|
||||||
|
testsuite_delayCycles=2 # shutdown after 2 ok-cycles
|
||||||
|
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
||||||
|
testsuite_TcTitle = "Shutdown during PreCharge shall lead to SafeShutdown"
|
||||||
|
|
||||||
|
if (testsuite_testcase_number == TC_EVSE_Shutdown_during_CurrentDemand):
|
||||||
|
testsuite_delayCycles=20 # shutdown after 20 ok-cycles
|
||||||
|
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
||||||
|
testsuite_TcTitle = "Shutdown during CurrentDemand shall lead to SafeShutdown"
|
||||||
|
|
||||||
|
if (testsuite_testcase_number == TC_EVSE_Malfunction_during_CurrentDemand):
|
||||||
|
testsuite_delayCycles=5 # malfunction after 5 ok-cycles
|
||||||
|
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
||||||
|
testsuite_TcTitle = "Malfunction during CurrentDemand shall lead to SafeShutdown"
|
||||||
|
|
||||||
|
if (testsuite_testcase_number == TC_EVSE_Timeout_during_CurrentDemand):
|
||||||
|
testsuite_delayCycles=30 # timeout after 30 ok-cycles
|
||||||
|
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
||||||
|
testsuite_TcTitle = "Timeout during CurrentDemand shall lead to SafeShutdown"
|
||||||
|
|
||||||
if (testsuite_testcase_number == TC_EVSE_ResponseCode_SequenceError_for_SessionSetup):
|
if (testsuite_testcase_number == TC_EVSE_ResponseCode_SequenceError_for_SessionSetup):
|
||||||
testsuite_delayCycles=0 # immediately
|
testsuite_delayCycles=0 # immediately
|
||||||
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
||||||
|
testsuite_TcTitle = "SequenceError in SessionSetup shall lead to SafeShutdown"
|
||||||
if (testsuite_testcase_number == TC_EVSE_ResponseCode_SequenceError_for_ServiceDiscoveryRes):
|
if (testsuite_testcase_number == TC_EVSE_ResponseCode_SequenceError_for_ServiceDiscoveryRes):
|
||||||
testsuite_delayCycles=0 # immediately
|
testsuite_delayCycles=0 # immediately
|
||||||
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
||||||
|
testsuite_TcTitle = "SequenceError in ServiceDiscoveryRes shall lead to SafeShutdown"
|
||||||
if (testsuite_testcase_number == TC_EVSE_ResponseCode_SequenceError_for_ServicePaymentSelectionRes):
|
if (testsuite_testcase_number == TC_EVSE_ResponseCode_SequenceError_for_ServicePaymentSelectionRes):
|
||||||
testsuite_delayCycles=0 # immediately
|
testsuite_delayCycles=0 # immediately
|
||||||
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
||||||
|
testsuite_TcTitle = "SequenceError in ServicePaymentSelectionRes shall lead to SafeShutdown"
|
||||||
if (testsuite_testcase_number == TC_EVSE_ResponseCode_SequenceError_for_ContractAuthenticationRes):
|
if (testsuite_testcase_number == TC_EVSE_ResponseCode_SequenceError_for_ContractAuthenticationRes):
|
||||||
testsuite_delayCycles=0 # immediately
|
testsuite_delayCycles=0 # immediately
|
||||||
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
||||||
|
testsuite_TcTitle = "SequenceError in ContractAuthenticationRes shall lead to SafeShutdown"
|
||||||
if (testsuite_testcase_number == TC_EVSE_ResponseCode_ServiceSelectionInvalid_for_ChargeParameterDiscovery):
|
if (testsuite_testcase_number == TC_EVSE_ResponseCode_ServiceSelectionInvalid_for_ChargeParameterDiscovery):
|
||||||
testsuite_delayCycles=0 # immediately
|
testsuite_delayCycles=0 # immediately
|
||||||
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
||||||
|
testsuite_TcTitle = "ServiceSelectionInvalid in ChargeParameterDiscoveryshall lead to SafeShutdown"
|
||||||
|
|
||||||
|
if (testsuite_testcase_number == TC_EVSE_ResponseCode_Failed_for_CableCheckRes):
|
||||||
|
testsuite_delayCycles=2 # after two ok cycles, we inject the fault in the third cycle
|
||||||
|
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
||||||
|
testsuite_TcTitle = "Failed in CableCheckRes shall lead to SafeShutdown"
|
||||||
|
|
||||||
|
if (testsuite_testcase_number == TC_EVSE_ResponseCode_Failed_for_PreChargeRes):
|
||||||
|
testsuite_delayCycles=2 # after two ok cycles, we inject the fault in the third cycle
|
||||||
|
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
||||||
|
testsuite_TcTitle = "Failed in PreChargeRes shall lead to SafeShutdown"
|
||||||
|
|
||||||
if (testsuite_testcase_number == TC_EVSE_ResponseCode_Failed_for_PowerDeliveryRes):
|
if (testsuite_testcase_number == TC_EVSE_ResponseCode_Failed_for_PowerDeliveryRes):
|
||||||
testsuite_delayCycles=0 # immediately
|
testsuite_delayCycles=0 # immediately
|
||||||
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
||||||
|
testsuite_TcTitle = "Failed in PowerDeliveryRes shall lead to SafeShutdown"
|
||||||
|
|
||||||
|
if (testsuite_testcase_number == TC_EVSE_ResponseCode_Failed_for_CurrentDemandRes):
|
||||||
|
testsuite_delayCycles=10 # fire the fault after 10 ok-cycles
|
||||||
|
testsuite_expectedResult = "TSRS_SafeShutdownFinished"
|
||||||
|
testsuite_TcTitle = "Failed in CurrentDemandRes shall lead to SafeShutdown"
|
||||||
|
|
||||||
|
if (testsuite_testcase_number == TC_EVSE_GoodCase):
|
||||||
|
# Test case for the good case: Normal charging, no errors.
|
||||||
|
testsuite_delayCycles=0 # not relevant
|
||||||
|
testsuite_expectedResult = "TSRS_ChargingFinished"
|
||||||
|
testsuite_TcTitle = "Good case, normal charging without errors"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def testsuite_reportstatus(s):
|
def testsuite_reportstatus(s):
|
||||||
# give the test status to the UDP, to inform the other side and to have it in the network log.
|
# give the test status to the UDP, to inform the other side and to have it in the network log.
|
||||||
|
|
Loading…
Reference in a new issue