From patchwork Wed Sep 21 00:49:30 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arne Schwabe X-Patchwork-Id: 2782 Return-Path: Delivered-To: patchwork@openvpn.net Delivered-To: patchwork@openvpn.net Received: from director12.mail.ord1d.rsapps.net ([172.27.255.58]) by backend30.mail.ord1d.rsapps.net with LMTP id OMnVFITsKmPgPgAAIUCqbw (envelope-from ) for ; Wed, 21 Sep 2022 06:50:44 -0400 Received: from proxy2.mail.iad3a.rsapps.net ([172.27.255.58]) by director12.mail.ord1d.rsapps.net with LMTP id uMe8E4TsKmO5aAAAIasKDg (envelope-from ) for ; Wed, 21 Sep 2022 06:50:44 -0400 Received: from smtp32.gate.iad3a ([172.27.255.58]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) by proxy2.mail.iad3a.rsapps.net with LMTPS id 4LbLC4TsKmPteQAABcWvHw (envelope-from ) for ; Wed, 21 Sep 2022 06:50:44 -0400 X-Spam-Threshold: 95 X-Spam-Score: 0 X-Spam-Flag: NO X-Virus-Scanned: OK X-Orig-To: openvpnslackdevel@openvpn.net X-Originating-Ip: [216.105.38.7] Authentication-Results: smtp32.gate.iad3a.rsapps.net; iprev=pass policy.iprev="216.105.38.7"; spf=pass smtp.mailfrom="openvpn-devel-bounces@lists.sourceforge.net" smtp.helo="lists.sourceforge.net"; dkim=fail (signature verification failed) header.d=sourceforge.net; dkim=fail (signature verification failed) header.d=sf.net; dmarc=none (p=nil; dis=none) header.from=rfc2549.org X-Suspicious-Flag: YES X-Classification-ID: 3d269d5e-399b-11ed-8cb6-5254001741cc-1-1 Received: from [216.105.38.7] ([216.105.38.7:57414] helo=lists.sourceforge.net) by smtp32.gate.iad3a.rsapps.net (envelope-from ) (ecelerity 4.2.38.62370 r(:)) with ESMTPS (cipher=DHE-RSA-AES256-GCM-SHA384) id BB/44-11881-38CEA236; Wed, 21 Sep 2022 06:50:43 -0400 Received: from [127.0.0.1] (helo=sfs-ml-2.v29.lw.sourceforge.com) by sfs-ml-2.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1oaxId-0004F8-Ip; Wed, 21 Sep 2022 10:49:51 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-2.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1oaxIa-0004El-SF for openvpn-devel@lists.sourceforge.net; Wed, 21 Sep 2022 10:49:48 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-Id:Date:Subject:To:From:Sender:Reply-To:Cc:Content-Type: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=rxO2hSDNXo2IR1wzLxxrfskulA4nedIAclr+TfRVboc=; b=D409SCfj0lrNsAfhcwgrvk9bn1 IP7HoTjXaQ6sdvPCszr4LIZqM+ClRl3OATR1IEKetuFXqMOBnLXiW3QJiTGqux9AhTc4eBqTS6TY4 ARasdy6CxmTdpz84FqkJtgjTEmKVTqm2A+pYsT0wL3nJkjbFAsCyIbivF7BiTVZp2wpM=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-Id: Date:Subject:To:From:Sender:Reply-To:Cc:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=rxO2hSDNXo2IR1wzLxxrfskulA4nedIAclr+TfRVboc=; b=UIXfj37XUWpLFySm5rEdlzn6SR tGMtvA3+hw0cc675IygO12jNo7tmSD3ZS++bK9cnieE2XJiShlg/pl1QyNgdq0WwUWl+2Z/oxnmFO JSlLDg7TnMPuTITgdSObct7u3MbCtA1jqiUpxbkMbO8e4wcFf6u0wIwuWKiUiyaiJF0o=; Received: from mail.blinkt.de ([192.26.174.232]) by sfi-mx-1.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.95) id 1oaxIW-00FNip-Bx for openvpn-devel@lists.sourceforge.net; Wed, 21 Sep 2022 10:49:48 +0000 Received: from kamera.blinkt.de ([2001:638:502:390:20c:29ff:fec8:535c]) by mail.blinkt.de with smtp (Exim 4.95 (FreeBSD)) (envelope-from ) id 1oaxII-000IOm-RI for openvpn-devel@lists.sourceforge.net; Wed, 21 Sep 2022 12:49:30 +0200 Received: (nullmailer pid 3452321 invoked by uid 10006); Wed, 21 Sep 2022 10:49:30 -0000 From: Arne Schwabe To: openvpn-devel@lists.sourceforge.net Date: Wed, 21 Sep 2022 12:49:30 +0200 Message-Id: <20220921104930.3452270-3-arne@rfc2549.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220921104930.3452270-1-arne@rfc2549.org> References: <20220921104930.3452270-1-arne@rfc2549.org> MIME-Version: 1.0 X-Spam-Report: Spam detection software, running on the system "util-spamd-1.v13.lw.sourceforge.com", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Patch v4: rebase Signed-off-by: Arne Schwabe --- tests/unit_tests/openvpn/Makefile.am | 5 +- tests/unit_tests/openvpn/mock_get_random.c | 10 ++++ tests/unit_tests/openvpn/test_packet_id.c | 55 +++++ [...] Content analysis details: (0.3 points, 6.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [URIs: makefile.am] 0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different 0.0 SPF_NONE SPF: sender does not publish an SPF Record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-Headers-End: 1oaxIW-00FNip-Bx Subject: [Openvpn-devel] [PATCH v4 3/3] Add unit test for reliable_get_num_output_sequenced_available X-BeenThere: openvpn-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: openvpn-devel-bounces@lists.sourceforge.net X-getmail-retrieved-from-mailbox: Inbox Patch v4: rebase Signed-off-by: Arne Schwabe Acked-By: Frank Lichtenheld --- tests/unit_tests/openvpn/Makefile.am | 5 +- tests/unit_tests/openvpn/mock_get_random.c | 10 ++++ tests/unit_tests/openvpn/test_packet_id.c | 55 ++++++++++++++++++++++ 3 files changed, 69 insertions(+), 1 deletion(-) diff --git a/tests/unit_tests/openvpn/Makefile.am b/tests/unit_tests/openvpn/Makefile.am index 65cf9549c..c7846f3e6 100644 --- a/tests/unit_tests/openvpn/Makefile.am +++ b/tests/unit_tests/openvpn/Makefile.am @@ -61,7 +61,10 @@ packet_id_testdriver_SOURCES = test_packet_id.c mock_msg.c mock_msg.h \ $(openvpn_srcdir)/buffer.c \ $(openvpn_srcdir)/otime.c \ $(openvpn_srcdir)/packet_id.c \ - $(openvpn_srcdir)/platform.c + $(openvpn_srcdir)/platform.c \ + $(openvpn_srcdir)/reliable.c \ + $(openvpn_srcdir)/session_id.c + pkt_testdriver_CFLAGS = @TEST_CFLAGS@ \ -I$(openvpn_includedir) -I$(compat_srcdir) -I$(openvpn_srcdir) diff --git a/tests/unit_tests/openvpn/mock_get_random.c b/tests/unit_tests/openvpn/mock_get_random.c index d0d2574ae..787b5e33e 100644 --- a/tests/unit_tests/openvpn/mock_get_random.c +++ b/tests/unit_tests/openvpn/mock_get_random.c @@ -26,6 +26,7 @@ #include #include #include +#include #include unsigned long @@ -34,3 +35,12 @@ get_random(void) /* rand() is not very random, but it's C99 and this is just for testing */ return rand(); } + +void +prng_bytes(uint8_t *output, int len) +{ + for (int i = 0; i < len; i++) + { + output[i] = rand(); + } +} diff --git a/tests/unit_tests/openvpn/test_packet_id.c b/tests/unit_tests/openvpn/test_packet_id.c index a3d4db285..c610d9727 100644 --- a/tests/unit_tests/openvpn/test_packet_id.c +++ b/tests/unit_tests/openvpn/test_packet_id.c @@ -36,6 +36,7 @@ #include #include "packet_id.h" +#include "reliable.h" #include "mock_msg.h" @@ -156,6 +157,59 @@ test_packet_id_write_long_wrap(void **state) assert_true(data->test_buf_data.buf_time == htonl(now)); } +static void +test_get_num_output_sequenced_available(void **state) +{ + + struct reliable *rel = malloc(sizeof(struct reliable)); + reliable_init(rel, 100, 50, 8, false); + + rel->array[5].active = true; + rel->array[5].packet_id = 100; + + rel->packet_id = 103; + + assert_int_equal(5, reliable_get_num_output_sequenced_available(rel)); + + rel->array[6].active = true; + rel->array[6].packet_id = 97; + assert_int_equal(2, reliable_get_num_output_sequenced_available(rel)); + + /* test ids close to int/unsigned int barrier */ + + rel->array[5].active = true; + rel->array[5].packet_id = (0x80000000u -3); + rel->array[6].active = false; + rel->packet_id = (0x80000000u -1); + + assert_int_equal(6, reliable_get_num_output_sequenced_available(rel)); + + rel->array[5].active = true; + rel->array[5].packet_id = (0x80000000u -3); + rel->packet_id = 0x80000001u; + + assert_int_equal(4, reliable_get_num_output_sequenced_available(rel)); + + + /* test wrapping */ + rel->array[5].active = true; + rel->array[5].packet_id = (0xffffffffu -3); + rel->array[6].active = false; + rel->packet_id = (0xffffffffu - 1); + + assert_int_equal(6, reliable_get_num_output_sequenced_available(rel)); + + rel->array[2].packet_id = 0; + rel->array[2].active = true; + + assert_int_equal(6, reliable_get_num_output_sequenced_available(rel)); + + rel->packet_id = 3; + assert_int_equal(1, reliable_get_num_output_sequenced_available(rel)); + + reliable_free(rel); +} + int main(void) { @@ -178,6 +232,7 @@ main(void) cmocka_unit_test_setup_teardown(test_packet_id_write_long_wrap, test_packet_id_write_setup, test_packet_id_write_teardown), + cmocka_unit_test(test_get_num_output_sequenced_available) }; return cmocka_run_group_tests_name("packet_id tests", tests, NULL, NULL);