You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
244 lines
7.8 KiB
244 lines
7.8 KiB
/* /////////////////////////////////////////////////////////////////////////
|
|
* File: pantheios/backends/bec.test.h
|
|
*
|
|
* Purpose: Declaration of the be.test library.
|
|
*
|
|
* Created: 1st November 2006
|
|
* Updated: 22nd March 2010
|
|
*
|
|
* Home: http://www.pantheios.org/
|
|
*
|
|
* Copyright (c) 2006-2009, Matthew Wilson and Synesis Software
|
|
* All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are
|
|
* met:
|
|
*
|
|
* - Redistributions of source code must retain the above copyright notice,
|
|
* this list of conditions and the following disclaimer.
|
|
* - Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* - Neither the name(s) of Matthew Wilson and Synesis Software nor the
|
|
* names of any contributors may be used to endorse or promote products
|
|
* derived from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
|
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
|
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*
|
|
* ////////////////////////////////////////////////////////////////////// */
|
|
|
|
|
|
/** \file pantheios/backends/bec.test.h
|
|
*
|
|
* \brief [C, C++] Declaration of the be.test library
|
|
*/
|
|
|
|
#ifndef PANTHEIOS_INCL_BACKENDS_H_BEC_TEST
|
|
#define PANTHEIOS_INCL_BACKENDS_H_BEC_TEST
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////
|
|
* Version information
|
|
*/
|
|
|
|
#ifndef PANTHEIOS_DOCUMENTATION_SKIP_SECTION
|
|
# define PANTHEIOS_VER_BACKENDS_H_BEC_TEST_MAJOR 2
|
|
# define PANTHEIOS_VER_BACKENDS_H_BEC_TEST_MINOR 2
|
|
# define PANTHEIOS_VER_BACKENDS_H_BEC_TEST_REVISION 1
|
|
# define PANTHEIOS_VER_BACKENDS_H_BEC_TEST_EDIT 24
|
|
#endif /* !PANTHEIOS_DOCUMENTATION_SKIP_SECTION */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////
|
|
* Includes
|
|
*/
|
|
|
|
#ifndef PANTHEIOS_INCL_PANTHEIOS_H_PANTHEIOS
|
|
# include <pantheios/pantheios.h>
|
|
#endif /* !PANTHEIOS_INCL_PANTHEIOS_H_PANTHEIOS */
|
|
|
|
#ifndef STLSOFT_INCL_STLSOFT_H_STLSOFT
|
|
# include <stlsoft/stlsoft.h>
|
|
#endif /* !STLSOFT_INCL_STLSOFT_H_STLSOFT */
|
|
|
|
#ifdef __cplusplus
|
|
/* We include threading.h to prevent the definition of _REENTRANT via
|
|
* <string> on some UNIX operating systems from confusing the feature
|
|
* discrimination in UNIXSTL and having it think that we're multithreading
|
|
* when we're not.
|
|
*/
|
|
# include <pantheios/internal/threading.h>
|
|
# include <string>
|
|
#endif /* __cplusplus */
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////
|
|
* API
|
|
*/
|
|
|
|
/** \defgroup group__backend__stock_backends__test Pantheios Test Stock Back-end
|
|
* \ingroup group__backend__stock_backends
|
|
* Stub back-end library that does no emission.
|
|
*
|
|
* This library is useful for conducting performance tests.
|
|
*/
|
|
|
|
/** Implements the functionality for pantheios_be_init() over the Test API.
|
|
* \ingroup group__backend__stock_backends__test
|
|
*/
|
|
PANTHEIOS_CALL(int) pantheios_be_test_init(
|
|
PAN_CHAR_T const* processIdentity
|
|
, int id
|
|
, void* unused
|
|
, void* reserved
|
|
, void** ptoken
|
|
);
|
|
|
|
/** Implements the functionality for pantheios_be_uninit() over the Test API.
|
|
* \ingroup group__backend__stock_backends__test
|
|
*/
|
|
PANTHEIOS_CALL(void) pantheios_be_test_uninit(
|
|
void* token
|
|
);
|
|
|
|
/** Implements the functionality for pantheios_be_logEntry() over the Test API.
|
|
* \ingroup group__backend__stock_backends__test
|
|
*/
|
|
PANTHEIOS_CALL(int) pantheios_be_test_logEntry(
|
|
void* feToken
|
|
, void* beToken
|
|
, int severity
|
|
, PAN_CHAR_T const* entry
|
|
, size_t cchEntry
|
|
);
|
|
|
|
/** \def pantheios_be_test_parseArgs
|
|
*
|
|
* Parses the be.test back-end flags
|
|
*
|
|
* \ingroup group__backend
|
|
*
|
|
* There are currently no arguments whatsoever for be.test, hence
|
|
* pantheios_be_test_parseArgs is actually a \#define for
|
|
* <code>NULL</code>. At such time as back-end specific arguments
|
|
* are required, it will become a first-class function.
|
|
*/
|
|
#define pantheios_be_test_parseArgs NULL
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////
|
|
* Namespace
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
|
|
namespace pantheios
|
|
{
|
|
namespace be
|
|
{
|
|
namespace test
|
|
{
|
|
|
|
/** Represents a date/time epoch.
|
|
*
|
|
* \note Currently implemented as a no-op class. Will be fleshed out in
|
|
* a future version of Pantheios.
|
|
*/
|
|
class Time
|
|
{
|
|
public:
|
|
/** Creates an instance representing the current time. */
|
|
static Time now();
|
|
};
|
|
|
|
/** Represents an entry in the statement history
|
|
*/
|
|
struct Entry
|
|
{
|
|
public: /* Member Types */
|
|
/** The string type */
|
|
typedef std::basic_string<pan_char_t> string_type;
|
|
|
|
public: /* Member Variables */
|
|
/* const */ Time time; /*!< The time the entry was logged. */
|
|
/* const */ int severity; /*!< The entry's severity. */
|
|
/* const */ string_type statement; /*!< The entry's contents. */
|
|
|
|
public: /* Construction */
|
|
/** Creates an instance with the given characteristics */
|
|
Entry(int severity, pan_char_t const* entry, size_t cchEntry);
|
|
};
|
|
|
|
/** Represents the collection of entries since the last call
|
|
* to reset()
|
|
*/
|
|
class Results
|
|
{
|
|
public: /* Member Types */
|
|
/** The type of this class */
|
|
typedef Results class_type;
|
|
/** The value type */
|
|
typedef Entry value_type;
|
|
protected:
|
|
# if defined(STLSOFT_COMPILER_IS_DMC)
|
|
public:
|
|
# endif /* compiler */
|
|
/** Pimpl class */
|
|
struct ResultsImpl;
|
|
|
|
protected: /* Construction */
|
|
# ifndef PANTHEIOS_DOCUMENTATION_SKIP_SECTION
|
|
Results(ResultsImpl* impl);
|
|
# endif /* !PANTHEIOS_DOCUMENTATION_SKIP_SECTION */
|
|
public:
|
|
/** Copies the contents */
|
|
Results(class_type const& rhs);
|
|
/** Destroys the instance */
|
|
~Results() stlsoft_throw_0();
|
|
|
|
public: /* Accessors */
|
|
/** Indicates whether the container is empty */
|
|
bool empty() const;
|
|
/** Indicates the number of results in the container */
|
|
size_t size() const;
|
|
/** Requests an element from the container
|
|
*
|
|
* \param index The index of the element. Must be less than the value returned by size()
|
|
*/
|
|
value_type const& operator [](size_t index) const;
|
|
|
|
private: /* Implementation */
|
|
ResultsImpl* const m_impl;
|
|
|
|
private: /* Not to be implemented */
|
|
class_type& operator= (class_type const& rhs);
|
|
};
|
|
|
|
/** Resets all results */
|
|
void reset();
|
|
|
|
/** Obtain a copy of the current test results */
|
|
Results results();
|
|
|
|
/* /////////////////////////////////////////////////////////////////////////
|
|
* Namespace
|
|
*/
|
|
|
|
} /* namespace test */
|
|
} /* namespace be */
|
|
} /* namespace pantheios */
|
|
|
|
#endif /* __cplusplus */
|
|
|
|
/* ////////////////////////////////////////////////////////////////////// */
|
|
|
|
#endif /* PANTHEIOS_INCL_BACKENDS_H_BEC_TEST */
|
|
|
|
/* ///////////////////////////// end of file //////////////////////////// */
|