LCOV - code coverage report
Current view: top level - test - main.c (source / functions) Hit Total Coverage
Test: lcov.info Lines: 129 129 100.0 %
Date: 2024-09-16 20:15:30 Functions: 85 85 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :    Copyright (c) 2021 Fraunhofer AISEC. See the COPYRIGHT
       3                 :            :    file at the top-level directory of this distribution.
       4                 :            : 
       5                 :            :    Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
       6                 :            :    http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
       7                 :            :    <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
       8                 :            :    option. This file may not be copied, modified, or distributed
       9                 :            :    except according to those terms.
      10                 :            : */
      11                 :            : 
      12                 :            : #include <zephyr/kernel.h>
      13                 :            : #include <zephyr/ztest.h>
      14                 :            : #include "edhoc_integration_tests/edhoc_tests.h"
      15                 :            : #include "oscore_tests.h"
      16                 :            : 
      17                 :            : #define TEST_EDHOC_EXPORTER 1
      18                 :            : #define TEST_INITIATOR_RESPONDER_INTERACTION1 2
      19                 :            : #define TEST_INITIATOR_RESPONDER_INTERACTION2 3
      20                 :            : #define T1_OSCORE_CLIENT_REQUEST_RESPONSE 4
      21                 :            : #define T2_OSCORE_SERVER_REQUEST_RESPONSE 5
      22                 :            : #define T3_OSCORE_CLIENT_REQUEST 6
      23                 :            : #define T4_OSCORE_SERVER_KEY_DERIVATION 7
      24                 :            : #define T5_OSCORE_CLIENT_REQUEST 8
      25                 :            : #define T6_OSCORE_SERVER_KEY_DERIVATION 9
      26                 :            : #define T8_OSCORE_SERVER_RESPONSE_SIMPLE_ACK 10
      27                 :            : #define T9_OSCORE_CLIENT_SERVER_OBSERVE 11
      28                 :            : #define T10_OSCORE_CLIENT_SERVER_AFTER_REBOOT 12
      29                 :            : #define T100_INNER_OUTER_OPTION_SPLIT__NO_SPECIAL_OPTIONS 13
      30                 :            : #define T101_INNER_OUTER_OPTION_SPLIT__WITH_OBSERVE_NOTIFICATION 14
      31                 :            : #define T102_INNER_OUTER_OPTION_SPLIT__WITH_OBSERVE_REGISTRATION 15
      32                 :            : #define T103_OSCORE_PKG_GENERATE__REQUEST_WITH_OBSERVE_REGISTRATION 16
      33                 :            : #define T104_OSCORE_PKG_GENERATE__REQUEST_WITH_OBSERVE_NOTIFICATION 17
      34                 :            : #define T105_INNER_OUTER_OPTION_SPLIT__TOO_MANY_OPTIONS 18
      35                 :            : #define T106_OSCORE_OPTION_GENERATE_NO_PIV 19
      36                 :            : #define T200_OPTIONS_SERIALIZE_DESERIALIZE 20
      37                 :            : #define T201_COAP_SERIALIZE_DESERIALIZE 21
      38                 :            : #define T202_OPTIONS_DESERIALIZE_CORNER_CASES 22
      39                 :            : #define T300_OSCORE_OPTION_PARSER_NO_PIV 23
      40                 :            : #define T301_OSCORE_OPTION_PARSER_WRONG_N 24
      41                 :            : #define T302_OSCORE_OPTION_PARSER_NO_KID 25
      42                 :            : #define T303_OPTIONS_REORDER 26
      43                 :            : #define T400_IS_CLASS_E 27
      44                 :            : #define T401_CACHE_ECHO_VAL 28
      45                 :            : #define T402_ECHO_VAL_IS_FRESH 29
      46                 :            : #define T500_OSCORE_CONTEXT_INIT_CORNER_CASES 30
      47                 :            : #define T501_PIV2SSN 31
      48                 :            : #define T502_SSN2PIV 32
      49                 :            : #define T503_DERIVE_CORNER_CASE 33
      50                 :            : #define T600_SERVER_REPLAY_INIT_TEST 34
      51                 :            : #define T601_SERVER_REPLAY_REINIT_TEST 35
      52                 :            : #define T602_SERVER_REPLAY_CHECK_AT_START_TEST 36
      53                 :            : #define T603_SERVER_REPLAY_CHECK_IN_PROGRESS_TEST 37
      54                 :            : #define T604_SERVER_REPLAY_INSERT_ZERO_TEST 38
      55                 :            : #define T605_SERVER_REPLAY_INSERT_TEST 39
      56                 :            : #define T606_SERVER_REPLAY_STANDARD_SCENARIO_TEST 40
      57                 :            : #define T800_OSCORE_LATENCY_TEST 41
      58                 :            : #define TEST_EDHOC_INITIATOR_X509_X5T_RFC9529 42
      59                 :            : #define TEST_EDHOC_RESPONDER_X509_X5T_RFC9529 43
      60                 :            : 
      61                 :            : // if this macro is defined all tests will be executed
      62                 :            :  #define EXECUTE_ALL_TESTS
      63                 :            : 
      64                 :            : // in order to execute only a specific tes set this macro to a specific
      65                 :            : // test macro and comment out EXECUTE_ALL_TESTS
      66                 :            : #define EXECUTE_ONLY_TEST TEST_EDHOC_RESPONDER_X509_X5T_RFC9529
      67                 :            : 
      68                 :            : /**
      69                 :            :  * @brief       This function allows to skip a given test if only one other test 
      70                 :            :  *              needs to be executed.
      71                 :            :  * 
      72                 :            :  * @param test_name_macro 
      73                 :            :  */
      74                 :         42 : static void skip(int test_name_macro, void (*test_function)())
      75                 :            : {
      76                 :            : #if !defined EXECUTE_ALL_TESTS
      77                 :            :         if (EXECUTE_ONLY_TEST == test_name_macro) {
      78                 :            :                 test_function();
      79                 :            :         } else {
      80                 :            :                 ztest_test_skip();
      81                 :            :         }
      82                 :            : #else
      83                 :         42 :         test_function();
      84                 :            : #endif
      85                 :         42 : }
      86                 :            : 
      87                 :            : ZTEST_SUITE(uoscore_uedhoc, NULL, NULL, NULL, NULL, NULL);
      88                 :            : 
      89                 :          2 : ZTEST(uoscore_uedhoc, test_edhoc_exporter)
      90                 :            : {
      91                 :          1 :         skip(TEST_EDHOC_EXPORTER, test_exporter);
      92                 :          1 : };
      93                 :            : 
      94                 :          2 : ZTEST(uoscore_uedhoc, test_initiator_responder_interaction1)
      95                 :            : {
      96                 :          1 :         skip(TEST_INITIATOR_RESPONDER_INTERACTION1,
      97                 :            :              t_initiator_responder_interaction1);
      98                 :          1 : };
      99                 :            : 
     100                 :          2 : ZTEST(uoscore_uedhoc, test_initiator_responder_interaction2)
     101                 :            : {
     102                 :          1 :         skip(TEST_INITIATOR_RESPONDER_INTERACTION2,
     103                 :            :              t_initiator_responder_interaction2);
     104                 :          1 : };
     105                 :            : 
     106                 :          2 : ZTEST(uoscore_uedhoc, t1_oscore)
     107                 :            : {
     108                 :          1 :         skip(T1_OSCORE_CLIENT_REQUEST_RESPONSE,
     109                 :            :              t1_oscore_client_request_response);
     110                 :          1 : }
     111                 :            : 
     112                 :          2 : ZTEST(uoscore_uedhoc, t2_oscore)
     113                 :            : {
     114                 :          1 :         skip(T2_OSCORE_SERVER_REQUEST_RESPONSE,
     115                 :            :              t2_oscore_server_request_response);
     116                 :          1 : }
     117                 :            : 
     118                 :          2 : ZTEST(uoscore_uedhoc, t3_oscore)
     119                 :            : {
     120                 :          1 :         skip(T3_OSCORE_CLIENT_REQUEST, t3_oscore_client_request);
     121                 :          1 : }
     122                 :            : 
     123                 :          2 : ZTEST(uoscore_uedhoc, t4_oscore)
     124                 :            : {
     125                 :          1 :         skip(T4_OSCORE_SERVER_KEY_DERIVATION, t4_oscore_server_key_derivation);
     126                 :          1 : }
     127                 :            : 
     128                 :          2 : ZTEST(uoscore_uedhoc, t5_oscore)
     129                 :            : {
     130                 :          1 :         skip(T5_OSCORE_CLIENT_REQUEST, t5_oscore_client_request);
     131                 :          1 : }
     132                 :            : 
     133                 :          2 : ZTEST(uoscore_uedhoc, t6_oscore)
     134                 :            : {
     135                 :          1 :         skip(T6_OSCORE_SERVER_KEY_DERIVATION, t6_oscore_server_key_derivation);
     136                 :          1 : }
     137                 :            : 
     138                 :          2 : ZTEST(uoscore_uedhoc, t8_oscore)
     139                 :            : {
     140                 :          1 :         skip(T8_OSCORE_SERVER_RESPONSE_SIMPLE_ACK,
     141                 :            :              t8_oscore_server_response_simple_ack);
     142                 :          1 : }
     143                 :            : 
     144                 :          2 : ZTEST(uoscore_uedhoc, t9_oscore)
     145                 :            : {
     146                 :          1 :         skip(T9_OSCORE_CLIENT_SERVER_OBSERVE, t9_oscore_client_server_observe);
     147                 :          1 : }
     148                 :            : 
     149                 :          2 : ZTEST(uoscore_uedhoc, t10_oscore)
     150                 :            : {
     151                 :          1 :         skip(T10_OSCORE_CLIENT_SERVER_AFTER_REBOOT,
     152                 :            :              t10_oscore_client_server_after_reboot);
     153                 :          1 : }
     154                 :            : 
     155                 :          2 : ZTEST(uoscore_uedhoc, t100_oscore)
     156                 :            : {
     157                 :          1 :         skip(T100_INNER_OUTER_OPTION_SPLIT__NO_SPECIAL_OPTIONS,
     158                 :            :              t100_inner_outer_option_split__no_special_options);
     159                 :          1 : }
     160                 :            : 
     161                 :          2 : ZTEST(uoscore_uedhoc, t101_oscore)
     162                 :            : {
     163                 :          1 :         skip(T101_INNER_OUTER_OPTION_SPLIT__WITH_OBSERVE_NOTIFICATION,
     164                 :            :              t101_inner_outer_option_split__with_observe_notification);
     165                 :          1 : }
     166                 :            : 
     167                 :          2 : ZTEST(uoscore_uedhoc, t102_oscore)
     168                 :            : {
     169                 :          1 :         skip(T102_INNER_OUTER_OPTION_SPLIT__WITH_OBSERVE_REGISTRATION,
     170                 :            :              t102_inner_outer_option_split__with_observe_registration);
     171                 :          1 : }
     172                 :            : 
     173                 :          2 : ZTEST(uoscore_uedhoc, t103_oscore)
     174                 :            : {
     175                 :          1 :         skip(T103_OSCORE_PKG_GENERATE__REQUEST_WITH_OBSERVE_REGISTRATION,
     176                 :            :              t103_oscore_pkg_generate__request_with_observe_registration);
     177                 :          1 : }
     178                 :            : 
     179                 :          2 : ZTEST(uoscore_uedhoc, t104_oscore)
     180                 :            : {
     181                 :          1 :         skip(T104_OSCORE_PKG_GENERATE__REQUEST_WITH_OBSERVE_NOTIFICATION,
     182                 :            :              t104_oscore_pkg_generate__request_with_observe_notification);
     183                 :          1 : }
     184                 :            : 
     185                 :          2 : ZTEST(uoscore_uedhoc, t105_oscore)
     186                 :            : {
     187                 :          1 :         skip(T105_INNER_OUTER_OPTION_SPLIT__TOO_MANY_OPTIONS,
     188                 :            :              t105_inner_outer_option_split__too_many_options);
     189                 :          1 : }
     190                 :            : 
     191                 :          2 : ZTEST(uoscore_uedhoc, t106_oscore)
     192                 :            : {
     193                 :          1 :         skip(T106_OSCORE_OPTION_GENERATE_NO_PIV,
     194                 :            :              t106_oscore_option_generate_no_piv);
     195                 :          1 : }
     196                 :            : 
     197                 :          2 : ZTEST(uoscore_uedhoc, t200_oscore)
     198                 :            : {
     199                 :          1 :         skip(T200_OPTIONS_SERIALIZE_DESERIALIZE,
     200                 :            :              t200_options_serialize_deserialize);
     201                 :          1 : }
     202                 :            : 
     203                 :          2 : ZTEST(uoscore_uedhoc, t201_oscore)
     204                 :            : {
     205                 :          1 :         skip(T201_COAP_SERIALIZE_DESERIALIZE, t201_coap_serialize_deserialize);
     206                 :          1 : }
     207                 :            : 
     208                 :          2 : ZTEST(uoscore_uedhoc, t202_oscore)
     209                 :            : {
     210                 :          1 :         skip(T202_OPTIONS_DESERIALIZE_CORNER_CASES,
     211                 :            :              t202_options_deserialize_corner_cases);
     212                 :          1 : }
     213                 :            : 
     214                 :          2 : ZTEST(uoscore_uedhoc, t300_oscore)
     215                 :            : {
     216                 :          1 :         skip(T300_OSCORE_OPTION_PARSER_NO_PIV,
     217                 :            :              t300_oscore_option_parser_no_piv);
     218                 :          1 : }
     219                 :            : 
     220                 :          2 : ZTEST(uoscore_uedhoc, t301_oscore)
     221                 :            : {
     222                 :          1 :         skip(T301_OSCORE_OPTION_PARSER_WRONG_N,
     223                 :            :              t301_oscore_option_parser_wrong_n);
     224                 :          1 : }
     225                 :            : 
     226                 :          2 : ZTEST(uoscore_uedhoc, t302_oscore)
     227                 :            : {
     228                 :          1 :         skip(T302_OSCORE_OPTION_PARSER_NO_KID,
     229                 :            :              t302_oscore_option_parser_no_kid);
     230                 :          1 : }
     231                 :            : 
     232                 :          2 : ZTEST(uoscore_uedhoc, t303_oscore)
     233                 :            : {
     234                 :          1 :         skip(T303_OPTIONS_REORDER, t303_options_reorder);
     235                 :          1 : }
     236                 :            : 
     237                 :          2 : ZTEST(uoscore_uedhoc, t400_oscore)
     238                 :            : {
     239                 :          1 :         skip(T400_IS_CLASS_E, t400_is_class_e);
     240                 :          1 : }
     241                 :            : 
     242                 :          2 : ZTEST(uoscore_uedhoc, t401_oscore)
     243                 :            : {
     244                 :          1 :         skip(T401_CACHE_ECHO_VAL, t401_cache_echo_val);
     245                 :          1 : }
     246                 :            : 
     247                 :          2 : ZTEST(uoscore_uedhoc, t402_oscore)
     248                 :            : {
     249                 :          1 :         skip(T402_ECHO_VAL_IS_FRESH, t402_echo_val_is_fresh);
     250                 :          1 : }
     251                 :            : 
     252                 :          2 : ZTEST(uoscore_uedhoc, t500_oscore)
     253                 :            : {
     254                 :          1 :         skip(T500_OSCORE_CONTEXT_INIT_CORNER_CASES,
     255                 :            :              t500_oscore_context_init_corner_cases);
     256                 :          1 : }
     257                 :            : 
     258                 :          2 : ZTEST(uoscore_uedhoc, t501_oscore)
     259                 :            : {
     260                 :          1 :         skip(T501_PIV2SSN, t501_piv2ssn);
     261                 :          1 : }
     262                 :            : 
     263                 :          2 : ZTEST(uoscore_uedhoc, t502_oscore)
     264                 :            : {
     265                 :          1 :         skip(T502_SSN2PIV, t502_ssn2piv);
     266                 :          1 : }
     267                 :            : 
     268                 :          2 : ZTEST(uoscore_uedhoc, t503_oscore)
     269                 :            : {
     270                 :          1 :         skip(T503_DERIVE_CORNER_CASE, t503_derive_corner_case);
     271                 :          1 : }
     272                 :            : 
     273                 :          2 : ZTEST(uoscore_uedhoc, t600_oscore)
     274                 :            : {
     275                 :          1 :         skip(T600_SERVER_REPLAY_INIT_TEST, t600_server_replay_init_test);
     276                 :          1 : }
     277                 :            : 
     278                 :          2 : ZTEST(uoscore_uedhoc, t601_oscore)
     279                 :            : {
     280                 :          1 :         skip(T601_SERVER_REPLAY_REINIT_TEST, t601_server_replay_reinit_test);
     281                 :          1 : }
     282                 :            : 
     283                 :          2 : ZTEST(uoscore_uedhoc, t602_oscore)
     284                 :            : {
     285                 :          1 :         skip(T602_SERVER_REPLAY_CHECK_AT_START_TEST,
     286                 :            :              t602_server_replay_check_at_start_test);
     287                 :          1 : }
     288                 :            : 
     289                 :          2 : ZTEST(uoscore_uedhoc, t603_oscore)
     290                 :            : {
     291                 :          1 :         skip(T603_SERVER_REPLAY_CHECK_IN_PROGRESS_TEST,
     292                 :            :              t603_server_replay_check_in_progress_test);
     293                 :          1 : }
     294                 :            : 
     295                 :          2 : ZTEST(uoscore_uedhoc, t604_oscore)
     296                 :            : {
     297                 :          1 :         skip(T604_SERVER_REPLAY_INSERT_ZERO_TEST,
     298                 :            :              t604_server_replay_insert_zero_test);
     299                 :          1 : }
     300                 :            : 
     301                 :          2 : ZTEST(uoscore_uedhoc, t605_oscore)
     302                 :            : {
     303                 :          1 :         skip(T605_SERVER_REPLAY_INSERT_TEST, t605_server_replay_insert_test);
     304                 :          1 : }
     305                 :            : 
     306                 :          2 : ZTEST(uoscore_uedhoc, t606_oscore)
     307                 :            : {
     308                 :          1 :         skip(T606_SERVER_REPLAY_STANDARD_SCENARIO_TEST,
     309                 :            :              t606_server_replay_standard_scenario_test);
     310                 :          1 : }
     311                 :            : 
     312                 :          2 : ZTEST(uoscore_uedhoc, test_edhoc_initiator_x509_x5t_rfc9529)
     313                 :            : {
     314                 :          1 :         skip(TEST_EDHOC_INITIATOR_X509_X5T_RFC9529,
     315                 :            :              test_edhoc_initiator_x509_x5t_rfc9529);
     316                 :          1 : }
     317                 :            : 
     318                 :          2 : ZTEST(uoscore_uedhoc, test_edhoc_responder_x509_x5t_rfc9529)
     319                 :            : {
     320                 :          1 :         skip(TEST_EDHOC_RESPONDER_X509_X5T_RFC9529,
     321                 :            :              test_edhoc_responder_x509_x5t_rfc9529);
     322                 :          1 : }
     323                 :            : 
     324                 :            : /*
     325                 :            :  * In order to measure the latency of coap2oscore, oscore2coap, 
     326                 :            :  * edhoc_responder_run, edhoc_initiator_run you need one of the supported boards 
     327                 :            :  * by Zephyr OS, see https://docs.zephyrproject.org/latest/boards/index.html
     328                 :            :  * Make sure that MEASURE_LATENCY_ON is enabled in CMakeLists.txt
     329                 :            :  * Build flash the test project for your board e.g.,
     330                 :            :  * west build -b=nrf9160dk_nrf9160; west flash.
     331                 :            :  * make also sure that DEBUG_PRINT is disabled
     332                 :            :  */
     333                 :            : #ifdef MEASURE_LATENCY_ON
     334                 :            : ZTEST(uoscore_uedhoc, t800_oscore)
     335                 :            : {
     336                 :            :         skip(T800_OSCORE_LATENCY_TEST, t800_oscore_latency_test);
     337                 :            : }
     338                 :            : #endif /*MEASURE_LATENCY_ON*/

Generated by: LCOV version 1.14