Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
A
actor-incubator
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cpp-libs
actor-incubator
Commits
bf48be27
Commit
bf48be27
authored
Oct 03, 2019
by
Jakob Otto
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use local_addresses() in udp_datagram_socket test
parent
3694f195
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
59 deletions
+36
-59
libcaf_net/test/udp_datagram_socket.cpp
libcaf_net/test/udp_datagram_socket.cpp
+36
-59
No files found.
libcaf_net/test/udp_datagram_socket.cpp
View file @
bf48be27
...
@@ -25,7 +25,6 @@
...
@@ -25,7 +25,6 @@
#include "host_fixture.hpp"
#include "host_fixture.hpp"
#include "caf/detail/net_syscall.hpp"
#include "caf/detail/net_syscall.hpp"
#include "caf/detail/socket_sys_includes.hpp"
#include "caf/ip_address.hpp"
#include "caf/ip_address.hpp"
#include "caf/ip_endpoint.hpp"
#include "caf/ip_endpoint.hpp"
#include "caf/ipv4_address.hpp"
#include "caf/ipv4_address.hpp"
...
@@ -34,49 +33,50 @@
...
@@ -34,49 +33,50 @@
using
namespace
caf
;
using
namespace
caf
;
using
namespace
caf
::
net
;
using
namespace
caf
::
net
;
using
namespace
caf
::
net
::
ip
;
namespace
{
namespace
{
constexpr
string_view
hello_test
=
"Hello test!"
;
constexpr
string_view
hello_test
=
"Hello test!"
;
struct
fixture
:
host_fixture
{
struct
fixture
:
host_fixture
{
fixture
()
fixture
()
:
host_fixture
()
{
:
host_fixture
(),
addresses
=
local_addresses
(
"localhost"
);
v4_local
{
make_ipv4_address
(
127
,
0
,
0
,
1
)},
CAF_CHECK
(
!
addresses
.
empty
());
v6_local
{{
0
},
{
0x1
}},
ep
=
ip_endpoint
(
*
addresses
.
begin
(),
0
);
// TODO: use local_addresses() when merged
auto
send_pair
=
unbox
(
make_udp_datagram_socket
(
ep
));
addrs
{
net
::
ip
::
resolve
(
"localhost"
)}
{
send_socket
=
send_pair
.
first
;
auto
receive_pair
=
unbox
(
make_udp_datagram_socket
(
ep
));
receive_socket
=
receive_pair
.
first
;
ep
.
port
(
ntohs
(
receive_pair
.
second
));
}
}
bool
contains
(
ip_address
x
)
{
~
fixture
()
{
return
std
::
count
(
addrs
.
begin
(),
addrs
.
end
(),
x
)
>
0
;
close
(
send_socket
);
close
(
receive_socket
);
}
}
void
test_send_receive
(
ip_address
addr
)
{
std
::
vector
<
ip_address
>
addresses
;
actor_system_config
cfg
;
actor_system
sys
{
cfg
};
ip_endpoint
ep
;
udp_datagram_socket
send_socket
;
udp_datagram_socket
receive_socket
;
};
}
// namespace
CAF_TEST_FIXTURE_SCOPE
(
udp_datagram_socket_test
,
fixture
)
CAF_TEST
(
send
and
receive
)
{
std
::
vector
<
byte
>
buf
(
1024
);
std
::
vector
<
byte
>
buf
(
1024
);
ip_endpoint
ep
(
addr
,
0
);
auto
send_pair
=
unbox
(
make_udp_datagram_socket
(
ep
));
auto
send_socket
=
send_pair
.
first
;
auto
receive_pair
=
unbox
(
make_udp_datagram_socket
(
ep
));
auto
receive_socket
=
receive_pair
.
first
;
ep
.
port
(
ntohs
(
receive_pair
.
second
));
CAF_MESSAGE
(
"sending data to: "
<<
to_string
(
ep
));
CAF_MESSAGE
(
"sending data to: "
<<
to_string
(
ep
));
auto
send_guard
=
make_socket_guard
(
send_socket
);
auto
receive_guard
=
make_socket_guard
(
receive_socket
);
if
(
auto
err
=
nonblocking
(
socket_cast
<
net
::
socket
>
(
receive_socket
),
true
))
if
(
auto
err
=
nonblocking
(
socket_cast
<
net
::
socket
>
(
receive_socket
),
true
))
CAF_FAIL
(
"nonblocking returned an error"
<<
err
);
CAF_FAIL
(
"nonblocking returned an error"
<<
err
);
auto
test_read_res
=
read
(
receive_socket
,
make_span
(
buf
));
CAF_CHECK_EQUAL
(
read
(
receive_socket
,
make_span
(
buf
)),
if
(
auto
err
=
get_if
<
sec
>
(
&
test_read_res
))
sec
::
unavailable_or_would_block
);
CAF_CHECK_EQUAL
(
*
err
,
sec
::
unavailable_or_would_block
);
CAF_CHECK_EQUAL
(
write
(
send_socket
,
as_bytes
(
make_span
(
hello_test
)),
ep
),
else
hello_test
.
size
());
CAF_FAIL
(
"read should have failed"
);
auto
write_ret
=
write
(
send_socket
,
as_bytes
(
make_span
(
hello_test
)),
ep
);
if
(
auto
num_bytes
=
get_if
<
size_t
>
(
&
write_ret
))
CAF_CHECK_EQUAL
(
*
num_bytes
,
hello_test
.
size
());
else
CAF_FAIL
(
"write returned an error: "
<<
sys
.
render
(
get
<
sec
>
(
write_ret
)));
variant
<
std
::
pair
<
size_t
,
ip_endpoint
>
,
sec
>
read_ret
;
variant
<
std
::
pair
<
size_t
,
ip_endpoint
>
,
sec
>
read_ret
;
do
{
do
{
read_ret
=
read
(
receive_socket
,
make_span
(
buf
));
read_ret
=
read
(
receive_socket
,
make_span
(
buf
));
...
@@ -88,31 +88,8 @@ struct fixture : host_fixture {
...
@@ -88,31 +88,8 @@ struct fixture : host_fixture {
}
}
}
while
(
holds_alternative
<
sec
>
(
read_ret
)
}
while
(
holds_alternative
<
sec
>
(
read_ret
)
&&
get
<
sec
>
(
read_ret
)
==
sec
::
unavailable_or_would_block
);
&&
get
<
sec
>
(
read_ret
)
==
sec
::
unavailable_or_would_block
);
string_view
buf_view
{
reinterpret_cast
<
const
char
*>
(
buf
.
data
()),
buf
.
size
()};
string_view
received
{
reinterpret_cast
<
const
char
*>
(
buf
.
data
()),
buf
.
size
()};
CAF_CHECK_EQUAL
(
buf_view
,
hello_test
);
CAF_CHECK_EQUAL
(
received
,
hello_test
);
}
actor_system_config
cfg
;
actor_system
sys
{
cfg
};
ip_address
v4_local
;
ip_address
v6_local
;
std
::
vector
<
ip_address
>
addrs
;
};
}
// namespace
CAF_TEST_FIXTURE_SCOPE
(
udp_datagram_socket_test
,
fixture
)
CAF_TEST
(
send
and
receive
)
{
// TODO: check which versions exist and test existing versions accordingly
// -> local_addresses()
if
(
contains
(
v4_local
))
{
test_send_receive
(
v4_local
);
}
else
if
(
contains
(
v6_local
))
{
test_send_receive
(
v6_local
);
}
else
{
CAF_FAIL
(
"could not resolve 'localhost'"
);
}
}
}
CAF_TEST_FIXTURE_SCOPE_END
()
CAF_TEST_FIXTURE_SCOPE_END
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment