github.com/GuanceCloud/cliutils@v1.1.21/prom2metrics_test.go (about)

     1  // Unless explicitly stated otherwise all files in this repository are licensed
     2  // under the MIT License.
     3  // This product includes software developed at Guance Cloud (https://www.guance.com/).
     4  // Copyright 2021-present Guance, Inc.
     5  
     6  package cliutils
     7  
     8  import (
     9  	"strings"
    10  	"testing"
    11  	"time"
    12  )
    13  
    14  const data1 = `
    15  # HELP go_gc_duration_seconds A summary of the GC invocation durations.
    16  # TYPE go_gc_duration_seconds summary
    17  go_gc_duration_seconds{quantile="0"} 7.4545e-05
    18  go_gc_duration_seconds{quantile="0.25"} 7.6999e-05
    19  go_gc_duration_seconds{quantile="0.5"} 0.000277935
    20  go_gc_duration_seconds{quantile="0.75"} 0.000706591
    21  go_gc_duration_seconds{quantile="1"} 0.000706591
    22  go_gc_duration_seconds_sum 0.00113607
    23  go_gc_duration_seconds_count 4
    24  # HELP go_goroutines Number of goroutines that currently exist.
    25  # TYPE go_goroutines gauge
    26  go_goroutines 15
    27  # HELP cpu_usage_user Telegraf collected metric
    28  # TYPE cpu_usage_user gauge
    29  cpu_usage_user{cpu="cpu0"} 1.4112903225816156
    30  cpu_usage_user{cpu="cpu1"} 0.702106318955865
    31  cpu_usage_user{cpu="cpu2"} 2.0161290322588776
    32  cpu_usage_user{cpu="cpu3"} 1.5045135406226022
    33  `
    34  
    35  const data2 = `
    36  # HELP confluence_user_logout_count User Logout Count
    37  # TYPE confluence_user_logout_count counter
    38  confluence_user_logout_count{username="admin",ip="",} 2.0
    39  # HELP confluence_user_failed_login_count User Failed Login Count
    40  # TYPE confluence_user_failed_login_count counter
    41  # HELP confluence_request_duration_on_path Request duration on path
    42  # TYPE confluence_request_duration_on_path histogram
    43  confluence_request_duration_on_path_bucket{path="/rest",le="0.005",} 0.0
    44  confluence_request_duration_on_path_bucket{path="/rest",le="0.01",} 4.0
    45  confluence_request_duration_on_path_bucket{path="/rest",le="0.025",} 5.0
    46  confluence_request_duration_on_path_bucket{path="/rest",le="0.05",} 5.0
    47  confluence_request_duration_on_path_bucket{path="/rest",le="0.075",} 5.0
    48  confluence_request_duration_on_path_bucket{path="/rest",le="0.1",} 5.0
    49  confluence_request_duration_on_path_bucket{path="/rest",le="0.25",} 5.0
    50  confluence_request_duration_on_path_bucket{path="/rest",le="0.5",} 5.0
    51  confluence_request_duration_on_path_bucket{path="/rest",le="0.75",} 5.0
    52  confluence_request_duration_on_path_bucket{path="/rest",le="1.0",} 5.0
    53  confluence_request_duration_on_path_bucket{path="/rest",le="2.5",} 6.0
    54  confluence_request_duration_on_path_bucket{path="/rest",le="5.0",} 6.0
    55  confluence_request_duration_on_path_bucket{path="/rest",le="7.5",} 6.0
    56  confluence_request_duration_on_path_bucket{path="/rest",le="10.0",} 6.0
    57  confluence_request_duration_on_path_bucket{path="/rest",le="+Inf",} 6.0
    58  confluence_request_duration_on_path_count{path="/rest",} 6.0
    59  confluence_request_duration_on_path_sum{path="/rest",} 2.336312921
    60  confluence_request_duration_on_path_bucket{path="/plugins",le="0.005",} 0.0
    61  confluence_request_duration_on_path_bucket{path="/plugins",le="0.01",} 0.0
    62  confluence_request_duration_on_path_bucket{path="/plugins",le="0.025",} 0.0
    63  confluence_request_duration_on_path_bucket{path="/plugins",le="0.05",} 1.0
    64  confluence_request_duration_on_path_bucket{path="/plugins",le="0.075",} 1.0
    65  confluence_request_duration_on_path_bucket{path="/plugins",le="0.1",} 1.0
    66  confluence_request_duration_on_path_bucket{path="/plugins",le="0.25",} 3.0
    67  confluence_request_duration_on_path_bucket{path="/plugins",le="0.5",} 5.0
    68  confluence_request_duration_on_path_bucket{path="/plugins",le="0.75",} 5.0
    69  confluence_request_duration_on_path_bucket{path="/plugins",le="1.0",} 5.0
    70  confluence_request_duration_on_path_bucket{path="/plugins",le="2.5",} 5.0
    71  confluence_request_duration_on_path_bucket{path="/plugins",le="5.0",} 5.0
    72  confluence_request_duration_on_path_bucket{path="/plugins",le="7.5",} 5.0
    73  confluence_request_duration_on_path_bucket{path="/plugins",le="10.0",} 5.0
    74  confluence_request_duration_on_path_bucket{path="/plugins",le="+Inf",} 5.0
    75  confluence_request_duration_on_path_count{path="/plugins",} 5.0
    76  confluence_request_duration_on_path_sum{path="/plugins",} 0.971921824
    77  # HELP confluence_total_cluster_nodes_gauge Total Cluster Nodes Gauge
    78  # TYPE confluence_total_cluster_nodes_gauge gauge
    79  confluence_total_cluster_nodes_gauge 0.0
    80  `
    81  
    82  const data3 = `
    83  # HELP jvm_gc_collection_seconds Time spent in a given JVM garbage collector in seconds.
    84  # TYPE jvm_gc_collection_seconds summary
    85  jvm_gc_collection_seconds_count{gc="G1 Young Generation",} 129.0
    86  jvm_gc_collection_seconds_sum{gc="G1 Young Generation",} 4.615
    87  jvm_gc_collection_seconds_count{gc="G1 Old Generation",} 0.0
    88  jvm_gc_collection_seconds_sum{gc="G1 Old Generation",} 0.0
    89  `
    90  
    91  func TestProm2Metrics(t *testing.T) {
    92  	const measurementPrefix = "confluence"
    93  	const defaultMeasurement = "confluence"
    94  
    95  	data := strings.NewReader(data1)
    96  	// data := strings.NewReader(data2)
    97  	// data := strings.NewReader(data3)
    98  	pts, err := PromTextToMetrics(data, measurementPrefix, defaultMeasurement, time.Now())
    99  	if err != nil {
   100  		panic(err)
   101  	}
   102  
   103  	for _, pt := range pts {
   104  		t.Log(pt)
   105  	}
   106  }