Example #1
0
func main() {
	wd, _ := os.Getwd()
	log.Println("Working directory", wd)

	// We need `./db/`...
	if dbStat, err := os.Stat(`./db`); err != nil || !dbStat.IsDir() {
		os.Mkdir(`./db`, 0700)
	}

	loadSettings("db/app.ini")
	log.Println("Writing logs to ", Settings.LogFile)
	if Settings.LogFile != "" {
		f, err := os.OpenFile(Settings.LogFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
		if err != nil {
			log.Printf("Can't open logfile! `%s` | Error: %#v\n", Settings.LogFile, err)
			os.Exit(1)
		}
		defer f.Close()
		log.SetOutput(f)
	}

	jobList := service.NewJobList()
	taskList := service.NewTaskList()
	triggerList := service.NewTriggerList()
	runList := service.NewRunList(jobList)

	jobList.Load()
	taskList.Load()
	triggerList.Load()
	runList.Load()

	hub := service.NewHub(runList)
	go hub.HubLoop()

	executor := service.NewExecutor(jobList, taskList, runList)

	appContext := &ctx{hub, executor, jobList, taskList, triggerList, runList}

	r := mux.NewRouter()

	// non REST routes
	r.PathPrefix("/static/").Handler(http.FileServer(http.Dir("web/")))
	r.HandleFunc("/", app).Methods("GET")
	r.HandleFunc("/favicon.ico", favicon).Methods("GET")
	r.Handle("/ws", appHandler{appContext, wsHandler}).Methods("GET")

	for _, detail := range routes {
		r.Handle(detail.route, appHandler{appContext, detail.handler}).Methods(detail.method)
	}

	host := Settings.ServeIP + ":" + strconv.Itoa(Settings.HTTPPort)

	log.Println("Running on " + host)
	if Settings.LogFile == "" {
		log.Println("Not logging to file, restart disabled...")
		http.ListenAndServe(host, r)
	} else {
		endless.ListenAndServe(host, r)
	}
}
Example #2
0
func TestResponses(t *testing.T) {
	w := httptest.NewRecorder()

	uri := "/jobs"
	param := make(url.Values)

	r, err := http.NewRequest("GET", uri+param.Encode(), nil)
	if err != nil {
		t.Fatal(err)
	}

	jobList := service.NewJobList()
	c := ctx{jobList: jobList}

	status, _ := listJobs(c, w, r)

	if status != http.StatusOK {
		t.Errorf("Expected %v, %v; got %v, %v", http.StatusOK, status)
	}
}