some more page work
[goDBhammer.git] / src / webconnector.go
index 5fe61aa..1f83b29 100644 (file)
@@ -6,27 +6,98 @@ package main
 import (
        "http";
        "io";
-       "./dbibridge";
+       //"./dbibridge";
+       "./benchcontroller";
+       "fmt";
 )
 
+var comin chan int;
+var comout chan int;
+
 // hello world, the web server
-func HelloServer(c *http.Conn, req *http.Request) {
-       io.WriteString(c, "<html><form method=post><input type=\"input\"><input type=\"submit\" name=\"go\" value=\"go\"></html>\n");
+func ServerResponder(c *http.Conn, req *http.Request) {
+       //comout <- 2;
+       //comout <- 3;
+       //comout <- 1;
+       fmt.Printf("lk: %s %s %s\n", req.Method, req.RawURL, req.URL); 
+       if req.RawURL == "/" {
+               mainPage(c, req);
+       }
+       
+       if req.RawURL == "/confirm" {
+               confirmPage(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 confirmPage(c *http.Conn, req *http.Request)
+{
+       header(c);
+       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");
+       
+       io.WriteString(c, "You are trying to perform a benchmark with the following values:<br>");
+       io.WriteString(c, "<table>");
+       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>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));
+       
+       footer(c);
+}
+
+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=\"/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><input type=\"submit\" name=\"Setup\" value=\"Setup\"></td></tr>");
+       io.WriteString(c, "</table>");
+       io.WriteString(c, "</form>");
+       fmt.Printf("%s\n", req.FormValue("dbhost"));
+       footer(c);
 }
 
-func main() {
+func header(c *http.Conn)
+{
+       io.WriteString(c, "<html><head></head><body>");
+}
+
+func footer(c *http.Conn)
+{
+       io.WriteString(c, "</body></html>");
+}
 
-       var Dbconn *dbibridge.DBConnection;
+func main()
+{
+       comin = make(chan int);
+       comout = make(chan int);
        
-       Dbconn = dbibridge.DBICreate();
+       bc := benchcontroller.CreateController();
+       go benchcontroller.MainLoop(bc, comout, comin);
        
-       dbibridge.DBIConnect(Dbconn, "mysql", "localhost", "root", "password", "zm");
-       dbibridge.ExecSQL(Dbconn, "create table asdf (asdf int)");
-       dbibridge.DBIDisconnect(Dbconn);
-       //http.Handle("/hello", http.HandlerFunc(HelloServer));
-       //err := http.ListenAndServe(":12345", nil);
-       //if err != nil {
-               ////panic("ListenAndServe: ", err.String())
-       //}
+       http.Handle("/", http.HandlerFunc(ServerResponder));
+       err := http.ListenAndServe(":12345", nil);
+       if err != nil {
+               panic("ListenAndServe: ", err.String())
+       }
 
 }