trying to make the json/js page work
[goDBhammer.git] / src / webconnector.go
index 80a333f..ee42713 100644 (file)
@@ -8,103 +8,38 @@ import (
        "io";
        //"./dbibridge";
        "./benchcontroller";
+       //"dbconnector";
        "fmt";
+       "json";
 )
 
+type JSONStatData struct {
+       currentJob int; // 1 = nothing, 2 = have database login, 3 = createing data, 4 = running test, 5 = finished
+       currentStatus int; // percent complete
+}
+
 var comin chan string;
+var cominstatus chan string;
 var comout chan string;
 
-// hello world, the web server
-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);
-       }
-
-       if req.RawURL == "/begin" {
-               beginPage(c, req);
-       }
-       
-       //k := <- comin;
-       //fmt.Printf("%d\n", k);
-}
-
-func beginPage(c *http.Conn, req *http.Request)
+func JSONResponder(c *http.Conn, req *http.Request)
 {
-       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");
+       //stat := <- cominstatus;
        
-       footer(c);
+       if(req.Method == "GET") {
        
-}
-
-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");
-       dbmult := req.FormValue("dbmult");
-       
-       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>");
+               j, _, _ := json.StringToJson("{\"status\":1, \"complete\":90}");
+               
+               io.WriteString(c, fmt.Sprintf("%s\n", json.JsonToString(j)));
+               fmt.Printf("i got a get\n");
+       }
+       if(req.Method == "POST") {
+               fmt.Printf("i got a post...\n");
+               http.Redirect(c, "/", 301);
+       }
        
-       footer(c);
-       comout <- fmt.Sprintf("configure:%s:%s:%s:%s:%s:%s", dbhost, dbuser, dbpass, dbname, dbmult, nthreads);
-
 }
 
-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>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>");
-       fmt.Printf("%s\n", req.FormValue("dbhost"));
-       footer(c);
-}
 
 func header(c *http.Conn)
 {
@@ -119,12 +54,15 @@ func footer(c *http.Conn)
 func main()
 {
        comin = make(chan string);
+       cominstatus = make(chan string);
        comout = make(chan string);
        
+       
        bc := benchcontroller.CreateController();
-       go benchcontroller.MainLoop(bc, comout, comin);
+       go benchcontroller.MainLoop(bc, comout, comin, cominstatus);
        
-       http.Handle("/", http.HandlerFunc(ServerResponder));
+       http.Handle("/", http.FileServer("./web/", "/"));
+       http.Handle("/json", http.HandlerFunc(JSONResponder));
        err := http.ListenAndServe(":22222", nil);
        if err != nil {
                panic("ListenAndServe: ", err.String())