4154e7725feda503d838b08ea5bf45f667eb743a
[IRC.git] / Robust / TransSim / FileSim.java
1 public class FileSim {
2   public static void p1(Executor e) throws Exception {
3     FlexScheduler ls=new FlexScheduler(e, FlexScheduler.LAZY, null);
4     ls.start();
5
6     //Kill others at commit
7     FlexScheduler ls4=new FlexScheduler(e, FlexScheduler.COMMIT, null);
8     ls4.start();
9
10     FlexScheduler ls5=new FlexScheduler(e, FlexScheduler.ATTACK, null);
11     ls5.start();
12
13
14     ls.join();
15     System.out.println("Lazy Time="+ls.getTime());
16     System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
17     ls=null;
18
19     ls4.join();
20     System.out.println("Fast Abort="+ls4.getTime());
21     System.out.println("Aborts="+ls4.getAborts()+" Commit="+ls4.getCommits());
22     ls4=null;
23
24     ls5.join();
25     System.out.println("Attack Abort="+ls5.getTime());
26     System.out.println("Aborts="+ls5.getAborts()+" Commit="+ls5.getCommits());
27     ls5=null;
28   }
29
30   public static void p2(Executor e) throws Exception {
31     FlexScheduler ls6=new FlexScheduler(e, FlexScheduler.SUICIDE, null);
32     ls6.start();
33     
34     FlexScheduler ls7=new FlexScheduler(e, FlexScheduler.TIMESTAMP, null);
35     ls7.start();
36
37     FlexScheduler ls8=new FlexScheduler(e, FlexScheduler.RANDOM, null);
38     ls8.start();
39
40
41     ls6.join();
42     System.out.println("Suicide Abort="+ls6.getTime());
43     System.out.println("Aborts="+ls6.getAborts()+" Commit="+ls6.getCommits());
44     ls6=null;
45
46     ls7.join();
47     System.out.println("Timestamp Abort="+ls7.getTime());
48     System.out.println("Aborts="+ls7.getAborts()+" Commit="+ls7.getCommits());
49     ls7=null;
50
51     ls8.join();
52     System.out.println("Random Abort="+ls8.getTime());
53     System.out.println("Aborts="+ls8.getAborts()+" Commit="+ls8.getCommits());
54     ls8=null;
55   }
56
57   public static void p3(Executor e) throws Exception {
58     FlexScheduler ls9=new FlexScheduler(e, FlexScheduler.KARMA, null);
59     ls9.start();
60
61     FlexScheduler ls10=new FlexScheduler(e, FlexScheduler.POLITE, null);
62     ls10.start();
63
64     FlexScheduler ls11=new FlexScheduler(e, FlexScheduler.ERUPTION, null);
65     ls11.start();
66
67
68
69     ls9.join();
70     System.out.println("Karma Abort="+ls9.getTime());
71     System.out.println("Aborts="+ls9.getAborts()+" Commit="+ls9.getCommits());
72     System.out.println("atime="+ls9.aborttime+" stalltime="+ls9.stalltime);
73     ls9=null;
74
75     ls10.join();
76     System.out.println("Polite Abort="+ls10.getTime());
77     System.out.println("Aborts="+ls10.getAborts()+" Commit="+ls10.getCommits());
78     ls10=null;
79
80     ls11.join();
81     System.out.println("Eruption Abort="+ls11.getTime());
82     System.out.println("atime="+ls11.aborttime+" stalltime="+ls11.stalltime);
83     System.out.println("Aborts="+ls11.getAborts()+" Commit="+ls11.getCommits());
84   }
85
86   public static void p4(Executor e) throws Exception {
87     FlexScheduler ls9=new FlexScheduler(e, FlexScheduler.THREAD, null);
88     ls9.start();
89
90     ls9.join();
91     System.out.println("Karma Abort="+ls9.getTime());
92     System.out.println("Aborts="+ls9.getAborts()+" Commit="+ls9.getCommits());
93     System.out.println("atime="+ls9.aborttime+" stalltime="+ls9.stalltime);
94     ls9=null;
95   }
96
97   public static void main(String[] args) throws Exception {
98     //time between transactions
99     //split objects
100     int splitobjects=100;//10 percent of objects special
101     int splitaccesses=100;//40 percent of accesses to special objects
102     int abortThreshold=0; //need 4 aborts to declare risky
103     int abortRatio=0;//need 40% aborts vs commits to declare risky
104     int deadlockdepth=10;
105
106     String filename=args[0];
107     Executor e=new Executor(filename);
108     System.out.println(e.maxTime());
109     if (args.length==1||args[1].equals("1"))
110       p1(e);
111     if (args.length==1||args[1].equals("2"))
112       p2(e);
113     if (args.length==1||args[1].equals("3"))
114       p3(e);
115     if (args.length==1||args[1].equals("4"))
116       p4(e);
117   }
118 }