Project

General

Profile

Actions

Task #3199

closed

Analyse couverture de tests 3.2.0.24

Added by Veronique bouzid about 6 years ago. Updated over 5 years ago.

Status:
Closed
Priority:
Normal
Category:
-
Target version:
-
Start date:
13/11/2018
Due date:
% Done:

0%

Estimated time:
revision:
r3.2.0.24

Description

Tout se passe sur la machine rangiroa
rep = /home/bouzid/LFR/GCOV_3.2.0.24
ensuite les répertoires de test /home/bouzid/LFR/GCOV_3.2.0.24/SVS-xxxx.

Les répertoires SVS comprenant plusieurs scripts de test sont traités indépendamment, par exemple
SVS-0012 SVS-0012-step2 SVS-0012-burst SVS-0012-normal SVS-0012-sbm1 SVS-0012-sbm2

Les variables d environnement necessaires sont
export DROOT=${HOME}/LFR
export SGCOV=${DROOT}/LFR_FSW/libgcov/build_gcov_files.py
export DBUILD=${DROOT}/build-LFR_FSW-Desktop_Qt_5_11_2_GCC_64bit-Debug/
export DTEST=${DROOT}/GCOV_3.2.0.24

Chaque répertoire de test a son analyse gcov unitaire. On se met au debut de l arborescence de test
cd ${DTEST}
${SGCOV} -r ${DBUILD} -o /home/bouzid/LFR/GCOV_3.2.0.24/SVS-0053/ /home/bouzid/LFR/GCOV_3.2.0.24/SVS-0053/gcov_out_2018-11-13\ 08\:49\:49.309256.txt
puis on execute le script /home/bouzid/LFR/lance_rapport SVS-xxxx.

Les fichiers*.html seront crées dans le repertoire de test .

Ensuite pour obtenir l analyse complète, on se met dans le répertoire /home/bouzid/LFR/GCOV_3.2.0.24 et on lance la commande
../LFR_FSW/libgcov/gcovr.py -s ../LFR_FSW -o . -g /opt/rtems-4.10/bin/sparc-rtems-gcov .
ou bien le script /home/bouzid/LFR/lance_final

Liste des tests joués
SVS-0002 à SVS-0014 SVS-0018 à SVS-0022 SVS-0026 à SVS-0034 SVS-0038 SVS-0040 à SVS-0044 SVS-0053 à SVS-0057
SVS-0059 SVS-0064 à SVS-0065 SVS-0067 SVS-0069 SVS-0070 SVS-0071 SVS-0073 SVS-0074 SVS-0076 à SVS-0079 SVS-0081 à SVS-0083 SVS-0086 SVS-0089 à SVS-0091 SVS-0095 SVS-0096


Files

gcov.html (20.5 KB) gcov.html Veronique bouzid, 13/11/2018 11:18 AM
gcov.src_fsw_spacewire.c.html (466 KB) gcov.src_fsw_spacewire.c.html Veronique bouzid, 14/11/2018 11:51 AM
gcov.LFR_basic-parameters_basic_parameters.c.html (67.2 KB) gcov.LFR_basic-parameters_basic_parameters.c.html Veronique bouzid, 14/11/2018 12:17 PM
gcov.src_.._header_GscMemoryLPP.hpp.html (65.8 KB) gcov.src_.._header_GscMemoryLPP.hpp.html Veronique bouzid, 14/11/2018 12:17 PM
gcov.src_lfr_cpu_usage_report.c.html (25.4 KB) gcov.src_lfr_cpu_usage_report.c.html Veronique bouzid, 14/11/2018 12:18 PM
gcov.src_processing_avf0_prc0.c.html (135 KB) gcov.src_processing_avf0_prc0.c.html Veronique bouzid, 14/11/2018 12:18 PM
gcov.src_processing_avf1_prc1.c.html (130 KB) gcov.src_processing_avf1_prc1.c.html Veronique bouzid, 14/11/2018 12:18 PM
gcov.src_processing_avf2_prc2.c.html (106 KB) gcov.src_processing_avf2_prc2.c.html Veronique bouzid, 14/11/2018 12:18 PM
gcov.src_processing_fsw_processing.c.html (259 KB) gcov.src_processing_fsw_processing.c.html Veronique bouzid, 14/11/2018 12:18 PM
gcov.src_tc_acceptance.c.html (147 KB) gcov.src_tc_acceptance.c.html Veronique bouzid, 14/11/2018 12:18 PM
gcov.src_tc_handler.c.html (475 KB) gcov.src_tc_handler.c.html Veronique bouzid, 14/11/2018 12:18 PM
gcov.src_tc_load_dump_parameters.c.html (598 KB) gcov.src_tc_load_dump_parameters.c.html Veronique bouzid, 14/11/2018 12:18 PM
gcov.src_.._LFR_basic-parameters_basic_parameters.h.html (315 KB) gcov.src_.._LFR_basic-parameters_basic_parameters.h.html Veronique bouzid, 14/11/2018 12:21 PM
gcov.src_fsw_init.c.html (289 KB) gcov.src_fsw_init.c.html Veronique bouzid, 14/11/2018 12:21 PM
gcov.src_fsw_misc.c.html (313 KB) gcov.src_fsw_misc.c.html Veronique bouzid, 14/11/2018 12:21 PM
gcov.src_wf_handler.c.html (392 KB) gcov.src_wf_handler.c.html Veronique bouzid, 14/11/2018 12:22 PM
gcov.src_tm_lfr_tc_exe.c.html (158 KB) gcov.src_tm_lfr_tc_exe.c.html Veronique bouzid, 14/11/2018 12:22 PM
gcov.src_.._header_GscMemoryLPP.hpp.html (65.8 KB) gcov.src_.._header_GscMemoryLPP.hpp.html Veronique bouzid, 14/11/2018 12:23 PM

