github.com/kiali/kiali@v1.84.0/graph/config/cytoscape/cytoscape_test.go (about)

     1  package cytoscape
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  
     8  	"github.com/kiali/kiali/graph"
     9  )
    10  
    11  func TestRateStrings(t *testing.T) {
    12  	assert := assert.New(t)
    13  
    14  	assert.Equal(1, calcPrecision(0.1, 5))
    15  	assert.Equal(1, calcPrecision(0.4, 5))
    16  	assert.Equal(1, calcPrecision(0.5, 5))
    17  	assert.Equal(1, calcPrecision(0.9, 5))
    18  	assert.Equal(2, calcPrecision(0.01, 5))
    19  	assert.Equal(2, calcPrecision(0.04, 5))
    20  	assert.Equal(2, calcPrecision(0.05, 5))
    21  	assert.Equal(2, calcPrecision(0.09, 5))
    22  	assert.Equal(3, calcPrecision(0.001, 5))
    23  	assert.Equal(3, calcPrecision(0.004, 5))
    24  	assert.Equal(3, calcPrecision(0.005, 5))
    25  	assert.Equal(3, calcPrecision(0.009, 5))
    26  	assert.Equal(4, calcPrecision(0.0001, 5))
    27  	assert.Equal(4, calcPrecision(0.0004, 5))
    28  	assert.Equal(4, calcPrecision(0.0005, 5))
    29  	assert.Equal(4, calcPrecision(0.0009, 5))
    30  	assert.Equal(1, calcPrecision(0.99, 5))
    31  	assert.Equal(1, calcPrecision(0.999, 5))
    32  	assert.Equal(5, calcPrecision(0.00000000001, 5)) // max precision 5
    33  
    34  	assert.Equal("10.0", rateToString(1, 10))
    35  	assert.Equal("10.4", rateToString(1, 10.4))
    36  	assert.Equal("10.5", rateToString(1, 10.49))
    37  	assert.Equal("10.9", rateToString(1, 10.9))
    38  	assert.Equal("11.0", rateToString(1, 10.99))
    39  	assert.Equal("0.1", rateToString(1, 0.1))
    40  	assert.Equal("0.1", rateToString(1, 0.14))
    41  	assert.Equal("0.2", rateToString(1, 0.19))
    42  	assert.Equal("0.9", rateToString(1, 0.9))
    43  	assert.Equal("0.9", rateToString(1, 0.94))
    44  	assert.Equal("1.0", rateToString(1, 0.99))
    45  	assert.Equal("0.01", rateToString(1, 0.01))
    46  	assert.Equal("0.01", rateToString(1, 0.014))
    47  	assert.Equal("0.02", rateToString(1, 0.019))
    48  	assert.Equal("0.0004", rateToString(1, 0.0004))
    49  	assert.Equal("0.0004", rateToString(1, 0.00044))
    50  	assert.Equal("0.0005", rateToString(1, 0.00049))
    51  
    52  	assert.Equal("10.00", rateToString(2, 10))
    53  	assert.Equal("10.40", rateToString(2, 10.4))
    54  	assert.Equal("10.49", rateToString(2, 10.49))
    55  	assert.Equal("10.49", rateToString(2, 10.491))
    56  	assert.Equal("10.50", rateToString(2, 10.499))
    57  	assert.Equal("10.90", rateToString(2, 10.9))
    58  	assert.Equal("10.99", rateToString(2, 10.99))
    59  	assert.Equal("11.00", rateToString(2, 10.999))
    60  	assert.Equal("0.10", rateToString(2, 0.1))
    61  	assert.Equal("0.14", rateToString(2, 0.14))
    62  	assert.Equal("0.19", rateToString(2, 0.19))
    63  	assert.Equal("0.19", rateToString(2, 0.194))
    64  	assert.Equal("0.20", rateToString(2, 0.199))
    65  	assert.Equal("0.90", rateToString(2, 0.9))
    66  	assert.Equal("0.94", rateToString(2, 0.94))
    67  	assert.Equal("0.99", rateToString(2, 0.99))
    68  	assert.Equal("0.99", rateToString(2, 0.994))
    69  	assert.Equal("1.00", rateToString(2, 0.999))
    70  	assert.Equal("0.01", rateToString(2, 0.01))
    71  	assert.Equal("0.01", rateToString(2, 0.014))
    72  	assert.Equal("0.02", rateToString(2, 0.019))
    73  	assert.Equal("0.001", rateToString(2, 0.001))
    74  	assert.Equal("0.001", rateToString(2, 0.0014))
    75  	assert.Equal("0.002", rateToString(2, 0.0019))
    76  	assert.Equal("0.009", rateToString(2, 0.009))
    77  	assert.Equal("0.009", rateToString(2, 0.0094))
    78  	assert.Equal("0.010", rateToString(2, 0.0099))
    79  	assert.Equal("0.0001", rateToString(2, 0.0001))
    80  	assert.Equal("0.0001", rateToString(2, 0.00014))
    81  	assert.Equal("0.0002", rateToString(2, 0.00019))
    82  	assert.Equal("0.0009", rateToString(2, 0.0009))
    83  	assert.Equal("0.0009", rateToString(2, 0.00094))
    84  	assert.Equal("0.0010", rateToString(2, 0.00099))
    85  }
    86  
    87  func TestHasWorkloadEntryAddedToGraph(t *testing.T) {
    88  	assert := assert.New(t)
    89  
    90  	traffic := graph.NewTrafficMap()
    91  
    92  	n0, _ := graph.NewNode("testCluster", "appNamespace", "ratings", "appNamespace", "ratings-v1", "ratings", "v1", graph.GraphTypeVersionedApp)
    93  	n0.Metadata[graph.HasWorkloadEntry] = []graph.WEInfo{{Name: "ratings-v1"}}
    94  	traffic[n0.ID] = n0
    95  	cytoConfig := NewConfig(traffic, graph.ConfigOptions{})
    96  
    97  	cytoNode := cytoConfig.Elements.Nodes[0]
    98  	assert.Equal(cytoNode.Data.HasWorkloadEntry, n0.Metadata[graph.HasWorkloadEntry])
    99  }
   100  
   101  func TestHasWorkloadEntryEmpty(t *testing.T) {
   102  	assert := assert.New(t)
   103  
   104  	traffic := graph.NewTrafficMap()
   105  
   106  	n0, _ := graph.NewNode("testCluster", "appNamespace", "ratings", "appNamespace", "ratings-v1", "ratings", "v1", graph.GraphTypeVersionedApp)
   107  	traffic[n0.ID] = n0
   108  	cytoConfig := NewConfig(traffic, graph.ConfigOptions{})
   109  
   110  	cytoNode := cytoConfig.Elements.Nodes[0]
   111  	assert.Empty(cytoNode.Data.HasWorkloadEntry)
   112  }
   113  
   114  func TestHTTPToTrafficRate(t *testing.T) {
   115  	assert := assert.New(t)
   116  
   117  	traffic := graph.NewTrafficMap()
   118  
   119  	svc, _ := graph.NewNode("testCluster", "appNamespace", "ratings", "appNamespace", "", "ratings", "", graph.GraphTypeVersionedApp)
   120  	traffic[svc.ID] = svc
   121  
   122  	v1, _ := graph.NewNode("testCluster", "appNamespace", "", "appNamespace", "ratings-v1", "ratings", "v1", graph.GraphTypeVersionedApp)
   123  	traffic[v1.ID] = v1
   124  
   125  	e := svc.AddEdge(v1)
   126  	e.Metadata[graph.HTTP.EdgeResponses] = graph.Responses{
   127  		"200": &graph.ResponseDetail{
   128  			Flags: graph.ResponseFlags{
   129  				"-": 0.3333999999,
   130  			},
   131  			Hosts: graph.ResponseHosts{
   132  				svc.Service: 0.3333999999,
   133  			},
   134  		},
   135  	}
   136  	e.Metadata[graph.MetadataKey("http")] = 1.00
   137  
   138  	cytoConfig := NewConfig(traffic, graph.ConfigOptions{})
   139  
   140  	cytoNode := cytoConfig.Elements.Edges[0]
   141  	assert.NotNil(cytoNode.Data.Traffic)
   142  	assert.NotNil(cytoNode.Data.Traffic.Rates)
   143  }