bug fix
authorbdemsky <bdemsky>
Thu, 16 Jul 2009 10:49:53 +0000 (10:49 +0000)
committerbdemsky <bdemsky>
Thu, 16 Jul 2009 10:49:53 +0000 (10:49 +0000)
Robust/src/Benchmarks/SingleTM/Vacation/Client.java
Robust/src/Benchmarks/SingleTM/Vacation/Customer.java
Robust/src/Benchmarks/SingleTM/Vacation/Manager.java
Robust/src/Benchmarks/SingleTM/Vacation/Reservation.java
Robust/src/Benchmarks/SingleTM/Vacation/Vacation.java
Robust/src/Benchmarks/SingleTM/Vacation/makefile

index f2e03f80db013d455033eb16ae2a993b1decdd25..e0bc915e35b1a380f469123e067eef11accf5e9d 100644 (file)
@@ -143,8 +143,7 @@ public class Client extends Thread {
       int r = randomPtr.posrandom_generate() % 100;
       int action = selectAction(r, percentUser);
 
-      switch (action) {
-      case ACTION_MAKE_RESERVATION: {
+      if(action==ACTION_MAKE_RESERVATION) {
        int maxPrices[]=new int[NUM_RESERVATION_TYPE];
        int maxIds[]=new int[NUM_RESERVATION_TYPE];
        maxPrices[0]=-1;
@@ -166,24 +165,18 @@ public class Client extends Thread {
            int t = types[n];
            int id = ids[n];
            int price = -1;
-           switch (t) {
-           case RESERVATION_CAR:
+           if (t==RESERVATION_CAR) {
              if (managerPtr.manager_queryCar(id) >= 0) {
                price = managerPtr.manager_queryCarPrice(id);
              }
-             break;
-           case RESERVATION_FLIGHT:
+           } else if (t==RESERVATION_FLIGHT) {
              if (managerPtr.manager_queryFlight(id) >= 0) {
                price = managerPtr.manager_queryFlightPrice(id);
              }
-             break;
-           case RESERVATION_ROOM:
+           } else if (t==RESERVATION_ROOM) {
              if (managerPtr.manager_queryRoom(id) >= 0) {
                price = managerPtr.manager_queryRoomPrice(id);
              }
-             break;
-           default:
-             //assert(0);
            }
            if (price > maxPrices[t]) {
              maxPrices[t] = price;
@@ -204,10 +197,7 @@ public class Client extends Thread {
            managerPtr.manager_reserveRoom(customerId, maxIds[RESERVATION_ROOM]);
          }
        }
-       break;
-      }
-
-      case ACTION_DELETE_CUSTOMER: {
+      } else if (action==ACTION_DELETE_CUSTOMER) {
        int customerId = randomPtr.posrandom_generate() % queryRange + 1;
        atomic {
          int bill = managerPtr.manager_queryCustomerBill(customerId);
@@ -215,10 +205,7 @@ public class Client extends Thread {
            managerPtr.manager_deleteCustomer(customerId);
          }
        }
-       break;
-      }
-
-      case ACTION_UPDATE_TABLES: {
+      } else if (action==ACTION_UPDATE_TABLES) {
        int numUpdate = randomPtr.posrandom_generate() % numQueryPerTransaction + 1;
        int n;
        for (n = 0; n < numUpdate; n++) {
@@ -236,42 +223,25 @@ public class Client extends Thread {
            int doAdd = ops[n];
            if (doAdd==1) {
              int newPrice = prices[n];
-             switch (t) {
-             case RESERVATION_CAR:
+             if (t==RESERVATION_CAR) {
                managerPtr.manager_addCar(id, 100, newPrice);
-               break;
-             case RESERVATION_FLIGHT:
+             } else if (t==RESERVATION_FLIGHT) {
                managerPtr.manager_addFlight(id, 100, newPrice);
-               break;
-             case RESERVATION_ROOM:
+             } else if (t==RESERVATION_ROOM) {
                managerPtr.manager_addRoom(id, 100, newPrice);
-               break;
-             default:
-               //assert(0);
              }
            } else { /* do delete */
-             switch (t) {
-             case RESERVATION_CAR:
+             if (t==RESERVATION_CAR) {
                managerPtr.manager_deleteCar(id, 100);
-               break;
-             case RESERVATION_FLIGHT:
+             } else if (t==RESERVATION_FLIGHT) {
                managerPtr.manager_deleteFlight(id);
-               break;
-             case RESERVATION_ROOM:
+             } else if (t==RESERVATION_ROOM) {
                managerPtr.manager_deleteRoom(id, 100);
-               break;
-             default:
-               //assert(0);
              }
            }
          }
        }
-       break;
       }
-       
-      default:
-       //assert(0);
-      } /* switch (action) */
     } /* for i */
     Barrier.enterBarrier();
   }
index 22daf531a8be2c790af12c5391617e5bf34387b9..e55499e5a307107d70cd36192fdec7933fa1ff04 100644 (file)
@@ -129,7 +129,7 @@ public class Customer {
 
     boolean status = reservationInfoListPtr.remove(findReservationInfo);
     if (!status) {
-       System.out.println("TMRESTART");
+       System.out.println("TMRESTART15");
        System.exit(-1);
     }
 
index cab10aa0d75888fa6b5a4fd30e1d99cb6cd756ed..409a853146bd15d5666d04a1f9f9c9f6aca7597a 100644 (file)
@@ -118,7 +118,7 @@ public class Manager {
       if (reservationPtr.numTotal == 0) {
        boolean status = tablePtr.remove(id);
        if (!status) {
-         System.out.println("TMRESTART");
+         System.out.println("TMRESTART7");
          System.exit(-1);
        }
       } else {
@@ -241,7 +241,7 @@ public class Manager {
     //  assert(customerPtr != null);
     status = customerTablePtr.insert(customerId, customerPtr);
     if (!status) {
-      System.out.println("TMRESTART");
+      System.out.println("TMRESTART8");
       System.exit(-1);
     }
     
@@ -282,20 +282,20 @@ public class Manager {
       reservationInfoPtr =(Reservation_Info)it.dataPtr;
       reservationPtr = (Reservation)reservationTables[reservationInfoPtr.type].find(reservationInfoPtr.id);
       if (reservationPtr == null) {
-       System.out.println("TMRESTART");
+       System.out.println("TMRESTART9");
        System.exit(-1);
       }
       status = reservationPtr.reservation_cancel();
 
       if (!status) {
-       System.out.println("TMRESTART");
+       System.out.println("TMRESTART10");
        System.exit(-1);
       }
     }
     
     status = customerTablePtr.remove(customerId);
     if (!status) {
-      System.out.println("TMRESTART");
+      System.out.println("TMRESTART11");
       System.exit(-1);
     }
     return true;
@@ -464,7 +464,7 @@ public class Manager {
       /* Undo previous successful reservation */
       boolean status = reservationPtr.reservation_cancel();
       if (!status) {
-       System.out.println("TMRESTART");
+       System.out.println("TMRESTART12");
        System.exit(-1);
       }
       return false;
@@ -548,7 +548,7 @@ public class Manager {
         /* Undo previous successful cancellation */
       boolean status = reservationPtr.reservation_make();
       if (!status) {
-       System.out.println("TMRESTART");
+       System.out.println("TMRESTART13");
        System.exit(-1);
       }
       return false;
index 8157d1fc56a02c1a2f94b7de792804a1d4590e2f..a2098e1cab579d12faeeca0611d20096fe0a2eca 100644 (file)
@@ -76,6 +76,7 @@ public class Reservation {
     this.numFree=numTotal;
     this.numTotal=numTotal;
     this.price=price;
+    checkReservation();
   }
 
   int id;
@@ -92,30 +93,30 @@ public class Reservation {
   public void checkReservation() {
     int numUsed = this.numUsed;
     if (numUsed < 0) {
-       System.out.println("TMRESTART");
+       System.out.println("TMRESTART1");
        System.exit(-1);
     }
     
     int numFree = this.numFree;
     if (numFree < 0) {
-       System.out.println("TMRESTART");
+       System.out.println("TMRESTART2");
        System.exit(-1);
     }
 
     int numTotal = this.numTotal;
     if (numTotal < 0) {
-       System.out.println("TMRESTART");
+       System.out.println("TMRESTART3");
        System.exit(-1);
     }
 
     if ((numUsed + numFree) != numTotal) {
-       System.out.println("TMRESTART");
+       System.out.println("TMRESTART4");
        System.exit(-1);
     }
 
     int price = this.price;
     if (price < 0) {
-       System.out.println("TMRESTART");
+       System.out.println("TMRESTART5");
        System.exit(-1);
     }
   }
@@ -134,6 +135,7 @@ public class Reservation {
     
     numFree+=num;
     numTotal+=num;
+    checkReservation();
     return true;
   }
   
@@ -149,6 +151,7 @@ public class Reservation {
     }
     numUsed++;
     numFree--;
+    checkReservation();
     return true;
   }
   
@@ -164,7 +167,8 @@ public class Reservation {
     }
     numUsed--;
     numFree++;
-    return false;
+    checkReservation();
+    return true;
   }
 
   
@@ -180,6 +184,7 @@ public class Reservation {
     }
     
     this.price=newPrice;
+    checkReservation();
     return true;
   }
 
index 30bd269032951548b7e60b1e940c788b31fdfe4d..dcc16f6a711de114f21721bf1dbb3e76fd26e96c 100644 (file)
@@ -76,6 +76,8 @@ public class Vacation {
  * displayUsage
  * =============================================================================
  */
+  public Vacation() {
+  }
 
   public static void displayUsage (String appName) {
     System.out.println("Usage: %s [options]\n"+ appName);
@@ -196,19 +198,14 @@ public class Vacation {
             int id = ids[i];
             int num = ((randomPtr.posrandom_generate() % 5) + 1) * 100;
             int price = ((randomPtr.posrandom_generate() % 5) * 10) + 50;
-           switch(t) {
-           case 0:
+           if (t==0) {
              status=managerPtr.manager_addCar(id, num, price);
-             break;
-           case 1:
+           } else if (t==1) {
              status=managerPtr.manager_addFlight(id, num, price);
-             break;
-           case 2:
+           } else if (t==2) {
              status=managerPtr.manager_addRoom(id, num, price);
-             break;
-           case 3:
+           } else if (t==3) {
              status=managerPtr.manager_addCustomer(id);
-             break;
            }
             //assert(status);
         }
index 094862a876111d548d273371edb005a90f5175f0..46d386253aeb278c5086c3f261aec46298da3d2f 100644 (file)
@@ -1,6 +1,6 @@
 MAINCLASS=Vacation
 SRC=tmpVacation.java tmpClient.java tmpManager.java tmpRBTree.java     \
-../../../ClassLibrary/JavaSTM/Barrier.java
+../../../ClassLibrary/JavaSTM/Barrier.java ../common/Random.java
 
 include ../common/Makefile.flags