Related issues

Related to Task #3168: Livraison de 3.2.0.24 avec gcovClosedVeronique bouzid30/10/2018

Actions
Actions #1

Updated by Veronique bouzid about 6 years ago

  • Description updated (diff)
Actions #2

Updated by Veronique bouzid about 6 years ago


FIchier fsw_misc.c.

Les fonctions non atteintes
void timer_stop(unsigned char timer) ligne 87
rtems_isr watchdog_isr( rtems_vector_number vector ) ligne 116
void watchdog_stop(void) ligne 145
rtems_task scrubbing_task( rtems_task_argument unused ) ligne 569
void set_hk_lfr_ahb_correctable() // CRITICITY L ligne 1075

les lignes de code suivantes ne sont pas atteintes
isSynchronized = true; ligne 314
spare_status = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_6 ); ligne 332

dans le fonction void set_hk_lfr_sc_potential_flag( bool state )
ligne 840/841 non atteintes

dans la fonction void set_sy_lfr_watchdog_enabled( bool state )
ligne 868/869 non atteintes

Actions #3

Updated by Veronique bouzid about 6 years ago

  • Status changed from New to In Progress


Fichier fsw_processing.h

Dans la fonction ASM_reorganize_and_divide (ligne 265)
l instruction n est jamais atteinte (ligne 289)
averaged_spec_mat_reorganized[offsetASMReorganized ] = INIT_FLOAT;

Actions #4

Updated by Veronique bouzid about 6 years ago

Dans le fichier basic_parameters.h
dans la fonction BP1_set (ligne 65)
les instructions suivantes ne sont pas atteintes
lignes 129-130
exponent = expmin;
significand = 0.5; // min value that can be recorded
et
lignes 133-134
exponent = expmax;
significand = 1.0; // max value that can be recorded
et
lignes 180-181
exponent = expmin;
significand = 0.5; // min value that can be recorded
et
lignes 184-185
exponent = expmax;
significand = 1.0; // max value that can be recorded
et
lignes 358-359
exponent = expmax;
significand = 1.0; // max value that can be recorded

Dans la fonction BP2_set (ligne 534)
les instructions suivantes ne sont pas atteintes
lignes 780-781
exponent = expmin;
significand = 0.5; // min value that can be recorded

lignes 784-785
exponent = expmax;
significand = 1.0; // max value that can be recorded

lignes 870-871
lignes 874-875
lignes 916-917
lignes 920-921
lignes 961-962
lignes 965-966

Actions #5

Updated by Veronique bouzid about 6 years ago

fichier fsw_init.c
Dans la fonction Init (ligne 110)

ligne 302
status = rtems_event_send( Task_id[TASKID_SPIQ], SPW_LINKERR_EVENT );

