func ExampleFormat() { memorySize := resource.NewQuantity(5*1024*1024*1024, resource.BinarySI) fmt.Printf("memorySize = %v\n", memorySize) diskSize := resource.NewQuantity(5*1000*1000*1000, resource.DecimalSI) fmt.Printf("diskSize = %v\n", diskSize) cores := resource.NewMilliQuantity(5300, resource.DecimalSI) fmt.Printf("cores = %v\n", cores) // Output: // memorySize = 5Gi // diskSize = 5G // cores = 5300m }
func TestResourceListConversion(t *testing.T) { bigMilliQuantity := resource.NewQuantity(resource.MaxMilliValue, resource.DecimalSI) bigMilliQuantity.Add(resource.MustParse("12345m")) tests := []struct { input versioned.ResourceList expected api.ResourceList }{ { // No changes necessary. input: versioned.ResourceList{ versioned.ResourceMemory: resource.MustParse("30M"), versioned.ResourceCPU: resource.MustParse("100m"), versioned.ResourceStorage: resource.MustParse("1G"), }, expected: api.ResourceList{ api.ResourceMemory: resource.MustParse("30M"), api.ResourceCPU: resource.MustParse("100m"), api.ResourceStorage: resource.MustParse("1G"), }, }, { // Nano-scale values should be rounded up to milli-scale. input: versioned.ResourceList{ versioned.ResourceCPU: resource.MustParse("3.000023m"), versioned.ResourceMemory: resource.MustParse("500.000050m"), }, expected: api.ResourceList{ api.ResourceCPU: resource.MustParse("4m"), api.ResourceMemory: resource.MustParse("501m"), }, }, { // Large values should still be accurate. input: versioned.ResourceList{ versioned.ResourceCPU: *bigMilliQuantity.Copy(), versioned.ResourceStorage: *bigMilliQuantity.Copy(), }, expected: api.ResourceList{ api.ResourceCPU: *bigMilliQuantity.Copy(), api.ResourceStorage: *bigMilliQuantity.Copy(), }, }, } output := api.ResourceList{} for i, test := range tests { err := api.Scheme.Convert(&test.input, &output) if err != nil { t.Fatalf("unexpected error for case %d: %v", i, err) } if !api.Semantic.DeepEqual(test.expected, output) { t.Errorf("unexpected conversion for case %d: Expected %+v; Got %+v", i, test.expected, output) } } }