TestCase.h revision c50fc4b658c46ef43b1add131391ecdd1f9bd752
1//
2//  TestCase.h
3//  PerfTestDriver
4//
5//  Created by Enrico Granata on 3/7/13.
6//  Copyright (c) 2013 Apple Inc. All rights reserved.
7//
8
9#ifndef __PerfTestDriver__TestCase__
10#define __PerfTestDriver__TestCase__
11
12#include "lldb/API/LLDB.h"
13#include "Measurement.h"
14
15using namespace lldb;
16
17namespace lldb { namespace perf
18{
19class TestCase
20{
21public:
22    TestCase();
23
24    struct ActionWanted
25	{
26		enum class Type
27		{
28			eAWNext,
29			eAWContinue,
30            eAWFinish,
31			eAWKill
32		} type;
33		SBThread thread;
34	};
35
36    virtual
37    ~TestCase ()
38    {}
39
40	virtual void
41	Setup (int argc, const char** argv);
42
43	virtual ActionWanted
44	TestStep (int counter) = 0;
45
46	bool
47	Launch (const char** args, const char* cwd);
48
49	void
50	Loop();
51
52    void
53    SetVerbose (bool);
54
55    bool
56    GetVerbose ();
57
58    virtual void
59    Results () = 0;
60
61    template <typename G,typename A>
62    Measurement<G,A> CreateMeasurement (A a, const char* name = NULL, const char* description = NULL)
63    {
64        return Measurement<G,A> (a,name, description);
65    }
66
67    template <typename A>
68    TimeMeasurement<A> CreateTimeMeasurement (A a, const char* name = NULL, const char* description = NULL)
69    {
70        return TimeMeasurement<A> (a,name, description);
71    }
72
73    static void
74    Run (TestCase& test, int argc, const char** argv);
75
76protected:
77	SBDebugger m_debugger;
78	SBTarget m_target;
79	SBProcess m_process;
80	SBThread m_thread;
81	SBListener m_listener;
82    bool m_verbose;
83};
84} }
85
86#endif /* defined(__PerfTestDriver__TestCase__) */
87