Dans la fonction create_message_queues (ligne 796)
les lignes non atteintes ( erreur sur la creation de la queue de mesage
ret = status_recv; ligne 856
ret = status_send; ligne 860
ret = status_q_p0; ligne 864
ret = status_q_p1; ligne 868

Actions #6

Updated by Veronique bouzid about 6 years ago

Fichier fsw_spacewire.c
lignes non atteintes
Dans la fonction send_task (236)
lignes 355 356
spw_ioctl_send = (spw_ioctl_pkt_send*) incomingData;
status = ioctl( fdSPW, SPACEWIRE_IOCTRL_SEND, spw_ioctl_send );

Dans la fonction spacewire_several_connect_attemps (ligne 536)
ligne 570
i = SY_LFR_DPU_CONNECT_ATTEMPT;
SY_LFR_DPU_CONNECT_ATTEMPT = 3

Dans la fonction spacewire_set_NP (ligne 577)
ligne 594
*spwptr = *spwptr & SPW_BIT_NP_MASK;

Dans la fonction spacewire_set_RE (ligne 598)
ligne 617
*spwptr = *spwptr & SPW_BIT_RE_MASK;

Dans la fonction spacewire_get_last_error (ligne 672)
tous les tests liés aux erreurs (CODE_HEADER_CRC,CODE_DATA_CRC,CODE_EEP,CODE_CREDIT,
CODE_WRITE_SYNC, CODE_EARLY_EOP_EEP)

Dans la fonction check_timecode_and_previous_timecode_coherency (ligne 854)
ligne 881
ret = LFR_DEFAULT;
pour info, l analyse du code retour de cette fonction incrementera le champ HK_LFR_TIMECODE_ERRONEOUS.

Dans la fonction timecode_irq_handler (ligne 923)
ligne 977
rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_14 );

Dans la fonction timecode_timer_routine (ligne 981)
les lignes 1016 à 1020 ne sont pas atteintes.
Explication:
En fait ces lignes sont utilisées dans la phase de boot donc on ne le voit pas. La majorité des tests montrent que la premiere HK recue apres la sequence de boot montre que le champ HK_LFR_TIMECODE_MISSING=1 et que la derniere erreur tracée est décrite avec HK_LFR_LAST_ER_RID= et 42129 HK_LFR_LAST_ER_CODE=21

Dans la fonction spw_send_waveform_CWF (ligne 1118)
ligne 1196
ret = LFR_DEFAULT;

Dans la fonction spw_send_waveform_SWF (ligne 1203)
ligne 1285
ret = LFR_DEFAULT;

dans la fonction spw_send_waveform_CWF3_light
ligne 1365
ret = LFR_DEFAULT;

Actions #9

Updated by Veronique bouzid about 6 years ago

Pour le fichier GscMemoryLPP.hpp
on ne peut faire mieux.

Actions #10

Updated by Veronique bouzid about 6 years ago

FIchier fsw_processing.c

dans la fonction spectral_matrices_isr_f0 (ligne 88)
lignes non atteintes
lignes 102-104
spectral_matrix_regs->status = BIT_READY_0_1; // [0011]
status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_11 );
break;

ligne 118
status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 );

ligne 137
status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 );

Dans la fonction spectral_matrices_isr_f1 (ligne 148)
lignes 162-164
spectral_matrix_regs->status = BITS_STATUS_F1; // [1100]
status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_11 );
break;
ligne 178
status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 );
ligne 197
status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 );

Dans la fonction spectral_matrices_isr_f2 (ligne 208)
lignes 221-223
spectral_matrix_regs->status = BITS_STATUS_F2; // [0011 0000]
status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_11 );
break;
ligne 233
status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 );
ligne 245
status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_3 );

Dans la fonction spectral_matrix_isr_error_handler (ligne 253)
ligne 270
status_code = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_8 );

Dans la fonction getSID (ligne 571)
ligne 604
sid = 0;

Actions #11

Updated by Veronique bouzid about 6 years ago

FIchier tc_acceptance.c

Dans la fonction tc_parser (ligne 120)
ligne 179
status = WRONG_LEN_PKT;
Impossible à atteindre car le spacewire rejete les packet > 228 octets en amont de ce test.
CCSDS_TC_PKT_MAX_SIZE = 232

Dans la fonction tc_check_type_subtype (ligne 229)
ligne 277
status = ILL_SUBTYPE;
Impossible d atteindre car cette ligne qui correspond a un packet type qui vaut ni TC_TYPE_GEN ni TC_TYPE_TIME.
Comme la validation du type est faite avant la validation du sub-type, on ne rentre jamais dans ce cas.

Extrait de la fonction tc_parser()
if (status == CCSDS_TM_VALID) // CHECK THE TYPE {
status = tc_check_type( packetType );
}
if (status == CCSDS_TM_VALID) // CHECK THE SUBTYPE {
status = tc_check_type_subtype( packetType, packetSubtype );

Dans la fonction tc_check_length ligne (314)
ligne 460
status = ILL_SUBTYPE;

Impossible à atteindre car quand on entre dans cette fonction, le sub-type est valide.

Actions #12

