@@ -625,6 +625,7 @@ class Drec_extra : public Drec_base {
625625 trec.add_field (1005 ,8 ); // myMInf
626626 trec.add_field (1006 ,8 ); // myNan
627627 trec.add_field (56 , 6 ); // sourceMacAddress
628+ trec.add_field (1007 , ipfix_trec::SIZE_VAR); // myOctetArray
628629 trec.add_field (95 ,10 ); // applicationId
629630
630631 // Prepare an IPFIX Data Record
@@ -655,6 +656,7 @@ class Drec_extra : public Drec_base {
655656 drec.append_float (VALUE_MY_MINF,8 );
656657 drec.append_float (VALUE_MY_NAN, 8 );
657658 drec.append_mac (VALUE_SRC_MAC);
659+ drec.append_octets (VALUE_MY_OCTETS.c_str (), (uint16_t ) 6 , true );
658660 drec.append_octets (VALUE_APP_ID.c_str (),(uint16_t )10 , false );
659661
660662 register_template (trec);
@@ -663,7 +665,7 @@ class Drec_extra : public Drec_base {
663665
664666 std::string VALUE_SRC_IP4 = " 127.0.0.1" ;
665667 std::string VALUE_SAMP_NAME1 = " \xc2\xa1\xc3\xbd " ;
666- std::string VALUE_SAMP_NAME2 = " \xFF\xEE " ; // invalid characterss
668+ std::string VALUE_SAMP_NAME2 = " \xFF\xEE " ; // invalid characters
667669 std::string VALUE_SAMP_NAME3 = " \xef\xbf\xa6 " ; // FULLWIDTH WON SIGN (3 bytes)
668670 std::string VALUE_SAMP_NAME4 = " \xf0\x90\x8e\xa0 " ; // OLD PERSIAN SIGN A (4 bytes)
669671 std::string VALUE_DST_IP4 = " 8.8.8.8" ;
@@ -686,11 +688,13 @@ class Drec_extra : public Drec_base {
686688 double VALUE_MY_FLOAT32 = 0.5678 ;
687689 signed VALUE_MY_INT = 1006 ;
688690 std::string VALUE_SRC_MAC = " 01:12:1F:13:11:8A" ;
691+ std::string VALUE_MY_OCTETS = " \x1E\xA3\xAB\xAD\xC0\xDE " ; // 33688308793566
692+ uint64_t VALUE_MY_OCTETS_NUM = 33688308793566ULL ;
689693 std::string VALUE_APP_ID = " \x33\x23\x24\x30\x31\x32\x34\x35\x36\x37 " ; // 3#$0124567
690694
691695};
692696
693- // Test for diferent data types
697+ // Test of different data types
694698TEST_F (Drec_extra, testTypes)
695699{
696700 constexpr size_t BSIZE = 10U ;
@@ -706,12 +710,12 @@ TEST_F(Drec_extra, testTypes)
706710 EXPECT_EQ ((double )cfg[" iana:myFloat32" ], VALUE_MY_FLOAT32);
707711 EXPECT_EQ (cfg[" iana:myBool" ], VALUE_MY_BOOL);
708712 EXPECT_EQ ((signed )cfg[" iana:myInt" ], VALUE_MY_INT);
713+ EXPECT_EQ (cfg[" iana:myOctetArray" ], VALUE_MY_OCTETS_NUM); // interpreted as number
709714 EXPECT_EQ (cfg[" iana:sourceMacAddress" ], VALUE_SRC_MAC);
710-
711715 free (buff);
712716}
713717
714- // Test for non printable characters (FDS_CD2J_NON_PRINTABLE)
718+ // Test of non printable characters (FDS_CD2J_NON_PRINTABLE)
715719TEST_F (Drec_extra, nonPrintable)
716720{
717721 constexpr size_t BSIZE = 10U ;
@@ -728,7 +732,7 @@ TEST_F(Drec_extra, nonPrintable)
728732 free (buff);
729733}
730734
731- // Test for eskaping characters
735+ // Test of escaping characters
732736TEST_F (Drec_extra, printableChar)
733737{
734738 constexpr size_t BSIZE = 10U ;
@@ -746,7 +750,7 @@ TEST_F(Drec_extra, printableChar)
746750 free (buff);
747751}
748752
749- // Test for NAN, +INF, -INF values
753+ // Test of NAN, +INF, -INF values
750754TEST_F (Drec_extra, extraValue)
751755{
752756 constexpr size_t BSIZE = 5U ;
@@ -769,7 +773,7 @@ TEST_F(Drec_extra, extraValue)
769773 free (buff);
770774}
771775
772- // Test for other ASCII characters
776+ // Test of other ASCII characters
773777TEST_F (Drec_extra, otherChar)
774778{
775779 constexpr size_t BSIZE = 5U ;
@@ -795,7 +799,7 @@ TEST_F(Drec_extra, otherChar)
795799 free (buff);
796800}
797801
798- // Test for other MAC adress
802+ // Test of other MAC address
799803TEST_F (Drec_extra, macAdr)
800804{
801805 constexpr size_t BSIZE = 5U ;
@@ -813,19 +817,20 @@ TEST_F(Drec_extra, macAdr)
813817 free (buff);
814818}
815819
816- // Test for octet values
820+ // Test of octet values (FDS_CD2J_OCTETS_NOINT)
817821TEST_F (Drec_extra, octVal)
818822{
819823 constexpr size_t BSIZE = 5U ;
820824 char * buff = (char *) malloc (BSIZE);
821- uint32_t flags = FDS_CD2J_ALLOW_REALLOC;
825+ uint32_t flags = FDS_CD2J_ALLOW_REALLOC | FDS_CD2J_OCTETS_NOINT ;
822826 size_t buff_size = BSIZE;
823827
824828 int rc = fds_drec2json (&m_drec, flags, m_iemgr.get (), &buff, &buff_size);
825829 ASSERT_GT (rc, 0 );
826830 EXPECT_NE (buff_size, BSIZE);
827831 Config cfg = parse_string (buff, JSON, " drec2json" );
828832 EXPECT_EQ ((std::string)cfg[" iana:applicationId" ], " 0x33232430313234353637" );
833+ EXPECT_EQ ((std::string)cfg[" iana:myOctetArray" ], " 0x1EA3ABADC0DE" );
829834
830835 free (buff);
831836}
0 commit comments