aboutsummaryrefslogtreecommitdiffstats
path: root/test/gtest/test_tle_udp_stream.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/gtest/test_tle_udp_stream.cpp')
-rw-r--r--test/gtest/test_tle_udp_stream.cpp78
1 files changed, 70 insertions, 8 deletions
diff --git a/test/gtest/test_tle_udp_stream.cpp b/test/gtest/test_tle_udp_stream.cpp
index 22a1b44..44a8a65 100644
--- a/test/gtest/test_tle_udp_stream.cpp
+++ b/test/gtest/test_tle_udp_stream.cpp
@@ -14,15 +14,14 @@
*/
#include "test_tle_udp_stream.h"
+#include <arpa/inet.h>
TEST_F(test_tle_udp_stream, stream_test_open)
{
stream = tle_udp_stream_open(ctx,
(const struct tle_udp_stream_param *)&stream_prm);
EXPECT_NE(stream, nullptr);
- ret = tle_udp_stream_close(stream);
-
- EXPECT_EQ(ret, 0);
+ streams.push_back(stream);
}
TEST_F(test_tle_udp_stream, stream_test_open_nullctx)
@@ -60,8 +59,20 @@ TEST_F(test_tle_udp_stream, stream_test_open_close_open_close)
(const struct tle_udp_stream_param*)&stream_prm);
EXPECT_NE(stream, nullptr);
- ret = tle_udp_stream_close(stream);
- EXPECT_EQ(ret, 0);
+ streams.push_back(stream);
+}
+
+TEST_F(test_tle_udp_stream, stream_test_open_duplicate)
+{
+ stream = tle_udp_stream_open(ctx,
+ (const struct tle_udp_stream_param *)&stream_prm);
+ EXPECT_NE(stream, nullptr);
+ streams.push_back(stream);
+
+ stream = tle_udp_stream_open(ctx,
+ (const struct tle_udp_stream_param *)&stream_prm);
+ EXPECT_EQ(stream, nullptr);
+ EXPECT_EQ(rte_errno, EEXIST);
}
TEST_F(test_tle_udp_stream, stream_test_close)
@@ -80,7 +91,6 @@ TEST_F(test_tle_udp_stream, stream_test_close_null)
EXPECT_EQ(ret, -EINVAL);
}
-
TEST_F(test_tle_udp_stream, stream_test_close_already)
{
stream = tle_udp_stream_open(ctx,
@@ -92,6 +102,7 @@ TEST_F(test_tle_udp_stream, stream_test_close_already)
ret = tle_udp_stream_close(stream);
EXPECT_NE(ret, 0);
+ EXPECT_EQ(ret, -EINVAL);
}
TEST_F(test_tle_udp_stream, stream_get_param)
@@ -101,6 +112,7 @@ TEST_F(test_tle_udp_stream, stream_get_param)
stream = tle_udp_stream_open(ctx,
(const struct tle_udp_stream_param *)&stream_prm);
EXPECT_NE(stream, nullptr);
+ streams.push_back(stream);
ret = tle_udp_stream_get_param(stream,&prm);
EXPECT_EQ(ret, 0);
@@ -113,6 +125,7 @@ TEST_F(test_tle_udp_stream, stream_get_param_streamnull)
stream = tle_udp_stream_open(ctx,
(const struct tle_udp_stream_param *)&stream_prm);
EXPECT_NE(stream, nullptr);
+ streams.push_back(stream);
ret = tle_udp_stream_get_param(nullptr, &prm);
EXPECT_EQ(ret, -EINVAL);
@@ -125,10 +138,59 @@ TEST_F(test_tle_udp_stream, stream_get_param_prmnull)
stream = tle_udp_stream_open(ctx,
(const struct tle_udp_stream_param *)&stream_prm);
EXPECT_NE(stream, nullptr);
+ streams.push_back(stream);
ret = tle_udp_stream_get_param(stream, nullptr);
EXPECT_EQ(ret, -EINVAL);
}
-
-
+TEST_F(test_tle_udp_stream_max, stream_test_open_max)
+{
+ int i, j, cnt;
+ struct in_addr src_s;
+ struct in_addr dst_s;
+ int dst_port = 32678;
+ struct sockaddr_in *l_ipv4;
+ struct sockaddr_in *r_ipv4;
+
+ /* Set fields that will not change in sockaddr structures */
+ inet_pton(AF_INET, base_l_ipv4, &src_s);
+ l_ipv4 = (struct sockaddr_in *) &stream_prm.local_addr;
+ l_ipv4->sin_family = AF_INET;
+ l_ipv4->sin_port = htons(0);
+
+ inet_pton(AF_INET, base_r_ipv4, &dst_s);
+ r_ipv4 = (struct sockaddr_in *) &stream_prm.remote_addr;
+ r_ipv4->sin_family = AF_INET;
+
+ for(i = 0, cnt = 0; i < devs.size(); i++) {
+ /* Get base IPv4 address and increment it if needed for
+ * stream source address;
+ * Incrementing only highest octet
+ */
+
+ l_ipv4->sin_addr.s_addr = src_s.s_addr + i;
+
+ for(j = 0; j < nb_streams; j++, cnt++) {
+ /* Get base IPv4 address and increment it if needed for
+ * stream destination address
+ */
+ r_ipv4->sin_port = htons(dst_port + j);
+ r_ipv4->sin_addr.s_addr =
+ htonl(ntohl(dst_s.s_addr) + j);
+
+ stream = tle_udp_stream_open(ctx,
+ (const struct tle_udp_stream_param *)
+ &stream_prm);
+
+ if (cnt < MAX_STREAMS) {
+ EXPECT_EQ(rte_errno, 0);
+ ASSERT_NE(stream, nullptr);
+ streams.push_back(stream);
+ } else if (cnt >= MAX_STREAMS) {
+ EXPECT_EQ(stream, nullptr);
+ EXPECT_EQ(rte_errno, ENFILE);
+ }
+ }
+ }
+}