Added the buggy version for the user study.
authorsivaji <sivaji>
Wed, 20 Feb 2008 23:02:56 +0000 (23:02 +0000)
committersivaji <sivaji>
Wed, 20 Feb 2008 23:02:56 +0000 (23:02 +0000)
Robust/src/Benchmarks/Conglomerator/Tag/Nrm/WebServerExample.java
Robust/src/Benchmarks/Conglomerator/Tag/Stock.java
Robust/src/Benchmarks/Conglomerator/Tag/WebServerExample.java [new file with mode: 0644]

index c908bdf35a109eb13fa770ad54e937df0121ae89..d28b35541065441011de7560201893eb69f1013f 100644 (file)
@@ -52,6 +52,7 @@ task ReceiveQueryG(Google l{query&&IOPending}) {
        l.data=str;
     } else
        l.data=l.data+str;
+       
     taskexit;
 }
 
index f9f6ac8ee782a08df78a69c00661d2f5a9e78a45..dbc48974ef86332d0952e6f85a4d7296bceef1ad 100644 (file)
@@ -1,7 +1,8 @@
 public class Stock extends Lookup {
        public Stock() {
-               url="q?s=%5EDJI";
-               hostname="finance.yahoo.com";
+               //url="q?s=%5EDJI";
+               url="";
+               hostname="www.yahoo.com";
                start="</title>";
                end="</html>";
                exclusive=true;
diff --git a/Robust/src/Benchmarks/Conglomerator/Tag/WebServerExample.java b/Robust/src/Benchmarks/Conglomerator/Tag/WebServerExample.java
new file mode 100644 (file)
index 0000000..d0052e3
--- /dev/null
@@ -0,0 +1,136 @@
+/* Startup object is generated with the initialstate flag set by the
+ *  system to start the computation up */
+
+// Create New ServerSocket
+task Startup(StartupObject s {initialstate}) {
+       ServerSocket ss = new ServerSocket(9000);
+       Logger log = new Logger() {Initialize};
+       Inventory inventorylist = new Inventory(){TransInitialize};
+       taskexit(s {!initialstate}); /* Turns initial state flag off, so this task won't refire */
+}
+
+task LookupS(Stock l{initialstate}) {
+    String query="GET /"+l.url+" HTTP/1.1\r\nConnection: close\r\nHost:"+l.hostname+"\r\n\r\n";
+    l.connect(l.hostname, 80);
+    l.write(query.getBytes());
+    taskexit(l{initialstate, query});
+}
+
+task ReceiveQueryS(Stock l{query&&IOPending}) {
+    byte[] buffer=new byte[1024];
+    int numchars=l.read(buffer);
+    if (numchars<=0) {
+       l.fix();
+       l.close();
+       System.printString("Before exiting ReceiveQueryS...\n");
+       taskexit(l{!query,done}{});
+    }
+    String str=new String(buffer, 0, numchars);
+    if (l.data==null) {
+       l.data=str;
+    } else
+       l.data=l.data+str;
+    taskexit;
+}
+
+task LookupG(Google l{initialstate}) {
+    String query="GET /"+l.url+" HTTP/1.1\r\nConnection: close\r\nHost:"+l.hostname+"\r\n\r\n";
+    l.connect(l.hostname, 80);
+    l.write(query.getBytes());
+    taskexit(l{!initialstate, query});
+}
+
+task ReceiveQueryG(Google l{query&&IOPending}) {
+    byte[] buffer=new byte[1024];
+    int numchars=l.read(buffer);
+    if (numchars<=0) {
+       l.fix();
+       l.close();
+       taskexit(l{!query,done}{});
+    }
+    String str=new String(buffer, 0, numchars);
+    if (l.data==null) {
+       l.data=str;
+    } else
+       l.data=l.data+str;
+       
+    taskexit;
+}
+
+task LookupW(Weather l{initialstate}) {
+    String query="GET /"+l.url+" HTTP/1.1\r\nConnection: close\r\nHost:"+l.hostname+"\r\n\r\n";
+    l.connect(l.hostname, 80);
+    l.write(query.getBytes());
+    taskexit(l{!initialstate, query});
+}
+
+task ReceiveQueryW(Weather l{query&&IOPending}) {
+    byte[] buffer=new byte[1024];
+    int numchars=l.read(buffer);
+    if (numchars<=0) {
+       l.fix();
+       l.close();
+       taskexit(l{!query,done}{});
+    }
+    String str=new String(buffer, 0, numchars);
+    if (l.data==null) {
+       l.data=str;
+    } else
+       l.data=l.data+str;
+    taskexit;
+}
+
+
+
+//Listen for a request and accept request 
+task AcceptConnection(ServerSocket ss{SocketPending}) {
+    // System.printString("W> Waiting for connection...\n");
+    tag t=new tag(link);
+    WebServerSocket web = new WebServerSocket() {!WritePending, !TransPending, WebInitialize}{t};
+    MySocket ms=new MySocket(){}{t};
+    ss.accept(ms);
+//     System.printString("W> Connected... \n");
+}
+
+// Process the incoming http request 
+task ProcessRequest(WebServerSocket web{WebInitialize}{link l}, MySocket s{IOPending}{link l}) {
+       if (web.clientrequest(s)) {
+           if(web.checktrans()==false)
+               // Not special transaction , do normal filesending      
+               taskexit(web {WritePending, LogPending,!WebInitialize}); //Sets the WritePending and LogPending flag true 
+           else {
+               Weather w=new Weather(){initialstate}{l};
+               Google g=new Google(){initialstate}{l};
+               Stock st=new Stock(){initialstate}{l};
+               taskexit(web {TransPending, LogPending,!WebInitialize});
+           }
+       }
+}
+
+//Do the WriteIO on server socket and send the requested file to Client
+task SendFile(WebServerSocket web{WritePending}{link l}, MySocket s{}{link l}) {
+       web.sendfile(s);
+       s.close();
+       taskexit(web {!WritePending});
+}
+
+// Log the Client request
+task LogRequest(WebServerSocket web{LogPending}, Logger log{Initialize}) {
+//Task fired when both
+// LogPending and Initialize flags are true 
+//     System.printString("L > Inside logrequest\n");
+       log.logrequest(web.filename);
+       taskexit(web {!LogPending});
+}
+
+//Transaction on Inventory
+task Transaction(WebServerSocket web{TransPending}{link l}, Weather weather{done}{link l}, Google g{done}{link l}, MySocket s{}{link l}, Stock st{done}{link l}){ //Task for WebServerTransactions
+       web.httpresponse(s);
+       s.write(("<html>").getBytes());
+       s.write(weather.data.getBytes());
+       s.write(g.data.getBytes());
+       s.write(st.data.getBytes());
+       s.write(("</html>").getBytes());
+       s.close();
+       taskexit(web {!TransPending});
+}