Difference between revisions of "Coordinator TestUnits.lsl"
m (lsl code tagging) |
|||
Line 1: | Line 1: | ||
< | <lsl> | ||
/////////////////////////////////////////////////////////////////////////////////// | /////////////////////////////////////////////////////////////////////////////////// | ||
/////// | /////// | ||
Line 281: | Line 281: | ||
} // end default | } // end default | ||
</ | </lsl> |
Revision as of 07:37, 12 April 2008
<lsl> /////////////////////////////////////////////////////////////////////////////////// /////// /////// /////// /////// Coordinator_TestUnits /////// /////// /////// /////// This is the coordinator script that maintains the record of testUnits. It should be /////// included in the coordinator. /////// /////// //////////////////////////////////////////////////////////////////////////////////////
//Coordinator_TestUnits .1 -> initial framework 6.28.2007 //Coordinator_Coordinator .2 -> bug fixing and testing 7.8.2007
////////////////////////////////////////////////////////////////////////////////////// // // Command Protocol // ////////////////////////////////////////////////////////////////////////////////////// // // All commmands will be :: seperated // lists in string form. // ////////////////////////////////////////////// // LINK MESSAGE commands ////////////////////////////////////////////// // // link message commands will be recieved and sent on the toAllChannel // //////// INPUT /////////// // // Reset - resets this script // format example -> Reset // // ClearAll - empties all lists // format example -> ClearAll // // AddUnitToList - provides unit information of newly registered list // format example -> AddUnitToList::unitKey::00000-0000-0000-00000::unitName::TestUnit1::groupName::Group1 // // UpdateUnitStatus - provides unit status information // format example -> UpdateUnitStatus::unitKey::00000-0000-0000-00000::unitStatus::PASS // // ReportUnitStats - initiates a ReportStats output // format example -> ReportUnitStats // // RequestUnitCount - request for number of units registered // format example -> RequestUnitCount // //////// OUTPUT /////////// // // ReportStats - sends out unit information including status // format example -> ReportStats::unitKey::00000-0000-0000-00000::unitName::TestUnit1::groupName::Group1::status::PASS // // SetUnitCount - provides number of registered units // format example -> SetUnitCount::1 /////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Global Variables
integer toAllChannel = -255; // general channel - linked message
integer debug = 0; // level of debug message integer debugChannel = DEBUG_CHANNEL; // output channel for debug messages
// The following lists are parameters associated with registered test units. // A specific unit will have the same list index on all of the lists.
list unitKeys = []; // object keys list of registered test units list unitNames = []; // list of registered unit names list unitGroups = []; // list of registered unit group
list statusOfUnits = []; // status of the registered test unit
// PASS - unit completed test process successfully // FAIL - unit did not complete the process successfully // REGISTERED - unit is now ready for test
////////////////////////////////////////////////////////////////////////////////////////////////// ////////// ////////// Function: ParseCommand ////////// ////////// Input: string message - command to be parsed ////////// ////////// Output: no return value ////////// ////////// Purpose: This function calls various other functions or sets globals ////////// depending on message string. Allows external command calls ////////// from chat controlChannel ////////// ////////// Issues: no known issues ////////// ////////// ///////////////////////////////////////////////////////////////////////////////////////////////// ParseCommand(string message) {
if(debug > 1)llSay(debugChannel, llGetScriptName()+ "->ParseCommand: " + message); //reset all scripts if(message == "reset") { //reset this script llResetScript(); } //ClearAll() else if(message == "ClearAll") { //reset the lists to an empty state unitKeys = []; unitNames = []; unitGroups = []; statusOfUnits = []; }
// AddUnitToList() // format example -> AddUnitToList::unitKey::00000-0000-0000-00000::unitName::TestUnit1::groupName::Group1 else if(llSubStringIndex(message, "AddUnitToList::") != -1) { //parse string command into a list of elements list unitParameters = llParseString2List( message, ["::"], [""] ); //find first variable name of concern - unitKey integer index = llListFindList( unitParameters, ["unitKey"] ); //use the posistion of the variable name to update unitKey list unitKeys += llList2List( unitParameters, index + 1, index + 1); //find variable name of concern - unitName index = llListFindList( unitParameters, ["unitName"] ); //use the posistion of the variable name to update unitName list unitNames += llList2List( unitParameters, index + 1, index + 1); //find variable name of concern - groupName index = llListFindList( unitParameters, ["groupName"] ); //use the posistion of the variable name to update unitName list unitGroups += llList2List( unitParameters, index + 1, index + 1); //add first status indication for unit statusOfUnits += ["REGISTERED"]; }
// UpdateUnitStatus() // format example -> UpdateUnitStatus::unitKey::00000-0000-0000-00000::unitStatus::PASS else if(llSubStringIndex(message, "UpdateUnitStatus::") != -1) { //parse string command into a parameter list list unitStatusParameters = llParseString2List( message, ["::"], [""] ); //use variable name to find first variable of concern - unitKey integer commandIndex = llListFindList( unitStatusParameters, ["unitKey"] ); //pull the unitKey value from the parameter list list CurrentUnitKey = llList2List( unitStatusParameters, commandIndex + 1, commandIndex + 1 ); //use the unitKey to find the index for all the lists of the test unit integer keyIndex = llListFindList( unitKeys, CurrentUnitKey ); //find the index of the unitStatus variable commandIndex = llListFindList( unitStatusParameters, ["unitStatus"] ); // if unit met the registration time line if( llList2String( statusOfUnits, keyIndex ) != "LATE_REGISTRATION" ) { //update the status list with the unitStatus provided by the command string statusOfUnits = llListReplaceList( statusOfUnits, llList2List( unitStatusParameters, commandIndex + 1, commandIndex + 1) , keyIndex, keyIndex); } }
// ReportUnitStats() // format example -> ReportStats::unitKey::00000-0000-0000-00000::unitName::TestUnit1::groupName::Group1::unitStatus::PASS else if(message == "ReportUnitStats") { //send link message on general channel reporting unit stats llMessageLinked(LINK_SET, toAllChannel, "SetUnitCount::" + (string)llGetListLength( unitKeys ), NULL_KEY ); //initialze counter to zero to use as list index integer increment = 0; //get the size of the lists integer count = llGetListLength( unitKeys ); //iterate through the lists reporting the unit parameters for them all, one at a time while( increment < count ) { //send link message on general channel reporting unit stats llMessageLinked(LINK_SET, toAllChannel, "ReportStats::unitKey::" + llList2String( unitKeys, increment) + "::unitName::" + llList2String( unitNames, increment) + "::groupName::" + llList2String( unitGroups, increment) + "::unitStatus::" + llList2String( statusOfUnits, increment) , NULL_KEY); //increment index counter increment++; } // end while } // RequestUnitCount - request for number of units registered // format example -> RequestUnitCount else if(message == "RequestUnitCount") { //send link message on general channel reporting unit stats llMessageLinked(LINK_SET, toAllChannel, "SetUnitCount::" + (string)llGetListLength( unitKeys ), NULL_KEY ); }
} //end ParseCommand
////////////////////////////////////////////////////////////////////////////////////////////////// ////////// ////////// Function: Initialize ////////// ////////// Input: no input paramaters ////////// ////////// Output: no return value ////////// ////////// Purpose: This function initializes any variables or functions necessary ////////// to get us started ////////// ////////// Issues: no known issues ////////// ////////// ///////////////////////////////////////////////////////////////////////////////////////////////// Initialize() {
}
/////////////////////////////////////////////////////////////////////////////////////// //STATE STATE STATE STATE STATE STATE STATE STATE STATE STATE STATE STATE STATE STATE// /////////////////////////////////////////////////////////////////////////////////////// // // // // // DEFAULT STATE // // // // // /////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////// default { /////////////////////////////////////////////////////// // State Entry of default state // ///////////////////////////////////////////////////////
state_entry() { Initialize(); }
//////////////////////////////////////////////////////// // On Rez of default state // ////////////////////////////////////////////////////////
on_rez(integer start_param) { Initialize(); }
///////////////////////////////////////////////////////
// Link Message of default state //
///////////////////////////////////////////////////////
link_message(integer sender_number, integer number, string message, key id) { //if link message is on the correct channel if(number == toAllChannel) { // ParseCommand( message ); } } //end of link message
} // end default </lsl>