Failure injection command changed
authorbdemsky <bdemsky>
Tue, 7 Nov 2006 05:32:43 +0000 (05:32 +0000)
committerbdemsky <bdemsky>
Tue, 7 Nov 2006 05:32:43 +0000 (05:32 +0000)
Robust/src/Runtime/runtime.c

index f227e4632351eddee5531ad8c1e55154fe25a91b..23e5b29a3896ace74bd2e417454b603e843a8133 100644 (file)
@@ -37,6 +37,7 @@ int debugtask=0;
 int injectinstructionfailures;
 int failurecount;
 float instfailurechance=0;
+int numfailures;
 
 void processOptions() {
   int i;
@@ -69,14 +70,23 @@ void processOptions() {
       if (options!=NULL) options++;
       if (options==NULL)
        break;
+
+
       sscanf(options, "%f", &instfailurechance);
       options=strchr(options,' ');
       if (options!=NULL) options++;
+      if (options==NULL)
+       break;
+
+      sscanf(options, "%d", &numfailures);
+      options=strchr(options,' ');
+      if (options!=NULL) options++;
+
       instructioncount=failurecount;
       injectinstructionfailures=1;
+      printf("Number of failures=%d\n",numfailures);
       printf("Injecting errors with count=%d\n",failurecount);
       printf("Injecting errors with chance=%f\n",instfailurechance);
-
     } else if (strncmp(options, "-debugtask",sizeof("-debugtask")-1)==0) {
       options=strchr(options,' ');
       if (options!=NULL) options++;
@@ -448,6 +458,10 @@ void processtasks() {
 void injectinstructionfailure() {
 #ifdef TASK
   if (injectinstructionfailures) {
+    if (numfailures==0)
+      return;
+    if (numfailures>0)
+      numfailures--;
     instructioncount=failurecount;    
     if ((((double)random())/RAND_MAX)<instfailurechance) {
       printf("FAILURE!!!\n");