From 545ce5cc6de32e3c00d8880c80dd92eebfd2a292 Mon Sep 17 00:00:00 2001 From: sivaji Date: Wed, 20 Feb 2008 23:02:56 +0000 Subject: [PATCH] Added the buggy version for the user study. --- .../Tag/Nrm/WebServerExample.java | 1 + .../Benchmarks/Conglomerator/Tag/Stock.java | 5 +- .../Conglomerator/Tag/WebServerExample.java | 136 ++++++++++++++++++ 3 files changed, 140 insertions(+), 2 deletions(-) create mode 100644 Robust/src/Benchmarks/Conglomerator/Tag/WebServerExample.java diff --git a/Robust/src/Benchmarks/Conglomerator/Tag/Nrm/WebServerExample.java b/Robust/src/Benchmarks/Conglomerator/Tag/Nrm/WebServerExample.java index c908bdf3..d28b3554 100644 --- a/Robust/src/Benchmarks/Conglomerator/Tag/Nrm/WebServerExample.java +++ b/Robust/src/Benchmarks/Conglomerator/Tag/Nrm/WebServerExample.java @@ -52,6 +52,7 @@ task ReceiveQueryG(Google l{query&&IOPending}) { l.data=str; } else l.data=l.data+str; + taskexit; } diff --git a/Robust/src/Benchmarks/Conglomerator/Tag/Stock.java b/Robust/src/Benchmarks/Conglomerator/Tag/Stock.java index f9f6ac8e..dbc48974 100644 --- a/Robust/src/Benchmarks/Conglomerator/Tag/Stock.java +++ b/Robust/src/Benchmarks/Conglomerator/Tag/Stock.java @@ -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=""; end=""; exclusive=true; diff --git a/Robust/src/Benchmarks/Conglomerator/Tag/WebServerExample.java b/Robust/src/Benchmarks/Conglomerator/Tag/WebServerExample.java new file mode 100644 index 00000000..d0052e3b --- /dev/null +++ b/Robust/src/Benchmarks/Conglomerator/Tag/WebServerExample.java @@ -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(("").getBytes()); + s.write(weather.data.getBytes()); + s.write(g.data.getBytes()); + s.write(st.data.getBytes()); + s.write(("").getBytes()); + s.close(); + taskexit(web {!TransPending}); +} -- 2.34.1