Isis Developer Reference
Isis::CubeDataThreadTester Class Reference

#include <CubeDataThreadTester.h>

Inheritance diagram for Isis::CubeDataThreadTester:
Inheritance graph
Collaboration diagram for Isis::CubeDataThreadTester:
Collaboration graph

Public Slots

void ReadBrick (void *requester, int cubeId, const Isis::Brick *data)
 This is called when a brick is read.
 
void ReadWriteBrick (void *requester, int cubeId, Isis::Brick *data)
 This is called when a brick is given for R/W.
 
void BrickChanged (int cubeId, const Isis::Brick *data)
 This is called when a brick is written.
 

Signals

void RequestReadCube (int cubeId, int startSample, int startLine, int endSample, int endLine, int band, void *caller)
 Ask for a brick for reading.
 
void RequestReadWriteCube (int cubeId, int startSample, int startLine, int endSample, int endLine, int band, void *caller)
 Ask for a brick for reading and writing.
 
void NotifyDoneWithData (int, const Isis::Brick *)
 Let the cube data thread know we're no longer working with a particular brick.
 

Public Member Functions

 CubeDataThreadTester (CubeDataThread *)
 This initializes a CubeDataThreadTester.
 
virtual ~CubeDataThreadTester ()
 This cleans up the cube data thread.
 
int NumberOfTestsDone ()
 Returns the number of tests done (testing methods count as several)
 
CubeDataThreadDataThread ()
 Returns the cube data thread being tested.
 
void Connect ()
 This connects this class' signals and slots with CubeDataThread's signals and slots.
 
void ReadCubeTest (int)
 This tests a basic read.
 
void ReadCubeTest2 (int, int)
 This tests two basic reads with no conflicts.
 
void ReadCubeTest3 (int)
 This tests an overlapping read.
 
void WriteCubeTest (int)
 This tests a basic write.
 
void WriteCubeTest2 (int, int)
 This tests two non-conflicting writes.
 
void WriteCubeTest3 (int)
 This tests two conflicting* writes.
 
void WriteCubeTest3BreakDeadlock ()
 This test breaks the deadlock caused by the third write test.
 
void NotifyChangeTest (int)
 This test tests this automatic change notifications.
 

Detailed Description

Author
????-??-?? Steven Lambright

Constructor & Destructor Documentation

◆ CubeDataThreadTester()

Isis::CubeDataThreadTester::CubeDataThreadTester ( CubeDataThread * testObject)

This initializes a CubeDataThreadTester.

The CubeDataThread given is the subject of the tests.

Parameters
testObjectThe CubeDataThread instance to be tested

◆ ~CubeDataThreadTester()

Isis::CubeDataThreadTester::~CubeDataThreadTester ( )
virtual

This cleans up the cube data thread.

Member Function Documentation

◆ BrickChanged

void Isis::CubeDataThreadTester::BrickChanged ( int cubeId,
const Isis::Brick * data )
slot

This is called when a brick is written.

Parameters
cubeIdCube identifier
dataBrick of data read

References Isis::Buffer::at(), NotifyDoneWithData(), and Isis::Buffer::size().

Referenced by NotifyChangeTest().

◆ Connect()

void Isis::CubeDataThreadTester::Connect ( )

This connects this class' signals and slots with CubeDataThread's signals and slots.

References NotifyDoneWithData(), ReadBrick(), ReadWriteBrick(), RequestReadCube(), and RequestReadWriteCube().

◆ DataThread()

CubeDataThread * Isis::CubeDataThreadTester::DataThread ( )
inline

Returns the cube data thread being tested.

◆ NotifyChangeTest()

void Isis::CubeDataThreadTester::NotifyChangeTest ( int cubeId)

This test tests this automatic change notifications.

This performs 2 tests.

Parameters
cubeIdThe identifier given by the data thread for the file to test

References Isis::CubeDataThread::AddChangeListener(), BrickChanged(), and RequestReadWriteCube().

◆ NotifyDoneWithData

void Isis::CubeDataThreadTester::NotifyDoneWithData ( int ,
const Isis::Brick *  )
signal

Let the cube data thread know we're no longer working with a particular brick.

Referenced by BrickChanged(), Connect(), ReadBrick(), ReadWriteBrick(), and WriteCubeTest3BreakDeadlock().

