LEFT | RIGHT |
1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ | 1 /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil; -*- */ |
2 /* | 2 /* |
3 * Copyright (c) 2013 Universita' di Firenze, Italy | 3 * Copyright (c) 2013 Universita' di Firenze, Italy |
4 * | 4 * |
5 * This program is free software; you can redistribute it and/or modify | 5 * This program is free software; you can redistribute it and/or modify |
6 * it under the terms of the GNU General Public License version 2 as | 6 * it under the terms of the GNU General Public License version 2 as |
7 * published by the Free Software Foundation; | 7 * published by the Free Software Foundation; |
8 * | 8 * |
9 * This program is distributed in the hope that it will be useful, | 9 * This program is distributed in the hope that it will be useful, |
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 m_receivedPacketClient = packet->Copy (); | 204 m_receivedPacketClient = packet->Copy (); |
205 } | 205 } |
206 } | 206 } |
207 } | 207 } |
208 | 208 |
209 void | 209 void |
210 SixlowpanFragmentationTest::HandleReadIcmpClient (Ipv6Address icmpSource, | 210 SixlowpanFragmentationTest::HandleReadIcmpClient (Ipv6Address icmpSource, |
211 uint8_t icmpTtl, uint8_t icmpT
ype, | 211 uint8_t icmpTtl, uint8_t icmpT
ype, |
212 uint8_t icmpCode, uint32_t icm
pInfo) | 212 uint8_t icmpCode, uint32_t icm
pInfo) |
213 { | 213 { |
214 NS_UNUSED(icmpTtl); | 214 NS_UNUSED (icmpTtl); |
215 NS_UNUSED(icmpInfo); | 215 NS_UNUSED (icmpInfo); |
216 m_icmpType = icmpType; | 216 m_icmpType = icmpType; |
217 m_icmpCode = icmpCode; | 217 m_icmpCode = icmpCode; |
218 } | 218 } |
219 | 219 |
220 void | 220 void |
221 SixlowpanFragmentationTest::SetFill (uint8_t *fill, uint32_t fillSize, uint32_t
dataSize) | 221 SixlowpanFragmentationTest::SetFill (uint8_t *fill, uint32_t fillSize, uint32_t
dataSize) |
222 { | 222 { |
223 if (dataSize != m_dataSize) | 223 if (dataSize != m_dataSize) |
224 { | 224 { |
225 delete [] m_data; | 225 delete [] m_data; |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 | 353 |
354 SetFill (fillData, 78, packetSize); | 354 SetFill (fillData, 78, packetSize); |
355 | 355 |
356 m_receivedPacketServer = Create<Packet> (); | 356 m_receivedPacketServer = Create<Packet> (); |
357 Simulator::ScheduleWithContext (m_socketClient->GetNode ()->GetId (), Seco
nds (0), | 357 Simulator::ScheduleWithContext (m_socketClient->GetNode ()->GetId (), Seco
nds (0), |
358 &SixlowpanFragmentationTest::SendClient, t
his); | 358 &SixlowpanFragmentationTest::SendClient, t
his); |
359 Simulator::Run (); | 359 Simulator::Run (); |
360 | 360 |
361 uint8_t recvBuffer[65000]; | 361 uint8_t recvBuffer[65000]; |
362 | 362 |
363 uint16_t recvSize = (uint16_t)m_receivedPacketServer->GetSize (); | 363 uint16_t recvSize = static_cast<uint16_t> (m_receivedPacketServer->GetSize
()); |
364 | 364 |
365 NS_TEST_EXPECT_MSG_EQ (recvSize, packetSizes[i], | 365 NS_TEST_EXPECT_MSG_EQ (recvSize, packetSizes[i], |
366 "Packet size not correct: recvSize: " << recvSize <
< " packetSizes[" << i << "]: " << packetSizes[i] ); | 366 "Packet size not correct: recvSize: " << recvSize <
< " packetSizes[" << i << "]: " << packetSizes[i] ); |
367 | 367 |
368 m_receivedPacketServer->CopyData (recvBuffer, 65000); | 368 m_receivedPacketServer->CopyData (recvBuffer, 65000); |
369 NS_TEST_EXPECT_MSG_EQ (memcmp (m_data, recvBuffer, m_receivedPacketServer-
>GetSize ()), | 369 NS_TEST_EXPECT_MSG_EQ (memcmp (m_data, recvBuffer, m_receivedPacketServer-
>GetSize ()), |
370 0, "Packet content differs"); | 370 0, "Packet content differs"); |
371 } | 371 } |
372 | 372 |
373 // Second test: normal channel, no errors, delays each 2 packets. | 373 // Second test: normal channel, no errors, delays each 2 packets. |
374 // Each other fragment will arrive out-of-order. | 374 // Each other fragment will arrive out-of-order. |
375 // The packets should be received correctly since reassembly will reorder the
fragments. | 375 // The packets should be received correctly since reassembly will reorder the
fragments. |
376 channel->SetJumpingMode (true); | 376 channel->SetJumpingMode (true); |
377 for ( int i = 0; i < 5; i++) | 377 for ( int i = 0; i < 5; i++) |
378 { | 378 { |
379 uint32_t packetSize = packetSizes[i]; | 379 uint32_t packetSize = packetSizes[i]; |
380 | 380 |
381 SetFill (fillData, 78, packetSize); | 381 SetFill (fillData, 78, packetSize); |
382 | 382 |
383 m_receivedPacketServer = Create<Packet> (); | 383 m_receivedPacketServer = Create<Packet> (); |
384 Simulator::ScheduleWithContext (m_socketClient->GetNode ()->GetId (), Seco
nds (0), | 384 Simulator::ScheduleWithContext (m_socketClient->GetNode ()->GetId (), Seco
nds (0), |
385 &SixlowpanFragmentationTest::SendClient, t
his); | 385 &SixlowpanFragmentationTest::SendClient, t
his); |
386 Simulator::Run (); | 386 Simulator::Run (); |
387 | 387 |
388 uint8_t recvBuffer[65000]; | 388 uint8_t recvBuffer[65000]; |
389 | 389 |
390 uint16_t recvSize = (uint16_t)m_receivedPacketServer->GetSize (); | 390 uint16_t recvSize = static_cast<uint16_t> (m_receivedPacketServer->GetSize
()); |
391 | 391 |
392 NS_TEST_EXPECT_MSG_EQ (recvSize, packetSizes[i], | 392 NS_TEST_EXPECT_MSG_EQ (recvSize, packetSizes[i], |
393 "Packet size not correct: recvSize: " << recvSize <
< " packetSizes[" << i << "]: " << packetSizes[i] ); | 393 "Packet size not correct: recvSize: " << recvSize <
< " packetSizes[" << i << "]: " << packetSizes[i] ); |
394 | 394 |
395 m_receivedPacketServer->CopyData (recvBuffer, 65000); | 395 m_receivedPacketServer->CopyData (recvBuffer, 65000); |
396 NS_TEST_EXPECT_MSG_EQ (memcmp (m_data, recvBuffer, m_receivedPacketServer-
>GetSize ()), | 396 NS_TEST_EXPECT_MSG_EQ (memcmp (m_data, recvBuffer, m_receivedPacketServer-
>GetSize ()), |
397 0, "Packet content differs"); | 397 0, "Packet content differs"); |
398 } | 398 } |
399 channel->SetJumpingMode (false); | 399 channel->SetJumpingMode (false); |
400 | 400 |
(...skipping 12 matching lines...) Expand all Loading... |
413 | 413 |
414 m_receivedPacketServer = Create<Packet> (); | 414 m_receivedPacketServer = Create<Packet> (); |
415 m_icmpType = 0; | 415 m_icmpType = 0; |
416 m_icmpCode = 0; | 416 m_icmpCode = 0; |
417 Simulator::ScheduleWithContext (m_socketClient->GetNode ()->GetId (), Seco
nds (0), | 417 Simulator::ScheduleWithContext (m_socketClient->GetNode ()->GetId (), Seco
nds (0), |
418 &SixlowpanFragmentationTest::SendClient, t
his); | 418 &SixlowpanFragmentationTest::SendClient, t
his); |
419 Simulator::Run (); | 419 Simulator::Run (); |
420 | 420 |
421 uint8_t recvBuffer[65000]; | 421 uint8_t recvBuffer[65000]; |
422 | 422 |
423 uint16_t recvSize = (uint16_t)m_receivedPacketServer->GetSize (); | 423 uint16_t recvSize = static_cast<uint16_t> (m_receivedPacketServer->GetSize
()); |
424 | 424 |
425 NS_TEST_EXPECT_MSG_EQ (recvSize, packetSizes[i], | 425 NS_TEST_EXPECT_MSG_EQ (recvSize, packetSizes[i], |
426 "Packet size not correct: recvSize: " << recvSize <
< " packetSizes[" << i << "]: " << packetSizes[i] ); | 426 "Packet size not correct: recvSize: " << recvSize <
< " packetSizes[" << i << "]: " << packetSizes[i] ); |
427 | 427 |
428 m_receivedPacketServer->CopyData (recvBuffer, 65000); | 428 m_receivedPacketServer->CopyData (recvBuffer, 65000); |
429 NS_TEST_EXPECT_MSG_EQ (memcmp (m_data, recvBuffer, m_receivedPacketServer-
>GetSize ()), | 429 NS_TEST_EXPECT_MSG_EQ (memcmp (m_data, recvBuffer, m_receivedPacketServer-
>GetSize ()), |
430 0, "Packet content differs"); | 430 0, "Packet content differs"); |
431 } | 431 } |
432 channel->SetDuplicateMode (false); | 432 channel->SetDuplicateMode (false); |
433 | 433 |
(...skipping 12 matching lines...) Expand all Loading... |
446 // reset the model, we want to receive the very first fragment. | 446 // reset the model, we want to receive the very first fragment. |
447 serverDevErrorModel->Reset (); | 447 serverDevErrorModel->Reset (); |
448 | 448 |
449 m_receivedPacketServer = Create<Packet> (); | 449 m_receivedPacketServer = Create<Packet> (); |
450 m_icmpType = 0; | 450 m_icmpType = 0; |
451 m_icmpCode = 0; | 451 m_icmpCode = 0; |
452 Simulator::ScheduleWithContext (m_socketClient->GetNode ()->GetId (), Seco
nds (0), | 452 Simulator::ScheduleWithContext (m_socketClient->GetNode ()->GetId (), Seco
nds (0), |
453 &SixlowpanFragmentationTest::SendClient, t
his); | 453 &SixlowpanFragmentationTest::SendClient, t
his); |
454 Simulator::Run (); | 454 Simulator::Run (); |
455 | 455 |
456 uint16_t recvSize = (uint16_t)m_receivedPacketServer->GetSize (); | 456 uint16_t recvSize = static_cast<uint16_t> (m_receivedPacketServer->GetSize
()); |
457 | 457 |
458 NS_TEST_EXPECT_MSG_EQ ((recvSize == 0), true, "Server got a packet, someth
ing wrong"); | 458 NS_TEST_EXPECT_MSG_EQ ((recvSize == 0), true, "Server got a packet, someth
ing wrong"); |
459 // Note that a 6LoWPAN fragment timeout does NOT send any ICMPv6. | 459 // Note that a 6LoWPAN fragment timeout does NOT send any ICMPv6. |
460 } | 460 } |
461 | 461 |
462 Simulator::Destroy (); | 462 Simulator::Destroy (); |
463 } | 463 } |
464 | 464 |
465 | 465 |
466 /** | 466 /** |
467 * \ingroup sixlowpan-test | 467 * \ingroup sixlowpan-test |
468 * \ingroup tests | 468 * \ingroup tests |
469 * | 469 * |
470 * \brief 6LoWPAN Fragmentation TestSuite | 470 * \brief 6LoWPAN Fragmentation TestSuite |
471 */ | 471 */ |
472 class SixlowpanFragmentationTestSuite : public TestSuite | 472 class SixlowpanFragmentationTestSuite : public TestSuite |
473 { | 473 { |
474 public: | 474 public: |
475 SixlowpanFragmentationTestSuite (); | 475 SixlowpanFragmentationTestSuite (); |
476 private: | 476 private: |
477 }; | 477 }; |
478 | 478 |
479 SixlowpanFragmentationTestSuite::SixlowpanFragmentationTestSuite () | 479 SixlowpanFragmentationTestSuite::SixlowpanFragmentationTestSuite () |
480 : TestSuite ("sixlowpan-fragmentation", UNIT) | 480 : TestSuite ("sixlowpan-fragmentation", UNIT) |
481 { | 481 { |
482 AddTestCase (new SixlowpanFragmentationTest (), TestCase::QUICK); | 482 AddTestCase (new SixlowpanFragmentationTest (), TestCase::QUICK); |
483 } | 483 } |
484 | 484 |
485 static SixlowpanFragmentationTestSuite g_sixlowpanFragmentationTestSuite; //!< S
tatic variable for test initialization | 485 static SixlowpanFragmentationTestSuite g_sixlowpanFragmentationTestSuite; //!< S
tatic variable for test initialization |
LEFT | RIGHT |