0
私はkubernetisコントローラのテストを実装しています。 私はNewSimpleClientsetを使用しています。 私は単一のオブジェクトを受け取って、オブジェクトが通知者を介して正しく渡されているかどうかを確認します。k8s NewListWatchFromClientがNewSimpleClientsetでクラッシュする
私のテスト機能は、この
func Test_TestListInformer(t *testing.T) {
dpl := GenerateHelloWorldDeployment()
clientSet := fake.NewSimpleClientset(&dpl)
watchlist := cache.NewListWatchFromClient(clientSet.ExtensionsV1beta1().RESTClient(), "deployments", api_v1.NamespaceAll, fields.Everything())
var expectedObj interface{}
resyncPeriod := 30 * time.Minute
_, eController := cache.NewInformer(
watchlist,
&v1beta1.Deployment{},
resyncPeriod,
cache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}) {
expectedObj = obj
},
DeleteFunc: func(obj interface{}) {
expectedObj = obj
},
UpdateFunc: func(oldObj interface{}, newObj interface{}) {
expectedObj = oldObj
},
},
)
stopChan := make(chan struct{})
go eController.Run(stopChan)
time.Sleep(time.Second)
close(stopChan)
}
のように、それはGenerateHelloWorldDeployment戻りが良好であることを
E1220 17:06:06.304112 35412 runtime.go:66] Observed a panic: "invalid memory address or nil pointer dereference" (runtime error: invalid memory address or nil pointer dereference)
/Users/myuser/dev/go/src/github.com/myrepo/myproj/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:72
/Users/myuser/dev/go/src/github.com/myrepo/myproj/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:65
/Users/myuser/dev/go/src/github.com/myrepo/myproj/vendor/k8s.io/apimachinery/pkg/util/runtime/runtime.go:51
/usr/local/Cellar/go/1.9.2/libexec/src/runtime/asm_amd64.s:509
/usr/local/Cellar/go/1.9.2/libexec/src/runtime/panic.go:491
/usr/local/Cellar/go/1.9.2/libexec/src/runtime/panic.go:63
/usr/local/Cellar/go/1.9.2/libexec/src/runtime/signal_unix.go:367
/Users/myuser/dev/go/src/github.com/myrepo/myproj/vendor/k8s.io/client-go/rest/client.go:222
/Users/myuser/dev/go/src/github.com/myrepo/myproj/vendor/k8s.io/client-go/rest/client.go:247
/Users/myuser/dev/go/src/github.com/myrepo/myproj/vendor/k8s.io/client-go/tools/cache/listwatch.go:68
/Users/myuser/dev/go/src/github.com/myrepo/myproj/vendor/k8s.io/client-go/tools/cache/listwatch.go:101
/Users/myuser/dev/go/src/github.com/myrepo/myproj/vendor/k8s.io/client-go/tools/cache/reflector.go:249
/Users/myuser/dev/go/src/github.com/myrepo/myproj/vendor/k8s.io/client-go/tools/cache/reflector.go:204
/Users/myuser/dev/go/src/github.com/myrepo/myproj/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133
/Users/myuser/dev/go/src/github.com/myrepo/myproj/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:134
/Users/myuser/dev/go/src/github.com/myrepo/myproj/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:88
/Users/myuser/dev/go/src/github.com//vendor/k8s.io/client-go/tools/cache/reflector.go:203
/Users/myuser/dev/go/src/github.com/myrepo/myproj/vendor/k8s.io/client-go/tools/cache/controller.go:122
/Users/myuser/dev/go/src/github.com/myrepo/myproj/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:54
/Users/myuser/dev/go/srmyrepo/myprojc/github.com/myrepo/myproj/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:71
/usr/local/Cellar/go/1.9.2/libexec/src/runtime/asm_amd64.s:2337
展開オブジェクトをクラッシュ見えます。 私はそれを取得することができますclientSet.ExtensionsV1beta1().Deployments("").Get("hello-world-deployment",meta_v1.GetOptions{})
通報者はなぜクラッシュしますか?
がところで、コードが正常に動作します「k8s.io/client-go/tools/cache/testing」から NewFakeControllerSourceを使用する必要があります。 – AlexS
は完全なスタックトレースですか? – ramrunner