github.com/mackerelio/mackerel-agent-plugins@v0.89.3/mackerel-plugin-apache2/lib/apache2_test.go (about) 1 package mpapache2 2 3 import ( 4 "fmt" 5 "net/http" 6 "net/http/httptest" 7 "regexp" 8 "strconv" 9 "testing" 10 11 "github.com/stretchr/testify/assert" 12 ) 13 14 func TestParseApache2Scoreboard(t *testing.T) { 15 stub := "Scoreboard: W._SRWKDCLGI...." 16 stat := make(map[string]interface{}) 17 18 err := parseApache2Scoreboard(stub, &stat) 19 assert.Nil(t, err) 20 assert.EqualValues(t, stat["score-_"], 1) 21 assert.EqualValues(t, stat["score-S"], 1) 22 assert.EqualValues(t, stat["score-R"], 1) 23 assert.EqualValues(t, stat["score-W"], 2) 24 assert.EqualValues(t, stat["score-K"], 1) 25 assert.EqualValues(t, stat["score-D"], 1) 26 assert.EqualValues(t, stat["score-C"], 1) 27 assert.EqualValues(t, stat["score-L"], 1) 28 assert.EqualValues(t, stat["score-G"], 1) 29 assert.EqualValues(t, stat["score-I"], 1) 30 assert.EqualValues(t, stat["score-"], 5) 31 } 32 33 func TestParseApache2Status(t *testing.T) { 34 stub := `Total Accesses: 358 35 Total kBytes: 20 36 CPULoad: .00117358 37 Uptime: 102251 38 ReqPerSec: .00350119 39 BytesPerSec: .200291 40 BytesPerReq: 57.2067 41 BusyWorkers: 1 42 IdleWorkers: 4 43 ` 44 stat := make(map[string]interface{}) 45 46 err := parseApache2Status(stub, &stat) 47 assert.Nil(t, err) 48 assert.EqualValues(t, stat["requests"], 358) 49 assert.EqualValues(t, stat["bytes_sent"], 20) 50 assert.EqualValues(t, stat["cpu_load"], 0.00117358) 51 assert.EqualValues(t, stat["busy_workers"], 1) 52 assert.EqualValues(t, stat["idle_workers"], 4) 53 } 54 55 func TestGetApache2Metrics_1(t *testing.T) { 56 stub := `Total Accesses: 668 57 Total kBytes: 2789 58 CPULoad: .000599374 59 Uptime: 171846 60 ReqPerSec: .0038872 61 BytesPerSec: 16.6192 62 BytesPerReq: 4275.35 63 BusyWorkers: 1 64 IdleWorkers: 3 65 Scoreboard: W_.__...........................` 66 67 ts := httptest.NewServer( 68 http.HandlerFunc( 69 func(w http.ResponseWriter, r *http.Request) { 70 fmt.Fprintln(w, stub) 71 })) 72 defer ts.Close() 73 re, _ := regexp.Compile("([a-z]+)://([A-Za-z0-9.]+):([0-9]+)(.*)") 74 found := re.FindStringSubmatch(ts.URL) 75 assert.EqualValues(t, len(found), 5, fmt.Sprintf("Test stub uri format is changed. %s", ts.URL)) 76 77 host := found[2] 78 port, _ := strconv.Atoi(found[3]) 79 path := found[4] 80 header := []string{fmt.Sprintf("Host: %s", found[2]), "X-Text-Header: test"} 81 82 ret, err := getApache2Metrics(host, uint16(port), path, header) 83 assert.Nil(t, err) 84 assert.NotNil(t, ret) 85 assert.NotEmpty(t, ret) 86 assert.Contains(t, ret, "Total Accesses") 87 assert.Contains(t, ret, "Total kBytes") 88 assert.Contains(t, ret, "Uptime") 89 assert.Contains(t, ret, "BusyWorkers") 90 assert.Contains(t, ret, "IdleWorkers") 91 assert.Contains(t, ret, "Scoreboard") 92 }