"io";
//"./dbibridge";
"./benchcontroller";
+ //"dbconnector";
"fmt";
)
-var comin chan int;
-var comout chan int;
+var comin chan string;
+var comout chan string;
// hello world, the web server
func ServerResponder(c *http.Conn, req *http.Request) {
if req.RawURL == "/confirm" {
confirmPage(c, req);
}
+
+ if req.RawURL == "/begin" {
+ beginPage(c, req);
+ }
- // fucking go, i just wanna consume the incoming data, but it forces me to do something with it... cunt of a language
//k := <- comin;
//fmt.Printf("%d\n", k);
}
+func beginPage(c *http.Conn, req *http.Request)
+{
+
+ if req.Method != "GET" {
+ http.Redirect(c, "/begin", 301);
+ } else {
+ header(c);
+ io.WriteString(c, "<h1>Starting hammer</h1>");
+ //dbhost := req.FormValue("dbhost");
+ //dbuser := req.FormValue("dbuser");
+ //dbpass := req.FormValue("dbpass");
+ //dbname := req.FormValue("dbname");
+ //nthreads := req.FormValue("nthreads");
+ //dbmult := req.FormValue("dbmult");
+ comout <- "begin:setup";
+
+ footer(c);
+ }
+
+}
+
func confirmPage(c *http.Conn, req *http.Request)
{
header(c);
dbpass := req.FormValue("dbpass");
dbname := req.FormValue("dbname");
nthreads := req.FormValue("nthreads");
+ dbmult := req.FormValue("dbmult");
+ var dbtype string;
io.WriteString(c, "You are trying to perform a benchmark with the following values:<br>");
- io.WriteString(c, "<table>");
+ io.WriteString(c, "<table border=\"1\">");
io.WriteString(c, fmt.Sprintf("<tr><td>Host</td><td>%s</td></tr>", dbhost));
io.WriteString(c, fmt.Sprintf("<tr><td>User</td><td>%s</td></tr>", dbuser));
io.WriteString(c, fmt.Sprintf("<tr><td>Password</td><td>%s</td></tr>", dbpass));
io.WriteString(c, fmt.Sprintf("<tr><td>Database</td><td>%s</td></tr>", dbname));
+ io.WriteString(c, fmt.Sprintf("<tr><td>Data Multiplier</td><td>%s</td></tr>", dbmult));
io.WriteString(c, fmt.Sprintf("<tr><td>Number of Threads</td><td>%s</td></tr>", nthreads));
io.WriteString(c, "</table>");
- io.WriteString(c, "<a href=\"/\">Back</a>");
- io.WriteString(c, fmt.Sprintf(" <a href=\"/start?host=%s&user=%s&pass=%s&db=%s&nt=%s\">Begin</a>", dbhost, dbuser, dbpass, dbname, nthreads));
+ io.WriteString(c, "<form method=\"post\" action=\"/begin\">");
+ io.WriteString(c, fmt.Sprintf("<input type=\"hidden\" name=\"dbhost\" value=\"%s\">",dbhost));
+ io.WriteString(c, fmt.Sprintf("<input type=\"hidden\" name=\"dbuser\" value=\"%s\">",dbuser));
+ io.WriteString(c, fmt.Sprintf("<input type=\"hidden\" name=\"dbpass\" value=\"%s\">",dbpass));
+ io.WriteString(c, fmt.Sprintf("<input type=\"hidden\" name=\"dbname\" value=\"%s\">",dbname));
+ io.WriteString(c, fmt.Sprintf("<input type=\"hidden\" name=\"nthreads\" value=\"%s\">",nthreads));
+ io.WriteString(c, fmt.Sprintf("<input type=\"hidden\" name=\"dbmult\" value=\"%s\">",dbmult));
+ io.WriteString(c, "<input type=\"submit\" name=\"Begin\" value=\"Begin\">");
+ io.WriteString(c, "</form>");
+
+ dbtype = "mysql";
footer(c);
+ comout <- fmt.Sprintf("configure:%s:%s:%s:%s:%s:%s:%s", dbtype, dbhost, dbuser, dbpass, dbname, dbmult, nthreads);
+
}
func mainPage(c *http.Conn, req *http.Request)
io.WriteString(c, "<tr><td>Database User</td><td><input type=\"text\" name=\"dbuser\"></td></tr>");
io.WriteString(c, "<tr><td>Database Password</td><td><input type=\"text\" name=\"dbpass\"></td></tr>");
io.WriteString(c, "<tr><td>Database</td><td><input type=\"text\" name=\"dbname\"></td></tr>");
- io.WriteString(c, "<tr><td>Number of Clients</td><td><input type=\"text\" name=\"nthreads\"></td></tr>");
+ io.WriteString(c, "<tr><td>Data Multiplier</td><td><input type=\"text\" name=\"dbmult\"></td></tr>");
+ io.WriteString(c, "<tr><td>Number of Clients</td><td><input type=\"text\" name=\"nthreads\"></td></tr>");
io.WriteString(c, "<tr><td><input type=\"submit\" name=\"Setup\" value=\"Setup\"></td></tr>");
io.WriteString(c, "</table>");
io.WriteString(c, "</form>");
func main()
{
- comin = make(chan int);
- comout = make(chan int);
+ comin = make(chan string);
+ comout = make(chan string);
+
bc := benchcontroller.CreateController();
go benchcontroller.MainLoop(bc, comout, comin);
- http.Handle("/", http.HandlerFunc(ServerResponder));
- err := http.ListenAndServe(":12345", nil);
+ http.Handle("/", http.FileServer("./web", "/web"));
+ http.Handle("/json", http.HandlerFunc(ServerResponder));
+ err := http.ListenAndServe(":22222", nil);
if err != nil {
panic("ListenAndServe: ", err.String())
}