mirror of
https://github.com/golang/go
synced 2024-11-23 16:00:06 -07:00
120 lines
2.3 KiB
Go
120 lines
2.3 KiB
Go
|
// run
|
||
|
|
||
|
// Copyright 2022 The Go Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style
|
||
|
// license that can be found in the LICENSE file.
|
||
|
|
||
|
package main
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"path/filepath"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
var t *testing.T
|
||
|
|
||
|
type TypeMeta struct {
|
||
|
Kind string
|
||
|
APIVersion string
|
||
|
}
|
||
|
|
||
|
type ObjectMeta struct {
|
||
|
Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"`
|
||
|
GenerateName string `json:"generateName,omitempty" protobuf:"bytes,2,opt,name=generateName"`
|
||
|
Namespace string `json:"namespace,omitempty" protobuf:"bytes,3,opt,name=namespace"`
|
||
|
SelfLink string `json:"selfLink,omitempty" protobuf:"bytes,4,opt,name=selfLink"`
|
||
|
}
|
||
|
|
||
|
type ConfigSpec struct {
|
||
|
Disks []DiskSpec
|
||
|
StorageClass string
|
||
|
}
|
||
|
|
||
|
type DiskSpec struct {
|
||
|
Name string
|
||
|
Size string
|
||
|
StorageClass string
|
||
|
Annotations map[string]string
|
||
|
VolumeName string
|
||
|
}
|
||
|
|
||
|
// Config is the Schema for the configs API.
|
||
|
type Config struct {
|
||
|
TypeMeta
|
||
|
ObjectMeta
|
||
|
|
||
|
Spec ConfigSpec
|
||
|
}
|
||
|
|
||
|
func findDiskSize(diskSpec *DiskSpec, configSpec *ConfigSpec) string {
|
||
|
t.Log(fmt.Sprintf("Hello World"))
|
||
|
return diskSpec.Size
|
||
|
}
|
||
|
|
||
|
func findStorageClassName(diskSpec *DiskSpec, configSpec *ConfigSpec) *string {
|
||
|
if diskSpec.StorageClass != "" {
|
||
|
return &diskSpec.StorageClass
|
||
|
}
|
||
|
|
||
|
if configSpec != nil {
|
||
|
for _, d := range configSpec.Disks {
|
||
|
if d.Name == diskSpec.Name {
|
||
|
if d.StorageClass != "" {
|
||
|
return &d.StorageClass
|
||
|
}
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if configSpec.StorageClass != "" {
|
||
|
return &configSpec.StorageClass
|
||
|
}
|
||
|
}
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func Bar(config *Config) *ConfigSpec {
|
||
|
var configSpec *ConfigSpec
|
||
|
if config != nil {
|
||
|
configSpec = &config.Spec
|
||
|
}
|
||
|
return configSpec
|
||
|
}
|
||
|
|
||
|
func Foo(diskSpec DiskSpec, config *Config) {
|
||
|
cs := Bar(config)
|
||
|
_ = findDiskSize(&diskSpec, cs)
|
||
|
cs = Bar(config)
|
||
|
_ = findStorageClassName(&diskSpec, cs)
|
||
|
|
||
|
}
|
||
|
|
||
|
func TestPanic(tt *testing.T) {
|
||
|
t = tt
|
||
|
myarray := []string{filepath.Join("..", "config", "crd", "bases")}
|
||
|
|
||
|
for i := 0; i < 1000; i++ {
|
||
|
Foo(DiskSpec{
|
||
|
Name: "DataDisk",
|
||
|
Size: "1Gi",
|
||
|
}, nil)
|
||
|
}
|
||
|
|
||
|
t.Log(myarray)
|
||
|
}
|
||
|
|
||
|
// Hack to run tests in a playground
|
||
|
func matchString(a, b string) (bool, error) {
|
||
|
return a == b, nil
|
||
|
}
|
||
|
func main() {
|
||
|
testSuite := []testing.InternalTest{
|
||
|
{
|
||
|
Name: "TestPanic",
|
||
|
F: TestPanic,
|
||
|
},
|
||
|
}
|
||
|
testing.Main(matchString, testSuite, nil, nil)
|
||
|
}
|