From b75c5269255e1898cf4f05ba4ff9fed510fa898a Mon Sep 17 00:00:00 2001 From: Craig Dowell Date: Wed, 17 Dec 2008 12:17:17 -0800 Subject: [PATCH] fixed seeds for tutorial examples and updates to tutorial to match --- doc/tutorial/building-topologies.texi | 14 ++++++++++++++ doc/tutorial/conceptual-overview.texi | 15 +++++++++++++++ examples/first.cc | 2 ++ examples/second.cc | 2 ++ examples/third.cc | 2 ++ 5 files changed, 35 insertions(+) diff --git a/doc/tutorial/building-topologies.texi b/doc/tutorial/building-topologies.texi index 1a8549e55..e61e802b0 100644 --- a/doc/tutorial/building-topologies.texi +++ b/doc/tutorial/building-topologies.texi @@ -105,6 +105,13 @@ familiar to you so far. LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO); @end verbatim +A fixed seed is provided to the random number generators so that they will +generate repeatable results. + +@verbatim + RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8); +@end verbatim + Next, you will see some familiar code that will allow you to change the number of devices on the CSMA network via command line argument. We did something similar when we allowed the number of packets sent to be changed in the section @@ -657,6 +664,13 @@ the simulation. LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO); @end verbatim +A fixed seed is provided to the random number generators so that they will +generate repeatable results. + +@verbatim + RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8); +@end verbatim + Next, you will see more familiar code that will allow you to change the number of devices on the CSMA and Wifi networks via command line argument. diff --git a/doc/tutorial/conceptual-overview.texi b/doc/tutorial/conceptual-overview.texi index 873eab9b5..4c0664be2 100644 --- a/doc/tutorial/conceptual-overview.texi +++ b/doc/tutorial/conceptual-overview.texi @@ -362,6 +362,21 @@ enable on each component. These two lines of code enable debug logging at the INFO level for echo clients and servers. This will result in the application printing out messages as packets are sent and received during the simulation. +The next line of code is used to give a fixed seed to the random number +generators so that they will generate repeatable results. In the example +programs, it allows us to thouroughly document the output of the trace files +in a consistent way. Having a fixed seed also allows us to use the examples +in our regression testing framework. + +@verbatim + RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8); +@end verbatim + +Random variables are very important in understanding how to get repeatable +results, so you are encouraged to read the Doxygen and manual sections to +understand what is going on there. For us, the main concern is in making +random backoff algorithms consistent across runs. + Now we will get directly to the business of creating a topology and running a simulation. We use the topology helper objects to make this job as easy as possible. diff --git a/examples/first.cc b/examples/first.cc index 0461d4cc9..a195d9ae7 100644 --- a/examples/first.cc +++ b/examples/first.cc @@ -29,6 +29,8 @@ main (int argc, char *argv[]) LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO); LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO); + RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8); + NodeContainer nodes; nodes.Create (2); diff --git a/examples/second.cc b/examples/second.cc index a568a999f..7bfbea698 100644 --- a/examples/second.cc +++ b/examples/second.cc @@ -39,6 +39,8 @@ main (int argc, char *argv[]) LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO); LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO); + RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8); + uint32_t nCsma = 3; CommandLine cmd; cmd.AddValue ("nCsma", "Number of \"extra\" CSMA nodes/devices", nCsma); diff --git a/examples/third.cc b/examples/third.cc index e98c15f83..dbf652f29 100644 --- a/examples/third.cc +++ b/examples/third.cc @@ -43,6 +43,8 @@ main (int argc, char *argv[]) LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_INFO); LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_INFO); + RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8); + uint32_t nCsma = 3; uint32_t nWifi = 3; CommandLine cmd;