libs
libuavcan
libuavcan
test
protocol
restart_request_server.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2014 Pavel Kirienko <pavel.kirienko@gmail.com>
3
*/
4
5
#include <gtest/gtest.h>
6
#include <
uavcan/protocol/restart_request_server.hpp
>
7
#include "
helpers.hpp
"
8
9
10
struct
RestartHandler
:
public
uavcan::IRestartRequestHandler
11
{
12
bool
accept
;
13
14
bool
handleRestartRequest
(
uavcan::NodeID
request_source)
15
{
16
std::cout <<
"Restart request from "
<<
int
(request_source.
get
()) <<
" will be "
17
<< (
accept
?
"accepted"
:
"rejected"
) << std::endl;
18
return
accept
;
19
}
20
};
21
22
23
TEST
(RestartRequestServer, Basic)
24
{
25
InterlinkedTestNodesWithSysClock
nodes;
26
27
uavcan::RestartRequestServer
rrs(nodes.
a
);
28
29
ServiceClientWithCollector<uavcan::protocol::RestartNode>
rrs_cln(nodes.
b
);
30
31
uavcan::GlobalDataTypeRegistry::instance
().reset();
32
uavcan::DefaultDataTypeRegistrator<uavcan::protocol::RestartNode>
_reg1;
33
34
ASSERT_LE(0, rrs.
start
());
35
36
uavcan::protocol::RestartNode::Request request;
37
request.magic_number = uavcan::protocol::RestartNode::Request::MAGIC_NUMBER;
38
39
/*
40
* Rejected - handler was not set
41
*/
42
ASSERT_LE(0, rrs_cln.
call
(1, request));
43
nodes.
spinBoth
(
uavcan::MonotonicDuration::fromMSec
(10));
44
45
ASSERT_TRUE(rrs_cln.
collector
.
result
.get());
46
ASSERT_TRUE(rrs_cln.
collector
.
result
->isSuccessful());
47
ASSERT_FALSE(rrs_cln.
collector
.
result
->getResponse().ok);
48
49
/*
50
* Accepted
51
*/
52
RestartHandler
handler;
53
handler.
accept
=
true
;
54
rrs.
setHandler
(&handler);
55
56
ASSERT_LE(0, rrs_cln.
call
(1, request));
57
nodes.
spinBoth
(
uavcan::MonotonicDuration::fromMSec
(10));
58
59
ASSERT_TRUE(rrs_cln.
collector
.
result
->isSuccessful());
60
ASSERT_TRUE(rrs_cln.
collector
.
result
->getResponse().ok);
61
62
/*
63
* Rejected by handler
64
*/
65
handler.
accept
=
false
;
66
67
ASSERT_LE(0, rrs_cln.
call
(1, request));
68
nodes.
spinBoth
(
uavcan::MonotonicDuration::fromMSec
(10));
69
70
ASSERT_TRUE(rrs_cln.
collector
.
result
->isSuccessful());
71
ASSERT_FALSE(rrs_cln.
collector
.
result
->getResponse().ok);
72
73
/*
74
* Rejected because of invalid magic number
75
*/
76
handler.
accept
=
true
;
77
78
ASSERT_LE(0, rrs_cln.
call
(1, uavcan::protocol::RestartNode::Request()));
79
nodes.
spinBoth
(
uavcan::MonotonicDuration::fromMSec
(10));
80
81
ASSERT_TRUE(rrs_cln.
collector
.
result
->isSuccessful());
82
ASSERT_FALSE(rrs_cln.
collector
.
result
->getResponse().ok);
83
}
RestartHandler::accept
bool accept
Definition:
restart_request_server.cpp:12
uavcan::DefaultDataTypeRegistrator
Definition:
global_data_type_registry.hpp:186
uavcan::NodeID::get
uint8_t get() const
Definition:
transfer.hpp:132
uavcan::NodeID
Definition:
transfer.hpp:112
uavcan::RestartRequestServer
Definition:
restart_request_server.hpp:38
uavcan::DurationBase< MonotonicDuration >::fromMSec
static MonotonicDuration fromMSec(int64_t ms)
Definition:
time.hpp:41
uavcan::RestartRequestServer::start
int start()
Definition:
restart_request_server.hpp:84
uavcan::RestartRequestServer::setHandler
void setHandler(IRestartRequestHandler *handler)
Definition:
restart_request_server.hpp:78
ServiceClientWithCollector::call
int call(uavcan::NodeID node_id, const typename DataType::Request &request)
Definition:
libuavcan/libuavcan/test/protocol/helpers.hpp:111
RestartHandler
Definition:
restart_request_server.cpp:10
ServiceClientWithCollector
Definition:
libuavcan/libuavcan/test/protocol/helpers.hpp:99
ServiceCallResultCollector::result
std::unique_ptr< Result > result
Definition:
libuavcan/libuavcan/test/protocol/helpers.hpp:88
TEST
TEST(RestartRequestServer, Basic)
Definition:
restart_request_server.cpp:23
helpers.hpp
InterlinkedTestNodes
Definition:
test_node.hpp:149
uavcan::IRestartRequestHandler
Definition:
restart_request_server.hpp:18
int
int
Definition:
libstubs.cpp:120
RestartHandler::handleRestartRequest
bool handleRestartRequest(uavcan::NodeID request_source)
Definition:
restart_request_server.cpp:14
InterlinkedTestNodes::a
TestNode a
Definition:
test_node.hpp:155
InterlinkedTestNodes::spinBoth
int spinBoth(uavcan::MonotonicDuration duration)
Definition:
test_node.hpp:176
uavcan::GlobalDataTypeRegistry::instance
static GlobalDataTypeRegistry & instance()
Definition:
uc_global_data_type_registry.cpp:128
restart_request_server.hpp
InterlinkedTestNodes::b
TestNode b
Definition:
test_node.hpp:156
ServiceClientWithCollector::collector
Collector collector
Definition:
libuavcan/libuavcan/test/protocol/helpers.hpp:104
uavcan_communicator
Author(s):
autogenerated on Fri Dec 13 2024 03:10:03