github.com/jlmeeker/kismatic@v1.10.1-0.20180612190640-57f9005a1f1a/pkg/install/plan_test.go (about) 1 package install 2 3 import ( 4 "bytes" 5 "fmt" 6 "io/ioutil" 7 "os" 8 "os/exec" 9 "path/filepath" 10 "testing" 11 ) 12 13 func TestWritePlanTemplate(t *testing.T) { 14 tests := []struct { 15 golden string 16 template PlanTemplateOptions 17 }{ 18 { 19 golden: "./test/plan-template.golden.yaml", 20 template: PlanTemplateOptions{ 21 EtcdNodes: 3, 22 MasterNodes: 2, 23 WorkerNodes: 3, 24 IngressNodes: 2, 25 StorageNodes: 0, 26 AdditionalFiles: 1, 27 }, 28 }, 29 { 30 golden: "./test/plan-template-with-storage.golden.yaml", 31 template: PlanTemplateOptions{ 32 EtcdNodes: 3, 33 MasterNodes: 2, 34 WorkerNodes: 3, 35 IngressNodes: 2, 36 StorageNodes: 2, 37 AdditionalFiles: 1, 38 }, 39 }, 40 } 41 for _, test := range tests { 42 expected, err := ioutil.ReadFile(test.golden) 43 if err != nil { 44 t.Fatalf("error reading golden file: %v", err) 45 } 46 tmp, err := ioutil.TempDir("", "ket-test-write-plan-template") 47 if err != nil { 48 t.Fatalf("error creating temp dir: %v", err) 49 } 50 file := filepath.Join(tmp, "kismatic-cluster.yaml") 51 fp := &FilePlanner{file} 52 if err = WritePlanTemplate(test.template, fp); err != nil { 53 t.Fatalf("error writing plan template: %v", err) 54 } 55 wrote, err := ioutil.ReadFile(file) 56 if err != nil { 57 t.Fatalf("error reading plan file template: %v", err) 58 } 59 if !bytes.Equal(wrote, expected) { 60 t.Errorf("the resulting plan file did not equal the expected plan file (%s)", test.golden) 61 if _, err := exec.LookPath("diff"); err == nil { 62 cmd := exec.Command("diff", test.golden, file) 63 fmt.Println(file) 64 cmd.Stdout = os.Stdout 65 cmd.Run() 66 } 67 } 68 } 69 } 70 71 func TestReadWithDeprecated(t *testing.T) { 72 pm := &DeprecatedPackageManager{ 73 Enabled: true, 74 } 75 p := &Plan{} 76 p.Features = &Features{ 77 PackageManager: pm, 78 } 79 b := false 80 p.Cluster.AllowPackageInstallation = &b 81 readDeprecatedFields(p) 82 83 // features.package_manager should be set to add_ons.package_manager 84 if p.AddOns.PackageManager.Disable || p.AddOns.PackageManager.Provider != "helm" { 85 t.Errorf("Expected add_ons.package_manager to be read from features.package_manager") 86 } 87 // cluster.disable_package_installation shoule be set to cluster.allow_package_installation 88 if p.Cluster.DisablePackageInstallation != true { 89 t.Errorf("Expected cluster.allow_package_installation to be read from cluster.disable_package_installation") 90 } 91 } 92 93 func TestReadWithNil(t *testing.T) { 94 p := &Plan{} 95 setDefaults(p) 96 97 if p.AddOns.CNI.Provider != "calico" { 98 t.Errorf("Expected add_ons.cni.provider to equal 'calico', instead got %s", p.AddOns.CNI.Provider) 99 } 100 if p.AddOns.CNI.Options.Calico.Mode != "overlay" { 101 t.Errorf("Expected add_ons.cni.options.calico.mode to equal 'overlay', instead got %s", p.AddOns.CNI.Options.Calico.Mode) 102 } 103 104 if p.AddOns.HeapsterMonitoring.Options.Heapster.Replicas != 2 { 105 t.Errorf("Expected add_ons.heapster.options.heapster.replicas to equal 2, instead got %d", p.AddOns.HeapsterMonitoring.Options.Heapster.Replicas) 106 } 107 108 if p.AddOns.HeapsterMonitoring.Options.Heapster.ServiceType != "ClusterIP" { 109 t.Errorf("Expected add_ons.heapster.options.heapster.service_type to equal ClusterIP, instead got %s", p.AddOns.HeapsterMonitoring.Options.Heapster.ServiceType) 110 } 111 112 if p.AddOns.HeapsterMonitoring.Options.Heapster.Sink != "influxdb:http://heapster-influxdb.kube-system.svc:8086" { 113 t.Errorf("Expected add_ons.heapster.options.heapster.service_type to equal 'influxdb:http://heapster-influxdb.kube-system.svc:8086', instead got %s", p.AddOns.HeapsterMonitoring.Options.Heapster.Sink) 114 } 115 116 if p.Cluster.Certificates.CAExpiry != defaultCAExpiry { 117 t.Errorf("expected ca cert expiry to be %s, but got %s", defaultCAExpiry, p.Cluster.Certificates.CAExpiry) 118 } 119 120 if p.Cluster.Version != kubernetesVersionString { 121 t.Errorf("expected cluster version to be %s, but got %s", kubernetesVersionString, p.Cluster.Version) 122 } 123 }