@@ -815,3 +815,138 @@ spec:
815
815
constraints: %[2]s
816
816
` , name , version ) + sas .ForNamespaceYAML ()
817
817
}
818
+
819
+ func Test_PackageInstall_DefaultSyncPeriod (t * testing.T ) {
820
+ env := e2e .BuildEnv (t )
821
+ logger := e2e.Logger {}
822
+ kapp := e2e.Kapp {T : t , Namespace : env .Namespace , L : logger }
823
+ sas := e2e.ServiceAccounts {Namespace : env .Namespace }
824
+ kubectl := e2e.Kubectl {T : t , Namespace : env .Namespace , L : logger }
825
+
826
+ name := "install-pkg-default-sync-period-test"
827
+
828
+ packageInstallYaml := fmt .Sprintf (`
829
+ ---
830
+ apiVersion: packaging.carvel.dev/v1alpha1
831
+ kind: PackageRepository
832
+ metadata:
833
+ name: basic.test.carvel.dev
834
+ annotations:
835
+ kapp.k14s.io/change-group: "packagerepo"
836
+ spec:
837
+ fetch:
838
+ imgpkgBundle:
839
+ image: index.docker.io/k8slt/kc-e2e-test-repo@sha256:ddd93b67b97c1460580ca1afd04326d16900dc716c4357cade85b83deab76f1c
840
+ ---
841
+ apiVersion: packaging.carvel.dev/v1alpha1
842
+ kind: PackageInstall
843
+ metadata:
844
+ name: %s
845
+ namespace: %s
846
+ annotations:
847
+ kapp.k14s.io/change-group: kappctrl-e2e.k14s.io/packageinstalls
848
+ kapp.k14s.io/change-rule: "upsert after upserting packagerepo"
849
+ spec:
850
+ serviceAccountName: kappctrl-e2e-ns-sa
851
+ packageRef:
852
+ refName: pkg.test.carvel.dev
853
+ versionSelection:
854
+ constraints: 1.0.0` , name , env .Namespace ) + sas .ForNamespaceYAML ()
855
+
856
+ cleanUpApp := func () {
857
+ kapp .Run ([]string {"delete" , "-a" , name })
858
+ }
859
+ cleanUpApp ()
860
+ defer cleanUpApp ()
861
+
862
+ logger .Section ("deploy PackageInstall and App created has default syncPeriod set" , func () {
863
+
864
+ // Create Repo and PackageInstall from YAML
865
+ kapp .RunWithOpts ([]string {"deploy" , "-f" , "-" , "-a" , name }, e2e.RunOpts {StdinReader : strings .NewReader (packageInstallYaml )})
866
+
867
+ // syncPeriod of the App created via PackageInstall should match to configured value on a global controller level config
868
+ kubectl .Run ([]string {"wait" , "--for=condition=ReconcileSucceeded" , "pkgi/" + name , "--timeout" , "1m" })
869
+ kubectl .Run ([]string {"wait" , "--for=condition=ReconcileSucceeded" , "apps/" + name , "--timeout" , "1m" })
870
+ out := kubectl .Run ([]string {"get" , fmt .Sprintf ("apps/%s" , name ), "-o" , "yaml" })
871
+
872
+ var cr v1alpha1.App
873
+ err := yaml .Unmarshal ([]byte (out ), & cr )
874
+
875
+ if err != nil {
876
+ t .Fatalf ("Failed to unmarshal: %s" , err )
877
+ }
878
+
879
+ expectedSyncPeriod := time .Duration (10 ) * time .Minute
880
+ actualSyncPeriod := cr .Spec .SyncPeriod .Duration
881
+
882
+ assert .Equal (t , actualSyncPeriod , expectedSyncPeriod )
883
+ })
884
+ }
885
+
886
+ func Test_PackageInstall_CustomSyncPeriod (t * testing.T ) {
887
+ env := e2e .BuildEnv (t )
888
+ logger := e2e.Logger {}
889
+ kapp := e2e.Kapp {T : t , Namespace : env .Namespace , L : logger }
890
+ sas := e2e.ServiceAccounts {Namespace : env .Namespace }
891
+ kubectl := e2e.Kubectl {T : t , Namespace : env .Namespace , L : logger }
892
+
893
+ name := "install-pkg-custom-sync-period-test"
894
+
895
+ packageInstallYaml := fmt .Sprintf (`
896
+ ---
897
+ apiVersion: packaging.carvel.dev/v1alpha1
898
+ kind: PackageRepository
899
+ metadata:
900
+ name: basic.test.carvel.dev
901
+ annotations:
902
+ kapp.k14s.io/change-group: "packagerepo"
903
+ spec:
904
+ fetch:
905
+ imgpkgBundle:
906
+ image: index.docker.io/k8slt/kc-e2e-test-repo@sha256:ddd93b67b97c1460580ca1afd04326d16900dc716c4357cade85b83deab76f1c
907
+ ---
908
+ apiVersion: packaging.carvel.dev/v1alpha1
909
+ kind: PackageInstall
910
+ metadata:
911
+ name: %s
912
+ namespace: %s
913
+ annotations:
914
+ kapp.k14s.io/change-group: kappctrl-e2e.k14s.io/packageinstalls
915
+ kapp.k14s.io/change-rule: "upsert after upserting packagerepo"
916
+ spec:
917
+ syncPeriod: 30s
918
+ serviceAccountName: kappctrl-e2e-ns-sa
919
+ packageRef:
920
+ refName: pkg.test.carvel.dev
921
+ versionSelection:
922
+ constraints: 1.0.0` , name , env .Namespace ) + sas .ForNamespaceYAML ()
923
+
924
+ cleanUpApp := func () {
925
+ kapp .Run ([]string {"delete" , "-a" , name })
926
+ }
927
+ cleanUpApp ()
928
+ defer cleanUpApp ()
929
+
930
+ logger .Section ("deploy PackageInstall and App created has default syncPeriod set" , func () {
931
+
932
+ // Create Repo and PackageInstall from YAML
933
+ kapp .RunWithOpts ([]string {"deploy" , "-f" , "-" , "-a" , name }, e2e.RunOpts {StdinReader : strings .NewReader (packageInstallYaml )})
934
+
935
+ // syncPeriod of the App created via PackageInstall should match to configured value on a global controller level config
936
+ kubectl .Run ([]string {"wait" , "--for=condition=ReconcileSucceeded" , "pkgi/" + name , "--timeout" , "1m" })
937
+ kubectl .Run ([]string {"wait" , "--for=condition=ReconcileSucceeded" , "apps/" + name , "--timeout" , "1m" })
938
+ out := kubectl .Run ([]string {"get" , fmt .Sprintf ("apps/%s" , name ), "-o" , "yaml" })
939
+
940
+ var cr v1alpha1.App
941
+ err := yaml .Unmarshal ([]byte (out ), & cr )
942
+
943
+ if err != nil {
944
+ t .Fatalf ("Failed to unmarshal: %s" , err )
945
+ }
946
+
947
+ expectedSyncPeriod := time .Duration (30 ) * time .Second
948
+ actualSyncPeriod := cr .Spec .SyncPeriod .Duration
949
+
950
+ assert .Equal (t , actualSyncPeriod , expectedSyncPeriod )
951
+ })
952
+ }
0 commit comments