...

Source file src/github.com/prometheus/procfs/net_protocols_test.go

Documentation: github.com/prometheus/procfs

     1  // Copyright 2020 The Prometheus Authors
     2  // Licensed under the Apache License, Version 2.0 (the "License");
     3  // you may not use this file except in compliance with the License.
     4  // You may obtain a copy of the License at
     5  //
     6  // http://www.apache.org/licenses/LICENSE-2.0
     7  //
     8  // Unless required by applicable law or agreed to in writing, software
     9  // distributed under the License is distributed on an "AS IS" BASIS,
    10  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    11  // See the License for the specific language governing permissions and
    12  // limitations under the License.
    13  package procfs
    14  
    15  import (
    16  	"strings"
    17  	"testing"
    18  )
    19  
    20  func TestParseCapabilities(t *testing.T) {
    21  	rawStr := "y  y  y  y  y  y  y  y  y  y  y  y  y  n  y  y  y  y  y\n"
    22  	have := NetProtocolCapabilities{}
    23  	err := have.parseCapabilities(strings.Fields(rawStr))
    24  	if err != nil {
    25  		t.Fatal(err)
    26  	}
    27  
    28  	want := NetProtocolCapabilities{true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true}
    29  	if want != have {
    30  		t.Errorf("want %+v\nhave %+v\n", want, have)
    31  	}
    32  }
    33  
    34  func TestProtocolsParseLine(t *testing.T) {
    35  	rawStr := "TCP       1984  93064  1225378   no     320   yes  kernel      y  y  y  y  y  y  y  y  y  y  y  y  y  n  y  y  y  y  y\n"
    36  	protocols := NetProtocolStats{}
    37  	have, err := protocols.parseLine(rawStr)
    38  	if err != nil {
    39  		t.Fatal(err)
    40  	}
    41  
    42  	want := NetProtocolStatLine{"TCP", 1984, 93064, 1225378, 0, 320, true, "kernel", NetProtocolCapabilities{true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true}}
    43  	if want != *have {
    44  		t.Errorf("want %+v\nhave %+v\n", want, have)
    45  	}
    46  }
    47  
    48  func TestProtocolsParseProtocols(t *testing.T) {
    49  	fs, err := NewFS(procTestFixtures)
    50  	if err != nil {
    51  		t.Fatal(err)
    52  	}
    53  
    54  	protocolStats, err := fs.NetProtocols()
    55  	if err != nil {
    56  		t.Fatal(err)
    57  	}
    58  
    59  	lines := map[string]NetProtocolStatLine{
    60  		"PACKET":    {"PACKET", 1344, 2, -1, -1, 0, false, "kernel", NetProtocolCapabilities{false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}},
    61  		"PINGv6":    {"PINGv6", 1112, 0, -1, -1, 0, true, "kernel", NetProtocolCapabilities{true, true, true, false, false, true, false, false, true, true, true, true, false, true, true, true, true, true, false}},
    62  		"RAWv6":     {"RAWv6", 1112, 1, -1, -1, 0, true, "kernel", NetProtocolCapabilities{true, true, true, false, true, true, true, false, true, true, true, true, false, true, true, true, true, false, false}},
    63  		"UDPLITEv6": {"UDPLITEv6", 1216, 0, 57, -1, 0, true, "kernel", NetProtocolCapabilities{true, true, true, false, true, true, true, false, true, true, true, true, false, false, false, true, true, true, false}},
    64  		"UDPv6":     {"UDPv6", 1216, 10, 57, -1, 0, true, "kernel", NetProtocolCapabilities{true, true, true, false, true, true, true, false, true, true, true, true, false, false, false, true, true, true, false}},
    65  		"TCPv6":     {"TCPv6", 2144, 1937, 1225378, 0, 320, true, "kernel", NetProtocolCapabilities{true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true}},
    66  		"UNIX":      {"UNIX", 1024, 120, -1, -1, 0, true, "kernel", NetProtocolCapabilities{false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}},
    67  		"UDP-Lite":  {"UDP-Lite", 1024, 0, 57, -1, 0, true, "kernel", NetProtocolCapabilities{true, true, true, false, true, true, true, false, true, true, true, true, true, false, false, true, true, true, false}},
    68  		"PING":      {"PING", 904, 0, -1, -1, 0, true, "kernel", NetProtocolCapabilities{true, true, true, false, false, true, false, false, true, true, true, true, false, true, true, true, true, true, false}},
    69  		"RAW":       {"RAW", 912, 0, -1, -1, 0, true, "kernel", NetProtocolCapabilities{true, true, true, false, true, true, true, false, true, true, true, true, false, true, true, true, true, false, false}},
    70  		"UDP":       {"UDP", 1024, 73, 57, -1, 0, true, "kernel", NetProtocolCapabilities{true, true, true, false, true, true, true, false, true, true, true, true, true, false, false, true, true, true, false}},
    71  		"TCP":       {"TCP", 1984, 93064, 1225378, 1, 320, true, "kernel", NetProtocolCapabilities{true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, true, true, true, true}},
    72  		"NETLINK":   {"NETLINK", 1040, 16, -1, -1, 0, false, "kernel", NetProtocolCapabilities{false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}},
    73  	}
    74  
    75  	if want, have := len(lines), len(protocolStats); want != have {
    76  		t.Errorf("want %d parsed net/protocols lines, have %d", want, have)
    77  	}
    78  	for _, line := range protocolStats {
    79  		if want, have := lines[line.Name], line; want != have {
    80  			t.Errorf("%s: want %v, have %v", line.Name, want, have)
    81  		}
    82  	}
    83  }
    84  

View as plain text