4.KSetStop.md

April 2, 2024 ยท View on GitHub

4. Test Case for K_SET_STOP

Case 4.1

Description: IDE_KM responder shall return valid K_GOSTOP_ACK, if it receives a K_SET_STOP with KeySet=0.

TestSetup:

  1. Requester -> QUERY {PortIndex=0x00}
  2. QUERY_RESP <- Responder
  3. Set GlobalStreamID = 1
  4. Requester -> KEY_PROG {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet=0, RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL], IFV=1}
  5. KP_ACK <- Responder
  6. Requester -> K_SET_GO {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet=0, RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL]}
  7. K_GOSTOP_ACK <- Responder

TestTeardown: None

Steps:

  1. Requester -> K_SET_STOP {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet=0, RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL]}
  2. IdeKmMessage <- Responder

Assertion 4.1.1: sizeof(IdeKmMessage) == sizeof(K_GOSTOP_ACK)

Assertion 4.1.2: IdeKmMessage.ObjectID == K_GOSTOP_ACK

Assertion 4.1.3: IdeKmMessage.PortIndex == KEY_PROG.PortIndex

Assertion 4.1.4: IdeKmMessage.StreamID == KEY_PROG.StreamID

Assertion 4.1.5: IdeKmMessage.KeySet == KEY_PROG.KeySet && IdeKmMessage.RxTx == KEY_PROG.RxTx && IdeKmMessage.SubStream == KEY_PROG.SubStream

Case 4.2

Description: IDE_KM responder shall return valid K_GOSTOP_ACK, if it receives a K_SET_STOP with KeySet=1.

TestSetup:

  1. Requester -> QUERY {PortIndex=0x00}
  2. QUERY_RESP <- Responder
  3. Set GlobalStreamID = 1
  4. Requester -> KEY_PROG {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet=1, RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL], IFV=1}
  5. KP_ACK <- Responder
  6. Requester -> K_SET_GO {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet=1, RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL]}
  7. K_GOSTOP_ACK <- Responder

TestTeardown: None

Steps:

  1. Requester -> K_SET_STOP {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet=1, RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL]}
  2. IdeKmMessage <- Responder

Assertion 4.2.1: sizeof(IdeKmMessage) == sizeof(K_GOSTOP_ACK)

Assertion 4.2.2: IdeKmMessage.ObjectID == K_GOSTOP_ACK

Assertion 4.2.3: IdeKmMessage.PortIndex == KEY_PROG.PortIndex

Assertion 4.2.4: IdeKmMessage.StreamID == KEY_PROG.StreamID

Assertion 4.2.5: IdeKmMessage.KeySet == KEY_PROG.KeySet && IdeKmMessage.RxTx == KEY_PROG.RxTx && IdeKmMessage.SubStream == KEY_PROG.SubStream

Case 4.3

Description: IDE_KM responder shall return valid K_GOSTOP_ACK, if it receives a K_SET_STOP with KeySet=1 after key switch.

TestSetup:

  1. Requester -> QUERY {PortIndex=0x00}
  2. QUERY_RESP <- Responder
  3. Set GlobalStreamID = 1
  4. Requester -> KEY_PROG {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet in [0, 1], RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL], IFV=1}
  5. KP_ACK <- Responder
  6. Requester -> K_SET_GO {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet=0, RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL]}
  7. K_GOSTOP_ACK <- Responder
  8. Requester -> K_SET_GO {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet=1, RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL]}
  9. K_GOSTOP_ACK <- Responder

TestTeardown: None

Steps:

  1. Requester -> K_SET_STOP {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet=1, RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL]}
  2. IdeKmMessage <- Responder

Assertion 4.3.1: sizeof(IdeKmMessage) == sizeof(K_GOSTOP_ACK)

Assertion 4.3.2: IdeKmMessage.ObjectID == K_GOSTOP_ACK

Assertion 4.3.3: IdeKmMessage.PortIndex == KEY_PROG.PortIndex

Assertion 4.3.4: IdeKmMessage.StreamID == KEY_PROG.StreamID

Assertion 4.3.5: IdeKmMessage.KeySet == KEY_PROG.KeySet && IdeKmMessage.RxTx == KEY_PROG.RxTx && IdeKmMessage.SubStream == KEY_PROG.SubStream

Case 4.4

Description: IDE_KM responder shall return valid K_GOSTOP_ACK, if it receives a K_SET_STOP with KeySet=0 after key switch.

TestSetup:

  1. Requester -> QUERY {PortIndex=0x00}
  2. QUERY_RESP <- Responder
  3. Set GlobalStreamID = 1
  4. Requester -> KEY_PROG {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet in [0, 1], RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL], IFV=1}
  5. KP_ACK <- Responder
  6. Requester -> K_SET_GO {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet=1, RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL]}
  7. K_GOSTOP_ACK <- Responder
  8. Requester -> K_SET_GO {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet=0, RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL]}
  9. K_GOSTOP_ACK <- Responder

TestTeardown: None

Steps:

  1. Requester -> K_SET_STOP {(PortIndex, StreamID) in [(0, GlobalStreamID), (MaxPortIndex, GlobalStreamID + MaxPortIndex)], KeySet=0, RxTx in [Rx, Tx], SubStream in [PR, NPR, CPL]}
  2. IdeKmMessage <- Responder

Assertion 4.4.1: sizeof(IdeKmMessage) == sizeof(K_GOSTOP_ACK)

Assertion 4.4.2: IdeKmMessage.ObjectID == K_GOSTOP_ACK

Assertion 4.4.3: IdeKmMessage.PortIndex == KEY_PROG.PortIndex

Assertion 4.4.4: IdeKmMessage.StreamID == KEY_PROG.StreamID

Assertion 4.4.5: IdeKmMessage.KeySet == KEY_PROG.KeySet && IdeKmMessage.RxTx == KEY_PROG.RxTx && IdeKmMessage.SubStream == KEY_PROG.SubStream