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 }