changes.
[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     System.out.println("Stalltime="+ls.getStallTime()+" Backofftime="+ls.getBackoffTime());
18     System.out.println("Abortedtime="+ls.getAbortedTime());
19     ls=null;
20
21     ls4.join();
22     System.out.println("Fast Abort="+ls4.getTime());
23     System.out.println("Aborts="+ls4.getAborts()+" Commit="+ls4.getCommits());
24     System.out.println("Stalltime="+ls4.getStallTime()+" Backofftime="+ls4.getBackoffTime());
25     System.out.println("Abortedtime="+ls4.getAbortedTime());
26     ls4=null;
27
28     ls5.join();
29     System.out.println("Attack Abort="+ls5.getTime());
30     System.out.println("Aborts="+ls5.getAborts()+" Commit="+ls5.getCommits());
31     System.out.println("Stalltime="+ls5.getStallTime()+" Backofftime="+ls5.getBackoffTime());
32     System.out.println("Abortedtime="+ls5.getAbortedTime());
33     ls5=null;
34   }
35
36   public static void p2(Executor e) throws Exception {
37     FlexScheduler ls6=new FlexScheduler(e, FlexScheduler.SUICIDE, null);
38     ls6.start();
39     
40     FlexScheduler ls7=new FlexScheduler(e, FlexScheduler.TIMESTAMP, null);
41     ls7.start();
42
43     FlexScheduler ls8=new FlexScheduler(e, FlexScheduler.RANDOM, null);
44     ls8.start();
45
46
47     ls6.join();
48     System.out.println("Suicide Abort="+ls6.getTime());
49     System.out.println("Aborts="+ls6.getAborts()+" Commit="+ls6.getCommits());
50     System.out.println("Stalltime="+ls6.getStallTime()+" Backofftime="+ls6.getBackoffTime());
51     System.out.println("Abortedtime="+ls6.getAbortedTime());
52     ls6=null;
53
54     ls7.join();
55     System.out.println("Timestamp Abort="+ls7.getTime());
56     System.out.println("Aborts="+ls7.getAborts()+" Commit="+ls7.getCommits());
57     System.out.println("Stalltime="+ls7.getStallTime()+" Backofftime="+ls7.getBackoffTime());
58     System.out.println("Abortedtime="+ls7.getAbortedTime());
59     ls7=null;
60
61     ls8.join();
62     System.out.println("Random Abort="+ls8.getTime());
63     System.out.println("Aborts="+ls8.getAborts()+" Commit="+ls8.getCommits());
64     System.out.println("Stalltime="+ls8.getStallTime()+" Backofftime="+ls8.getBackoffTime());
65     System.out.println("Abortedtime="+ls8.getAbortedTime());
66     ls8=null;
67   }
68
69   public static void p3(Executor e) throws Exception {
70     FlexScheduler ls9=new FlexScheduler(e, FlexScheduler.KARMA, null);
71     ls9.start();
72
73     FlexScheduler ls10=new FlexScheduler(e, FlexScheduler.POLITE, null);
74     ls10.start();
75
76     FlexScheduler ls11=new FlexScheduler(e, FlexScheduler.ERUPTION, null);
77     ls11.start();
78
79
80
81     ls9.join();
82     System.out.println("Karma Abort="+ls9.getTime());
83     System.out.println("Aborts="+ls9.getAborts()+" Commit="+ls9.getCommits());
84     System.out.println("Stalltime="+ls9.getStallTime()+" Backofftime="+ls9.getBackoffTime());
85     System.out.println("Abortedtime="+ls9.getAbortedTime());
86     ls9=null;
87
88     ls10.join();
89     System.out.println("Polite Abort="+ls10.getTime());
90     System.out.println("Aborts="+ls10.getAborts()+" Commit="+ls10.getCommits());
91     System.out.println("Stalltime="+ls10.getStallTime()+" Backofftime="+ls10.getBackoffTime());
92     System.out.println("Abortedtime="+ls10.getAbortedTime());
93     ls10=null;
94
95     ls11.join();
96     System.out.println("Eruption Abort="+ls11.getTime());
97     System.out.println("Aborts="+ls11.getAborts()+" Commit="+ls11.getCommits());
98     System.out.println("Stalltime="+ls11.getStallTime()+" Backofftime="+ls11.getBackoffTime());
99     System.out.println("Abortedtime="+ls11.getAbortedTime());
100   }
101
102   public static void p4(Executor e) throws Exception {
103     FlexScheduler ls12=new FlexScheduler(e, FlexScheduler.THREAD, null);
104     ls12.start();
105     FlexScheduler ls13=new FlexScheduler(e, FlexScheduler.ATTACKTIME, null);
106     ls13.start();
107     FlexScheduler ls14=new FlexScheduler(e, FlexScheduler.ATTACKTHREAD, null);
108     ls14.start();
109
110     ls12.join();
111     System.out.println("ThreadPriority Abort="+ls12.getTime());
112     System.out.println("Aborts="+ls12.getAborts()+" Commit="+ls12.getCommits());
113     System.out.println("Stalltime="+ls12.getStallTime()+" Backofftime="+ls12.getBackoffTime());
114     System.out.println("Abortedtime="+ls12.getAbortedTime());
115     ls12=null;
116
117     ls13.join();
118     System.out.println("AttackTime Abort="+ls13.getTime());
119     System.out.println("Aborts="+ls13.getAborts()+" Commit="+ls13.getCommits());
120     System.out.println("Stalltime="+ls13.getStallTime()+" Backofftime="+ls13.getBackoffTime());
121     System.out.println("Abortedtime="+ls13.getAbortedTime());
122     ls13=null;
123
124     ls14.join();
125     System.out.println("AttackThread Abort="+ls14.getTime());
126     System.out.println("Aborts="+ls14.getAborts()+" Commit="+ls14.getCommits());
127     System.out.println("Stalltime="+ls14.getStallTime()+" Backofftime="+ls14.getBackoffTime());
128     System.out.println("Abortedtime="+ls14.getAbortedTime());
129     ls14=null;
130   }
131
132   int[] policies=new int[]{FlexScheduler.LAZY, FlexScheduler.COMMIT, FlexScheduler.ATTACK, FlexScheduler.SUICIDE, FlexScheduler.TIMESTAMP, FlexScheduler.LOCK, FlexScheduler.LOCKCOMMIT, FlexScheduler.RANDOM, FlexScheduler.KARMA, FlexScheduler.POLITE, FlexScheduler.ERUPTION, FlexScheduler.THREAD, FlexScheduler.ATTACKTIME, FlexScheduler.ATTACKTHREAD};
133
134   public static void main(String[] args) throws Exception {
135     //time between transactions
136     //split objects
137     int splitobjects=100;//10 percent of objects special
138     int splitaccesses=100;//40 percent of accesses to special objects
139     int abortThreshold=0; //need 4 aborts to declare risky
140     int abortRatio=0;//need 40% aborts vs commits to declare risky
141     int deadlockdepth=10;
142
143     String filename=args[0];
144     Executor e=new Executor(filename);
145     System.out.println(e.maxTime());
146
147     FlexScheduler fsarray[]=new FlexScheduler[args.length-1];
148
149     for(int i=1;i<args.length;i++) {
150       fsarray[i-1]=new FlexScheduler(e, Integer.parseInt(args[i]), null);
151       fsarray[i-1].start();
152     }
153
154     for(int i=0;i<fsarray.length;i++) {
155       fsarray[i].join();
156       FlexScheduler ls=fsarray[i];
157       System.out.println(FlexScheduler.getName(ls.policy)+" Abort="+ls.getTime());
158       System.out.println("Aborts="+ls.getAborts()+" Commit="+ls.getCommits());
159       System.out.println("Stalltime="+ls.getStallTime()+" Backofftime="+ls.getBackoffTime());
160       System.out.println("Abortedtime="+ls.getAbortedTime());      
161       //free the memory
162       fsarray[i]=null;
163     }
164   }
165 }