ReviewedTest ReviewedTestSerializator::loadTest(const QString &filename)
{
    QDomDocument xml;
    try
    {
        loadXmlSchema(":/xsd/xsd/reviewedtestconfig.xsd");

        xml = loadXml(filename);

        if (!checkXml(xml))
        {
            throw Exception(Exception::BadXMLFile, QString("Bad XML file - " + filename));
        }
    }
    catch (const Exception &err)
    {
        throw;
    }

    QString title = xml.elementsByTagName("title").at(0).toElement().text();
    QString version = xml.elementsByTagName("testVersion").at(0).toElement().text();

    ReviewedTest test(title, version);

    QDomNodeList tasks = xml.elementsByTagName("task");

    for (uint i = 0; i < tasks.length(); i++)
    {
        test.addTask(getTask(tasks.at(i)));
    }

    return test;
}
Ejemplo n.º 2
0
/**
 * \brief Main function of wrekavoc client
 *
 * \param argc number ao argument passed to binaries file
 * \param argv pointer to Array pointer that contains arguments
 * \return exit code
 * \see ---
 *
 */
int main (int argc, char **argv)
{
  char xmldoc[SIZE_OF_STRING] = "\0";
  strcat (xmldoc, getenv ("HOME"));
  strcat (xmldoc, CLIENT_CONF_DIR);
  if (opendir (xmldoc) == NULL)
    mkdir (xmldoc, 0755);
  strcat (xmldoc, CLIENT_CONF_FILE);

  /*  Is there enough parameters	*/
  if (argc <= 1) {
    printf ("Usage: %s <script>|<-c host [rhost] >|<-r [script] >|<-q>\n",
	    argv[0]);
    return (0);
  }

  /*  Option -r reset all wrekavocd	*/
  if (argc <= 3 && argv[1][0] == '-' && argv[1][1] == 'r') {
    if (argc <= 2)
      Back2normalHost (xmldoc);
    else {
      buildXml (argv[2], "/tmp/wrekavoc.reset");
      Back2normalHost ("/tmp/wrekavoc.reset");
    }
  } 
  /*  Option -c : check host	*/
  else if (argc <= 4 && argv[1][0] == '-' && argv[1][1] == 'c') {
    if (argc == 3)
      checkHost (argv[2], "a");
    else if (argc == 4)
      checkHost (argv[2], argv[3]);
  } 
  /*  Option -q : quit all wrekavocd	*/
  else if (argc == 2 && argv[1][0] == '-' && argv[1][1] == 'q') {
    killHost (xmldoc);
  } 
  /*  Normal : transfert data to nodes	*/
  else {
    /*  Create xml structure from script	*/
    printf ("Building Xml...\n\n");
    buildXml (argv[1], xmldoc);
    /*  Check if xml structure is ok	*/
    printf ("Checking Xml...\n\n");
    checkXml (xmldoc);
    /*  Send xml structure to nodes	*/
    printf ("Sending Xml...\n");
    sendXml (xmldoc);
  }
  printf ("\nAction finished!\n");
  return 0;
}
Ejemplo n.º 3
0
/**
 * \brief function to resetconfiguration
 *
 * \param xmldoc 
 * \return exit code, 0 if ok
 * \see ---
 *
 */
int Back2normalHost (char *xmldoc)
{
  int fd;
  xmlDocPtr doc;
  xmlXPathContextPtr xpathCtx;
  xmlXPathObjectPtr xpathObj;
  int size;
  xmlNodeSetPtr nodes;
  int i;

  printf ("Loading Xml...\n\n");
  if ((fd = open (xmldoc, O_RDONLY)) == -1) {
    perror ("Error opening the configuration file");
    exit (-7);
  }

  printf ("Checking Xml...\n\n");
  checkXml (xmldoc);
  doc = xmlParseFile (xmldoc);

  printf ("Sending Xml...\n");

  xpathCtx = xmlXPathNewContext (doc);
  xpathObj = xmlXPathEvalExpression ("//machine", xpathCtx);

  nodes = xpathObj->nodesetval;
  size = (nodes) ? nodes->nodeNr : 0;

  for (i = size - 1; i >= 0; i--) {
    int sockfd =
      startClientSocket (PORT, xmlGetProp (nodes->nodeTab[i], "name"));
    printf ("  -> reseting %s\'s state...\n",
	    xmlGetProp (nodes->nodeTab[i], "name"));
    if ((write (sockfd, "normal\0   ", 10)) < 0) {
      perror ("ERROR writing to socket");
      exit (-8);
    }
    close (sockfd);
  }

  xmlFreeDoc (doc);
  close (fd);
  return 0;
}