Skip to content

Commit

Permalink
feature(manager): skeleton of status API
Browse files Browse the repository at this point in the history
  • Loading branch information
bigeagle committed Apr 30, 2016
1 parent 350767e commit ed896b1
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 0 deletions.
2 changes: 2 additions & 0 deletions manager/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ type ServerConfig struct {
type FileConfig struct {
StatusFile string `toml:"status_file"`
DBFile string `toml:"db_file"`
// used to connect to worker
CACert string `toml:"ca_cert"`
}

func loadConfig(cfgFile string, c *cli.Context) (*Config, error) {
Expand Down
36 changes: 36 additions & 0 deletions manager/server.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package manager

import (
"net/http"

"github.com/gin-gonic/gin"
)

type worker struct {
// worker name
name string
// url to connect to worker
url string
// session token
token string
}

func makeHTTPServer(debug bool) *gin.Engine {
if !debug {
gin.SetMode(gin.ReleaseMode)
}
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{"msg": "pong"})
})
// List jobs, status page
r.GET("/jobs", func(c *gin.Context) {})
// worker online
r.POST("/workers/:name", func(c *gin.Context) {})
// post job list
r.POST("/workers/:name/jobs", func(c *gin.Context) {})
// post job status
r.POST("/workers/:name/jobs/:job", func(c *gin.Context) {})

return r
}
37 changes: 37 additions & 0 deletions manager/server_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package manager

import (
"encoding/json"
"fmt"
"io/ioutil"
"math/rand"
"net/http"
"testing"
"time"

. "github.com/smartystreets/goconvey/convey"
)

func TestHTTPServer(t *testing.T) {
Convey("HTTP server should work", t, func() {
s := makeHTTPServer(false)
So(s, ShouldNotBeNil)
port := rand.Intn(10000) + 20000
go func() {
s.Run(fmt.Sprintf("127.0.0.1:%d", port))
}()
time.Sleep(50 * time.Microsecond)
resp, err := http.Get(fmt.Sprintf("http://127.0.0.1:%d/ping", port))
So(err, ShouldBeNil)
So(resp.StatusCode, ShouldEqual, http.StatusOK)
So(resp.Header.Get("Content-Type"), ShouldEqual, "application/json; charset=utf-8")
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
So(err, ShouldBeNil)
var p map[string]string
err = json.Unmarshal(body, &p)
So(err, ShouldBeNil)
So(p["msg"], ShouldEqual, "pong")
})

}

0 comments on commit ed896b1

Please sign in to comment.