Quantcast
Channel: New board topics in SmartBear Community
Viewing all articles
Browse latest Browse all 20755

start logging at certain point

$
0
0

Hey everybody,

 

i got a new problem.

 

I write my scripts and as soon as they finish i have an event handler which writes everything into database line by line. Everything works fine with just 1 iteration, but once the second (for example) iteration starts, everything from the first iteration is also written into the table meant for the second iteration.

 

That's what i mean:

 

table_1 content: logs from iteration 1

table_2 content: logs from iteration 1 & 2

 

That's what i want/need:

 

table_1 content: logs from iteration 1

table_2 content: logs from iteration 2

 

 

For logging i used the script from here --> https://support.smartbear.com/viewarticle/68245/?utm_source=site-search&utm_medium=search-results&utm_campaign=site-search-c&utm_term=scripting+access&_ga=1.146940919.1763155909.1438165004

 

...and edited it for my purposes like this (maybe there are some easier ways to log the data, but this works for me and im still a beginner Smiley Happy )-->

 

//USEUNIT Create_DB

// Exporting the log
function General_Events_OnStopTest(Sender)
{
  Log.SaveToDisk();
  
  var i, FS;
  
  if(Project.Logs.LogItemsCount > 0)
  {
    for(i = (Project.Logs.LogItemsCount-1); i < Project.Logs.LogItemsCount; i++)
    {
      ExportLogItem(Project.Logs.LogItem(i));
    }
  }
  else
    // If the project does not contain log items,
    // post a message about this to the test log
    Log.Message("No logs for export.");
}

// Exporting row data
function ExportRow(TableScheme, Caption, ARow)
{
  var i, s;
  var Child, ChildRow;
  var ColCount, ChildCount

  // Getting the number of table columns
  ColCount = TableScheme.ColumnCount;
  // Getting the number of child tables
  ChildCount = TableScheme.ChildCount;

  s = Caption;

  //Getting column data
  for(i = 0; i < ColCount; i++)
  {
    //Write data into the array
    s[i] = aqConvert.VarToStr(ARow.ValueByIndex(i));}
    //Depending on the caption call the respective function
    if(((aqString.Find(s[2], '<keyword>')) != -1))
    {
      Testrun_data(s,ARow);
    }   
    else if(((aqString.Find(s[2], '20')) != -1))
    {
      Log_data(s,ARow);
    }
    // Exporting child tables data
    for(i = 0; i < ChildCount; i++)
    {

      Child = ARow.ChildDataByIndex(i);
      ExportLogData(Child);
    }
    
    // Exporting child rows (if the data is displayed as a tree)
    for(i = 0; i < ARow.ChildRowCount; i++)
    {
      ChildRow = ARow.ChildRow(i);
      s = aqConvert.VarToStr(i + 1) + "\t";
      ExportRow(TableScheme, s, ChildRow);
    }
}

// Exporting table data
function ExportTable(ALogData)
{
  var TableScheme, Row, i;
  var s = Array();
  // Obtaining the table scheme
  TableScheme = ALogData.Scheme;

  // Iterating through table records and exporting table data
  for(i = 0; i < ALogData.RowCount; i++)
  {
    // Obtaining the row object
    Row = ALogData.Rows(i);
    s[0] = aqConvert.VarToStr(i + 1) + "\t";
    // Exporting the row}
    ExportRow(TableScheme, s, Row);
  }
}

// Exporting log item's data
function ExportLogData(ALogData)
{
  var Scheme;

  Scheme = ALogData.Scheme;
  if (Scheme.Name == "Performance Counters") return;
  
  ExportTable(ALogData); // Exporting table data
}

