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  }