ebpf_exporter
81 строка · 1.8 Кб
1package decoder
2
3import (
4"bytes"
5"strconv"
6"testing"
7
8"github.com/cloudflare/ebpf_exporter/v2/config"
9)
10
11func TestStaticMapDecoder(t *testing.T) {
12cases := []struct {
13in []byte
14mapping map[string]string
15out []byte
16}{
17{
18in: []byte(strconv.Itoa(int(1))),
19mapping: map[string]string{"1": "read", "2": "write"},
20out: []byte("read"),
21},
22{
23in: []byte(strconv.Itoa(int(2))),
24mapping: map[string]string{"1": "read", "2": "write"},
25out: []byte("write"),
26},
27{
28in: []byte(strconv.Itoa(int(3))),
29mapping: map[string]string{"1": "read", "2": "write"},
30out: []byte("unknown:3"),
31},
32}
33
34for _, c := range cases {
35d := &StaticMap{}
36
37out, err := d.Decode(c.in, config.Decoder{StaticMap: c.mapping})
38if err != nil {
39t.Errorf("Error decoding %#v with mapping set to %#v: %s", c.in, c.mapping, err)
40}
41
42if !bytes.Equal(out, c.out) {
43t.Errorf("Expected %s, got %s", c.out, out)
44}
45}
46}
47
48func TestStaticMapDecoderAllowUnknown(t *testing.T) {
49cases := []struct {
50in []byte
51mapping map[string]string
52allowUnknown bool
53out []byte
54}{
55{
56in: []byte(strconv.Itoa(int(3))),
57mapping: map[string]string{"1": "read", "2": "write"},
58allowUnknown: true,
59out: []byte("3"),
60},
61{
62in: []byte(strconv.Itoa(int(3))),
63mapping: map[string]string{"1": "read", "2": "write"},
64allowUnknown: false,
65out: []byte("unknown:3"),
66},
67}
68
69for _, c := range cases {
70d := &StaticMap{}
71
72out, err := d.Decode(c.in, config.Decoder{StaticMap: c.mapping, AllowUnknown: c.allowUnknown})
73if err != nil {
74t.Errorf("Error decoding %#v with mapping set to %#v: %s", c.in, c.mapping, err)
75}
76
77if !bytes.Equal(out, c.out) {
78t.Errorf("Expected %s, got %s", c.out, out)
79}
80}
81}
82