// Exporting log items
function ExportLogItem(ALogItem)
{
  var i;

  // Exporting log item's data
  for(i = 0; i < ALogItem.DataCount; i++)
    ExportLogData(ALogItem.Data(i)); 
  // Exporting child log items
  for(i = 0; i < ALogItem.ChildCount; i++)
    ExportLogItem(ALogItem.Child(i));
}
function Testrun_data(s,ARow)
{ 
  s[0] = 1;
  s[3] = aqConvert.DateTimeToFormatStr(ARow.ValueByIndex(3),"%Y-%m-%d %H:%M:%S");
  s[4] = aqConvert.DateTimeToFormatStr(ARow.ValueByIndex(4),"%Y-%m-%d %H:%M:%S");    
  var Cmd = ADO.CreateADOCommand();
  Cmd.ConnectionString = "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=dblog;Uid=dblog;Pwd=dblog;";
  Cmd.CommandText = 'INSERT IGNORE INTO testrun (start, stop, devicenumber, description)'
                    + 'VALUES ("'+ s[3] +'","'+ s[4] +'","'+ s[0] +'","Default ' + s[3] +'")'
                    + 'ON DUPLICATE KEY UPDATE stop="'+ s[4] +'"'; 
  Cmd.Execute();
}


function Log_data(s,ARow)
{  
  //Get script information
  var curr = Project.TestItems.Current;
  
  var cat =  curr.Name;
  
  var tcId = curr.ElementToBeRun.Caption;
  
  //Avoid script for creating data table
  if((aqString.Find(tcId, 'Create_DB')) != -1)
  {
    return;
  }
  
  //Get iteration
  var iter = curr.Parent.Parent.Iteration;
  
  //Convert content to desired form
  s[0] = 1;
  s[2] = aqConvert.DateTimeToFormatStr(ARow.ValueByIndex(2),"%Y-%m-%d %H:%M:%S");
  if((aqString.Find(s[1], '"')) != -1)
  {
    s[1] = aqString.Replace(s[1], '"', '\\"');  
  }
  
  if((aqString.Find(s[6], 'Error')) != -1) {var err_flag = 1;}
  else {var err_flag = 0;}
  
  //Get DB connection
  var Cmd = ADO.CreateADOCommand();
  Cmd.ConnectionString = "Driver={MySQL ODBC 5.1 Driver};Server=localhost;Database=dblog;Uid=dblog;Pwd=dblog;";
  
  Cmd.ParamCheck = false;
  
  //Get the latest entry from table testrun
  Cmd.CommandText = "SELECT max(pk_testrun) FROM `testrun`"
  
  var RecSet = Cmd.Execute();
  
  var trCnt = RecSet.Fields("max(pk_testrun)").Value;
  
  //Insert into the defined table  
  Cmd.CommandText = 'INSERT IGNORE INTO '+ tbname +' (testcaseid, categorie, devicenumber, description, error_flag, iterations, fk_testrun, LogDateTime)'
                    + 'VALUES ("'+ tcId +'","'+ cat +'","'+ s[0] +'","' + s[1] +'","' + err_flag +'","' + iter +'","' + trCnt +'","' + s[2] +'")';

  Cmd.Execute();
  
  
  if(err_flag == 1) {var t_result = 'FAILED';}
  else {var t_result = 'OK';}
  
  Cmd.CommandText = 'INSERT IGNORE INTO tcid_entries (categorie, testcaseid, result, iterations, fk_testrun, fk_log_id) '
                  + 'SELECT categorie, testcaseid, "'+ t_result +'", iterations, fk_testrun, pk_log_id FROM '+ tbname +' WHERE testcaseid = "'
                  + tcId +'" AND description = "Starting Script" AND testcaseid NOT LIKE "%Create_DB%"';
    
  Cmd.Execute();
  
    
  Cmd.CommandText = 'INSERT IGNORE INTO log_err (testcaseid, categorie, devicenumber, description, error_flag, iterations, LogDateTime, fk_log_id, fk_testrun) '
                  + 'SELECT testcaseid, categorie, devicenumber, description, error_flag, iterations, LogDateTime, pk_log_id, fk_testrun ' 
                  + 'FROM '+ tbname +' WHERE error_flag = 1';
  
  Cmd.Execute();  
  
}

 

 

Is there a way to start logging into database at the point where the second (or higher) iteration starts?

 

Thanks for help in advance.


Viewing all articles
Browse latest Browse all 20755

Trending Articles