blob: 0ebf4503f5ef00d06778bbeeca2b59ff96599006 [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")
Eric Newberry138ef2c2016-08-15 20:29:03 -070056 .setFacePersistency(FACE_PERSISTENCY_PERSISTENT)
Eric Newberryda916d62016-08-11 23:04:34 -070057 .setFlags(0x3)
58 .setMask(0x1);
Yukai Tud93c5fc2015-08-25 11:37:16 +080059 BOOST_CHECK_NO_THROW(command.validateRequest(p4));
60
Eric Newberryda916d62016-08-11 23:04:34 -070061 ControlParameters p5;
62 p5.setUri("tcp4://192.0.2.1")
Eric Newberry138ef2c2016-08-15 20:29:03 -070063 .setFacePersistency(FACE_PERSISTENCY_PERSISTENT)
Eric Newberryda916d62016-08-11 23:04:34 -070064 .setFlags(0x1);
65 BOOST_CHECK_THROW(command.validateRequest(p5), ControlCommand::ArgumentError);
66
Yukai Tud93c5fc2015-08-25 11:37:16 +080067 p4.unsetFacePersistency();
68 BOOST_CHECK_NO_THROW(command.validateRequest(p4));
69 command.applyDefaultsToRequest(p4);
70 BOOST_REQUIRE(p4.hasFacePersistency());
Eric Newberry138ef2c2016-08-15 20:29:03 -070071 BOOST_CHECK_EQUAL(p4.getFacePersistency(), FACE_PERSISTENCY_PERSISTENT);
Yukai Tud93c5fc2015-08-25 11:37:16 +080072
Yukai Tud93c5fc2015-08-25 11:37:16 +080073 ControlParameters p6;
Eric Newberryda916d62016-08-11 23:04:34 -070074 p6.setFaceId(4)
75 .setUri("tcp4://192.0.2.1")
Eric Newberry138ef2c2016-08-15 20:29:03 -070076 .setFacePersistency(FACE_PERSISTENCY_PERSISTENT);
Eric Newberryda916d62016-08-11 23:04:34 -070077 BOOST_CHECK_NO_THROW(command.validateResponse(p6));
78
79 ControlParameters p7;
80 p7.setUri("tcp4://192.0.2.1:6363");
81 Name n7;
82 BOOST_CHECK_NO_THROW(n7 = command.getRequestName("/PREFIX", p7));
83 BOOST_CHECK(Name("ndn:/PREFIX/faces/create").isPrefixOf(n7));
84
85 ControlParameters p8;
86 p8.setFaceId(5)
Eric Newberry138ef2c2016-08-15 20:29:03 -070087 .setFacePersistency(FACE_PERSISTENCY_PERMANENT)
Eric Newberryda916d62016-08-11 23:04:34 -070088 .setFlags(0x2);
89 BOOST_CHECK_NO_THROW(command.validateResponse(p8));
Junxiao Shi5ec80222014-03-25 20:08:05 -070090}
91
Yanbiao Licbdacb22016-08-02 16:02:35 +080092BOOST_AUTO_TEST_CASE(FaceUpdate)
93{
94 FaceUpdateCommand command;
95
96 ControlParameters p1;
97 p1.setFaceId(0);
Eric Newberryda916d62016-08-11 23:04:34 -070098 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
Davide Pesaventof8503d22017-02-17 01:19:10 -050099 p1.setFaceId(INVALID_FACE_ID);
Eric Newberry138ef2c2016-08-15 20:29:03 -0700100 BOOST_CHECK_THROW(command.validateResponse(p1), ControlCommand::ArgumentError);
Yanbiao Licbdacb22016-08-02 16:02:35 +0800101
102 p1.setFaceId(1);
103 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
Eric Newberry138ef2c2016-08-15 20:29:03 -0700104 BOOST_CHECK_THROW(command.validateResponse(p1), ControlCommand::ArgumentError);
105 command.applyDefaultsToRequest(p1);
106 BOOST_CHECK_EQUAL(p1.getFaceId(), 1);
Yanbiao Licbdacb22016-08-02 16:02:35 +0800107
108 ControlParameters p2;
109 p2.setFaceId(1)
Eric Newberry138ef2c2016-08-15 20:29:03 -0700110 .setFacePersistency(FACE_PERSISTENCY_PERSISTENT)
111 .setFlagBit(BIT_LOCAL_FIELDS_ENABLED, false);
Yanbiao Licbdacb22016-08-02 16:02:35 +0800112 BOOST_CHECK_NO_THROW(command.validateRequest(p2));
Eric Newberry138ef2c2016-08-15 20:29:03 -0700113 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError); // Mask forbidden but present
Yanbiao Licbdacb22016-08-02 16:02:35 +0800114
Eric Newberry138ef2c2016-08-15 20:29:03 -0700115 // Flags without Mask
Eric Newberryda916d62016-08-11 23:04:34 -0700116 p2.unsetMask();
117 BOOST_CHECK_THROW(command.validateRequest(p2), ControlCommand::ArgumentError);
Eric Newberry138ef2c2016-08-15 20:29:03 -0700118 BOOST_CHECK_NO_THROW(command.validateResponse(p2));
119
120 p2.setFlagBit(BIT_LOCAL_FIELDS_ENABLED, false);
121 p2.unsetFaceId();
122 BOOST_CHECK_NO_THROW(command.validateRequest(p2));
Eric Newberryda916d62016-08-11 23:04:34 -0700123
Yanbiao Licbdacb22016-08-02 16:02:35 +0800124 ControlParameters p3;
Eric Newberryda916d62016-08-11 23:04:34 -0700125 p3.setFaceId(1)
126 .setName("/ndn/name");
Yanbiao Licbdacb22016-08-02 16:02:35 +0800127 BOOST_CHECK_THROW(command.validateRequest(p3), ControlCommand::ArgumentError);
128 BOOST_CHECK_THROW(command.validateResponse(p3), ControlCommand::ArgumentError);
129
130 ControlParameters p4;
131 p4.setFaceId(1)
Eric Newberryda916d62016-08-11 23:04:34 -0700132 .setUri("tcp4://192.0.2.1");
Yanbiao Licbdacb22016-08-02 16:02:35 +0800133 BOOST_CHECK_THROW(command.validateRequest(p4), ControlCommand::ArgumentError);
134 BOOST_CHECK_THROW(command.validateResponse(p4), ControlCommand::ArgumentError);
135
136 ControlParameters p5;
Eric Newberry138ef2c2016-08-15 20:29:03 -0700137 BOOST_CHECK_NO_THROW(command.validateRequest(p5));
138 BOOST_CHECK_THROW(command.validateResponse(p5), ControlCommand::ArgumentError);
139 BOOST_CHECK(!p5.hasFaceId());
140 command.applyDefaultsToRequest(p5);
141 BOOST_REQUIRE(p5.hasFaceId());
142 BOOST_CHECK_NO_THROW(command.validateRequest(p5));
143 BOOST_CHECK_THROW(command.validateResponse(p5), ControlCommand::ArgumentError);
144 BOOST_CHECK_EQUAL(p5.getFaceId(), 0);
Yanbiao Licbdacb22016-08-02 16:02:35 +0800145}
146
Junxiao Shi5ec80222014-03-25 20:08:05 -0700147BOOST_AUTO_TEST_CASE(FaceDestroy)
148{
149 FaceDestroyCommand command;
Junxiao Shi5ec80222014-03-25 20:08:05 -0700150
151 ControlParameters p1;
152 p1.setUri("tcp4://192.0.2.1")
153 .setFaceId(4);
154 BOOST_CHECK_THROW(command.validateRequest(p1), ControlCommand::ArgumentError);
155 BOOST_CHECK_THROW(command.validateResponse(p1), ControlCommand::ArgumentError);
156
157 ControlParameters p2;
Davide Pesaventof8503d22017-02-17 01:19:10 -0500158 p2.setFaceId(INVALID_FACE_ID);
Junxiao Shi5ec80222014-03-25 20:08:05 -0700159 BOOST_CHECK_THROW(command.validateRequest(p2), ControlCommand::ArgumentError);
160 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
161
162 ControlParameters p3;
163 p3.setFaceId(6);
164 BOOST_CHECK_NO_THROW(command.validateRequest(p3));
165 BOOST_CHECK_NO_THROW(command.validateResponse(p3));
Junxiao Shi5de006b2014-10-26 20:20:52 -0700166 Name n3;
167 BOOST_CHECK_NO_THROW(n3 = command.getRequestName("/PREFIX", p3));
168 BOOST_CHECK(Name("ndn:/PREFIX/faces/destroy").isPrefixOf(n3));
Junxiao Shi5ec80222014-03-25 20:08:05 -0700169}
170
171BOOST_AUTO_TEST_CASE(FaceEnableLocalControl)
172{
173 FaceEnableLocalControlCommand command;
Junxiao Shi5ec80222014-03-25 20:08:05 -0700174
175 ControlParameters p1;
176 p1.setLocalControlFeature(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID);
177 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
178 BOOST_CHECK_NO_THROW(command.validateResponse(p1));
Junxiao Shi5de006b2014-10-26 20:20:52 -0700179 Name n1;
180 BOOST_CHECK_NO_THROW(n1 = command.getRequestName("/PREFIX", p1));
181 BOOST_CHECK(Name("ndn:/PREFIX/faces/enable-local-control").isPrefixOf(n1));
Junxiao Shi5ec80222014-03-25 20:08:05 -0700182
183 ControlParameters p2;
184 p2.setLocalControlFeature(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID)
185 .setFaceId(9);
186 BOOST_CHECK_THROW(command.validateRequest(p2), ControlCommand::ArgumentError);
187 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
Junxiao Shi6888bc12014-03-29 23:01:41 -0700188
189 ControlParameters p3;
190 p3.setLocalControlFeature(static_cast<LocalControlFeature>(666));
191 BOOST_CHECK_THROW(command.validateRequest(p3), ControlCommand::ArgumentError);
192 BOOST_CHECK_THROW(command.validateResponse(p3), ControlCommand::ArgumentError);
Junxiao Shi5ec80222014-03-25 20:08:05 -0700193}
194
195BOOST_AUTO_TEST_CASE(FaceDisableLocalControl)
196{
197 FaceDisableLocalControlCommand command;
Junxiao Shi5ec80222014-03-25 20:08:05 -0700198
199 ControlParameters p1;
200 p1.setLocalControlFeature(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID);
201 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
202 BOOST_CHECK_NO_THROW(command.validateResponse(p1));
Junxiao Shi5de006b2014-10-26 20:20:52 -0700203 Name n1;
204 BOOST_CHECK_NO_THROW(n1 = command.getRequestName("/PREFIX", p1));
205 BOOST_CHECK(Name("ndn:/PREFIX/faces/disable-local-control").isPrefixOf(n1));
Junxiao Shi5ec80222014-03-25 20:08:05 -0700206
207 ControlParameters p2;
208 p2.setLocalControlFeature(LOCAL_CONTROL_FEATURE_INCOMING_FACE_ID)
209 .setFaceId(9);
210 BOOST_CHECK_THROW(command.validateRequest(p2), ControlCommand::ArgumentError);
211 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
Junxiao Shi6888bc12014-03-29 23:01:41 -0700212
213 ControlParameters p3;
214 p3.setLocalControlFeature(static_cast<LocalControlFeature>(666));
215 BOOST_CHECK_THROW(command.validateRequest(p3), ControlCommand::ArgumentError);
216 BOOST_CHECK_THROW(command.validateResponse(p3), ControlCommand::ArgumentError);
Junxiao Shi5ec80222014-03-25 20:08:05 -0700217}
218
219BOOST_AUTO_TEST_CASE(FibAddNextHop)
220{
221 FibAddNextHopCommand command;
Junxiao Shi5ec80222014-03-25 20:08:05 -0700222
223 ControlParameters p1;
224 p1.setName("ndn:/")
225 .setFaceId(22);
226 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
227 BOOST_CHECK_THROW(command.validateResponse(p1), ControlCommand::ArgumentError);
Junxiao Shi5de006b2014-10-26 20:20:52 -0700228 Name n1;
229 BOOST_CHECK_NO_THROW(n1 = command.getRequestName("/PREFIX", p1));
230 BOOST_CHECK(Name("ndn:/PREFIX/fib/add-nexthop").isPrefixOf(n1));
Junxiao Shi5ec80222014-03-25 20:08:05 -0700231
232 ControlParameters p2;
233 p2.setName("ndn:/example")
234 .setFaceId(0)
235 .setCost(6);
236 BOOST_CHECK_NO_THROW(command.validateRequest(p2));
Davide Pesaventof8503d22017-02-17 01:19:10 -0500237 p2.setFaceId(INVALID_FACE_ID);
Junxiao Shi5ec80222014-03-25 20:08:05 -0700238 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
239
240 command.applyDefaultsToRequest(p1);
241 BOOST_REQUIRE(p1.hasCost());
242 BOOST_CHECK_EQUAL(p1.getCost(), 0);
Junxiao Shicaac54e2014-05-20 15:27:01 -0700243
244 p1.unsetFaceId();
245 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
246 command.applyDefaultsToRequest(p1);
247 BOOST_REQUIRE(p1.hasFaceId());
248 BOOST_CHECK_EQUAL(p1.getFaceId(), 0);
Junxiao Shi5ec80222014-03-25 20:08:05 -0700249}
250
251BOOST_AUTO_TEST_CASE(FibRemoveNextHop)
252{
253 FibRemoveNextHopCommand command;
Junxiao Shi5ec80222014-03-25 20:08:05 -0700254
255 ControlParameters p1;
256 p1.setName("ndn:/")
257 .setFaceId(22);
258 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
259 BOOST_CHECK_NO_THROW(command.validateResponse(p1));
Junxiao Shi5de006b2014-10-26 20:20:52 -0700260 Name n1;
261 BOOST_CHECK_NO_THROW(n1 = command.getRequestName("/PREFIX", p1));
262 BOOST_CHECK(Name("ndn:/PREFIX/fib/remove-nexthop").isPrefixOf(n1));
Junxiao Shi5ec80222014-03-25 20:08:05 -0700263
264 ControlParameters p2;
265 p2.setName("ndn:/example")
266 .setFaceId(0);
267 BOOST_CHECK_NO_THROW(command.validateRequest(p2));
Davide Pesaventof8503d22017-02-17 01:19:10 -0500268 p2.setFaceId(INVALID_FACE_ID);
Junxiao Shi5ec80222014-03-25 20:08:05 -0700269 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
Junxiao Shicaac54e2014-05-20 15:27:01 -0700270
271 p1.unsetFaceId();
272 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
273 command.applyDefaultsToRequest(p1);
274 BOOST_REQUIRE(p1.hasFaceId());
275 BOOST_CHECK_EQUAL(p1.getFaceId(), 0);
Junxiao Shi5ec80222014-03-25 20:08:05 -0700276}
277
278BOOST_AUTO_TEST_CASE(StrategyChoiceSet)
279{
280 StrategyChoiceSetCommand command;
Junxiao Shi5ec80222014-03-25 20:08:05 -0700281
282 ControlParameters p1;
283 p1.setName("ndn:/")
284 .setStrategy("ndn:/strategy/P");
285 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
286 BOOST_CHECK_NO_THROW(command.validateResponse(p1));
Junxiao Shi5de006b2014-10-26 20:20:52 -0700287 Name n1;
288 BOOST_CHECK_NO_THROW(n1 = command.getRequestName("/PREFIX", p1));
289 BOOST_CHECK(Name("ndn:/PREFIX/strategy-choice/set").isPrefixOf(n1));
Junxiao Shi5ec80222014-03-25 20:08:05 -0700290
291 ControlParameters p2;
292 p2.setName("ndn:/example");
293 BOOST_CHECK_THROW(command.validateRequest(p2), ControlCommand::ArgumentError);
294 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
295}
296
297BOOST_AUTO_TEST_CASE(StrategyChoiceUnset)
298{
299 StrategyChoiceUnsetCommand command;
Junxiao Shi5ec80222014-03-25 20:08:05 -0700300
301 ControlParameters p1;
302 p1.setName("ndn:/example");
303 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
304 BOOST_CHECK_NO_THROW(command.validateResponse(p1));
Junxiao Shi5de006b2014-10-26 20:20:52 -0700305 Name n1;
306 BOOST_CHECK_NO_THROW(n1 = command.getRequestName("/PREFIX", p1));
307 BOOST_CHECK(Name("ndn:/PREFIX/strategy-choice/unset").isPrefixOf(n1));
Junxiao Shi5ec80222014-03-25 20:08:05 -0700308
309 ControlParameters p2;
310 p2.setName("ndn:/example")
311 .setStrategy("ndn:/strategy/P");
312 BOOST_CHECK_THROW(command.validateRequest(p2), ControlCommand::ArgumentError);
313 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
314
315 ControlParameters p3;
316 p3.setName("ndn:/");
317 BOOST_CHECK_THROW(command.validateRequest(p3), ControlCommand::ArgumentError);
318 BOOST_CHECK_THROW(command.validateResponse(p3), ControlCommand::ArgumentError);
319}
320
Junxiao Shi5f6c74f2014-04-18 16:29:44 -0700321BOOST_AUTO_TEST_CASE(RibRegister)
322{
323 RibRegisterCommand command;
Junxiao Shi5f6c74f2014-04-18 16:29:44 -0700324
325 ControlParameters p1;
326 p1.setName("ndn:/");
327 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
328 BOOST_CHECK_THROW(command.validateResponse(p1), ControlCommand::ArgumentError);
Junxiao Shi5de006b2014-10-26 20:20:52 -0700329 Name n1;
330 BOOST_CHECK_NO_THROW(n1 = command.getRequestName("/PREFIX", p1));
331 BOOST_CHECK(Name("ndn:/PREFIX/rib/register").isPrefixOf(n1));
Junxiao Shi5f6c74f2014-04-18 16:29:44 -0700332
333 command.applyDefaultsToRequest(p1);
334 BOOST_REQUIRE(p1.hasOrigin());
335 BOOST_CHECK_EQUAL(p1.getOrigin(), static_cast<uint64_t>(ROUTE_ORIGIN_APP));
336 BOOST_REQUIRE(p1.hasCost());
337 BOOST_CHECK_EQUAL(p1.getCost(), 0);
338 BOOST_REQUIRE(p1.hasFlags());
339 BOOST_CHECK_EQUAL(p1.getFlags(), static_cast<uint64_t>(ROUTE_FLAG_CHILD_INHERIT));
Alexander Afanasyev21f13b02014-07-17 16:17:34 -0700340 BOOST_CHECK_EQUAL(p1.hasExpirationPeriod(), false);
Junxiao Shi5f6c74f2014-04-18 16:29:44 -0700341
342 ControlParameters p2;
343 p2.setName("ndn:/example")
344 .setFaceId(2)
345 .setCost(6);
346 BOOST_CHECK_NO_THROW(command.validateRequest(p2));
347 command.applyDefaultsToRequest(p2);
Alexander Afanasyev21f13b02014-07-17 16:17:34 -0700348 BOOST_CHECK_EQUAL(p2.hasExpirationPeriod(), false);
Junxiao Shi5f6c74f2014-04-18 16:29:44 -0700349 BOOST_CHECK_NO_THROW(command.validateResponse(p2));
350}
351
352BOOST_AUTO_TEST_CASE(RibUnregister)
353{
354 RibUnregisterCommand command;
Junxiao Shi5f6c74f2014-04-18 16:29:44 -0700355
356 ControlParameters p1;
357 p1.setName("ndn:/")
358 .setFaceId(22)
359 .setOrigin(ROUTE_ORIGIN_STATIC);
360 BOOST_CHECK_NO_THROW(command.validateRequest(p1));
361 BOOST_CHECK_NO_THROW(command.validateResponse(p1));
Junxiao Shi5de006b2014-10-26 20:20:52 -0700362 Name n1;
363 BOOST_CHECK_NO_THROW(n1 = command.getRequestName("/PREFIX", p1));
364 BOOST_CHECK(Name("ndn:/PREFIX/rib/unregister").isPrefixOf(n1));
Junxiao Shi5f6c74f2014-04-18 16:29:44 -0700365
366 ControlParameters p2;
367 p2.setName("ndn:/example")
368 .setFaceId(0)
369 .setOrigin(ROUTE_ORIGIN_APP);
370 BOOST_CHECK_NO_THROW(command.validateRequest(p2));
Davide Pesaventof8503d22017-02-17 01:19:10 -0500371 p2.setFaceId(INVALID_FACE_ID);
Junxiao Shi5f6c74f2014-04-18 16:29:44 -0700372 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
373
374 p2.unsetFaceId();
375 BOOST_CHECK_NO_THROW(command.validateRequest(p2));
376 BOOST_CHECK_THROW(command.validateResponse(p2), ControlCommand::ArgumentError);
377}
378
Junxiao Shi7357ef22016-09-07 02:39:37 +0000379BOOST_AUTO_TEST_SUITE_END() // TestControlCommand
380BOOST_AUTO_TEST_SUITE_END() // Nfd
381BOOST_AUTO_TEST_SUITE_END() // Mgmt
Junxiao Shi5ec80222014-03-25 20:08:05 -0700382
Spyridon Mastorakis429634f2015-02-19 17:35:33 -0800383} // namespace tests
Junxiao Shi5ec80222014-03-25 20:08:05 -0700384} // namespace nfd
385} // namespace ndn