Updated by Veronique bouzid about 6 years ago

Dans le fichier tc_handler.c

Dans la fonction actn_task (ligne 42)
ligne 100-101
close_action( &TC, result, queue_snd_id );
break;
Impossible à atteindre car TC_LFR_RESET est utilisée pour dumper la couverture GCOV.

Dans la fonction action_enter_mode (ligne 197)
ligne 269
status = LFR_EXE_ERROR;

Dans la fonction check_mode_transition (448)
ligne 506
status = LFR_DEFAULT;
Quand la fonction check_mode_transition est appelée, on est certain que le requestedmode est valide.

Dans la fonction enter_mode_normal (700)
ligne 761
status = RTEMS_UNSATISFIED;
Impossible de provoquer des erreurs RTEMS

Dans la fonction enter_mode_burst (767)
ligne 801
status = RTEMS_UNSATISFIED;
Impossible de provoquer des erreurs RTEMS

idem pour les fonctions enter_mode_sbm1 (ligne 807) et enter_mode_sbm2 (ligne 875)

Dans la fonction restart_science_tasks (ligne 943)
ligne 1828
status = RTEMS_UNSATISFIED;
Impossible de provoquer des erreurs RTEMS

Dans la fonction restart_asm_tasks (ligne 1034)
ligne 1093
status = RTEMS_UNSATISFIED;
Impossible de provoquer des erreurs RTEMS

Dans la fonction set_sm_irq_onError (ligne 1382)
ligne 1386
spectral_matrix_regs->config = spectral_matrix_regs->config | BIT_IRQ_ON_ERROR;
Le seul appel à cette fonction est fait par la fonction reset_spectral_matrix_regs
set_sm_irq_onError( 0 );
avec value =0 .
Donc normal que le code associé au test de value==1 ne soit pas activé.

Dans la fonction close_action (ligne 1623)
ligne 1655
send_tm_lfr_tc_exe_error( TC, queue_id );
Impossible de generer une LFR_EXE_ERROR

Actions #13

Updated by Veronique bouzid about 6 years ago

Fichier tm_lfr_tc_exe.c

La fonctiion send_tm_lfr_tc_exe_error (ligne 311) n est pas atteinte.
Impossible de generer cette TM_LFR_TC_EXE_ERROR.

Actions #14

Updated by Veronique bouzid about 6 years ago

Fichier wf_handler.c

La fonction getRingNodeToSendSWF (ligne 101) n a pas été atteinte
Aucun appel à cette fonction dans le code

La fonction set_wfp_delta_f1 (ligne 1238) n a pas été atteinte
Aucun appel à cette fonction dans le code

Dans la fonction waveforms_isr_f3 (ligne 133)
ligne 158
spare_status = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_0 );

Dans la fonction waveforms_isr_burst (ligne 164)
ligne 181
spare_status = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_0 );
ligne 193
spare_status = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_0 );

Dans la fonction waveforms_isr (ligne 284)
ligne 314
spare_status = rtems_event_send( Task_id[TASKID_DUMB], RTEMS_EVENT_0 );

Dans la fonction send_waveform_CWF3_light (ligne 681)
ligne 724
ret = LFR_DEFAULT;
Impossible de generer une erreur RTEMS

Dans la fonction compute_acquisition_time (ligne 730)
ligne 789
deltaT = 0.;

Dans la fonction build_snapshot_from_ring (ligne 804)
lignes 857-860
acquisitionTime_asLong = centerTime_asLong;
nb_ring_nodes = 0;
frequency_asLong = FREQ_F2;
nbTicksPerSample_asLong = TICKS_PER_T2;
break;

ligne 908
nbSamplesPart1_asLong = 0;

Dans la fonction set_wfp_burst_enable_register (ligne 1175)
ligne 1199
waveform_picker_regs->run_burst_enable = INIT_CHAR; // [0000 0000] no burst enabled, no waveform enabled

Dans la fonction increment_seq_counter_source_id (ligne 1286)
ligne 1337
sequence_cnt = (unsigned short *) NULL;
Aucune idée pour tester cela, cela signifierait que le source_id d'une TM soit erronée....

Actions #15

Updated by Veronique bouzid about 6 years ago

  • Related to Task #3168: Livraison de 3.2.0.24 avec gcov added
Actions #16

Updated by Veronique bouzid about 6 years ago

Ce rapport est celui inclus dans le verification report (Chapitre 6).

Actions #17

Updated by bruno katra over 5 years ago

  • Status changed from In Progress to Closed

Änalyse GCOV livrée dans DP 3.2

Actions

Also available in: Atom PDF