A Discrete-Event Network Simulator
API
Loading...
Searching...
No Matches
ns3::test::RandomVariable::WeibullTestCase Class Reference

Test case for Weibull distribution random variable stream generator. More...

+ Inheritance diagram for ns3::test::RandomVariable::WeibullTestCase:
+ Collaboration diagram for ns3::test::RandomVariable::WeibullTestCase:

Public Member Functions

 WeibullTestCase ()
 
double ChiSquaredTest (Ptr< RandomVariableStream > rng) const override
 Compute the chi square value from a random variable.
 
- Public Member Functions inherited from ns3::test::RandomVariable::TestCaseBase
 TestCaseBase (std::string name)
 Constructor.
 
double Average (Ptr< RandomVariableStream > rng) const
 Compute the average of a random variable.
 
double ChiSquared (gsl_histogram *h, const std::vector< double > &expected, Ptr< RandomVariableStream > rng) const
 Compute the chi squared value of a sampled distribution compared to the expected distribution.
 
double ChiSquaredsAverage (const RngGeneratorBase *generator, std::size_t nRuns) const
 Average the chi squared value over some number of runs, each run with a new instance of the random number generator.
 
void SetTestSuiteSeed ()
 Set the seed used for this test suite.
 
std::vector< doubleUniformHistogramBins (gsl_histogram *h, double start, double end, bool underflow=true, bool overflow=true) const
 Configure a GSL histogram with uniform bins, with optional under/over-flow bins.
 
double Variance (Ptr< RandomVariableStream > rng, double average) const
 Compute the variance of a random variable.
 
- Public Member Functions inherited from ns3::TestCase
 TestCase (const TestCase &)=delete
 
virtual ~TestCase ()
 <
 
std::string GetName () const
 
TestCaseoperator= (const TestCase &)=delete
 

Private Member Functions

void DoRun () override
 Implementation to actually run this TestCase.
 

Static Private Attributes

static constexpr double TOLERANCE {1e-2}
 Tolerance for testing rng values against expectation, as a fraction of mean value.
 

Additional Inherited Members

- Public Types inherited from ns3::TestCase
enum class  Duration { QUICK = 1 , EXTENSIVE = 2 , TAKES_FOREVER = 3 }
 How long the test takes to execute. More...
 
- Static Public Attributes inherited from ns3::test::RandomVariable::TestCaseBase
static const uint32_t N_BINS {50}
 Number of bins for sampling the distributions.
 
static const uint32_t N_MEASUREMENTS {1000000}
 Number of samples to draw when populating the distributions.
 
static const uint32_t N_RUNS {5}
 Number of retry attempts to pass a chi-square test.
 
- Static Public Attributes inherited from ns3::TestCase
static constexpr auto EXTENSIVE = Duration::EXTENSIVE
 
static constexpr auto QUICK = Duration::QUICK
 
static constexpr auto TAKES_FOREVER
 
- Protected Member Functions inherited from ns3::TestCase
 TestCase (std::string name)
 Constructor.
 
void AddTestCase (TestCase *testCase, Duration duration=Duration::QUICK)
 Add an individual child TestCase to this test suite.
 
TestCaseGetParent () const
 Get the parent of this TestCase.
 
bool IsStatusFailure () const
 Check if any tests failed.
 
bool IsStatusSuccess () const
 Check if all tests passed.
 
void SetDataDir (std::string directory)
 Set the data directory where reference trace files can be found.
 
void ReportTestFailure (std::string cond, std::string actual, std::string limit, std::string message, std::string file, int32_t line)
 Log the failure of this TestCase.
 
bool MustAssertOnFailure () const
 Check if this run should assert on failure.
 
bool MustContinueOnFailure () const
 Check if this run should continue on failure.
 
std::string CreateDataDirFilename (std::string filename)
 Construct the full path to a file in the data directory.
 
std::string CreateTempDirFilename (std::string filename)
 Construct the full path to a file in a temporary directory.
 

Detailed Description

Test case for Weibull distribution random variable stream generator.

Definition at line 1195 of file random-variable-stream-test-suite.cc.

Constructor & Destructor Documentation

◆ WeibullTestCase()

ns3::test::RandomVariable::WeibullTestCase::WeibullTestCase ( )

Definition at line 1215 of file random-variable-stream-test-suite.cc.

Member Function Documentation

◆ ChiSquaredTest()

double ns3::test::RandomVariable::WeibullTestCase::ChiSquaredTest ( Ptr< RandomVariableStream > rng) const
overridevirtual

Compute the chi square value from a random variable.

This function sets up the binning and expected distribution needed to actually compute the chi squared value, which should be done by a call to ChiSquared.

This is the point of customization expected to be implemented in derived classes with the appropriate histogram binning and expected distribution. For example

SomeRngTestCase::ChiSquaredTest (Ptr<RandomVariableStream> rng) const { gsl_histogram * h = gsl_histogram_alloc (N_BINS); auto range = UniformHistogramBins (h, -4., 4.); std::vector<double> expected (N_BINS); // Populated expected for (std::size_t i = 0; i < N_BINS; ++i) { expected[i] = ...; expected[i] *= N_MEASUREMENTS; } double chiSquared = ChiSquared (h, expected, rng); gsl_histogram_free (h); return chiSquared; }

Parameters
[in]rngThe random number generator to test.
Returns
The chi squared value.

Reimplemented from ns3::test::RandomVariable::TestCaseBase.

Definition at line 1221 of file random-variable-stream-test-suite.cc.

References ns3::test::RandomVariable::TestCaseBase::ChiSquared(), ns3::test::RandomVariable::TestCaseBase::N_BINS, ns3::test::RandomVariable::TestCaseBase::N_MEASUREMENTS, NS_LOG_INFO, and ns3::test::RandomVariable::TestCaseBase::UniformHistogramBins().

+ Here is the call graph for this function:

◆ DoRun()

void ns3::test::RandomVariable::WeibullTestCase::DoRun ( )
overrideprivatevirtual

Implementation to actually run this TestCase.

Subclasses should override this method to conduct their tests.

Implements ns3::TestCase.

Definition at line 1248 of file random-variable-stream-test-suite.cc.

References ns3::test::RandomVariable::TestCaseBase::Average(), ns3::test::RandomVariable::TestCaseBase::ChiSquaredsAverage(), ns3::CreateObject(), ns3::test::RandomVariable::TestCaseBase::N_BINS, ns3::test::RandomVariable::TestCaseBase::N_RUNS, NS_LOG_FUNCTION, NS_TEST_ASSERT_MSG_EQ, NS_TEST_ASSERT_MSG_EQ_TOL, NS_TEST_ASSERT_MSG_LT, ns3::test::RandomVariable::TestCaseBase::SetTestSuiteSeed(), and TOLERANCE.

+ Here is the call graph for this function:

Member Data Documentation

◆ TOLERANCE

double ns3::test::RandomVariable::WeibullTestCase::TOLERANCE {1e-2}
staticconstexprprivate

Tolerance for testing rng values against expectation, as a fraction of mean value.

Definition at line 1212 of file random-variable-stream-test-suite.cc.

Referenced by DoRun().


The documentation for this class was generated from the following file: