@@ -375,6 +375,62 @@ func TestValidatePumpSpec(t *testing.T) {
375375 }
376376}
377377
378+ func TestValidateTiFlashSpec (t * testing.T ) {
379+ g := NewGomegaWithT (t )
380+ tests := []struct {
381+ name string
382+ replicas int32
383+ expectedErrors int
384+ storageClaims []v1alpha1.StorageClaim
385+ }{
386+ {
387+ name : "has storage request" ,
388+ replicas : 1 ,
389+ expectedErrors : 0 ,
390+ storageClaims : []v1alpha1.StorageClaim {
391+ {
392+ Resources : corev1.ResourceRequirements {
393+ Requests : corev1.ResourceList {
394+ corev1 .ResourceStorage : resource .MustParse ("10G" ),
395+ },
396+ },
397+ },
398+ },
399+ },
400+ {
401+ name : "no storage request" ,
402+ replicas : 1 ,
403+ expectedErrors : 3 ,
404+ storageClaims : []v1alpha1.StorageClaim {
405+ {
406+ Resources : corev1.ResourceRequirements {
407+ Requests : corev1.ResourceList {},
408+ },
409+ },
410+ {
411+ Resources : corev1.ResourceRequirements {
412+ Requests : corev1.ResourceList {},
413+ },
414+ },
415+ {
416+ Resources : corev1.ResourceRequirements {
417+ Requests : corev1.ResourceList {},
418+ },
419+ },
420+ },
421+ },
422+ }
423+ for _ , tt := range tests {
424+ t .Run (tt .name , func (t * testing.T ) {
425+ tc := newTidbClusterWithTiflash ()
426+ tc .Spec .TiFlash .StorageClaims = tt .storageClaims
427+ err := validateTiFlashSpec (tc .Spec .TiFlash , field .NewPath ("spec" , "tiflash" ))
428+ r := len (err )
429+ g .Expect (r ).Should (Equal (tt .expectedErrors ))
430+ })
431+ }
432+ }
433+
378434func TestValidateRequestsStorage (t * testing.T ) {
379435 g := NewGomegaWithT (t )
380436 tests := []struct {
@@ -542,6 +598,14 @@ func newTidbCluster() *v1alpha1.TidbCluster {
542598 return tc
543599}
544600
601+ func newTidbClusterWithTiflash () * v1alpha1.TidbCluster {
602+ tc := newTidbCluster ()
603+ tc .Spec .TiFlash = & v1alpha1.TiFlashSpec {
604+ Replicas : 1 ,
605+ }
606+ return tc
607+ }
608+
545609func newService () * v1alpha1.ServiceSpec {
546610 svc := & v1alpha1.ServiceSpec {}
547611 return svc
0 commit comments