github.com/mackerelio/mackerel-agent-plugins@v0.89.3/mackerel-plugin-openldap/lib/openldap_test.go (about)

     1  package mpopenldap
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	ldap "github.com/go-ldap/ldap/v3"
     8  )
     9  
    10  func TestTransformKeyName(t *testing.T) {
    11  	s := transformKeyName("cn=Operations,cn=Monitor")
    12  	want := "operations"
    13  	if s != want {
    14  		t.Errorf("transformKeyName() = %q, want %q", s, want)
    15  	}
    16  }
    17  
    18  func TestGetStats(t *testing.T) {
    19  	sr := &ldap.SearchResult{
    20  		Entries: []*ldap.Entry{
    21  			{
    22  				DN: "cn=Extended,cn=Operations,cn=Monitor",
    23  				Attributes: []*ldap.EntryAttribute{
    24  					{
    25  						Name:       "monitorOpInitiated",
    26  						Values:     []string{"0"},
    27  						ByteValues: [][]uint8{{0x30}},
    28  					},
    29  					{
    30  						Name:       "monitorOpCompleted",
    31  						Values:     []string{"0"},
    32  						ByteValues: [][]uint8{{0x30}},
    33  					},
    34  				},
    35  			},
    36  		},
    37  	}
    38  	stats := getStats(sr, "prefix_")
    39  	key := "prefix_extended_monitorOpCompleted"
    40  	v, ok := stats[key]
    41  	if !ok {
    42  		t.Errorf("not found key:%s", key)
    43  	}
    44  	want := float64(0)
    45  	if v != want {
    46  		t.Errorf("stats[%s] = %f, want %f", key, v, want)
    47  	}
    48  	key = "prefix_extended_monitorOpInitiated"
    49  	v, ok = stats[key]
    50  	if !ok {
    51  		t.Errorf("not found key:%s", key)
    52  	}
    53  	want = float64(0)
    54  	if v != want {
    55  		t.Errorf("stats[%s] = %f, want %f", key, v, want)
    56  	}
    57  }
    58  
    59  func TestLatestCSN(t *testing.T) {
    60  	sr := &ldap.SearchResult{
    61  		Entries: []*ldap.Entry{
    62  			{
    63  				DN: "dc=example,dc=net",
    64  				Attributes: []*ldap.EntryAttribute{
    65  					{
    66  						Name: "contextCSN",
    67  						Values: []string{
    68  							"20161205033538.343893Z#000000#001#000000",
    69  							"20140128082749.962641Z#000000#002#000000",
    70  							"20170713094701.963361Z#000000#05b#000000",
    71  						},
    72  						ByteValues: [][]uint8{
    73  							{
    74  								0x32, 0x30, 0x31, 0x36, 0x31, 0x32, 0x30, 0x35, 0x30, 0x33, 0x33, 0x35, 0x33, 0x38, 0x2e, 0x33,
    75  								0x34, 0x33, 0x38, 0x39, 0x33, 0x5a, 0x23, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x23, 0x30, 0x30,
    76  								0x31, 0x23, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
    77  							},
    78  							{
    79  								0x32, 0x30, 0x31, 0x34, 0x30, 0x31, 0x32, 0x38, 0x30, 0x38, 0x32, 0x37, 0x34, 0x39, 0x2e, 0x39,
    80  								0x36, 0x32, 0x36, 0x34, 0x31, 0x5a, 0x23, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x23, 0x30, 0x30,
    81  								0x32, 0x23, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
    82  							},
    83  							{
    84  								0x32, 0x30, 0x31, 0x37, 0x30, 0x37, 0x31, 0x33, 0x30, 0x39, 0x34, 0x37, 0x30, 0x31, 0x2e, 0x39,
    85  								0x36, 0x33, 0x33, 0x36, 0x31, 0x5a, 0x23, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x23, 0x30, 0x35,
    86  								0x62, 0x23, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
    87  							},
    88  						},
    89  					},
    90  				},
    91  			},
    92  		},
    93  	}
    94  	tm, _ := latestCSN(sr)
    95  	want, _ := time.Parse("2006-01-02T15:04:05.999999Z07:00", "2017-07-13T09:47:01.963361Z")
    96  	if !tm.Equal(want) {
    97  		t.Errorf("latestCSN = %q, want %q", tm, want)
    98  	}
    99  }