...

Source file src/edge-infra.dev/pkg/edge/gitops/fns/normalizer/quotecpulimits_test.go

Documentation: edge-infra.dev/pkg/edge/gitops/fns/normalizer

     1  package normalizer
     2  
     3  import (
     4  	"testing"
     5  
     6  	"sigs.k8s.io/kustomize/kyaml/kio"
     7  	"sigs.k8s.io/kustomize/kyaml/yaml"
     8  )
     9  
    10  var data1 = `apiVersion: apps/v1
    11  kind: Deployment
    12  metadata:
    13    name: ctlfish
    14    namespace: ctlfish
    15  spec:
    16    replicas: 1
    17    spec:
    18      serviceAccountName: agent-sa
    19      resources:
    20        limits:
    21          cpu: 500
    22          memory: "246Mi"
    23      volumes:
    24      - name: config-volume
    25      configMap:
    26        name: ctlfish-config
    27  `
    28  
    29  var quotedData1 = `apiVersion: apps/v1
    30  kind: Deployment
    31  metadata:
    32    name: ctlfish
    33    namespace: ctlfish
    34  spec:
    35    replicas: 1
    36    spec:
    37      serviceAccountName: agent-sa
    38      resources:
    39        limits:
    40          cpu: "500"
    41          memory: "246Mi"
    42      volumes:
    43      - name: config-volume
    44      configMap:
    45        name: ctlfish-config
    46  `
    47  
    48  var data2 = `apiVersion: v1
    49  kind: test
    50  spec:
    51    name: Bar
    52    limits:
    53      cpu: 1
    54  ---
    55  apiVersion: v1
    56  kind: test
    57  spec:
    58    name: Baz
    59    limits:
    60      cpu: '2'
    61    resource:
    62      limits:
    63        cpu: 2
    64  ---
    65  apiVersion: v1
    66  kind: test
    67  spec:
    68    name: Foo
    69  `
    70  
    71  var quotedData2 = `apiVersion: v1
    72  kind: test
    73  spec:
    74    name: Bar
    75    limits:
    76      cpu: "1"
    77  ---
    78  apiVersion: v1
    79  kind: test
    80  spec:
    81    name: Baz
    82    limits:
    83      cpu: "2"
    84    resource:
    85      limits:
    86        cpu: "2"
    87  ---
    88  apiVersion: v1
    89  kind: test
    90  spec:
    91    name: Foo
    92  `
    93  
    94  // Test single node input for quoteCPULimitsForNodes
    95  func TestConvertLimitsForSingleNode(t *testing.T) {
    96  	obj, err := yaml.Parse(data1)
    97  
    98  	if err != nil {
    99  		t.Fatal(err)
   100  	}
   101  	input := []*yaml.RNode{obj}
   102  	quoteCPULimitsForNodes(input)
   103  	str, err := input[0].String()
   104  	if err != nil {
   105  		t.Fatal(err)
   106  	}
   107  	if str != quotedData1 {
   108  		t.Fatal("test data1 doesn't match quotedData1")
   109  	}
   110  }
   111  
   112  // Test nultiple nodes input for quoteCPULimitsForNodes
   113  func TestConvertLimitsForNodes(t *testing.T) {
   114  	nodes, err := kio.ParseAll(data2)
   115  	if err != nil {
   116  		t.Fatal(err)
   117  	} else if len(nodes) != 3 {
   118  		t.Fatalf("Didn't parse into 3 nodes. Got %d", len(nodes))
   119  	}
   120  
   121  	quoteCPULimitsForNodes(nodes)
   122  
   123  	str, err := kio.StringAll(nodes)
   124  	if err != nil {
   125  		t.Fatal(err)
   126  	}
   127  	if str != quotedData2 {
   128  		t.Fatal("test data2 doesn't match quotedData2")
   129  	}
   130  }
   131  

View as plain text