157 lines
2.8 KiB
C++
157 lines
2.8 KiB
C++
//
|
|
// TestCase.h
|
|
// PerfTestDriver
|
|
//
|
|
// Created by Enrico Granata on 3/7/13.
|
|
// Copyright (c) 2013 Apple Inc. All rights reserved.
|
|
//
|
|
|
|
#ifndef __PerfTestDriver__TestCase__
|
|
#define __PerfTestDriver__TestCase__
|
|
|
|
#include "lldb/API/LLDB.h"
|
|
#include "Measurement.h"
|
|
|
|
namespace lldb_perf
|
|
{
|
|
class TestCase
|
|
{
|
|
public:
|
|
TestCase();
|
|
|
|
struct ActionWanted
|
|
{
|
|
enum class Type
|
|
{
|
|
eNext,
|
|
eContinue,
|
|
eStepOut,
|
|
eKill
|
|
} type;
|
|
lldb::SBThread thread;
|
|
|
|
ActionWanted () :
|
|
type (Type::eContinue),
|
|
thread ()
|
|
{
|
|
}
|
|
|
|
void
|
|
Continue()
|
|
{
|
|
type = Type::eContinue;
|
|
thread = lldb::SBThread();
|
|
}
|
|
|
|
void
|
|
StepOver (lldb::SBThread t)
|
|
{
|
|
type = Type::eNext;
|
|
thread = t;
|
|
}
|
|
|
|
void
|
|
StepOut (lldb::SBThread t)
|
|
{
|
|
type = Type::eStepOut;
|
|
thread = t;
|
|
}
|
|
|
|
void
|
|
Kill ()
|
|
{
|
|
type = Type::eKill;
|
|
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);
|
|
|
|
void
|
|
Loop();
|
|
|
|
void
|
|
SetVerbose (bool);
|
|
|
|
bool
|
|
GetVerbose ();
|
|
|
|
virtual void
|
|
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 void
|
|
Run (TestCase& test, int argc, const char** argv);
|
|
|
|
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;
|
|
}
|
|
|
|
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__) */
|