various updates.
[goDBhammer.git] / src / webconnector.go
index a579966..de43ec6 100644 (file)
@@ -11,8 +11,8 @@ import (
        "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) {
@@ -24,20 +24,74 @@ func ServerResponder(c *http.Conn, req *http.Request) {
                mainPage(c, req);
        }
        
-       if req.RawURL == "/setup" {
-               setupPage(c, req);
+       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 setupPage(c *http.Conn, req *http.Request)
+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");
+               
+               footer(c);
+       }
+       
+}
+
+func confirmPage(c *http.Conn, req *http.Request)
 {
        header(c);
-       io.WriteString(c, "I am a setup page");
+       io.WriteString(c, "<h1>Confirm</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");
+       var dbtype string;
+       
+       io.WriteString(c, "You are trying to perform a benchmark with the following values:<br>");
+       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, "<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)
@@ -45,12 +99,14 @@ func mainPage(c *http.Conn, req *http.Request)
        header(c);
        io.WriteString(c, "<h1>goDBHammer</h1><br>");
        io.WriteString(c, "Welcome to goDBHammer, the go based database benchmarking tool<br>");
-       io.WriteString(c, "<form method=\"post\" action=\"/setup\">");
-       io.WriteString(c, "<table><tr><td>Database Host</td><td><input type=\"text\" name=\"dbhost\"></td></tr>");
+       io.WriteString(c, "<form method=\"post\" action=\"/confirm\">");
+       io.WriteString(c, "<table><tr><td>Database Type</td><td><input type=\"text\" name=\"dbtype\" value=\"ignored for now\"></td></tr>");
+       io.WriteString(c, "<tr><td>Database Host</td><td><input type=\"text\" name=\"dbhost\"></td></tr>");
        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>");
@@ -68,24 +124,16 @@ func footer(c *http.Conn)
        io.WriteString(c, "</body></html>");
 }
 
-func main() {
-
-       //var Dbconn *dbibridge.DBIConnection;
-       
-       //Dbconn = dbibridge.DBICreate();
-       
-       //dbibridge.DBIConnect(Dbconn, "mysql", "localhost", "root", "password", "zm");
-       //dbibridge.ExecSQL(Dbconn, "create table asdf (asdf int)");
-       //dbibridge.DBIDisconnect(Dbconn);
-       
-       comin = make(chan int);
-       comout = make(chan int);
+func main()
+{
+       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);
+       err := http.ListenAndServe(":22222", nil);
        if err != nil {
                panic("ListenAndServe: ", err.String())
        }