blob: 64b8da4e25092c2b6502ca92ad5c83ea1f6e357f [file] [log] [blame]
/* Copyright (c) 2000-2019 Ericsson Telecom AB
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
*
* Contributors:
* Michael Josenhans
******************************************************************************/
//
// File: SocketCAN_J1939_test.ttcn
// Description: SocketCAN J1939 testcases for J1939 messages
//
module SocketCAN_J1939_test
{
import from J1939 all
import from J1939test all
function create_octetstring_of_size(in integer size) return octetstring {
var octetstring v_pdu_mod_1024 := ''O
var octetstring v_pdu_1024 := ''O
var octetstring v_pdu_mod_1048576 := ''O //1024*1024
var octetstring v_pdu_1048576 := ''O
var octetstring v_pdu_1073741824 := ''O //1024*1024*1024
var octetstring v_pdu := ''O
var integer vcount :=0
var integer maxcount
maxcount := size mod 1024
for (vcount :=0;vcount < maxcount; vcount := vcount+1){
v_pdu_mod_1024 := v_pdu_mod_1024 & int2oct((vcount mod 256),1)
}
log("1")
for (vcount :=0;vcount < 1024; vcount := vcount+1){
v_pdu_1024 := v_pdu_1024 & int2oct((vcount mod 256),1)
}
log("2")
maxcount := (size /1024) mod 1024
for (vcount :=0;vcount < maxcount; vcount := vcount+1){
v_pdu_mod_1048576 := v_pdu_mod_1048576 & v_pdu_1024
}
v_pdu_mod_1048576 := v_pdu_mod_1048576 & v_pdu_mod_1024
log("3")
for (vcount :=0;vcount < 1024; vcount := vcount+1){
v_pdu_1048576 := v_pdu_1048576 & v_pdu_1024
}
log("4")
maxcount := (size / (1024*1024))
for (vcount :=0;vcount < maxcount; vcount := vcount+1){
v_pdu_1073741824 := v_pdu_1073741824 & v_pdu_1048576
}
v_pdu_1073741824 := v_pdu_1073741824 & v_pdu_mod_1048576
log("5")
v_pdu := v_pdu_1073741824
return v_pdu
}
testcase tc_can_j1939_send_and_receive_can_frame() runs on MTC {
var PTC v_ptc_j1939SendInitiator := PTC.create("PTC1_ptc_j1939SendInitiator") alive
var PTC v_ptc_j1939FrameReceiver := PTC.create("PTC2_ptc_j1939FrameReceiver") alive
f_addSyncSlaveSet(v_ptc_j1939SendInitiator, v_PTCSet)
f_addSyncSlaveSet(v_ptc_j1939FrameReceiver, v_PTCSet)
connect(mtc:pt_sync, v_ptc_j1939SendInitiator:pt_sync)
connect(mtc:pt_sync, v_ptc_j1939FrameReceiver:pt_sync)
const integer c_send_prio := 2
const octetstring c_addr_source1 := '80'O
const octetstring c_pgn_destination1 := '00E700'O // ECU to VT
const octetstring c_addr_destination1 := '90'O
var octetstring v_pdu_send := ''O
//v_pdu_send := create_octetstring_of_size(117440505)
v_pdu_send := create_octetstring_of_size (4193975) //4193976
log("length of v_pdu_send: ", lengthof(v_pdu_send))
v_ptc_j1939SendInitiator.start(f_ptc_J1939SendInitiator(
e_testbody1,
c_send_prio,
c_addr_source1,
c_pgn_destination1,
c_addr_destination1,
v_pdu_send))
v_ptc_j1939FrameReceiver.start(f_ptc_J1939FrameReceiver(
e_testbody2,
c_addr_destination1, /* p_j1939_addr_source */
c_pgn_destination1, /* p_peer_pgn */
c_addr_source1, /* p_peer_addr */
J1939_NO_NAME, /* p_peer_name */
v_pdu_send /* p_j1939_pdu_expected */))
var e_Phase v_phase
for(v_phase := c_firstPhase; v_phase < e_testcase_complete;v_phase := f_incMTCPhase(v_phase)) {
f_startPhase(v_phase)
log("MTC: ", v_phase)
f_awaitEndPhase(v_phase)
}
all component.done;
log("MTC done")
disconnect(mtc:pt_sync, v_ptc_j1939SendInitiator:pt_sync)
disconnect(mtc:pt_sync, v_ptc_j1939FrameReceiver:pt_sync)
all component.kill;
}
testcase tc_can_j1939_send_and_receive_can_frame_parallel() runs on MTC {
var PTC v_ptc_j1939SendInitiator1 := PTC.create("PTC1_ptc_j1939SendInitiator1") alive
var PTC v_ptc_j1939FrameReceiver1 := PTC.create("PTC2_ptc_j1939FrameReceiver1") alive
var PTC v_ptc_j1939SendInitiator2 := PTC.create("PTC1_ptc_j1939SendInitiator2") alive
var PTC v_ptc_j1939FrameReceiver2 := PTC.create("PTC2_ptc_j1939FrameReceiver2") alive
f_addSyncSlaveSet(v_ptc_j1939SendInitiator1, v_PTCSet)
f_addSyncSlaveSet(v_ptc_j1939FrameReceiver1, v_PTCSet)
f_addSyncSlaveSet(v_ptc_j1939SendInitiator2, v_PTCSet)
f_addSyncSlaveSet(v_ptc_j1939FrameReceiver2, v_PTCSet)
connect(mtc:pt_sync, v_ptc_j1939SendInitiator1:pt_sync)
connect(mtc:pt_sync, v_ptc_j1939FrameReceiver1:pt_sync)
connect(mtc:pt_sync, v_ptc_j1939SendInitiator2:pt_sync)
connect(mtc:pt_sync, v_ptc_j1939FrameReceiver2:pt_sync)
const integer c_send_prio := 2
const octetstring c_addr_source1 := '80'O
const octetstring c_pgn_destination1 := '00E700'O // ECU to VT
const octetstring c_addr_destination1 := '90'O
const octetstring c_addr_source2 := '80'O
const octetstring c_pgn_destination2 := '00E700'O // ECU to VT
const octetstring c_addr_destination2 := '91'O
var octetstring v_pdu_send1 := ''O
var octetstring v_pdu_send2 := ''O
//v_pdu_send := create_octetstring_of_size(117440505)
v_pdu_send1 := create_octetstring_of_size(4193976)
log("length of v_pdu_send1: ", lengthof(v_pdu_send1))
v_pdu_send2 := create_octetstring_of_size(4193976)
log("length of v_pdu_send2: ", lengthof(v_pdu_send2))
v_ptc_j1939SendInitiator1.start(f_ptc_J1939SendInitiator(
e_testbody1,
c_send_prio,
c_addr_source1,
c_pgn_destination1,
c_addr_destination1,
v_pdu_send1))
v_ptc_j1939FrameReceiver1.start(f_ptc_J1939FrameReceiver(
e_testbody2,
c_addr_destination1, /* p_j1939_addr_source */
c_pgn_destination1, /* p_peer_pgn */
c_addr_source1, /* p_peer_addr */
J1939_NO_NAME, /* p_peer_name */
v_pdu_send1 /* p_j1939_pdu_expected */))
v_ptc_j1939SendInitiator2.start(f_ptc_J1939SendInitiator(
e_testbody1,
c_send_prio,
c_addr_source2,
c_pgn_destination2,
c_addr_destination2,
v_pdu_send2))
v_ptc_j1939FrameReceiver2.start(f_ptc_J1939FrameReceiver(
e_testbody2,
c_addr_destination2, /* p_j1939_addr_source */
c_pgn_destination2, /* p_peer_pgn */
c_addr_source2, /* p_peer_addr */
J1939_NO_NAME, /* p_peer_name */
v_pdu_send2 /* p_j1939_pdu_expected */))
var e_Phase v_phase
for(v_phase := c_firstPhase; v_phase < e_testcase_complete;v_phase := f_incMTCPhase(v_phase)) {
f_startPhase(v_phase)
log("MTC: ", v_phase)
f_awaitEndPhase(v_phase)
}
all component.done;
log("MTC done")
disconnect(mtc:pt_sync, v_ptc_j1939SendInitiator1:pt_sync)
disconnect(mtc:pt_sync, v_ptc_j1939FrameReceiver1:pt_sync)
disconnect(mtc:pt_sync, v_ptc_j1939SendInitiator2:pt_sync)
disconnect(mtc:pt_sync, v_ptc_j1939FrameReceiver2:pt_sync)
all component.kill;
}
testcase tc_can_f_j1939_address_claim() runs on MTC {
var PTC v_ptc_j1939AddressClaimInitiator := PTC.create("PTC1_ptc_j1939AddressClaimInitiator") alive
f_addSyncSlaveSet(v_ptc_j1939AddressClaimInitiator, v_PTCSet)
connect(mtc:pt_sync, v_ptc_j1939AddressClaimInitiator:pt_sync)
const J1939_NAME c_j1939_name_source := '1122334455667788'O
v_ptc_j1939AddressClaimInitiator.start(f_j1939_address_claim(
e_testbody1,
c_j1939_name_source))
var e_Phase v_phase
for(v_phase := c_firstPhase; v_phase < e_testcase_complete;v_phase := f_incMTCPhase(v_phase)) {
f_startPhase(v_phase)
log("MTC: ", v_phase)
f_awaitEndPhase(v_phase)
}
all component.done;
log("MTC done")
disconnect(mtc:pt_sync, v_ptc_j1939AddressClaimInitiator:pt_sync)
all component.kill;
}
testcase tc_can_f_j1939_address_claim2() runs on MTC {
var PTC v_ptc_j1939AddressClaimInitiator := PTC.create("PTC1_ptc_j1939AddressClaimInitiator") alive
f_addSyncSlaveSet(v_ptc_j1939AddressClaimInitiator, v_PTCSet)
connect(mtc:pt_sync, v_ptc_j1939AddressClaimInitiator:pt_sync)
const J1939_NAME c_j1939_name_source := '1122334455667788'O
const octetstring c_j1939_pdu_send := '00EE00'O
v_ptc_j1939AddressClaimInitiator.start(f_j1939_address_claim2(
e_testbody1,
c_j1939_name_source,
c_j1939_pdu_send))
var e_Phase v_phase
for(v_phase := c_firstPhase; v_phase < e_testcase_complete;v_phase := f_incMTCPhase(v_phase)) {
f_startPhase(v_phase)
log("MTC: ", v_phase)
f_awaitEndPhase(v_phase)
}
all component.done;
log("MTC done")
disconnect(mtc:pt_sync, v_ptc_j1939AddressClaimInitiator:pt_sync)
all component.kill;
}
//=========================================================================
// Control
//=========================================================================
// Insert control part here if applicable!
} // end of module