experiments/dciao-kernelstructs: new database driven experiment for DCiAO
The dciao-kernelstructs experiment does a trace imported by the DCiAOKernelImporter: bin/import-trace -t trace.pb -i DCiAOKernelImporter --elf-file app.elf Pruned by the basic method: bin/prune-trace and does CiAO fault injection experiments, where the results are stored in the database. Change-Id: I485dc2e5097b3ebaf354241f474ee3d317213707
This commit is contained in:
@ -5,9 +5,10 @@ extend google.protobuf.FieldOptions {
|
||||
}
|
||||
|
||||
message DatabaseCampaignMessage {
|
||||
required int32 pilot_id = 1 [(sql_primary_key) = true];
|
||||
required int32 variant_id = 2 [(sql_ignore) = true];
|
||||
required int32 fspmethod_id = 3 [(sql_ignore) = true];
|
||||
required int32 instr2 = 4 [(sql_ignore) = true];
|
||||
required int32 data_address = 5 [(sql_ignore) = true];
|
||||
required int32 pilot_id = 1 [(sql_primary_key) = true];
|
||||
required int32 variant_id = 2 [(sql_ignore) = true];
|
||||
required int32 fspmethod_id = 3 [(sql_ignore) = true];
|
||||
required int32 injection_instr = 4 [(sql_ignore) = true];
|
||||
optional int32 injection_instr_absolute = 5 [(sql_ignore) = true];
|
||||
required int32 data_address = 6 [(sql_ignore) = true];
|
||||
}
|
||||
@ -82,15 +82,15 @@ bool DatabaseCampaign::run() {
|
||||
|
||||
/* Gather all unfinished jobs */
|
||||
int experiment_count;
|
||||
std::string sql_select = "SELECT pilot_id, fspgroup.fspmethod_id, fspgroup.variant_id, fspgroup.instr2, fspgroup.data_address ";
|
||||
std::string sql_select = "SELECT pilot_id, g.fspmethod_id, g.variant_id, g.injection_instr, g.injection_instr_absolute, g.data_address";
|
||||
std::stringstream ss;
|
||||
ss << " FROM fspgroup INNER JOIN fsppilot ON fsppilot.id = fspgroup.pilot_id "
|
||||
<< " WHERE known_outcome = 0 "
|
||||
<< " AND fspgroup.fspmethod_id = " << fspmethod_id
|
||||
<< " AND fspgroup.variant_id = " << variant_id
|
||||
// << " AND fsppilot.data_address = 1346688"
|
||||
<< " AND (SELECT COUNT(*) FROM " + db_connect.result_table() + " as r WHERE r.pilot_id = fspgroup.pilot_id) = 0"
|
||||
<< " ORDER BY fspgroup.instr2";
|
||||
ss << " FROM fspgroup g"
|
||||
<< " INNER JOIN fsppilot p ON p.id = g.pilot_id "
|
||||
<< " WHERE p.known_outcome = 0 "
|
||||
<< " AND g.fspmethod_id = " << fspmethod_id
|
||||
<< " AND g.variant_id = " << variant_id
|
||||
<< " AND (SELECT COUNT(*) FROM " + db_connect.result_table() + " as r WHERE r.pilot_id = g.pilot_id) = 0"
|
||||
<< " ORDER BY g.injection_instr";
|
||||
std::string sql_body = ss.str();
|
||||
|
||||
/* Get the number of unfinished experiments */
|
||||
@ -105,15 +105,19 @@ bool DatabaseCampaign::run() {
|
||||
|
||||
sent_pilots = 0;
|
||||
while ((row = mysql_fetch_row(pilots)) != 0) {
|
||||
unsigned pilot_id = atoi(row[0]);
|
||||
unsigned instr2 = atoi(row[3]);
|
||||
unsigned data_address = atoi(row[4]);
|
||||
unsigned pilot_id = atoi(row[0]);
|
||||
unsigned injection_instr = atoi(row[3]);
|
||||
unsigned data_address = atoi(row[5]);
|
||||
|
||||
DatabaseCampaignMessage pilot;
|
||||
pilot.set_pilot_id(pilot_id);
|
||||
pilot.set_fspmethod_id(fspmethod_id);
|
||||
pilot.set_variant_id(variant_id);
|
||||
pilot.set_instr2(instr2);
|
||||
pilot.set_injection_instr(injection_instr);
|
||||
if (row[4]) {
|
||||
unsigned injection_instr_absolute = atoi(row[4]);
|
||||
pilot.set_injection_instr_absolute(injection_instr_absolute);
|
||||
}
|
||||
pilot.set_data_address(data_address);
|
||||
|
||||
this->cb_send_pilot(pilot);
|
||||
|
||||
Reference in New Issue
Block a user