@@ -298,6 +298,94 @@ func TestNodeStore(t *testing.T) {
298
298
` ,
299
299
MetricNames : []string {"kube_node_status_addresses" },
300
300
},
301
+ // memory overflow test
302
+ {
303
+ Obj : & v1.Node {
304
+ ObjectMeta : metav1.ObjectMeta {
305
+ Name : "127.0.0.1" ,
306
+ CreationTimestamp : metav1.Time {Time : time .Unix (1500000000 , 0 )},
307
+ Labels : map [string ]string {
308
+ "node-role.kubernetes.io/master" : "" ,
309
+ },
310
+ },
311
+ Spec : v1.NodeSpec {
312
+ Unschedulable : true ,
313
+ ProviderID : "provider://i-randomidentifier" ,
314
+ PodCIDR : "172.24.10.0/24" ,
315
+ },
316
+ Status : v1.NodeStatus {
317
+ NodeInfo : v1.NodeSystemInfo {
318
+ KernelVersion : "kernel" ,
319
+ KubeletVersion : "kubelet" ,
320
+ KubeProxyVersion : "kubeproxy" ,
321
+ OSImage : "osimage" ,
322
+ ContainerRuntimeVersion : "rkt" ,
323
+ SystemUUID : "6a934e21-5207-4a84-baea-3a952d926c80" ,
324
+ },
325
+ Addresses : []v1.NodeAddress {
326
+ {Type : "InternalIP" , Address : "1.2.3.4" },
327
+ },
328
+ Capacity : v1.ResourceList {
329
+ v1 .ResourceCPU : resource .MustParse ("4.3" ),
330
+ // overflow test
331
+ v1 .ResourceMemory : resource .MustParse ("10000T" ),
332
+ v1 .ResourcePods : resource .MustParse ("1000" ),
333
+ v1 .ResourceStorage : resource .MustParse ("3G" ),
334
+ v1 .ResourceEphemeralStorage : resource .MustParse ("4G" ),
335
+ v1 .ResourceName ("nvidia.com/gpu" ): resource .MustParse ("4" ),
336
+ },
337
+ Allocatable : v1.ResourceList {
338
+ v1 .ResourceCPU : resource .MustParse ("3" ),
339
+ v1 .ResourceMemory : resource .MustParse ("1G" ),
340
+ v1 .ResourcePods : resource .MustParse ("555" ),
341
+ v1 .ResourceStorage : resource .MustParse ("2G" ),
342
+ v1 .ResourceEphemeralStorage : resource .MustParse ("3G" ),
343
+ v1 .ResourceName ("nvidia.com/gpu" ): resource .MustParse ("1" ),
344
+ },
345
+ },
346
+ },
347
+ Want : `
348
+ # HELP kube_node_created [STABLE] Unix creation timestamp
349
+ # HELP kube_node_info [STABLE] Information about a cluster node.
350
+ # HELP kube_node_labels [STABLE] Kubernetes labels converted to Prometheus labels.
351
+ # HELP kube_node_role The role of a cluster node.
352
+ # HELP kube_node_spec_unschedulable [STABLE] Whether a node can schedule new pods.
353
+ # HELP kube_node_status_allocatable [STABLE] The allocatable for different resources of a node that are available for scheduling.
354
+ # HELP kube_node_status_capacity [STABLE] The capacity for different resources of a node.
355
+ # TYPE kube_node_created gauge
356
+ # TYPE kube_node_info gauge
357
+ # TYPE kube_node_labels gauge
358
+ # TYPE kube_node_role gauge
359
+ # TYPE kube_node_spec_unschedulable gauge
360
+ # TYPE kube_node_status_allocatable gauge
361
+ # TYPE kube_node_status_capacity gauge
362
+ kube_node_created{node="127.0.0.1"} 1.5e+09
363
+ kube_node_info{container_runtime_version="rkt",kernel_version="kernel",kubelet_version="kubelet",kubeproxy_version="deprecated",node="127.0.0.1",os_image="osimage",pod_cidr="172.24.10.0/24",provider_id="provider://i-randomidentifier",internal_ip="1.2.3.4",system_uuid="6a934e21-5207-4a84-baea-3a952d926c80"} 1
364
+ kube_node_role{node="127.0.0.1",role="master"} 1
365
+ kube_node_spec_unschedulable{node="127.0.0.1"} 1
366
+ kube_node_status_allocatable{node="127.0.0.1",resource="cpu",unit="core"} 3
367
+ kube_node_status_allocatable{node="127.0.0.1",resource="ephemeral_storage",unit="byte"} 3e+09
368
+ kube_node_status_allocatable{node="127.0.0.1",resource="memory",unit="byte"} 1e+09
369
+ kube_node_status_allocatable{node="127.0.0.1",resource="nvidia_com_gpu",unit="integer"} 1
370
+ kube_node_status_allocatable{node="127.0.0.1",resource="pods",unit="integer"} 555
371
+ kube_node_status_allocatable{node="127.0.0.1",resource="storage",unit="byte"} 2e+09
372
+ kube_node_status_capacity{node="127.0.0.1",resource="cpu",unit="core"} 4.3
373
+ kube_node_status_capacity{node="127.0.0.1",resource="ephemeral_storage",unit="byte"} 4e+09
374
+ kube_node_status_capacity{node="127.0.0.1",resource="memory",unit="byte"} 1e+16
375
+ kube_node_status_capacity{node="127.0.0.1",resource="nvidia_com_gpu",unit="integer"} 4
376
+ kube_node_status_capacity{node="127.0.0.1",resource="pods",unit="integer"} 1000
377
+ kube_node_status_capacity{node="127.0.0.1",resource="storage",unit="byte"} 3e+09
378
+ ` ,
379
+ MetricNames : []string {
380
+ "kube_node_status_capacity" ,
381
+ "kube_node_status_allocatable" ,
382
+ "kube_node_spec_unschedulable" ,
383
+ "kube_node_labels" ,
384
+ "kube_node_role" ,
385
+ "kube_node_info" ,
386
+ "kube_node_created" ,
387
+ },
388
+ },
301
389
}
302
390
for i , c := range cases {
303
391
c .Func = generator .ComposeMetricGenFuncs (nodeMetricFamilies (nil , nil ))
0 commit comments