112 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
		
			Vendored
		
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
		
			Vendored
		
	
	
	
| toolbox
 | |
| =======
 | |
| 
 | |
| Middleware toolbox provides health chcek, pprof, profile and statistic services for [Macaron](https://gitea.com/macaron/macaron).
 | |
| 
 | |
| [](https://drone.gitea.com/macaron/toolbox) 
 | |
| [API Reference](https://gowalker.org/gitea.com/macaron/toolbox)
 | |
| 
 | |
| ### Installation
 | |
| 
 | |
| 	go get gitea.com/macaron/toolbox
 | |
| 	
 | |
| ## Usage
 | |
| 
 | |
| ```go
 | |
| // main.go
 | |
| import (
 | |
| 	"gitea.com/macaron/macaron"
 | |
| 	"gitea.com/macaron/toolbox"
 | |
| )
 | |
| 
 | |
| func main() {
 | |
|   	m := macaron.Classic()
 | |
|   	m.Use(toolbox.Toolboxer(m))
 | |
| 	m.Run()
 | |
| }
 | |
| ```
 | |
| 
 | |
| Open your browser and visit `http://localhost:4000/debug` to see the effects.
 | |
| 
 | |
| ## Options
 | |
| 
 | |
| `toolbox.Toolboxer` comes with a variety of configuration options:
 | |
| 
 | |
| ```go
 | |
| type dummyChecker struct {
 | |
| }
 | |
| 
 | |
| func (dc *dummyChecker) Desc() string {
 | |
| 	return "Dummy checker"
 | |
| }
 | |
| 
 | |
| func (dc *dummyChecker) Check() error {
 | |
| 	return nil
 | |
| }
 | |
| 
 | |
| // ...
 | |
| m.Use(toolbox.Toolboxer(m, toolbox.Options{
 | |
| 	URLPrefix:			"/debug",			// URL prefix for toolbox dashboard
 | |
| 	HealthCheckURL:		"/healthcheck", 	// URL for health check request
 | |
| 	HealthCheckers: []HealthChecker{
 | |
| 		new(dummyChecker),
 | |
| 	},										// Health checkers
 | |
| 	HealthCheckFuncs: []*toolbox.HealthCheckFuncDesc{
 | |
| 		&toolbox.HealthCheckFuncDesc{
 | |
| 			Desc: "Database connection",
 | |
| 			Func: func() error { return "OK" },
 | |
| 		},
 | |
| 	},										// Health check functions
 | |
| 	DisableDebug:		false,				// Turns off all debug functionality when true
 | |
| 	PprofURLPrefix:		"/debug/pprof/", 	// URL prefix of pprof
 | |
| 	ProfileURLPrefix:	"/debug/profile/", 	// URL prefix of profile
 | |
| 	ProfilePath:		"profile",			// Path store profile files
 | |
| }))
 | |
| // ...
 | |
| ```
 | |
| 
 | |
| ## Route Statistic
 | |
| 
 | |
| Toolbox also comes with a route call statistic functionality:
 | |
| 
 | |
| ```go
 | |
| import (
 | |
| 	"os"
 | |
| 	"time"
 | |
| 	//...
 | |
| 	"gitea.com/macaron/toolbox"
 | |
| )
 | |
| 
 | |
| func main() {
 | |
| 	//...
 | |
| 	m.Get("/", func(t toolbox.Toolbox) {
 | |
| 		start := time.Now()
 | |
| 		
 | |
| 		// Other operations.
 | |
| 		
 | |
| 		t.AddStatistics("GET", "/", time.Since(start))
 | |
| 	})
 | |
| 	
 | |
| 	m.Get("/dump", func(t toolbox.Toolbox) {
 | |
| 		t.GetMap(os.Stdout)
 | |
| 	})
 | |
| }
 | |
| ```
 | |
| 
 | |
| Output take from test:
 | |
| 
 | |
| ```
 | |
| +---------------------------------------------------+------------+------------------+------------------+------------------+------------------+------------------+
 | |
| | Request URL                                       | Method     | Times            | Total Used(s)    | Max Used(μs)     | Min Used(μs)     | Avg Used(μs)     |
 | |
| +---------------------------------------------------+------------+------------------+------------------+------------------+------------------+------------------+
 | |
| | /api/user                                         | POST       |                2 |         0.000122 |       120.000000 |         2.000000 |        61.000000 |
 | |
| | /api/user                                         | GET        |                1 |         0.000013 |        13.000000 |        13.000000 |        13.000000 |
 | |
| | /api/user                                         | DELETE     |                1 |         0.000001 |         1.400000 |         1.400000 |         1.400000 |
 | |
| | /api/admin                                        | POST       |                1 |         0.000014 |        14.000000 |        14.000000 |        14.000000 |
 | |
| | /api/user/unknwon                                 | POST       |                1 |         0.000012 |        12.000000 |        12.000000 |        12.000000 |
 | |
| +---------------------------------------------------+------------+------------------+------------------+------------------+------------------+------------------+
 | |
| ```
 | |
| 
 | |
| ## License
 | |
| 
 | |
| This project is under Apache v2 License. See the [LICENSE](LICENSE) file for the full license text. |