@@ -137,6 +137,7 @@ var _ = Describe("Start", func() {
137137 mockHost .EXPECT ().CheckRequirements (),
138138 mockHypervisor .EXPECT ().IsRunning ("cfdev" ).Return (false , nil ),
139139
140+ mockHostNet .EXPECT ().AddLoopbackAliases ("some-bosh-director-ip" , "some-cf-router-ip" ),
140141 mockUI .EXPECT ().Say ("Downloading Resources..." ),
141142 mockCache .EXPECT ().Sync (resource.Catalog {
142143 Items : []resource.Item {
@@ -145,7 +146,6 @@ var _ = Describe("Start", func() {
145146 },
146147 }),
147148 mockIsoReader .EXPECT ().Read (depsIsoPath ).Return (metadata , nil ),
148- mockHostNet .EXPECT ().AddLoopbackAliases ("some-bosh-director-ip" , "some-cf-router-ip" ),
149149 mockUI .EXPECT ().Say ("Creating the VM..." ),
150150 mockHypervisor .EXPECT ().CreateVM (hypervisor.VM {
151151 Name : "cfdev" ,
@@ -190,6 +190,87 @@ var _ = Describe("Start", func() {
190190 })).To (Succeed ())
191191 })
192192
193+ Context ("when catalog includes cfdevd" , func (){
194+ BeforeEach (func (){
195+ startCmd .Config .Dependencies = resource.Catalog {
196+ Items : []resource.Item {
197+ {Name : "some-item" },
198+ {Name : "cfdevd" },
199+ {Name : "cf-deps.iso" },
200+ },
201+ }
202+ })
203+ It ("downloads cfdevd first" , func (){
204+ if runtime .GOOS == "darwin" {
205+ mockUI .EXPECT ().Say ("Installing cfdevd network helper..." )
206+ mockCFDevD .EXPECT ().Install ()
207+ }
208+
209+ gomock .InOrder (
210+ mockToggle .EXPECT ().SetProp ("type" , "cf" ),
211+ mockAnalyticsClient .EXPECT ().Event (cfanalytics .START_BEGIN ),
212+ mockHost .EXPECT ().CheckRequirements (),
213+ mockHypervisor .EXPECT ().IsRunning ("cfdev" ).Return (false , nil ),
214+ mockUI .EXPECT ().Say ("Downloading Network Helper..." ),
215+ mockCache .EXPECT ().Sync (resource.Catalog {
216+ Items : []resource.Item {
217+ {Name : "cfdevd" },
218+ },
219+ }),
220+ mockHostNet .EXPECT ().AddLoopbackAliases ("some-bosh-director-ip" , "some-cf-router-ip" ),
221+ mockUI .EXPECT ().Say ("Downloading Resources..." ),
222+ mockCache .EXPECT ().Sync (resource.Catalog {
223+ Items : []resource.Item {
224+ {Name : "some-item" },
225+ {Name : "cf-deps.iso" },
226+ },
227+ }),
228+ mockIsoReader .EXPECT ().Read (depsIsoPath ).Return (metadata , nil ),
229+ mockUI .EXPECT ().Say ("Creating the VM..." ),
230+ mockHypervisor .EXPECT ().CreateVM (hypervisor.VM {
231+ Name : "cfdev" ,
232+ CPUs : 7 ,
233+ MemoryMB : 8765 ,
234+ DepsIso : filepath .Join (cacheDir , "cf-deps.iso" ),
235+ }),
236+ mockUI .EXPECT ().Say ("Starting VPNKit..." ),
237+ mockVpnKit .EXPECT ().Start (),
238+ mockVpnKit .EXPECT ().Watch (localExitChan ),
239+ mockUI .EXPECT ().Say ("Starting the VM..." ),
240+ mockHypervisor .EXPECT ().Start ("cfdev" ),
241+ mockUI .EXPECT ().Say ("Waiting for Garden..." ),
242+ mockProvisioner .EXPECT ().Ping (),
243+ mockUI .EXPECT ().Say ("Deploying the BOSH Director..." ),
244+ mockProvisioner .EXPECT ().DeployBosh (),
245+ mockUI .EXPECT ().Say ("Deploying CF..." ),
246+ mockProvisioner .EXPECT ().ReportProgress (mockUI , "cf" ),
247+ mockProvisioner .EXPECT ().DeployCloudFoundry (nil ),
248+ mockProvisioner .EXPECT ().DeployServices (mockUI , []provision.Service {
249+ {
250+ Name : "some-service" ,
251+ Handle : "some-handle" ,
252+ Script : "/path/to/some-script" ,
253+ Deployment : "some-deployment" ,
254+ },
255+ {
256+ Name : "some-other-service" ,
257+ Handle : "some-other-handle" ,
258+ Script : "/path/to/some-other-script" ,
259+ Deployment : "some-other-deployment" ,
260+ },
261+ }),
262+
263+ //welcome message
264+ mockAnalyticsClient .EXPECT ().Event (cfanalytics .START_END ),
265+ )
266+
267+ Expect (startCmd .Execute (start.Args {
268+ Cpus : 7 ,
269+ Mem : 0 ,
270+ })).To (Succeed ())
271+ })
272+ })
273+
193274 Context ("when no args are provided AND deps.iso does not have default memory" , func () {
194275 It ("starts the vm with a default memory setting" , func () {
195276 metadata .DefaultMemory = 0
@@ -205,6 +286,7 @@ var _ = Describe("Start", func() {
205286 mockHost .EXPECT ().CheckRequirements (),
206287 mockHypervisor .EXPECT ().IsRunning ("cfdev" ).Return (false , nil ),
207288
289+ mockHostNet .EXPECT ().AddLoopbackAliases ("some-bosh-director-ip" , "some-cf-router-ip" ),
208290 mockUI .EXPECT ().Say ("Downloading Resources..." ),
209291 mockCache .EXPECT ().Sync (resource.Catalog {
210292 Items : []resource.Item {
@@ -214,8 +296,6 @@ var _ = Describe("Start", func() {
214296 }),
215297 mockIsoReader .EXPECT ().Read (depsIsoPath ).Return (metadata , nil ),
216298
217- mockHostNet .EXPECT ().AddLoopbackAliases ("some-bosh-director-ip" , "some-cf-router-ip" ),
218-
219299 mockUI .EXPECT ().Say ("Creating the VM..." ),
220300 mockHypervisor .EXPECT ().CreateVM (hypervisor.VM {
221301 Name : "cfdev" ,
@@ -274,6 +354,7 @@ var _ = Describe("Start", func() {
274354 mockAnalyticsClient .EXPECT ().Event (cfanalytics .START_BEGIN ),
275355 mockHost .EXPECT ().CheckRequirements (),
276356 mockHypervisor .EXPECT ().IsRunning ("cfdev" ).Return (false , nil ),
357+ mockHostNet .EXPECT ().AddLoopbackAliases ("some-bosh-director-ip" , "some-cf-router-ip" ),
277358 mockUI .EXPECT ().Say ("Downloading Resources..." ),
278359 mockCache .EXPECT ().Sync (resource.Catalog {
279360 Items : []resource.Item {
@@ -282,7 +363,6 @@ var _ = Describe("Start", func() {
282363 },
283364 }),
284365 mockIsoReader .EXPECT ().Read (depsIsoPath ).Return (metadata , nil ),
285- mockHostNet .EXPECT ().AddLoopbackAliases ("some-bosh-director-ip" , "some-cf-router-ip" ),
286366 mockUI .EXPECT ().Say ("Creating the VM..." ),
287367 mockHypervisor .EXPECT ().CreateVM (hypervisor.VM {
288368 Name : "cfdev" ,
@@ -326,11 +406,17 @@ var _ = Describe("Start", func() {
326406 ioutil .WriteFile (customIso , []byte {}, 0644 )
327407 metadata .Version = "v100"
328408
409+ if runtime .GOOS == "darwin" {
410+ mockUI .EXPECT ().Say ("Installing cfdevd network helper..." )
411+ mockCFDevD .EXPECT ().Install ()
412+ }
413+
329414 gomock .InOrder (
330415 mockToggle .EXPECT ().SetProp ("type" , "custom.iso" ),
331416 mockAnalyticsClient .EXPECT ().Event (cfanalytics .START_BEGIN ),
332417 mockHost .EXPECT ().CheckRequirements (),
333418 mockHypervisor .EXPECT ().IsRunning ("cfdev" ).Return (false , nil ),
419+ mockHostNet .EXPECT ().AddLoopbackAliases ("some-bosh-director-ip" , "some-cf-router-ip" ),
334420 mockUI .EXPECT ().Say ("Downloading Resources..." ),
335421 // don't download cf-deps.iso that we won't use
336422 mockCache .EXPECT ().Sync (resource.Catalog {
@@ -364,6 +450,7 @@ var _ = Describe("Start", func() {
364450 mockAnalyticsClient .EXPECT ().Event (cfanalytics .START_BEGIN ),
365451 mockHost .EXPECT ().CheckRequirements (),
366452 mockHypervisor .EXPECT ().IsRunning ("cfdev" ).Return (false , nil ),
453+ mockHostNet .EXPECT ().AddLoopbackAliases ("some-bosh-director-ip" , "some-cf-router-ip" ),
367454 mockUI .EXPECT ().Say ("Downloading Resources..." ),
368455 // don't download cf-deps.iso that we won't use
369456 mockCache .EXPECT ().Sync (resource.Catalog {
@@ -372,7 +459,6 @@ var _ = Describe("Start", func() {
372459 },
373460 }),
374461 mockIsoReader .EXPECT ().Read (customIso ).Return (metadata , nil ),
375- mockHostNet .EXPECT ().AddLoopbackAliases ("some-bosh-director-ip" , "some-cf-router-ip" ),
376462 mockUI .EXPECT ().Say ("Creating the VM..." ),
377463 mockHypervisor .EXPECT ().CreateVM (hypervisor.VM {
378464 Name : "cfdev" ,
0 commit comments