Steps I am using to Construct this Solution =========================================== Define Packages - In Project #2 these are all part of the same process ---------------------------------------------------------------------- - Create empty Visual Studio Solution - Create default console projects for: - TestHarness - Client - Repository - this is a mock with only a little functionality - LoadAndExecute - ITest - TestDriver - TestedCode - Logger - Messages - BlockingQueue - from Project2HelpF16 Define communication between packages neccessary for testing. For testing we need to: -------------------------------------------------------------------------------------- - send test requests from Client to TestHarness - send test requests from TestHarness to child AppDomains - send file requests from TestHarness to Repository, sending path - Repository will write files into path supplied from child AppDomain - Child AppDomain will send results to TestHarness - TestHarness will send results to Client and Logs to Repository Define important methods, fields and properties, providing default methods (mostly empty placeholders): ------------------------------------------------------ ---- Note: These are now out-of-date, especially LoadAndExecute ---- ---- Will update soon ---- - ITest: bool test() string getLog() - ILoadAndTest: void request(string rq) void SetRepoCallback(IRepo repoGateway) void SetClientCallback(IClient clientGateway) - IRepo: bool getFiles(string path, string fileList) - fileList is comma separated list of files void sendLog(string log) - IClient: void sendResults(string result) - TestHarness: void processMessages() get requests from inQ and for each request create AppDomain bool createChildAppDomain() bool test(string testRequest) send testRequest to child AppDomain for parsing and testing void - BlockingQueue inQ; client posts requests to this property - Client: Client(TestHarness th) bool sendFiles() called by client main to copy files to Repository folder bool loadQueue(string path); called by Client main to load TestRequests into TestHarness inQ; bool startTesting() called by Client main to enter TestHarness processing void processResults() called by Client main for each test reply - TestHarness th_; provides access to inQ property - LoadAndExecute: bool parseRequest(string testRequest) bool getFiles() get files from Repository Will create directory and send path and file list to Repository doTests() for each test in request run tests, log, and return results