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) 2011 Universita' di Firenze, Italy | 3 * Copyright (c) 2011 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 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 m_receivedPacketClient = packet->Copy (); | 260 m_receivedPacketClient = packet->Copy (); |
261 } | 261 } |
262 } | 262 } |
263 } | 263 } |
264 | 264 |
265 void | 265 void |
266 Ipv6FragmentationTest::HandleReadIcmpClient (Ipv6Address icmpSource, | 266 Ipv6FragmentationTest::HandleReadIcmpClient (Ipv6Address icmpSource, |
267 uint8_t icmpTtl, uint8_t icmpType, | 267 uint8_t icmpTtl, uint8_t icmpType, |
268 uint8_t icmpCode, uint32_t icmpInfo
) | 268 uint8_t icmpCode, uint32_t icmpInfo
) |
269 { | 269 { |
270 NS_UNUSED(icmpTtl); | 270 NS_UNUSED (icmpTtl); |
271 NS_UNUSED(icmpInfo); | 271 NS_UNUSED (icmpInfo); |
272 m_icmpType = icmpType; | 272 m_icmpType = icmpType; |
273 m_icmpCode = icmpCode; | 273 m_icmpCode = icmpCode; |
274 } | 274 } |
275 | 275 |
276 void | 276 void |
277 Ipv6FragmentationTest::SetFill (uint8_t *fill, uint32_t fillSize, uint32_t dataS
ize) | 277 Ipv6FragmentationTest::SetFill (uint8_t *fill, uint32_t fillSize, uint32_t dataS
ize) |
278 { | 278 { |
279 if (dataSize != m_dataSize) | 279 if (dataSize != m_dataSize) |
280 { | 280 { |
281 delete [] m_data; | 281 delete [] m_data; |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 channel->SetJumpingTime (Seconds (0.5)); | 377 channel->SetJumpingTime (Seconds (0.5)); |
378 | 378 |
379 | 379 |
380 // some small packets, some rather big ones | 380 // some small packets, some rather big ones |
381 uint32_t packetSizes[5] = {2000, 2500, 5000, 10000, 65000}; | 381 uint32_t packetSizes[5] = {2000, 2500, 5000, 10000, 65000}; |
382 | 382 |
383 // using the alphabet | 383 // using the alphabet |
384 uint8_t fillData[78]; | 384 uint8_t fillData[78]; |
385 for ( uint32_t k = 48; k <= 125; k++ ) | 385 for ( uint32_t k = 48; k <= 125; k++ ) |
386 { | 386 { |
387 fillData[k - 48] = (uint8_t)k; | 387 fillData[k - 48] = static_cast<uint8_t> (k); |
388 } | 388 } |
389 | 389 |
390 // First test: normal channel, no errors, no delays | 390 // First test: normal channel, no errors, no delays |
391 for ( int i = 0; i < 5; i++) | 391 for ( int i = 0; i < 5; i++) |
392 { | 392 { |
393 uint32_t packetSize = packetSizes[i]; | 393 uint32_t packetSize = packetSizes[i]; |
394 | 394 |
395 SetFill (fillData, 78, packetSize); | 395 SetFill (fillData, 78, packetSize); |
396 | 396 |
397 m_receivedPacketServer = Create<Packet> (); | 397 m_receivedPacketServer = Create<Packet> (); |
398 Simulator::ScheduleWithContext (m_socketClient->GetNode ()->GetId (), Seco
nds (0), | 398 Simulator::ScheduleWithContext (m_socketClient->GetNode ()->GetId (), Seco
nds (0), |
399 &Ipv6FragmentationTest::SendClient, this); | 399 &Ipv6FragmentationTest::SendClient, this); |
400 Simulator::Run (); | 400 Simulator::Run (); |
401 | 401 |
402 uint8_t recvBuffer[65000]; | 402 uint8_t recvBuffer[65000]; |
403 | 403 |
404 uint16_t recvSize = (uint16_t)m_receivedPacketServer->GetSize (); | 404 uint16_t recvSize = static_cast<uint16_t> (m_receivedPacketServer->GetSize
()); |
405 | 405 |
406 NS_TEST_EXPECT_MSG_EQ (recvSize, packetSizes[i], | 406 NS_TEST_EXPECT_MSG_EQ (recvSize, packetSizes[i], |
407 "Packet size not correct: recvSize: " << recvSize <
< " packetSizes[" << i << "]: " << packetSizes[i] ); | 407 "Packet size not correct: recvSize: " << recvSize <
< " packetSizes[" << i << "]: " << packetSizes[i] ); |
408 | 408 |
409 m_receivedPacketServer->CopyData (recvBuffer, 65000); | 409 m_receivedPacketServer->CopyData (recvBuffer, 65000); |
410 NS_TEST_EXPECT_MSG_EQ (memcmp (m_data, recvBuffer, m_receivedPacketServer-
>GetSize ()), | 410 NS_TEST_EXPECT_MSG_EQ (memcmp (m_data, recvBuffer, m_receivedPacketServer-
>GetSize ()), |
411 0, "Packet content differs"); | 411 0, "Packet content differs"); |
412 } | 412 } |
413 | 413 |
414 // Second test: normal channel, no errors, delays each 2 packets. | 414 // Second test: normal channel, no errors, delays each 2 packets. |
415 // Each other fragment will arrive out-of-order. | 415 // Each other fragment will arrive out-of-order. |
416 // The packets should be received correctly since reassembly will reorder the
fragments. | 416 // The packets should be received correctly since reassembly will reorder the
fragments. |
417 channel->SetJumpingMode (true); | 417 channel->SetJumpingMode (true); |
418 for ( int i = 0; i < 5; i++) | 418 for ( int i = 0; i < 5; i++) |
419 { | 419 { |
420 uint32_t packetSize = packetSizes[i]; | 420 uint32_t packetSize = packetSizes[i]; |
421 | 421 |
422 SetFill (fillData, 78, packetSize); | 422 SetFill (fillData, 78, packetSize); |
423 | 423 |
424 m_receivedPacketServer = Create<Packet> (); | 424 m_receivedPacketServer = Create<Packet> (); |
425 Simulator::ScheduleWithContext (m_socketClient->GetNode ()->GetId (), Seco
nds (0), | 425 Simulator::ScheduleWithContext (m_socketClient->GetNode ()->GetId (), Seco
nds (0), |
426 &Ipv6FragmentationTest::SendClient, this); | 426 &Ipv6FragmentationTest::SendClient, this); |
427 Simulator::Run (); | 427 Simulator::Run (); |
428 | 428 |
429 uint8_t recvBuffer[65000]; | 429 uint8_t recvBuffer[65000]; |
430 | 430 |
431 uint16_t recvSize = (uint16_t)m_receivedPacketServer->GetSize (); | 431 uint16_t recvSize = static_cast<uint16_t> (m_receivedPacketServer->GetSize
()); |
432 | 432 |
433 NS_TEST_EXPECT_MSG_EQ (recvSize, packetSizes[i], | 433 NS_TEST_EXPECT_MSG_EQ (recvSize, packetSizes[i], |
434 "Packet size not correct: recvSize: " << recvSize <
< " packetSizes[" << i << "]: " << packetSizes[i] ); | 434 "Packet size not correct: recvSize: " << recvSize <
< " packetSizes[" << i << "]: " << packetSizes[i] ); |
435 | 435 |
436 m_receivedPacketServer->CopyData (recvBuffer, 65000); | 436 m_receivedPacketServer->CopyData (recvBuffer, 65000); |
437 NS_TEST_EXPECT_MSG_EQ (memcmp (m_data, recvBuffer, m_receivedPacketServer-
>GetSize ()), | 437 NS_TEST_EXPECT_MSG_EQ (memcmp (m_data, recvBuffer, m_receivedPacketServer-
>GetSize ()), |
438 0, "Packet content differs"); | 438 0, "Packet content differs"); |
439 } | 439 } |
440 channel->SetJumpingMode (false); | 440 channel->SetJumpingMode (false); |
441 | 441 |
(...skipping 15 matching lines...) Expand all Loading... |
457 // reset the model, we want to receive the very first fragment. | 457 // reset the model, we want to receive the very first fragment. |
458 serverDevErrorModel->Reset (); | 458 serverDevErrorModel->Reset (); |
459 | 459 |
460 m_receivedPacketServer = Create<Packet> (); | 460 m_receivedPacketServer = Create<Packet> (); |
461 m_icmpType = 0; | 461 m_icmpType = 0; |
462 m_icmpCode = 0; | 462 m_icmpCode = 0; |
463 Simulator::ScheduleWithContext (m_socketClient->GetNode ()->GetId (), Seco
nds (0), | 463 Simulator::ScheduleWithContext (m_socketClient->GetNode ()->GetId (), Seco
nds (0), |
464 &Ipv6FragmentationTest::SendClient, this); | 464 &Ipv6FragmentationTest::SendClient, this); |
465 Simulator::Run (); | 465 Simulator::Run (); |
466 | 466 |
467 uint16_t recvSize = (uint16_t)m_receivedPacketServer->GetSize (); | 467 uint16_t recvSize = static_cast<uint16_t> (m_receivedPacketServer->GetSize
()); |
468 | 468 |
469 NS_TEST_EXPECT_MSG_EQ ((recvSize == 0), true, "Server got a packet, someth
ing wrong"); | 469 NS_TEST_EXPECT_MSG_EQ ((recvSize == 0), true, "Server got a packet, someth
ing wrong"); |
470 NS_TEST_EXPECT_MSG_EQ ((m_icmpType == Icmpv6Header::ICMPV6_ERROR_TIME_EXCE
EDED) | 470 NS_TEST_EXPECT_MSG_EQ ((m_icmpType == Icmpv6Header::ICMPV6_ERROR_TIME_EXCE
EDED) |
471 && (m_icmpCode == Icmpv6Header::ICMPV6_FRAGTIME), | 471 && (m_icmpCode == Icmpv6Header::ICMPV6_FRAGTIME), |
472 true, "Client did not receive ICMPv6::TIME_EXCEEDED
" << int(m_icmpType) << int(m_icmpCode) ); | 472 true, "Client did not receive ICMPv6::TIME_EXCEEDED
" << int(m_icmpType) << int(m_icmpCode) ); |
473 } | 473 } |
474 | 474 |
475 // Fourth test: normal channel, no errors, no delays. | 475 // Fourth test: normal channel, no errors, no delays. |
476 // We check tags | 476 // We check tags |
477 clientDevErrorModel->Disable (); | 477 clientDevErrorModel->Disable (); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
536 { | 536 { |
537 public: | 537 public: |
538 Ipv6FragmentationTestSuite () : TestSuite ("ipv6-fragmentation", UNIT) | 538 Ipv6FragmentationTestSuite () : TestSuite ("ipv6-fragmentation", UNIT) |
539 { | 539 { |
540 AddTestCase (new Ipv6FragmentationTest, TestCase::QUICK); | 540 AddTestCase (new Ipv6FragmentationTest, TestCase::QUICK); |
541 } | 541 } |
542 }; | 542 }; |
543 | 543 |
544 static Ipv6FragmentationTestSuite g_ipv6fragmentationTestSuite; //!< Static vari
able for test initialization | 544 static Ipv6FragmentationTestSuite g_ipv6fragmentationTestSuite; //!< Static vari
able for test initialization |
545 | 545 |
LEFT | RIGHT |