use global seed in examples, new regression tests
authorCraig Dowell <craigdo@ee.washington.edu>
Mon Mar 31 17:48:21 2008 -0700 (22 months ago)
changeset 28609105a5cf6535
parent 2859 095e1e3692f7
child 2861 18930dcd33e0
use global seed in examples, new regression tests
examples/csma-broadcast.cc
examples/csma-multicast.cc
examples/csma-one-subnet.cc
examples/csma-packet-socket.cc
examples/simple-point-to-point-olsr.cc
regression/tests/test-csma-broadcast.py
regression/tests/test-csma-multicast.py
regression/tests/test-csma-packet-socket.py
src/applications/onoff/onoff-application.cc
     1.1 --- a/examples/csma-broadcast.cc	Mon Mar 31 16:31:34 2008 -0700
     1.2 +++ b/examples/csma-broadcast.cc	Mon Mar 31 17:48:21 2008 -0700
     1.3 @@ -47,30 +47,12 @@
     1.4    // for selected modules; the below lines suggest how to do this
     1.5  #if 0
     1.6    LogComponentEnable ("CsmaBroadcastExample", LOG_LEVEL_INFO);
     1.7 -
     1.8 -  LogComponentEnable("Object", LOG_LEVEL_ALL);
     1.9 -  LogComponentEnable("Queue", LOG_LEVEL_ALL);
    1.10 -  LogComponentEnable("DropTailQueue", LOG_LEVEL_ALL);
    1.11 -  LogComponentEnable("Channel", LOG_LEVEL_ALL);
    1.12 -  LogComponentEnable("CsmaChannel", LOG_LEVEL_ALL);
    1.13 -  LogComponentEnable("NetDevice", LOG_LEVEL_ALL);
    1.14 -  LogComponentEnable("CsmaNetDevice", LOG_LEVEL_ALL);
    1.15 -  LogComponentEnable("Ipv4L3Protocol", LOG_LEVEL_ALL);
    1.16 -  LogComponentEnable("PacketSocket", LOG_LEVEL_ALL);
    1.17 -  LogComponentEnable("Socket", LOG_LEVEL_ALL);
    1.18 -  LogComponentEnable("UdpSocket", LOG_LEVEL_ALL);
    1.19 -  LogComponentEnable("UdpL4Protocol", LOG_LEVEL_ALL);
    1.20 -  LogComponentEnable("Ipv4L3Protocol", LOG_LEVEL_ALL);
    1.21 -  LogComponentEnable("Ipv4StaticRouting", LOG_LEVEL_ALL);
    1.22 -  LogComponentEnable("Ipv4Interface", LOG_LEVEL_ALL);
    1.23 -  LogComponentEnable("ArpIpv4Interface", LOG_LEVEL_ALL);
    1.24 -  LogComponentEnable("Ipv4LoopbackInterface", LOG_LEVEL_ALL);
    1.25 -  LogComponentEnable("OnOffApplication", LOG_LEVEL_ALL);
    1.26 -  // Enable the below logging command to see the packets being received
    1.27 -  LogComponentEnable("PacketSinkApplication", LOG_LEVEL_ALL);
    1.28  #endif
    1.29  
    1.30 -  // Set up some default values for the simulation.  Use the Bind()
    1.31 +  //
    1.32 +  // Make the random number generators generate reproducible results.
    1.33 +  //
    1.34 +  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    1.35  
    1.36    // Allow the user to override any of the defaults and the above
    1.37    // Bind()s at run-time, via command-line arguments
     2.1 --- a/examples/csma-multicast.cc	Mon Mar 31 16:31:34 2008 -0700
     2.2 +++ b/examples/csma-multicast.cc	Mon Mar 31 17:48:21 2008 -0700
     2.3 @@ -50,6 +50,11 @@
     2.4    // LogComponentEnable ("CsmaMulticastExample", LOG_LEVEL_INFO);
     2.5  
     2.6    //
     2.7 +  // Make the random number generators generate reproducible results.
     2.8 +  //
     2.9 +  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    2.10 +
    2.11 +  //
    2.12    // Set up default values for the simulation.  
    2.13    //
    2.14    // Select Ethernet II-style encapsulation (no LLC/Snap header)
     3.1 --- a/examples/csma-one-subnet.cc	Mon Mar 31 16:31:34 2008 -0700
     3.2 +++ b/examples/csma-one-subnet.cc	Mon Mar 31 17:48:21 2008 -0700
     3.3 @@ -47,6 +47,9 @@
     3.4    LogComponentEnable ("CsmaOneSubnetExample", LOG_LEVEL_INFO);
     3.5  #endif
     3.6  //
     3.7 +// Make the random number generators generate reproducible results.
     3.8 +//
     3.9 +  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    3.10  //
    3.11  // Allow the user to override any of the defaults and the above Bind() at
    3.12  // run-time, via command-line arguments
     4.1 --- a/examples/csma-packet-socket.cc	Mon Mar 31 16:31:34 2008 -0700
     4.2 +++ b/examples/csma-packet-socket.cc	Mon Mar 31 17:48:21 2008 -0700
     4.3 @@ -49,29 +49,12 @@
     4.4  {
     4.5  #if 0 
     4.6    LogComponentEnable ("CsmaPacketSocketExample", LOG_LEVEL_INFO);
     4.7 +#endif
     4.8  
     4.9 -  LogComponentEnable("Object", LOG_LEVEL_ALL);
    4.10 -  LogComponentEnable("Queue", LOG_LEVEL_ALL);
    4.11 -  LogComponentEnable("DropTailQueue", LOG_LEVEL_ALL);
    4.12 -  LogComponentEnable("Channel", LOG_LEVEL_ALL);
    4.13 -  LogComponentEnable("CsmaChannel", LOG_LEVEL_ALL);
    4.14 -  LogComponentEnable("NetDevice", LOG_LEVEL_ALL);
    4.15 -  LogComponentEnable("CsmaNetDevice", LOG_LEVEL_ALL);
    4.16 -  LogComponentEnable("Ipv4L3Protocol", LOG_LEVEL_ALL);
    4.17 -  LogComponentEnable("PacketSocket", LOG_LEVEL_ALL);
    4.18 -  LogComponentEnable("Socket", LOG_LEVEL_ALL);
    4.19 -  LogComponentEnable("UdpSocket", LOG_LEVEL_ALL);
    4.20 -  LogComponentEnable("UdpL4Protocol", LOG_LEVEL_ALL);
    4.21 -  LogComponentEnable("Ipv4L3Protocol", LOG_LEVEL_ALL);
    4.22 -  LogComponentEnable("Ipv4StaticRouting", LOG_LEVEL_ALL);
    4.23 -  LogComponentEnable("Ipv4Interface", LOG_LEVEL_ALL);
    4.24 -  LogComponentEnable("ArpIpv4Interface", LOG_LEVEL_ALL);
    4.25 -  LogComponentEnable("Ipv4LoopbackInterface", LOG_LEVEL_ALL);
    4.26 -  LogComponentEnable("OnOffApplication", LOG_LEVEL_ALL);
    4.27 -  LogComponentEnable("PacketSinkApplication", LOG_LEVEL_ALL);
    4.28 -  LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_ALL);
    4.29 -  LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_ALL);
    4.30 -#endif
    4.31 +  //
    4.32 +  // Make the random number generators generate reproducible results.
    4.33 +  //
    4.34 +  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    4.35  
    4.36    CommandLine cmd;
    4.37    cmd.Parse (argc, argv);
     5.1 --- a/examples/simple-point-to-point-olsr.cc	Mon Mar 31 16:31:34 2008 -0700
     5.2 +++ b/examples/simple-point-to-point-olsr.cc	Mon Mar 31 17:48:21 2008 -0700
     5.3 @@ -57,29 +57,13 @@
     5.4    // for selected modules; the below lines suggest how to do this
     5.5  #if 0 
     5.6    LogComponentEnable ("SimpleGlobalRoutingExample", LOG_LEVEL_INFO);
     5.7 +#endif
     5.8  
     5.9 -  LogComponentEnable("Object", LOG_LEVEL_ALL);
    5.10 -  LogComponentEnable("Queue", LOG_LEVEL_ALL);
    5.11 -  LogComponentEnable("DropTailQueue", LOG_LEVEL_ALL);
    5.12 -  LogComponentEnable("Channel", LOG_LEVEL_ALL);
    5.13 -  LogComponentEnable("CsmaChannel", LOG_LEVEL_ALL);
    5.14 -  LogComponentEnable("NetDevice", LOG_LEVEL_ALL);
    5.15 -  LogComponentEnable("CsmaNetDevice", LOG_LEVEL_ALL);
    5.16 -  LogComponentEnable("Ipv4L3Protocol", LOG_LEVEL_ALL);
    5.17 -  LogComponentEnable("PacketSocket", LOG_LEVEL_ALL);
    5.18 -  LogComponentEnable("Socket", LOG_LEVEL_ALL);
    5.19 -  LogComponentEnable("UdpSocket", LOG_LEVEL_ALL);
    5.20 -  LogComponentEnable("UdpL4Protocol", LOG_LEVEL_ALL);
    5.21 -  LogComponentEnable("Ipv4L3Protocol", LOG_LEVEL_ALL);
    5.22 -  LogComponentEnable("Ipv4StaticRouting", LOG_LEVEL_ALL);
    5.23 -  LogComponentEnable("Ipv4Interface", LOG_LEVEL_ALL);
    5.24 -  LogComponentEnable("ArpIpv4Interface", LOG_LEVEL_ALL);
    5.25 -  LogComponentEnable("Ipv4LoopbackInterface", LOG_LEVEL_ALL);
    5.26 -  LogComponentEnable("OnOffApplication", LOG_LEVEL_ALL);
    5.27 -  LogComponentEnable("PacketSinkApplication", LOG_LEVEL_ALL);
    5.28 -  LogComponentEnable("UdpEchoClientApplication", LOG_LEVEL_ALL);
    5.29 -  LogComponentEnable("UdpEchoServerApplication", LOG_LEVEL_ALL);
    5.30 -#endif
    5.31 +  //
    5.32 +  // Make the random number generators generate reproducible results.
    5.33 +  //
    5.34 +  RandomVariable::UseGlobalSeed (1, 1, 2, 3, 5, 8);
    5.35 +
    5.36    // Set up some default values for the simulation.  Use the 
    5.37  
    5.38    Config::SetDefault ("ns3::OnOffApplication::PacketSize", Uinteger (210));
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/regression/tests/test-csma-broadcast.py	Mon Mar 31 17:48:21 2008 -0700
     6.3 @@ -0,0 +1,41 @@
     6.4 +#! /usr/bin/env python
     6.5 +
     6.6 +"""Generic trace-comparison-type regression test."""
     6.7 +
     6.8 +import os
     6.9 +import shutil
    6.10 +
    6.11 +def run(verbose, generate):
    6.12 +    """Execute a test."""
    6.13 +
    6.14 +    testName = "csma-broadcast"
    6.15 +    repoName = "ns-3-ref-traces/"
    6.16 +    refDirName = testName + ".ref"
    6.17 +
    6.18 +    if not os.path.exists(repoName):
    6.19 +        print"No reference trace repository"
    6.20 +        return 1
    6.21 +
    6.22 +    if generate:
    6.23 +        if not os.path.exists(repoName + refDirName):
    6.24 +            print "creating new " + repoName + refDirName
    6.25 +            os.mkdir(repoName + refDirName)
    6.26 +
    6.27 +        os.system("./waf --cwd regression/" + repoName + refDirName +
    6.28 +            " --run " + testName + " >& /dev/null")
    6.29 +
    6.30 +        print "Remember to commit " + repoName + refDirName
    6.31 +        return 0
    6.32 +    else:
    6.33 +        if not os.path.exists(repoName + refDirName):
    6.34 +            print "Cannot locate reference traces"
    6.35 +            return 1
    6.36 +
    6.37 +        shutil.rmtree("traces");
    6.38 +        os.mkdir("traces")
    6.39 +        
    6.40 +        os.system("./waf --cwd regression/traces --run " +
    6.41 +          testName + " >& /dev/null")
    6.42 +        
    6.43 +        return os.system("diff -q traces " + repoName + refDirName +
    6.44 +         " >& /dev/null")
     7.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.2 +++ b/regression/tests/test-csma-multicast.py	Mon Mar 31 17:48:21 2008 -0700
     7.3 @@ -0,0 +1,41 @@
     7.4 +#! /usr/bin/env python
     7.5 +
     7.6 +"""Generic trace-comparison-type regression test."""
     7.7 +
     7.8 +import os
     7.9 +import shutil
    7.10 +
    7.11 +def run(verbose, generate):
    7.12 +    """Execute a test."""
    7.13 +
    7.14 +    testName = "csma-multicast"
    7.15 +    repoName = "ns-3-ref-traces/"
    7.16 +    refDirName = testName + ".ref"
    7.17 +
    7.18 +    if not os.path.exists(repoName):
    7.19 +        print"No reference trace repository"
    7.20 +        return 1
    7.21 +
    7.22 +    if generate:
    7.23 +        if not os.path.exists(repoName + refDirName):
    7.24 +            print "creating new " + repoName + refDirName
    7.25 +            os.mkdir(repoName + refDirName)
    7.26 +
    7.27 +        os.system("./waf --cwd regression/" + repoName + refDirName +
    7.28 +            " --run " + testName + " >& /dev/null")
    7.29 +
    7.30 +        print "Remember to commit " + repoName + refDirName
    7.31 +        return 0
    7.32 +    else:
    7.33 +        if not os.path.exists(repoName + refDirName):
    7.34 +            print "Cannot locate reference traces"
    7.35 +            return 1
    7.36 +
    7.37 +        shutil.rmtree("traces");
    7.38 +        os.mkdir("traces")
    7.39 +        
    7.40 +        os.system("./waf --cwd regression/traces --run " +
    7.41 +          testName + " >& /dev/null")
    7.42 +        
    7.43 +        return os.system("diff -q traces " + repoName + refDirName +
    7.44 +         " >& /dev/null")
     8.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.2 +++ b/regression/tests/test-csma-packet-socket.py	Mon Mar 31 17:48:21 2008 -0700
     8.3 @@ -0,0 +1,41 @@
     8.4 +#! /usr/bin/env python
     8.5 +
     8.6 +"""Generic trace-comparison-type regression test."""
     8.7 +
     8.8 +import os
     8.9 +import shutil
    8.10 +
    8.11 +def run(verbose, generate):
    8.12 +    """Execute a test."""
    8.13 +
    8.14 +    testName = "csma-packet-socket"
    8.15 +    repoName = "ns-3-ref-traces/"
    8.16 +    refDirName = testName + ".ref"
    8.17 +
    8.18 +    if not os.path.exists(repoName):
    8.19 +        print"No reference trace repository"
    8.20 +        return 1
    8.21 +
    8.22 +    if generate:
    8.23 +        if not os.path.exists(repoName + refDirName):
    8.24 +            print "creating new " + repoName + refDirName
    8.25 +            os.mkdir(repoName + refDirName)
    8.26 +
    8.27 +        os.system("./waf --cwd regression/" + repoName + refDirName +
    8.28 +            " --run " + testName + " >& /dev/null")
    8.29 +
    8.30 +        print "Remember to commit " + repoName + refDirName
    8.31 +        return 0
    8.32 +    else:
    8.33 +        if not os.path.exists(repoName + refDirName):
    8.34 +            print "Cannot locate reference traces"
    8.35 +            return 1
    8.36 +
    8.37 +        shutil.rmtree("traces");
    8.38 +        os.mkdir("traces")
    8.39 +        
    8.40 +        os.system("./waf --cwd regression/traces --run " +
    8.41 +          testName + " >& /dev/null")
    8.42 +        
    8.43 +        return os.system("diff -q traces " + repoName + refDirName +
    8.44 +         " >& /dev/null")
     9.1 --- a/src/applications/onoff/onoff-application.cc	Mon Mar 31 16:31:34 2008 -0700
     9.2 +++ b/src/applications/onoff/onoff-application.cc	Mon Mar 31 17:48:21 2008 -0700
     9.3 @@ -208,6 +208,7 @@
     9.4    NS_LOG_FUNCTION;
     9.5  
     9.6    Time onInterval = Seconds(m_onTime.GetValue());
     9.7 +  NS_LOG_LOGIC ("stop at " << onInterval);
     9.8    Simulator::Schedule(onInterval, &OnOffApplication::StopSending, this);
     9.9  }
    9.10  
    9.11 @@ -215,7 +216,7 @@
    9.12  void OnOffApplication::SendPacket()
    9.13  {
    9.14    NS_LOG_FUNCTION;
    9.15 -
    9.16 +  NS_LOG_LOGIC ("sending packet at " << Simulator::Now());
    9.17    NS_ASSERT (m_sendEvent.IsExpired ());
    9.18    Ptr<Packet> packet = Create<Packet> (m_pktSize);
    9.19    m_txTrace (packet);