blob: ecabab2d1ec5ec91642dec21de14ac1477d20f43 [file] [log] [blame]
Alexander Afanasyevc169a812014-05-20 20:37:29 -04001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
Junxiao Shi5ec80222014-03-25 20:08:05 -07002/**
Davide Pesaventof8503d22017-02-17 01:19:10 -05003 * Copyright (c) 2013-2017 Regents of the University of California.
Alexander Afanasyevdfa52c42014-04-24 21:10:11 -07004 *
5 * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
Alexander Afanasyevdfa52c42014-04-24 21:10:11 -07006 *
Alexander Afanasyevc169a812014-05-20 20:37:29 -04007 * ndn-cxx library is free software: you can redistribute it and/or modify it under the
8 * terms of the GNU Lesser General Public License as published by the Free Software
9 * Foundation, either version 3 of the License, or (at your option) any later version.
10 *
11 * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
12 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
14 *
15 * You should have received copies of the GNU General Public License and GNU Lesser
16 * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
17 * <http://www.gnu.org/licenses/>.
18 *
19 * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
Junxiao Shi5ec80222014-03-25 20:08:05 -070020 */
21
Junxiao Shi7357ef22016-09-07 02:39:37 +000022#include "mgmt/nfd/control-command.hpp"
Junxiao Shi5ec80222014-03-25 20:08:05 -070023
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -070024#include "boost-test.hpp"
Junxiao Shi5ec80222014-03-25 20:08:05 -070025
26namespace ndn {
27namespace nfd {
Spyridon Mastorakis429634f2015-02-19 17:35:33 -080028namespace tests {
Junxiao Shi5ec80222014-03-25 20:08:05 -070029
Junxiao Shi7357ef22016-09-07 02:39:37 +000030BOOST_AUTO_TEST_SUITE(Mgmt)
31BOOST_AUTO_TEST_SUITE(Nfd)
32BOOST_AUTO_TEST_SUITE(TestControlCommand)
Junxiao Shi5ec80222014-03-25 20:08:05 -070033
34BOOST_AUTO_TEST_CASE(FaceCreate)
35{
36 FaceCreateCommand command;
Junxiao Shi5ec80222014-03-25 20:08:05 -070037
38 ControlParameters p1;
39 p1.setUri("tcp4://192.0.2.1")
40 .setFaceId(4);
41 BOOST_CHECK_THROW(command.validateRequest(p1), ControlCommand::ArgumentError);
Yukai Tud93c5fc2015-08-25 11:37:16 +080042 BOOST_CHECK_THROW(command.validateResponse(p1), ControlCommand::ArgumentError);
Junxiao Shi5ec80222014-03-25 20:08:05 -070043
44 ControlParameters p2;
45 p2.setName("ndn:/example");
46 BOOST_CHECK_THROW(command.validateRequest(p2), ControlCommand::ArgumentError);
47 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
48
49 ControlParameters p3;
50 p3.setUri("tcp4://192.0.2.1")
Davide Pesaventof8503d22017-02-17 01:19:10 -050051 .setFaceId(INVALID_FACE_ID);
Junxiao Shi5ec80222014-03-25 20:08:05 -070052 BOOST_CHECK_THROW(command.validateResponse(p3), ControlCommand::ArgumentError);
Junxiao Shi5de006b2014-10-26 20:20:52 -070053
54 ControlParameters p4;
Yukai Tud93c5fc2015-08-25 11:37:16 +080055 p4.setUri("tcp4://192.0.2.1")
Teng Liangf4908b12017-03-29 15:24:03 -070056 .setLocalUri("dev://eth0")
Eric Newberry138ef2c2016-08-15 20:29:03 -070057 .setFacePersistency(FACE_PERSISTENCY_PERSISTENT)
Eric Newberryda916d62016-08-11 23:04:34 -070058 .setFlags(0x3)
59 .setMask(0x1);
Yukai Tud93c5fc2015-08-25 11:37:16 +080060 BOOST_CHECK_NO_THROW(command.validateRequest(p4));
61
Eric Newberryda916d62016-08-11 23:04:34 -070062 ControlParameters p5;
Junxiao Shi144c7e32017-04-20 01:04:06 +000063 p5.setFaceId(27518)
64 .setUri("tcp4://192.0.2.1:6363")
65 .setLocalUri("tcp4://192.0.2.2:32114")
66 .setFacePersistency(FACE_PERSISTENCY_PERMANENT)
Eric Newberryda916d62016-08-11 23:04:34 -070067 .setFlags(0x1);
68 BOOST_CHECK_THROW(command.validateRequest(p5), ControlCommand::ArgumentError);
Junxiao Shi144c7e32017-04-20 01:04:06 +000069 BOOST_CHECK_NO_THROW(command.validateResponse(p5));
Eric Newberryda916d62016-08-11 23:04:34 -070070
Yukai Tud93c5fc2015-08-25 11:37:16 +080071 p4.unsetFacePersistency();
72 BOOST_CHECK_NO_THROW(command.validateRequest(p4));
73 command.applyDefaultsToRequest(p4);
74 BOOST_REQUIRE(p4.hasFacePersistency());
Eric Newberry138ef2c2016-08-15 20:29:03 -070075 BOOST_CHECK_EQUAL(p4.getFacePersistency(), FACE_PERSISTENCY_PERSISTENT);
Yukai Tud93c5fc2015-08-25 11:37:16 +080076
Yukai Tud93c5fc2015-08-25 11:37:16 +080077 ControlParameters p6;
Eric Newberryda916d62016-08-11 23:04:34 -070078 p6.setFaceId(4)
79 .setUri("tcp4://192.0.2.1")
Eric Newberry138ef2c2016-08-15 20:29:03 -070080 .setFacePersistency(FACE_PERSISTENCY_PERSISTENT);
Eric Newberryda916d62016-08-11 23:04:34 -070081 BOOST_CHECK_NO_THROW(command.validateResponse(p6));
82
83 ControlParameters p7;
84 p7.setUri("tcp4://192.0.2.1:6363");
85 Name n7;
86 BOOST_CHECK_NO_THROW(n7 = command.getRequestName("/PREFIX", p7));
87 BOOST_CHECK(Name("ndn:/PREFIX/faces/create").isPrefixOf(n7));
88
89 ControlParameters p8;
90 p8.setFaceId(5)
Eric Newberry138ef2c2016-08-15 20:29:03 -070091 .setFacePersistency(FACE_PERSISTENCY_PERMANENT)
Eric Newberryda916d62016-08-11 23:04:34 -070092 .setFlags(0x2);
93 BOOST_CHECK_NO_THROW(command.validateResponse(p8));
Junxiao Shi5ec80222014-03-25 20:08:05 -070094}
95
Yanbiao Licbdacb22016-08-02 16:02:35 +080096BOOST_AUTO_TEST_CASE(FaceUpdate)
97{
98 FaceUpdateCommand command;
99
100 ControlParameters p1;
101 p1.setFaceId(0);
Eric Newberryda916d62016-08-11 23:04:34 -0700102 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
Davide Pesaventof8503d22017-02-17 01:19:10 -0500103 p1.setFaceId(INVALID_FACE_ID);
Eric Newberry138ef2c2016-08-15 20:29:03 -0700104 BOOST_CHECK_THROW(command.validateResponse(p1), ControlCommand::ArgumentError);
Yanbiao Licbdacb22016-08-02 16:02:35 +0800105
106 p1.setFaceId(1);
107 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
Eric Newberry138ef2c2016-08-15 20:29:03 -0700108 BOOST_CHECK_THROW(command.validateResponse(p1), ControlCommand::ArgumentError);
109 command.applyDefaultsToRequest(p1);
110 BOOST_CHECK_EQUAL(p1.getFaceId(), 1);
Yanbiao Licbdacb22016-08-02 16:02:35 +0800111
112 ControlParameters p2;
113 p2.setFaceId(1)
Eric Newberry138ef2c2016-08-15 20:29:03 -0700114 .setFacePersistency(FACE_PERSISTENCY_PERSISTENT)
115 .setFlagBit(BIT_LOCAL_FIELDS_ENABLED, false);
Yanbiao Licbdacb22016-08-02 16:02:35 +0800116 BOOST_CHECK_NO_THROW(command.validateRequest(p2));
Eric Newberry138ef2c2016-08-15 20:29:03 -0700117 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError); // Mask forbidden but present
Yanbiao Licbdacb22016-08-02 16:02:35 +0800118
Eric Newberry138ef2c2016-08-15 20:29:03 -0700119 // Flags without Mask
Eric Newberryda916d62016-08-11 23:04:34 -0700120 p2.unsetMask();
121 BOOST_CHECK_THROW(command.validateRequest(p2), ControlCommand::ArgumentError);
Eric Newberry138ef2c2016-08-15 20:29:03 -0700122 BOOST_CHECK_NO_THROW(command.validateResponse(p2));
123
124 p2.setFlagBit(BIT_LOCAL_FIELDS_ENABLED, false);
125 p2.unsetFaceId();
126 BOOST_CHECK_NO_THROW(command.validateRequest(p2));
Eric Newberryda916d62016-08-11 23:04:34 -0700127
Yanbiao Licbdacb22016-08-02 16:02:35 +0800128 ControlParameters p3;
Eric Newberryda916d62016-08-11 23:04:34 -0700129 p3.setFaceId(1)
130 .setName("/ndn/name");
Yanbiao Licbdacb22016-08-02 16:02:35 +0800131 BOOST_CHECK_THROW(command.validateRequest(p3), ControlCommand::ArgumentError);
132 BOOST_CHECK_THROW(command.validateResponse(p3), ControlCommand::ArgumentError);
133
134 ControlParameters p4;
135 p4.setFaceId(1)
Eric Newberryda916d62016-08-11 23:04:34 -0700136 .setUri("tcp4://192.0.2.1");
Yanbiao Licbdacb22016-08-02 16:02:35 +0800137 BOOST_CHECK_THROW(command.validateRequest(p4), ControlCommand::ArgumentError);
138 BOOST_CHECK_THROW(command.validateResponse(p4), ControlCommand::ArgumentError);
139
140 ControlParameters p5;
Eric Newberry138ef2c2016-08-15 20:29:03 -0700141 BOOST_CHECK_NO_THROW(command.validateRequest(p5));
142 BOOST_CHECK_THROW(command.validateResponse(p5), ControlCommand::ArgumentError);
143 BOOST_CHECK(!p5.hasFaceId());
144 command.applyDefaultsToRequest(p5);
145 BOOST_REQUIRE(p5.hasFaceId());
146 BOOST_CHECK_NO_THROW(command.validateRequest(p5));
147 BOOST_CHECK_THROW(command.validateResponse(p5), ControlCommand::ArgumentError);
148 BOOST_CHECK_EQUAL(p5.getFaceId(), 0);
Yanbiao Licbdacb22016-08-02 16:02:35 +0800149}
150
Junxiao Shi5ec80222014-03-25 20:08:05 -0700151BOOST_AUTO_TEST_CASE(FaceDestroy)
152{
153 FaceDestroyCommand command;
Junxiao Shi5ec80222014-03-25 20:08:05 -0700154
155 ControlParameters p1;
156 p1.setUri("tcp4://192.0.2.1")
157 .setFaceId(4);
158 BOOST_CHECK_THROW(command.validateRequest(p1), ControlCommand::ArgumentError);
159 BOOST_CHECK_THROW(command.validateResponse(p1), ControlCommand::ArgumentError);
160
161 ControlParameters p2;
Davide Pesaventof8503d22017-02-17 01:19:10 -0500162 p2.setFaceId(INVALID_FACE_ID);
Junxiao Shi5ec80222014-03-25 20:08:05 -0700163 BOOST_CHECK_THROW(command.validateRequest(p2), ControlCommand::ArgumentError);
164 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
165
166 ControlParameters p3;
167 p3.setFaceId(6);
168 BOOST_CHECK_NO_THROW(command.validateRequest(p3));
169 BOOST_CHECK_NO_THROW(command.validateResponse(p3));
Junxiao Shi5de006b2014-10-26 20:20:52 -0700170 Name n3;
171 BOOST_CHECK_NO_THROW(n3 = command.getRequestName("/PREFIX", p3));
172 BOOST_CHECK(Name("ndn:/PREFIX/faces/destroy").isPrefixOf(n3));
Junxiao Shi5ec80222014-03-25 20:08:05 -0700173}
174
175BOOST_AUTO_TEST_CASE(FaceEnableLocalControl)
176{
177 FaceEnableLocalControlCommand command;
Junxiao Shi5ec80222014-03-25 20:08:05 -0700178
179 ControlParameters p1;
180 p1.setLocalControlFeature(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID);
181 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
182 BOOST_CHECK_NO_THROW(command.validateResponse(p1));
Junxiao Shi5de006b2014-10-26 20:20:52 -0700183 Name n1;
184 BOOST_CHECK_NO_THROW(n1 = command.getRequestName("/PREFIX", p1));
185 BOOST_CHECK(Name("ndn:/PREFIX/faces/enable-local-control").isPrefixOf(n1));
Junxiao Shi5ec80222014-03-25 20:08:05 -0700186
187 ControlParameters p2;
188 p2.setLocalControlFeature(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID)
189 .setFaceId(9);
190 BOOST_CHECK_THROW(command.validateRequest(p2), ControlCommand::ArgumentError);
191 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
Junxiao Shi6888bc12014-03-29 23:01:41 -0700192
193 ControlParameters p3;
194 p3.setLocalControlFeature(static_cast<LocalControlFeature>(666));
195 BOOST_CHECK_THROW(command.validateRequest(p3), ControlCommand::ArgumentError);
196 BOOST_CHECK_THROW(command.validateResponse(p3), ControlCommand::ArgumentError);
Junxiao Shi5ec80222014-03-25 20:08:05 -0700197}
198
199BOOST_AUTO_TEST_CASE(FaceDisableLocalControl)
200{
201 FaceDisableLocalControlCommand command;
Junxiao Shi5ec80222014-03-25 20:08:05 -0700202
203 ControlParameters p1;
204 p1.setLocalControlFeature(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID);
205 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
206 BOOST_CHECK_NO_THROW(command.validateResponse(p1));
Junxiao Shi5de006b2014-10-26 20:20:52 -0700207 Name n1;
208 BOOST_CHECK_NO_THROW(n1 = command.getRequestName("/PREFIX", p1));
209 BOOST_CHECK(Name("ndn:/PREFIX/faces/disable-local-control").isPrefixOf(n1));
Junxiao Shi5ec80222014-03-25 20:08:05 -0700210
211 ControlParameters p2;
212 p2.setLocalControlFeature(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID)
213 .setFaceId(9);
214 BOOST_CHECK_THROW(command.validateRequest(p2), ControlCommand::ArgumentError);
215 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
Junxiao Shi6888bc12014-03-29 23:01:41 -0700216
217 ControlParameters p3;
218 p3.setLocalControlFeature(static_cast<LocalControlFeature>(666));
219 BOOST_CHECK_THROW(command.validateRequest(p3), ControlCommand::ArgumentError);
220 BOOST_CHECK_THROW(command.validateResponse(p3), ControlCommand::ArgumentError);
Junxiao Shi5ec80222014-03-25 20:08:05 -0700221}
222
223BOOST_AUTO_TEST_CASE(FibAddNextHop)
224{
225 FibAddNextHopCommand command;
Junxiao Shi5ec80222014-03-25 20:08:05 -0700226
227 ControlParameters p1;
228 p1.setName("ndn:/")
229 .setFaceId(22);
230 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
231 BOOST_CHECK_THROW(command.validateResponse(p1), ControlCommand::ArgumentError);
Junxiao Shi5de006b2014-10-26 20:20:52 -0700232 Name n1;
233 BOOST_CHECK_NO_THROW(n1 = command.getRequestName("/PREFIX", p1));
234 BOOST_CHECK(Name("ndn:/PREFIX/fib/add-nexthop").isPrefixOf(n1));
Junxiao Shi5ec80222014-03-25 20:08:05 -0700235
236 ControlParameters p2;
237 p2.setName("ndn:/example")
238 .setFaceId(0)
239 .setCost(6);
240 BOOST_CHECK_NO_THROW(command.validateRequest(p2));
Davide Pesaventof8503d22017-02-17 01:19:10 -0500241 p2.setFaceId(INVALID_FACE_ID);
Junxiao Shi5ec80222014-03-25 20:08:05 -0700242 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
243
244 command.applyDefaultsToRequest(p1);
245 BOOST_REQUIRE(p1.hasCost());
246 BOOST_CHECK_EQUAL(p1.getCost(), 0);
Junxiao Shicaac54e2014-05-20 15:27:01 -0700247
248 p1.unsetFaceId();
249 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
250 command.applyDefaultsToRequest(p1);
251 BOOST_REQUIRE(p1.hasFaceId());
252 BOOST_CHECK_EQUAL(p1.getFaceId(), 0);
Junxiao Shi5ec80222014-03-25 20:08:05 -0700253}
254
255BOOST_AUTO_TEST_CASE(FibRemoveNextHop)
256{
257 FibRemoveNextHopCommand command;
Junxiao Shi5ec80222014-03-25 20:08:05 -0700258
259 ControlParameters p1;
260 p1.setName("ndn:/")
261 .setFaceId(22);
262 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
263 BOOST_CHECK_NO_THROW(command.validateResponse(p1));
Junxiao Shi5de006b2014-10-26 20:20:52 -0700264 Name n1;
265 BOOST_CHECK_NO_THROW(n1 = command.getRequestName("/PREFIX", p1));
266 BOOST_CHECK(Name("ndn:/PREFIX/fib/remove-nexthop").isPrefixOf(n1));
Junxiao Shi5ec80222014-03-25 20:08:05 -0700267
268 ControlParameters p2;
269 p2.setName("ndn:/example")
270 .setFaceId(0);
271 BOOST_CHECK_NO_THROW(command.validateRequest(p2));
Davide Pesaventof8503d22017-02-17 01:19:10 -0500272 p2.setFaceId(INVALID_FACE_ID);
Junxiao Shi5ec80222014-03-25 20:08:05 -0700273 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
Junxiao Shicaac54e2014-05-20 15:27:01 -0700274
275 p1.unsetFaceId();
276 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
277 command.applyDefaultsToRequest(p1);
278 BOOST_REQUIRE(p1.hasFaceId());
279 BOOST_CHECK_EQUAL(p1.getFaceId(), 0);
Junxiao Shi5ec80222014-03-25 20:08:05 -0700280}
281
282BOOST_AUTO_TEST_CASE(StrategyChoiceSet)
283{
284 StrategyChoiceSetCommand command;
Junxiao Shi5ec80222014-03-25 20:08:05 -0700285
286 ControlParameters p1;
287 p1.setName("ndn:/")
288 .setStrategy("ndn:/strategy/P");
289 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
290 BOOST_CHECK_NO_THROW(command.validateResponse(p1));
Junxiao Shi5de006b2014-10-26 20:20:52 -0700291 Name n1;
292 BOOST_CHECK_NO_THROW(n1 = command.getRequestName("/PREFIX", p1));
293 BOOST_CHECK(Name("ndn:/PREFIX/strategy-choice/set").isPrefixOf(n1));
Junxiao Shi5ec80222014-03-25 20:08:05 -0700294
295 ControlParameters p2;
296 p2.setName("ndn:/example");
297 BOOST_CHECK_THROW(command.validateRequest(p2), ControlCommand::ArgumentError);
298 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
299}
300
301BOOST_AUTO_TEST_CASE(StrategyChoiceUnset)
302{
303 StrategyChoiceUnsetCommand command;
Junxiao Shi5ec80222014-03-25 20:08:05 -0700304
305 ControlParameters p1;
306 p1.setName("ndn:/example");
307 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
308 BOOST_CHECK_NO_THROW(command.validateResponse(p1));
Junxiao Shi5de006b2014-10-26 20:20:52 -0700309 Name n1;
310 BOOST_CHECK_NO_THROW(n1 = command.getRequestName("/PREFIX", p1));
311 BOOST_CHECK(Name("ndn:/PREFIX/strategy-choice/unset").isPrefixOf(n1));
Junxiao Shi5ec80222014-03-25 20:08:05 -0700312
313 ControlParameters p2;
314 p2.setName("ndn:/example")
315 .setStrategy("ndn:/strategy/P");
316 BOOST_CHECK_THROW(command.validateRequest(p2), ControlCommand::ArgumentError);
317 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
318
319 ControlParameters p3;
320 p3.setName("ndn:/");
321 BOOST_CHECK_THROW(command.validateRequest(p3), ControlCommand::ArgumentError);
322 BOOST_CHECK_THROW(command.validateResponse(p3), ControlCommand::ArgumentError);
323}
324
Junxiao Shi5f6c74f2014-04-18 16:29:44 -0700325BOOST_AUTO_TEST_CASE(RibRegister)
326{
327 RibRegisterCommand command;
Junxiao Shi5f6c74f2014-04-18 16:29:44 -0700328
329 ControlParameters p1;
330 p1.setName("ndn:/");
331 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
332 BOOST_CHECK_THROW(command.validateResponse(p1), ControlCommand::ArgumentError);
Junxiao Shi5de006b2014-10-26 20:20:52 -0700333 Name n1;
334 BOOST_CHECK_NO_THROW(n1 = command.getRequestName("/PREFIX", p1));
335 BOOST_CHECK(Name("ndn:/PREFIX/rib/register").isPrefixOf(n1));
Junxiao Shi5f6c74f2014-04-18 16:29:44 -0700336
337 command.applyDefaultsToRequest(p1);
338 BOOST_REQUIRE(p1.hasOrigin());
Davide Pesaventoe8e48c22017-04-13 00:35:33 -0400339 BOOST_CHECK_EQUAL(p1.getOrigin(), ROUTE_ORIGIN_APP);
Junxiao Shi5f6c74f2014-04-18 16:29:44 -0700340 BOOST_REQUIRE(p1.hasCost());
341 BOOST_CHECK_EQUAL(p1.getCost(), 0);
342 BOOST_REQUIRE(p1.hasFlags());
343 BOOST_CHECK_EQUAL(p1.getFlags(), static_cast<uint64_t>(ROUTE_FLAG_CHILD_INHERIT));
Alexander Afanasyev21f13b02014-07-17 16:17:34 -0700344 BOOST_CHECK_EQUAL(p1.hasExpirationPeriod(), false);
Junxiao Shi5f6c74f2014-04-18 16:29:44 -0700345
346 ControlParameters p2;
347 p2.setName("ndn:/example")
348 .setFaceId(2)
349 .setCost(6);
350 BOOST_CHECK_NO_THROW(command.validateRequest(p2));
351 command.applyDefaultsToRequest(p2);
Alexander Afanasyev21f13b02014-07-17 16:17:34 -0700352 BOOST_CHECK_EQUAL(p2.hasExpirationPeriod(), false);
Junxiao Shi5f6c74f2014-04-18 16:29:44 -0700353 BOOST_CHECK_NO_THROW(command.validateResponse(p2));
354}
355
356BOOST_AUTO_TEST_CASE(RibUnregister)
357{
358 RibUnregisterCommand command;
Junxiao Shi5f6c74f2014-04-18 16:29:44 -0700359
360 ControlParameters p1;
361 p1.setName("ndn:/")
362 .setFaceId(22)
363 .setOrigin(ROUTE_ORIGIN_STATIC);
364 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
365 BOOST_CHECK_NO_THROW(command.validateResponse(p1));
Junxiao Shi5de006b2014-10-26 20:20:52 -0700366 Name n1;
367 BOOST_CHECK_NO_THROW(n1 = command.getRequestName("/PREFIX", p1));
368 BOOST_CHECK(Name("ndn:/PREFIX/rib/unregister").isPrefixOf(n1));
Junxiao Shi5f6c74f2014-04-18 16:29:44 -0700369
370 ControlParameters p2;
371 p2.setName("ndn:/example")
372 .setFaceId(0)
373 .setOrigin(ROUTE_ORIGIN_APP);
374 BOOST_CHECK_NO_THROW(command.validateRequest(p2));
Davide Pesaventof8503d22017-02-17 01:19:10 -0500375 p2.setFaceId(INVALID_FACE_ID);
Junxiao Shi5f6c74f2014-04-18 16:29:44 -0700376 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
377
378 p2.unsetFaceId();
379 BOOST_CHECK_NO_THROW(command.validateRequest(p2));
380 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
381}
382
Junxiao Shi7357ef22016-09-07 02:39:37 +0000383BOOST_AUTO_TEST_SUITE_END() // TestControlCommand
384BOOST_AUTO_TEST_SUITE_END() // Nfd
385BOOST_AUTO_TEST_SUITE_END() // Mgmt
Junxiao Shi5ec80222014-03-25 20:08:05 -0700386
Spyridon Mastorakis429634f2015-02-19 17:35:33 -0800387} // namespace tests
Junxiao Shi5ec80222014-03-25 20:08:05 -0700388} // namespace nfd
389} // namespace ndn