github.com/mackerelio/mackerel-agent-plugins@v0.89.3/mackerel-plugin-php-opcache/lib/php-opcache_test.go (about) 1 package mpphpopcache 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 TestGetPhpOpcacheStatus_1(t *testing.T) { 15 stub := `used_memory:10941328 16 free_memory:123276400 17 wasted_memory:0 18 current_wasted_percentage:0 19 num_cached_scripts:1 20 num_cached_keys:2 21 max_cached_keys:7963 22 hits:123 23 oom_restarts:0 24 hash_restarts:0 25 manual_restarts:0 26 misses:53 27 blacklist_misses:12 28 blacklist_miss_ratio:10 29 opcache_hit_rate:15` 30 31 stat := make(map[string]float64) 32 33 err := parsePhpOpcacheStatus(stub, &stat) 34 assert.Nil(t, err) 35 assert.EqualValues(t, stat["used_memory"], 10941328) 36 assert.EqualValues(t, stat["free_memory"], 123276400) 37 assert.EqualValues(t, stat["wasted_memory"], 0) 38 assert.EqualValues(t, stat["current_wasted_percentage"], 0) 39 assert.EqualValues(t, stat["num_cached_scripts"], 1) 40 assert.EqualValues(t, stat["num_cached_keys"], 2) 41 assert.EqualValues(t, stat["max_cached_keys"], 7963) 42 assert.EqualValues(t, stat["hits"], 123) 43 assert.EqualValues(t, stat["oom_restarts"], 0) 44 assert.EqualValues(t, stat["hash_restarts"], 0) 45 assert.EqualValues(t, stat["manual_restarts"], 0) 46 assert.EqualValues(t, stat["misses"], 53) 47 assert.EqualValues(t, stat["blacklist_misses"], 12) 48 assert.EqualValues(t, stat["blacklist_miss_ratio"], 10) 49 assert.EqualValues(t, stat["opcache_hit_rate"], 15) 50 } 51 52 func TestGetPhpOpcacheMetrics_1(t *testing.T) { 53 stub := `used_memory:10941328 54 free_memory:123276400 55 wasted_memory:0 56 current_wasted_percentage:0 57 num_cached_scripts:1 58 num_cached_keys:2 59 max_cached_keys:7963 60 hits:0 61 oom_restarts:0 62 hash_restarts:0 63 manual_restarts:0 64 misses:1 65 blacklist_misses:0 66 blacklist_miss_ratio:0 67 opcache_hit_rate:0` 68 69 ts := httptest.NewServer( 70 http.HandlerFunc( 71 func(w http.ResponseWriter, r *http.Request) { 72 fmt.Fprintln(w, stub) 73 })) 74 defer ts.Close() 75 re, _ := regexp.Compile("([a-z]+)://([A-Za-z0-9.]+):([0-9]+)(.*)") 76 found := re.FindStringSubmatch(ts.URL) 77 assert.EqualValues(t, len(found), 5, fmt.Sprintf("Test stub uri format is changed. %s", ts.URL)) 78 79 host := found[2] 80 port, _ := strconv.Atoi(found[3]) 81 path := found[4] 82 83 ret, err := getPhpOpcacheMetrics(host, uint16(port), path) 84 assert.Nil(t, err) 85 assert.NotNil(t, ret) 86 assert.NotEmpty(t, ret) 87 assert.Contains(t, ret, "used_memory") 88 assert.Contains(t, ret, "free_memory") 89 assert.Contains(t, ret, "wasted_memory") 90 assert.Contains(t, ret, "current_wasted_percentage") 91 assert.Contains(t, ret, "num_cached_scripts") 92 assert.Contains(t, ret, "num_cached_keys") 93 assert.Contains(t, ret, "max_cached_keys") 94 assert.Contains(t, ret, "hits") 95 assert.Contains(t, ret, "oom_restarts") 96 assert.Contains(t, ret, "hash_restarts") 97 assert.Contains(t, ret, "manual_restarts") 98 assert.Contains(t, ret, "misses") 99 assert.Contains(t, ret, "blacklist_misses") 100 assert.Contains(t, ret, "blacklist_miss_ratio") 101 assert.Contains(t, ret, "opcache_hit_rate") 102 }