void Tester::SetInterval(int32_t interval) { Object::AttributeMap args; MethodResponse result; Object::Vector list; // Hack. Can safely be removed once qmf is fixed sm->getObjects(list, "agent"); sm->getObjects(list, "condortriggerservice"); if (0 < list.size()) { cout << "Setting Interval to " << interval << endl; Object& triggerService = *list.begin(); args.addInt("Interval", interval); triggerService.invokeMethod("SetEvalInterval", args, result); cout << "Result: code=" << result.code << " text=" << result.text << endl << endl; } }
list<string> SimpleConsole::findAbsentNodes() { list<string> missing; Object::Vector objs; try { sessionManager->getObjects(objs, "Node"); } catch(...) { cout << "Failed to get roster of Nodes" << endl; return missing; } cout << "Roster contains " << objs.size() << " nodes" << endl; for (Object::Vector::const_iterator obj = objs.begin(); objs.end() != obj; obj++) { cout << " . " << obj->attrString("name") << endl; missing.push_back(obj->attrString("name")); } try { sessionManager->getObjects(objs, "master"); } catch(...) { cout << "Failed to get list of present Nodes" << endl; return missing; } cout << objs.size() << " nodes present" << endl; for (Object::Vector::const_iterator obj = objs.begin(); objs.end() != obj; obj++) { missing.remove(obj->attrString("Name")); } cout << "Found " << missing.size() << " missing nodes" << endl; return missing; }
int32_t Tester::GetInterval() { Object::AttributeMap args; MethodResponse result; Object::Vector list; sm->getObjects(list, "condortriggerservice"); if (0 < list.size()) { cout << "Retrieving Interval" << endl; Object& triggerService = *list.begin(); triggerService.invokeMethod("GetEvalInterval", args, result); cout << "Result: code=" << result.code << " text=" << result.text << endl << endl; } return atoll(result.arguments.begin()->second->str().c_str()); }
void Tester::RemoveTrigger(uint32_t id) { Object::AttributeMap args; MethodResponse result; Object::Vector list; sm->getObjects(list, "condortriggerservice"); if (0 < list.size()) { cout << "Removing Trigger ID: " << id << endl; Object& triggerService = *list.begin(); args.addUint("TriggerID", id); triggerService.invokeMethod("RemoveTrigger", args, result); cout << "Result: code=" << result.code << " text=" << result.text << endl << endl; } }
void Tester::ChangeTriggerText(uint32_t id, const char* text) { Object::AttributeMap args; MethodResponse result; Object::Vector list; sm->getObjects(list, "condortriggerservice"); if (0 < list.size()) { cout << "Changing Trigger Text to : " << text << endl; Object& triggerService = *list.begin(); args.addUint("TriggerID", id); args.addString("Text", std::string(text)); triggerService.invokeMethod("SetTriggerText", args, result); cout << "Result: code=" << result.code << " text=" << result.text << endl << endl; } }
void Tester::AddTrigger(const char* name, const char* query, const char* text) { Object::AttributeMap args; MethodResponse result; Object::Vector list; cout << "AddTrigger called" << endl; sm->getObjects(list, "condortriggerservice"); cout << "# of objects: " << list.size() << endl; if (0 < list.size()) { cout << "Adding Trigger: " << name << endl; Object& triggerService = *list.begin(); args.addString("Name", std::string(name)); args.addString("Query", std::string(query)); args.addString("Text", std::string(text)); triggerService.invokeMethod("AddTrigger", args, result); cout << "Result: code=" << result.code << " text=" << result.text << endl << endl; } }
int main_int(int argc, char** argv) { SessionManager* smgr; Tester engine; Object::Vector list; Object::AttributeMap args; // ClassKey ckey; MethodResponse result; std::string id; const char* host = argc>1 ? argv[1] : "127.0.0.1"; int port = argc>2 ? atoi(argv[2]) : 5672; uint32_t trigger_id; int32_t interval; time_t first_event, second_event; engine.init(host, port); smgr = engine.GetSessionManager(); smgr->getObjects(list, "agent"); smgr->getObjects(list, "condortrigger"); cout << "Currently installed triggers:" << endl; for (Object::Vector::iterator iter = list.begin(); iter != list.end(); iter++) { cout << "Trigger ID: " << atoll(iter->getIndex().c_str()) << endl; iter->invokeMethod("GetTriggerName", args, result); cout << "Trigger Name: " << result.arguments.begin()->second->str() << endl; iter->invokeMethod("GetTriggerQuery", args, result); cout << "Trigger Query: " << result.arguments.begin()->second->str() << endl; iter->invokeMethod("GetTriggerText", args, result); cout << "Trigger Text: " << result.arguments.begin()->second->str() << endl << endl; } // Set the evaluation interval to 5 seconds engine.SetInterval(5); interval = engine.GetInterval(); if (interval != 5) { cout << "Error: Interval was not to 5 seconds" << endl; } // Add a trigger and verify an event is received engine.AddTrigger("TestTrigger", "(SlotID == 1)", "$(Machine) has a slot 1"); while (false == engine.GetEventReceived()) { sleep(1); } first_event = time(NULL); engine.ResetEventReceived(); while (false == engine.GetEventReceived()) { sleep(1); } second_event = time(NULL); engine.ResetEventReceived(); if ((second_event - first_event) > 6) { cout << "Error: Trigger evaluations occurring greater than evey 5 seconds" << endl; } else { cout << "Trigger evaluations occurring every 5 seconds" << endl; } // Retrieve the ID of the trigger added smgr->getObjects(list, "agent"); smgr->getObjects(list, "condortrigger"); for (Object::Vector::iterator iter = list.begin(); iter != list.end(); iter++) { iter->invokeMethod("GetTriggerName", args, result); if (result.arguments.begin()->second->str() == "TestTrigger") { cout << "Getting trigger id" << endl; trigger_id = atoll(iter->getIndex().c_str()); break; } } // Change the trigger Name and verify an event is received engine.ChangeTriggerName(trigger_id, "Changed Test Trigger"); while (false == engine.GetEventReceived()) { sleep(1); } engine.ResetEventReceived(); // Change the trigger query and text and verify an event is received engine.ChangeTriggerQuery(trigger_id, "(SlotID > 0)"); engine.ChangeTriggerText(trigger_id, "$(Machine) has a slot $(SlotID)"); while (false == engine.GetEventReceived()) { sleep(1); } engine.ResetEventReceived(); // Remove the trigger engine.RemoveTrigger(trigger_id); return 0; }