Skip to content
Snippets Groups Projects
Select Git revision
  • 54d51531a8af91f3051660a1063e61f174ec21b3
  • master default
2 results

test_receiver.py

Blame
  • dynafile_cache_test.go 3.60 KiB
    package main
    
    import (
    	"reflect"
    	"testing"
    )
    
    var (
    	dynafileCacheLog = []byte(`{ "name": "dynafile cache cluster", "origin": "omfile", "requests": 1783254, "level0": 1470906, "missed": 2625, "evicted": 2525, "maxused": 100, "closetimeouts": 10 }`)
    )
    
    func TestNewDynafileCacheFromJSON(t *testing.T) {
    	logType := getStatType(dynafileCacheLog)
    	if logType != rsyslogDynafileCache {
    		t.Errorf("detected pstat type should be %d but is %d", rsyslogDynafileCache, logType)
    	}
    
    	pstat, err := newDynafileCacheFromJSON([]byte(dynafileCacheLog))
    	if err != nil {
    		t.Fatalf("expected parsing dynafile cache stat not to fail, got: %v", err)
    	}
    
    	if want, got := "cluster", pstat.Name; want != got {
    		t.Errorf("want '%s', got '%s'", want, got)
    	}
    
    	if want, got := int64(1783254), pstat.Requests; want != got {
    		t.Errorf("want '%d', got '%d'", want, got)
    	}
    
    	if want, got := int64(1470906), pstat.Level0; want != got {
    		t.Errorf("want '%d', got '%d'", want, got)
    	}
    
    	if want, got := int64(2625), pstat.Missed; want != got {
    		t.Errorf("want '%d', got '%d'", want, got)
    	}
    
    	if want, got := int64(2525), pstat.Evicted; want != got {
    		t.Errorf("want '%d', got '%d'", want, got)
    	}
    
    	if want, got := int64(100), pstat.MaxUsed; want != got {
    		t.Errorf("want '%d', got '%d'", want, got)
    	}
    
    	if want, got := int64(10), pstat.CloseTimeouts; want != got {
    		t.Errorf("want '%d', got '%d'", want, got)
    	}
    }
    
    func TestDynafileCacheToPoints(t *testing.T) {
    
    	wants := map[string]point{
    		"dynafile_cache_requests": point{
    			Name:        "dynafile_cache_requests",
    			Type:        counter,
    			Value:       1783254,
    			Description: "number of requests made to obtain a dynafile",
    			LabelName:   "cache",
    			LabelValue:  "cluster",
    		},
    		"dynafile_cache_level0": point{
    			Name:        "dynafile_cache_level0",
    			Type:        counter,
    			Value:       1470906,
    			Description: "number of requests for the current active file",
    			LabelName:   "cache",
    
    			LabelValue: "cluster",
    		},
    		"dynafile_cache_missed": point{
    			Name:        "dynafile_cache_missed",
    			Type:        counter,
    			Value:       2625,
    			Description: "number of cache misses",
    			LabelName:   "cache",
    			LabelValue:  "cluster",
    		},
    		"dynafile_cache_evicted": point{
    			Name:        "dynafile_cache_evicted",
    			Type:        counter,
    			Value:       2525,
    			Description: "number of times a file needed to be evicted from cache",
    			LabelName:   "cache",
    			LabelValue:  "cluster",
    		},
    		"dynafile_cache_maxused": point{
    			Name:        "dynafile_cache_maxused",
    			Type:        counter,
    			Value:       100,
    			Description: "maximum number of cache entries ever used",
    			LabelName:   "cache",
    			LabelValue:  "cluster",
    		},
    		"dynafile_cache_closetimeouts": point{
    			Name:        "dynafile_cache_closetimeouts",
    			Type:        counter,
    			Value:       10,
    			Description: "number of times a file was closed due to timeout settings",
    			LabelName:   "cache",
    			LabelValue:  "cluster",
    		},
    	}
    
    	seen := map[string]bool{}
    	for name := range wants {
    		seen[name] = false
    	}
    
    	pstat, err := newDynafileCacheFromJSON(dynafileCacheLog)
    	if err != nil {
    		t.Fatalf("expected parsing dynafile cache stat not to fail, got: %v", err)
    	}
    
    	points := pstat.toPoints()
    	for _, got := range points {
    		want, ok := wants[got.Name]
    		if !ok {
    			t.Errorf("unexpected point, got: %+v", got)
    			continue
    		}
    
    		if !reflect.DeepEqual(want, *got) {
    			t.Errorf("expected point to be %+v, got %+v", want, got)
    		}
    
    		if seen[got.Name] {
    			t.Errorf("point seen multiple times: %+v", got)
    		}
    		seen[got.Name] = true
    	}
    
    	for name, ok := range seen {
    		if !ok {
    			t.Errorf("expected to see point with key %s, but did not", name)
    		}
    	}
    }