diff options
Diffstat (limited to 'tools/lldb-perf/lib/TestCase.h')
| -rw-r--r-- | tools/lldb-perf/lib/TestCase.h | 205 | 
1 files changed, 205 insertions, 0 deletions
| diff --git a/tools/lldb-perf/lib/TestCase.h b/tools/lldb-perf/lib/TestCase.h new file mode 100644 index 000000000000..811d0432b58a --- /dev/null +++ b/tools/lldb-perf/lib/TestCase.h @@ -0,0 +1,205 @@ +//===-- TestCase.h ----------------------------------------------*- C++ -*-===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef __PerfTestDriver__TestCase__ +#define __PerfTestDriver__TestCase__ + +#include "lldb/API/LLDB.h" +#include "Measurement.h" +#include <getopt.h> + +namespace lldb_perf { + +class Results; +     +class TestCase +{ +public: +    TestCase(); +     +    struct ActionWanted +	{ +		enum class Type +		{ +			eStepOver, +			eContinue, +            eStepOut, +            eRelaunch, +            eCallNext, +            eNone, +			eKill +		} type; +		lldb::SBThread thread; +        lldb::SBLaunchInfo launch_info; +         +        ActionWanted () : +            type (Type::eContinue), +            thread (), +            launch_info (NULL) +        { +        } +         +        void +        None () +        { +            type = Type::eNone; +            thread = lldb::SBThread(); +        } + +        void +        Continue() +        { +            type = Type::eContinue; +            thread = lldb::SBThread(); +        } +         +        void +        StepOver (lldb::SBThread t) +        { +            type = Type::eStepOver; +            thread = t; +        } + +        void +        StepOut (lldb::SBThread t) +        { +            type = Type::eStepOut; +            thread = t; +        } +         +        void +        Relaunch (lldb::SBLaunchInfo l) +        { +            type = Type::eRelaunch; +            thread = lldb::SBThread(); +            launch_info = l; +        } +         +        void +        Kill () +        { +            type = Type::eKill; +            thread = lldb::SBThread(); +        } +         +        void +        CallNext () +        { +            type = Type::eCallNext; +            thread = lldb::SBThread(); +        } +	}; +     +    virtual +    ~TestCase () +    { +    } +     +	virtual bool +	Setup (int& argc, const char**& argv); +     +	virtual void +	TestStep (int counter, ActionWanted &next_action) = 0; +	 +	bool +	Launch (lldb::SBLaunchInfo &launch_info); +	 +    bool +	Launch (std::initializer_list<const char*> args = {}); +     +	void +	Loop(); +     +    void +    SetVerbose (bool); +     +    bool +    GetVerbose (); +     +    virtual void +    WriteResults (Results &results) = 0; +     +    template <typename G,typename A> +    Measurement<G,A> CreateMeasurement (A a, const char* name = NULL, const char* description = NULL) +    { +        return Measurement<G,A> (a,name, description); +    } +     +    template <typename A> +    TimeMeasurement<A> CreateTimeMeasurement (A a, const char* name = NULL, const char* description = NULL) +    { +        return TimeMeasurement<A> (a,name, description); +    } +     +    template <typename A> +    MemoryMeasurement<A> CreateMemoryMeasurement (A a, const char* name = NULL, const char* description = NULL) +    { +        return MemoryMeasurement<A> (a,name, description); +    } +     +    static int +    Run (TestCase& test, int argc, const char** argv); +     +    virtual bool +    ParseOption (int short_option, const char* optarg) +    { +        return false; +    } +     +    virtual struct option* +    GetLongOptions () +    { +        return NULL; +    } +     +    lldb::SBDebugger & +    GetDebugger() +    { +        return m_debugger; +    } + +    lldb::SBTarget & +    GetTarget() +    { +        return m_target; +    } +     +    lldb::SBProcess & +    GetProcess () +    { +        return m_process; +    } +     +    lldb::SBThread & +    GetThread () +    { +        return m_thread; +    } +     +    int +    GetStep () +    { +        return m_step; +    } +     +    static const int RUN_SUCCESS = 0; +    static const int RUN_SETUP_ERROR = 100; +     +protected: +    lldb::SBDebugger m_debugger; +	lldb::SBTarget m_target; +	lldb::SBProcess m_process; +	lldb::SBThread m_thread; +	lldb::SBListener m_listener; +    bool m_verbose; +    int m_step; +}; +} + +#endif /* defined(__PerfTestDriver__TestCase__) */ | 
