@@ -296,6 +296,46 @@ var _ = Describe("sizer service", func() {
296296 Expect (result ).NotTo (BeNil ())
297297 })
298298
299+ It ("successfully handles hosted control plane (worker nodes only)" , func () {
300+ request .HostedControlPlane = true
301+ assessment := createTestAssessment (assessmentID , clusterID , 10 , 40 , 80 )
302+ mockStore .assessments [assessmentID ] = assessment
303+
304+ var sizerPayload client.SizerRequest
305+ testServer = httptest .NewServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
306+ if r .URL .Path == "/api/v1/size/custom" && r .Method == http .MethodPost {
307+ Expect (json .NewDecoder (r .Body ).Decode (& sizerPayload )).To (Succeed ())
308+ }
309+ if r .URL .Path == "/health" {
310+ w .WriteHeader (http .StatusOK )
311+ return
312+ }
313+ if r .URL .Path == "/api/v1/size/custom" {
314+ w .Header ().Set ("Content-Type" , "application/json" )
315+ w .WriteHeader (http .StatusOK )
316+ _ = json .NewEncoder (w ).Encode (createTestSizerResponse (4 , 4 , 0 , 40 , 80 ))
317+ return
318+ }
319+ w .WriteHeader (http .StatusNotFound )
320+ }))
321+ sizerClient = client .NewSizerClient (testServer .URL , 5 * time .Second )
322+ sizerService = service .NewSizerService (sizerClient , mockStore )
323+
324+ result , err := sizerService .CalculateClusterRequirements (ctx , assessmentID , request )
325+
326+ Expect (err ).To (BeNil ())
327+ Expect (result ).NotTo (BeNil ())
328+ Expect (result .ClusterSizing .ControlPlaneNodes ).To (Equal (0 ))
329+ Expect (result .ClusterSizing .WorkerNodes ).To (Equal (6 ))
330+ Expect (result .ClusterSizing .TotalNodes ).To (Equal (6 ))
331+ Expect (result .ClusterSizing .FailoverNodes ).To (Equal (2 ))
332+
333+ Expect (sizerPayload .MachineSets ).To (HaveLen (1 ))
334+ Expect (sizerPayload .MachineSets [0 ].Name ).To (Equal ("worker" ))
335+ Expect (sizerPayload .Workloads ).To (HaveLen (1 ))
336+ Expect (sizerPayload .Workloads [0 ].Name ).To (Equal ("vm-workload" ))
337+ })
338+
299339 It ("successfully handles different over-commit ratios" , func () {
300340 cpuRatios := []string {"1:1" , "1:2" , "1:4" , "1:6" }
301341 memoryRatios := []string {"1:1" , "1:2" , "1:4" }
0 commit comments