◆ NumberOfTestsDone()

int Isis::CubeDataThreadTester::NumberOfTestsDone ( )
inline

Returns the number of tests done (testing methods count as several)

◆ ReadBrick

void Isis::CubeDataThreadTester::ReadBrick ( void * requester,
int cubeId,
const Isis::Brick * data )
slot

This is called when a brick is read.

Parameters
requesterPointer to requesting class
cubeIdCube identifier
dataBrick of data read

References Isis::Buffer::at(), NotifyDoneWithData(), and Isis::Buffer::size().

Referenced by Connect().

◆ ReadCubeTest()

void Isis::CubeDataThreadTester::ReadCubeTest ( int cubeId)

This tests a basic read.

This performs 1 test.

Parameters
cubeIdThe identifier given by the data thread for the file to test

References RequestReadCube().

◆ ReadCubeTest2()

void Isis::CubeDataThreadTester::ReadCubeTest2 ( int cubeId1,
int cubeId2 )

This tests two basic reads with no conflicts.

This performs 2 tests.

Parameters
cubeId1Cube for first read
cubeId2Cube for second read

References RequestReadCube().

◆ ReadCubeTest3()

void Isis::CubeDataThreadTester::ReadCubeTest3 ( int cubeId)

This tests an overlapping read.

This performs 2 tests.

Parameters
cubeIdThe identifier given by the data thread for the file to test

References RequestReadCube().

◆ ReadWriteBrick

void Isis::CubeDataThreadTester::ReadWriteBrick ( void * requester,
int cubeId,
Isis::Brick * data )
slot

This is called when a brick is given for R/W.

Parameters
requesterPointer to requesting class
cubeIdCube identifier
dataBrick of data read

References Isis::Buffer::at(), NotifyDoneWithData(), and Isis::Buffer::size().

Referenced by Connect().

◆ RequestReadCube

void Isis::CubeDataThreadTester::RequestReadCube ( int cubeId,
int startSample,
int startLine,
int endSample,
int endLine,
int band,
void * caller )
signal

Ask for a brick for reading.

Parameters
cubeIdCube identifier
startSampleBrick starting sample
startLineBrick starting line
endSampleBrick ending sample
endLineBrick ending line
bandBrick band
callerA this pointer

Referenced by Connect(), ReadCubeTest(), ReadCubeTest2(), ReadCubeTest3(), and WriteCubeTest().

◆ RequestReadWriteCube

void Isis::CubeDataThreadTester::RequestReadWriteCube ( int cubeId,
int startSample,
int startLine,
int endSample,
int endLine,
int band,
void * caller )
signal

Ask for a brick for reading and writing.

Parameters
cubeIdCube identifier
startSampleBrick starting sample
startLineBrick starting line
endSampleBrick ending sample
endLineBrick ending line
bandBrick band
callerA this pointer

Referenced by Connect(), NotifyChangeTest(), WriteCubeTest(), WriteCubeTest2(), and WriteCubeTest3().

◆ WriteCubeTest()

void Isis::CubeDataThreadTester::WriteCubeTest ( int cubeId)

This tests a basic write.

This performs 2 tests.

Parameters
cubeIdThe identifier given by the data thread for the file to test

References RequestReadCube(), and RequestReadWriteCube().

◆ WriteCubeTest2()

void Isis::CubeDataThreadTester::WriteCubeTest2 ( int cubeId1,
int cubeId2 )

This tests two non-conflicting writes.

This performs 2 tests.

Parameters
cubeId1Cube for first write
cubeId2Cube for second write

References RequestReadWriteCube().

◆ WriteCubeTest3()

void Isis::CubeDataThreadTester::WriteCubeTest3 ( int cubeId)

This tests two conflicting* writes.

This causes a deadlock!

This performs a test, deadlocks, and once the deadlock is broken (via WriteCubeTest3BreakDeadlock), finishes another test.

Parameters
cubeIdThe identifier given by the data thread for the file to test

References RequestReadWriteCube().

◆ WriteCubeTest3BreakDeadlock()

void Isis::CubeDataThreadTester::WriteCubeTest3BreakDeadlock ( )

This test breaks the deadlock caused by the third write test.

References NotifyDoneWithData().


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