tools-cf-plugin 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/spec/watch_spec.rb CHANGED
@@ -5,39 +5,40 @@ describe CFTools::Watch do
5
5
 
6
6
  let(:client) { fake_client :apps => [app] }
7
7
 
8
+ let(:payload) { "" }
9
+ let(:subject) { "" }
10
+ let(:messages) { [[payload, nil, subject]] }
11
+
8
12
  before { stub_client }
9
13
 
10
- before do
11
- stub(app).exists? { true }
12
- end
14
+ before { app.stub(:exists? => true) }
13
15
 
14
16
  before do
15
- stub(NATS).start(anything) { |_, blk| blk.call }
16
- stub(NATS).subscribe
17
+ NATS.stub(:start).and_yield
18
+ NATS.stub(:subscribe).with(">") do |&blk|
19
+ messages.each do |msg|
20
+ blk.call(*msg)
21
+ end
22
+ end
17
23
  end
18
24
 
19
25
  it "subscribes all messages on NATS" do
20
- mock(NATS).subscribe(">")
26
+ expect(NATS).to receive(:subscribe).with(">")
21
27
  cf %W[watch]
22
28
  end
23
29
 
24
30
  it "turns off output buffering" do
25
31
  # this is dumb. i know. exercise for the reader. - AS
26
- any_instance_of(StringIO) do |io|
27
- mock(io).sync = true
28
- end
29
-
32
+ expect_any_instance_of(StringIO).to receive(:sync=).with(true)
30
33
  cf %W[watch]
31
34
  end
32
35
 
33
36
  context "when no application is given" do
34
37
  around { |example| Timecop.freeze(&example) }
35
38
 
36
- it "prints a timestamp, message, and raw body" do
37
- stub(NATS).subscribe(">") do |_, block|
38
- block.call("some-message", nil, "some.subject")
39
- end
39
+ let(:messages) { [["some-message", nil, "some.subject"]] }
40
40
 
41
+ it "prints a timestamp, message, and raw body" do
41
42
  cf %W[watch]
42
43
 
43
44
  expect(output).to say(/#{Time.now.strftime("%r")}\s*some.subject\s*some-message/)
@@ -46,7 +47,7 @@ describe CFTools::Watch do
46
47
 
47
48
  context "when no NATS server info is specified" do
48
49
  it "connects on nats:nats@127.0.0.1:4222" do
49
- mock(NATS).start(hash_including(
50
+ expect(NATS).to receive(:start).with(hash_including(
50
51
  :uri => "nats://nats:nats@127.0.0.1:4222"))
51
52
 
52
53
  cf %W[watch]
@@ -55,7 +56,7 @@ describe CFTools::Watch do
55
56
 
56
57
  context "when NATS server info is specified" do
57
58
  it "connects to the given location using the given credentials" do
58
- mock(NATS).start(hash_including(
59
+ expect(NATS).to receive(:start).with(hash_including(
59
60
  :uri => "nats://someuser:somepass@example.com:4242"))
60
61
 
61
62
  cf %W[watch -h example.com -P 4242 -u someuser -p somepass]
@@ -63,14 +64,10 @@ describe CFTools::Watch do
63
64
  end
64
65
 
65
66
  context "when a malformed message comes in" do
66
- it "prints an error message and keeps on truckin'" do
67
- stub(NATS).subscribe(">") do |_, block|
68
- block.call("foo", nil, "some.subject")
69
- end
67
+ let(:messages) { [["foo", nil, "some.subject"]] }
70
68
 
71
- any_instance_of described_class do |cli|
72
- stub(cli).process_message { raise "hell" }
73
- end
69
+ it "prints an error message and keeps on truckin'" do
70
+ described_class.any_instance.stub(:process_message).and_raise("hell")
74
71
 
75
72
  cf %W[watch]
76
73
 
@@ -80,12 +77,14 @@ describe CFTools::Watch do
80
77
  end
81
78
 
82
79
  context "when a message comes in with a reply channel, followed by a reply" do
83
- it "registers it in #requests" do
84
- stub(NATS).subscribe(">") do |_, block|
85
- block.call("foo", "some-reply", "some.subject")
86
- block.call("some-response", nil, "some-reply")
87
- end
80
+ let(:messages) do
81
+ [
82
+ ["foo", "some-reply", "some.subject"],
83
+ ["some-response", nil, "some-reply"]
84
+ ]
85
+ end
88
86
 
87
+ it "registers it in #requests" do
89
88
  cf %W[watch]
90
89
 
91
90
  expect(output).to say(/some\.subject \(1\)\s*foo/)
@@ -108,11 +107,9 @@ describe CFTools::Watch do
108
107
  context "and a message containing the app's GUID is seen" do
109
108
  around { |example| Timecop.freeze(&example) }
110
109
 
111
- it "prints a timestamp, message, and raw body" do
112
- stub(NATS).subscribe(">") do |_, block|
113
- block.call("some-message-mentioning-#{app.guid}", nil, "some.subject")
114
- end
110
+ let(:messages) { [["some-message-mentioning-#{app.guid}", nil, "some.subject"]] }
115
111
 
112
+ it "prints a timestamp, message, and raw body" do
116
113
  cf %W[watch myapp]
117
114
 
118
115
  expect(output).to say(/#{Time.now.strftime("%r")}\s*some.subject\s*some-message-mentioning-#{app.guid}/)
@@ -120,11 +117,9 @@ describe CFTools::Watch do
120
117
  end
121
118
 
122
119
  context "when a message NOT containing the app's GUID is seen" do
123
- it "does not print it" do
124
- stub(NATS).subscribe(">") do |_, block|
125
- block.call("some-irrelevant-message", nil, "some.subject")
126
- end
120
+ let(:messages) { [["some-irrelevant-message", nil, "some.subject"]] }
127
121
 
122
+ it "does not print it" do
128
123
  cf %W[watch myapp]
129
124
 
130
125
  expect(output).to_not say("some.subject")
@@ -133,6 +128,8 @@ describe CFTools::Watch do
133
128
  end
134
129
 
135
130
  context "when a message is seen with subject droplet.exited" do
131
+ let(:subject) { "droplet.exited" }
132
+
136
133
  let(:payload) { <<PAYLOAD }
137
134
  {
138
135
  "exit_description": "",
@@ -147,10 +144,6 @@ describe CFTools::Watch do
147
144
  PAYLOAD
148
145
 
149
146
  it "pretty-prints the message body" do
150
- stub(NATS).subscribe(">") do |_, block|
151
- block.call(payload, nil, "droplet.exited")
152
- end
153
-
154
147
  cf %W[watch]
155
148
 
156
149
  expect(output).to say("app: myapp, reason: STOPPED, index: 0")
@@ -158,6 +151,8 @@ PAYLOAD
158
151
  end
159
152
 
160
153
  context "when a message is seen with subject dea.heartbeat" do
154
+ let(:subject) { "dea.heartbeat" }
155
+
161
156
  let(:payload) { <<PAYLOAD }
162
157
  {
163
158
  "prod": false,
@@ -196,10 +191,6 @@ PAYLOAD
196
191
 
197
192
  context "and an application is given" do
198
193
  it "prints only the application's entry" do
199
- stub(NATS).subscribe(">") do |_, block|
200
- block.call(payload, nil, "dea.heartbeat")
201
- end
202
-
203
194
  cf %W[watch myapp]
204
195
 
205
196
  expect(output).to say("dea: 1, running: 1, crashed: 1")
@@ -208,24 +199,13 @@ PAYLOAD
208
199
  end
209
200
 
210
201
  context "when a message is seen with subject dea.advertise" do
211
- context "and app is given" do
212
- it "prints nothing" do
213
- stub(NATS).subscribe(">") do |_, block|
214
- block.call("whatever-#{app.guid}", nil, "dea.advertise")
215
- end
216
-
217
- cf %W[watch myapp]
218
-
219
- expect(output).to_not say("dea.advertise")
220
- end
221
- end
202
+ let(:subject) { "dea.advertise" }
222
203
 
223
- context "and app is NOT given" do
224
- let(:other_app) { fake :app, :name => "otherapp", :guid => "otherguid" }
204
+ let(:other_app) { fake :app, :name => "otherapp", :guid => "otherguid" }
225
205
 
226
- let(:client) { fake_client :apps => [app, other_app] }
206
+ let(:client) { fake_client :apps => [app, other_app] }
227
207
 
228
- let(:payload) { <<PAYLOAD }
208
+ let(:payload) { <<PAYLOAD }
229
209
  {
230
210
  "app_id_to_count": {
231
211
  "#{app.guid}": 1,
@@ -240,24 +220,50 @@ PAYLOAD
240
220
  }
241
221
  PAYLOAD
242
222
 
223
+ context "and app is given" do
224
+ it "prints nothing" do
225
+ cf %W[watch myapp]
226
+
227
+ expect(output).to_not say("dea.advertise")
228
+ end
229
+ end
230
+
231
+ context "and app is NOT given" do
243
232
  before do
244
- stub(app).exists? { true }
245
- stub(other_app).exists? { false }
233
+ app.stub(:exists? => true)
234
+ other_app.stub(:exists? => false)
246
235
  end
247
236
 
248
237
  it "prints the dea, its stacks, available memory, and apps" do
249
- stub(NATS).subscribe(">") do |_, block|
250
- block.call(payload, nil, "dea.advertise")
251
- end
252
-
253
238
  cf %W[watch]
254
239
 
255
240
  expect(output).to say("dea: 1, stacks: lucid64, available mem: 29G, apps: 1 x myapp, 2 x unknown")
256
241
  end
242
+
243
+ context "and it does not include app counts" do
244
+ let(:payload) { <<PAYLOAD }
245
+ {
246
+ "available_memory": 30000,
247
+ "stacks": [
248
+ "lucid64"
249
+ ],
250
+ "prod": false,
251
+ "id": "1-f158dcd026d1589853846a3859faf0ea"
252
+ }
253
+ PAYLOAD
254
+
255
+ it "prints 'none' for the app listing" do
256
+ cf %W[watch]
257
+
258
+ expect(output).to say("dea: 1, stacks: lucid64, available mem: 29G, apps: none")
259
+ end
260
+ end
257
261
  end
258
262
  end
259
263
 
260
264
  context "when a message is seen with subject staging.advertise" do
265
+ let(:subject) { "staging.advertise" }
266
+
261
267
  let(:payload) { <<PAYLOAD }
262
268
  {
263
269
  "available_memory": 27264,
@@ -269,10 +275,6 @@ PAYLOAD
269
275
  PAYLOAD
270
276
 
271
277
  it "prints the dea, its stacks, and its available memory" do
272
- stub(NATS).subscribe(">") do |_, block|
273
- block.call(payload, nil, "staging.advertise")
274
- end
275
-
276
278
  cf %W[watch]
277
279
 
278
280
  expect(output).to say("dea: 1, stacks: lucid64, available mem: 27G")
@@ -280,6 +282,8 @@ PAYLOAD
280
282
  end
281
283
 
282
284
  context "when a message is seen with subject router.start" do
285
+ let(:subject) { "router.start" }
286
+
283
287
  let(:payload) { <<PAYLOAD }
284
288
  {
285
289
  "hosts": [
@@ -290,10 +294,6 @@ PAYLOAD
290
294
  PAYLOAD
291
295
 
292
296
  it "prints the hosts" do
293
- stub(NATS).subscribe(">") do |_, block|
294
- block.call(payload, nil, "router.start")
295
- end
296
-
297
297
  cf %W[watch]
298
298
 
299
299
  expect(output).to say("hosts: 10.10.16.15")
@@ -301,6 +301,8 @@ PAYLOAD
301
301
  end
302
302
 
303
303
  context "when a message is seen with subject router.register" do
304
+ let(:subject) { "router.register" }
305
+
304
306
  context "when there's an associated DEA" do
305
307
  let(:payload) { <<PAYLOAD }
306
308
  {
@@ -318,10 +320,6 @@ PAYLOAD
318
320
  PAYLOAD
319
321
 
320
322
  it "prints the uris, host, and port" do
321
- stub(NATS).subscribe(">") do |_, block|
322
- block.call(payload, nil, "router.register")
323
- end
324
-
325
323
  cf %W[watch]
326
324
 
327
325
  expect(output).to say("app: myapp, dea: 1, uris: my-app.com, my-app-2.com, host: 192.0.43.10, port: 61111")
@@ -342,10 +340,6 @@ PAYLOAD
342
340
  }
343
341
  PAYLOAD
344
342
  it "prints the uris, host, and port" do
345
- stub(NATS).subscribe(">") do |_, block|
346
- block.call(payload, nil, "router.register")
347
- end
348
-
349
343
  cf %W[watch]
350
344
 
351
345
  expect(output).to say("uris: my-app.com, my-app-2.com, host: 192.0.43.10, port: 61111")
@@ -354,6 +348,8 @@ PAYLOAD
354
348
  end
355
349
 
356
350
  context "when a message is seen with subject router.unregister" do
351
+ let(:subject) { "router.unregister" }
352
+
357
353
  context "when there's an associated DEA" do
358
354
  let(:payload) { <<PAYLOAD }
359
355
  {
@@ -370,10 +366,6 @@ PAYLOAD
370
366
  PAYLOAD
371
367
 
372
368
  it "prints the dea, uris, host, and port" do
373
- stub(NATS).subscribe(">") do |_, block|
374
- block.call(payload, nil, "router.unregister")
375
- end
376
-
377
369
  cf %W[watch]
378
370
 
379
371
  expect(output).to say("app: myapp, dea: 5, uris: my-app.com, host: 192.0.43.10, port: 61111")
@@ -394,10 +386,6 @@ PAYLOAD
394
386
  PAYLOAD
395
387
 
396
388
  it "prints the uris, host, and port" do
397
- stub(NATS).subscribe(">") do |_, block|
398
- block.call(payload, nil, "router.unregister")
399
- end
400
-
401
389
  cf %W[watch]
402
390
 
403
391
  expect(output).to say("uris: my-app.com, host: 192.0.43.10, port: 61111")
@@ -406,6 +394,8 @@ PAYLOAD
406
394
  end
407
395
 
408
396
  context "when a message is seen with subject dea.*.start" do
397
+ let(:subject) { "dea.42-deadbeef.start" }
398
+
409
399
  let(:payload) { <<PAYLOAD }
410
400
  {
411
401
  "index": 2,
@@ -433,20 +423,12 @@ PAYLOAD
433
423
  PAYLOAD
434
424
 
435
425
  it "filters the uuid from the subject" do
436
- stub(NATS).subscribe(">") do |_, block|
437
- block.call(payload, nil, "dea.42-deadbeef.start")
438
- end
439
-
440
426
  cf %W[watch]
441
427
 
442
428
  expect(output).to say("dea.42.start")
443
429
  end
444
430
 
445
431
  it "prints the uris, host, and port" do
446
- stub(NATS).subscribe(">") do |_, block|
447
- block.call(payload, nil, "dea.42-deadbeef.start")
448
- end
449
-
450
432
  cf %W[watch]
451
433
 
452
434
  expect(output).to say("app: myapp, dea: 42, index: 2, uris: myapp.com")
@@ -454,6 +436,8 @@ PAYLOAD
454
436
  end
455
437
 
456
438
  context "when a message is seen with subject droplet.updated" do
439
+ let(:subject) { "droplet.updated" }
440
+
457
441
  let(:payload) { <<PAYLOAD }
458
442
  {
459
443
  "cc_partition": "default",
@@ -463,10 +447,6 @@ PAYLOAD
463
447
  PAYLOAD
464
448
 
465
449
  it "prints the app that was updated" do
466
- stub(NATS).subscribe(">") do |_, block|
467
- block.call(payload, nil, "droplet.updated")
468
- end
469
-
470
450
  cf %W[watch]
471
451
 
472
452
  expect(output).to say("app: myapp")
@@ -475,6 +455,8 @@ PAYLOAD
475
455
  end
476
456
 
477
457
  context "when a message is seen with subject dea.stop" do
458
+ let(:subject) { "dea.stop" }
459
+
478
460
  context "and it's stopping particular indices" do
479
461
  let(:payload) { <<PAYLOAD }
480
462
  {
@@ -488,10 +470,6 @@ PAYLOAD
488
470
  PAYLOAD
489
471
 
490
472
  it "prints that it's scaling down, and the affected indices" do
491
- stub(NATS).subscribe(">") do |_, block|
492
- block.call(payload, nil, "dea.stop")
493
- end
494
-
495
473
  cf %W[watch]
496
474
 
497
475
  expect(output).to say("app: myapp, scaling down indices: 1, 2")
@@ -510,10 +488,6 @@ PAYLOAD
510
488
  }
511
489
  PAYLOAD
512
490
  it "prints that it's killing extra instances" do
513
- stub(NATS).subscribe(">") do |_, block|
514
- block.call(payload, nil, "dea.stop")
515
- end
516
-
517
491
  cf %W[watch]
518
492
 
519
493
  expect(output).to say("app: myapp, killing extra instances: a, b, c")
@@ -528,10 +502,6 @@ PAYLOAD
528
502
  PAYLOAD
529
503
 
530
504
  it "prints that it's killing extra instances" do
531
- stub(NATS).subscribe(">") do |_, block|
532
- block.call(payload, nil, "dea.stop")
533
- end
534
-
535
505
  cf %W[watch]
536
506
 
537
507
  expect(output).to say("app: myapp, stopping application")
@@ -540,6 +510,8 @@ PAYLOAD
540
510
  end
541
511
 
542
512
  context "when a message is seen with subject dea.update" do
513
+ let(:subject) { "dea.update" }
514
+
543
515
  let(:payload) { <<PAYLOAD }
544
516
  {
545
517
  "uris": [
@@ -551,10 +523,6 @@ PAYLOAD
551
523
  PAYLOAD
552
524
 
553
525
  it "prints the index being stopped" do
554
- stub(NATS).subscribe(">") do |_, block|
555
- block.call(payload, nil, "dea.update")
556
- end
557
-
558
526
  cf %W[watch]
559
527
 
560
528
  expect(output).to say("app: myapp, uris: myapp.com, myotherroute.com")
@@ -562,6 +530,8 @@ PAYLOAD
562
530
  end
563
531
 
564
532
  context "when a message is seen with subject dea.find.droplet" do
533
+ let(:subject) { "dea.find.droplet" }
534
+
565
535
  let(:payload) { <<PAYLOAD }
566
536
  {
567
537
  "version": "878318bf-64a0-4055-b79b-46871292ceb8",
@@ -594,22 +564,19 @@ PAYLOAD
594
564
  PAYLOAD
595
565
 
596
566
  it "prints the states being queried" do
597
- stub(NATS).subscribe(">") do |_, block|
598
- block.call(payload, nil, "dea.find.droplet")
599
- end
600
-
601
567
  cf %W[watch]
602
568
 
603
569
  expect(output).to say("app: myapp, querying states: starting, running")
604
570
  end
605
571
 
606
572
  context "and we see the response" do
607
- it "pretty-prints the response" do
608
- stub(NATS).subscribe(">") do |_, block|
609
- block.call(payload, "some-inbox", "dea.find.droplet")
610
- block.call(response_payload, nil, "some-inbox")
611
- end
573
+ let(:messages) do
574
+ [ [payload, "some-inbox", "dea.find.droplet"],
575
+ [response_payload, nil, "some-inbox"]
576
+ ]
577
+ end
612
578
 
579
+ it "pretty-prints the response" do
613
580
  cf %W[watch]
614
581
 
615
582
  expect(output).to say("reply to dea.find.droplet (1)\tdea: 1, index: 0, state: running, since: 2013-05-22 15:45:04 -0700")
@@ -618,6 +585,8 @@ PAYLOAD
618
585
  end
619
586
 
620
587
  context "when a message is seen with subject healthmanager.status" do
588
+ let(:subject) { "healthmanager.status" }
589
+
621
590
  let(:payload) { <<PAYLOAD }
622
591
  {
623
592
  "version": "50512eed-674e-4991-9ada-a583633c0cd4",
@@ -636,22 +605,19 @@ PAYLOAD
636
605
  PAYLOAD
637
606
 
638
607
  it "prints the states being queried" do
639
- stub(NATS).subscribe(">") do |_, block|
640
- block.call(payload, nil, "healthmanager.status")
641
- end
642
-
643
608
  cf %W[watch]
644
609
 
645
610
  expect(output).to say("app: myapp, querying states: flapping")
646
611
  end
647
612
 
648
613
  context "and we see the response" do
649
- it "pretty-prints the response" do
650
- stub(NATS).subscribe(">") do |_, block|
651
- block.call(payload, "some-inbox", "healthmanager.status")
652
- block.call(response_payload, nil, "some-inbox")
653
- end
614
+ let(:messages) do
615
+ [ [payload, "some-inbox", "healthmanager.status"],
616
+ [response_payload, nil, "some-inbox"]
617
+ ]
618
+ end
654
619
 
620
+ it "pretty-prints the response" do
655
621
  cf %W[watch]
656
622
 
657
623
  expect(output).to say("reply to healthmanager.status (1)\tindices: 1, 2")
@@ -660,7 +626,10 @@ PAYLOAD
660
626
  end
661
627
 
662
628
  context "when a message is seen with subject healthmanager.health" do
629
+ let(:subject) { "healthmanager.health" }
630
+
663
631
  let(:other_app) { fake :app, :name => "otherapp" }
632
+
664
633
  let(:client) { fake_client :apps => [app, other_app] }
665
634
 
666
635
  let(:payload) { <<PAYLOAD }
@@ -694,26 +663,23 @@ PAYLOAD
694
663
  }
695
664
  PAYLOAD
696
665
 
697
- before { stub(other_app).exists? { true } }
666
+ before { other_app.stub(:exists? => true) }
698
667
 
699
668
  it "prints the apps whose health being queried" do
700
- stub(NATS).subscribe(">") do |_, block|
701
- block.call(payload, nil, "healthmanager.health")
702
- end
703
-
704
669
  cf %W[watch]
705
670
 
706
671
  expect(output).to say("querying health for: myapp, otherapp")
707
672
  end
708
673
 
709
674
  context "and we see the response" do
710
- it "pretty-prints the response" do
711
- stub(NATS).subscribe(">") do |_, block|
712
- block.call(payload, "some-inbox", "healthmanager.health")
713
- block.call(response_payload, nil, "some-inbox")
714
- block.call(other_response_payload, nil, "some-inbox")
715
- end
675
+ let(:messages) do
676
+ [ [payload, "some-inbox", "healthmanager.health"],
677
+ [response_payload, nil, "some-inbox"],
678
+ [other_response_payload, nil, "some-inbox"]
679
+ ]
680
+ end
716
681
 
682
+ it "pretty-prints the response" do
717
683
  cf %W[watch]
718
684
 
719
685
  expect(output).to say("reply to healthmanager.health (1)\tapp: myapp, healthy: 2")
@@ -723,7 +689,10 @@ PAYLOAD
723
689
  end
724
690
 
725
691
  context "when a message is seen with subject dea.shutdown" do
692
+ let(:subject) { "dea.shutdown" }
693
+
726
694
  let(:other_app) { fake :app, :name => "otherapp" }
695
+
727
696
  let(:client) { fake_client :apps => [app, other_app] }
728
697
 
729
698
  let(:payload) { <<PAYLOAD }
@@ -740,15 +709,11 @@ PAYLOAD
740
709
 
741
710
  context "and the apps still exist" do
742
711
  before do
743
- stub(app).exists? { true }
744
- stub(other_app).exists? { true }
712
+ app.stub(:exists? => true)
713
+ other_app.stub(:exists? => true)
745
714
  end
746
715
 
747
716
  it "prints the DEA and affected applications" do
748
- stub(NATS).subscribe(">") do |_, block|
749
- block.call(payload, nil, "dea.shutdown")
750
- end
751
-
752
717
  cf %W[watch]
753
718
 
754
719
  expect(output).to say("dea: 0, apps: 1 x myapp, 2 x otherapp")
@@ -757,15 +722,11 @@ PAYLOAD
757
722
 
758
723
  context "and an app no longer exists" do
759
724
  before do
760
- stub(app).exists? { true }
761
- stub(other_app).exists? { false }
725
+ app.stub(:exists? => true)
726
+ other_app.stub(:exists? => false)
762
727
  end
763
728
 
764
729
  it "prints the DEA and affected applications" do
765
- stub(NATS).subscribe(">") do |_, block|
766
- block.call(payload, nil, "dea.shutdown")
767
- end
768
-
769
730
  cf %W[watch]
770
731
 
771
732
  expect(output).to say(
@@ -775,6 +736,8 @@ PAYLOAD
775
736
  end
776
737
 
777
738
  context "when a message is seen with subject cloudcontrollers.hm.requests.*" do
739
+ let(:subject) { "cloudcontrollers.hm.requests.default" }
740
+
778
741
  let(:last_updated) { Time.now }
779
742
 
780
743
  context "and it is a STOP operation" do
@@ -791,20 +754,12 @@ PAYLOAD
791
754
  PAYLOAD
792
755
 
793
756
  it "trims the subject" do
794
- stub(NATS).subscribe(">") do |_, block|
795
- block.call(payload, nil, "cloudcontrollers.hm.requests.default")
796
- end
797
-
798
757
  cf %W[watch]
799
758
 
800
759
  expect(output).to say(/\s+hm\.request\s+/)
801
760
  end
802
761
 
803
762
  it "prints the operation, last updated timestamp, and instances" do
804
- stub(NATS).subscribe(">") do |_, block|
805
- block.call(payload, nil, "cloudcontrollers.hm.requests.default")
806
- end
807
-
808
763
  cf %W[watch]
809
764
 
810
765
  expect(output).to say(
@@ -812,85 +767,79 @@ PAYLOAD
812
767
  end
813
768
  end
814
769
 
815
- context "when a message is seen with subject *.announce" do
770
+ context "and it is a START operation" do
816
771
  let(:payload) { <<PAYLOAD }
817
772
  {
818
- "supported_versions": [
819
- "n/a"
773
+ "indices": [
774
+ 1,
775
+ 3
820
776
  ],
821
- "plan": "1dolla",
822
- "id": "quarters_as_a_service",
823
- "capacity_unit": 1,
824
- "max_capacity": 100,
825
- "available_capacity": 100
777
+ "version": "some-version",
778
+ "last_updated": #{last_updated.to_i},
779
+ "op": "START",
780
+ "droplet": "#{app.guid}"
826
781
  }
827
782
  PAYLOAD
828
783
 
829
- it "prints the dea, its stacks, and its available memory" do
830
- stub(NATS).subscribe(">") do |_, block|
831
- block.call(payload, nil, "QaaS.announce")
832
- end
833
-
784
+ it "prints the operation, last updated timestamp, and instances" do
834
785
  cf %W[watch]
835
786
 
836
- expect(output).to say("id: quarters_as_a_service, plan: 1dolla, supported versions: n/a, capacity: (available: 100, max: 100, unit: 1)")
787
+ expect(output).to say(
788
+ "app: myapp, operation: start, app last updated: #{last_updated}, indices: 1, 3")
837
789
  end
838
790
  end
791
+ end
839
792
 
840
- context "when a message is seen with subject vcap.component.announce" do
841
- let(:payload) { <<PAYLOAD }
793
+ context "when a message is seen with subject *.announce" do
794
+ let(:subject) { "QaaS.announce" }
795
+
796
+ let(:payload) { <<PAYLOAD }
842
797
  {
843
- "start": "2013-05-24 16:45:01 +0000",
844
- "credentials": [
845
- "cb68328a26f68416eabbad702c542000",
846
- "0e6b5ec19df10c7ba2e7f36cdf33474e"
847
- ],
848
- "host": "10.10.32.10:39195",
849
- "uuid": "some-uuid",
850
- "index": 0,
851
- "type": "QaaS-Provisioner"
798
+ "supported_versions": [
799
+ "n/a"
800
+ ],
801
+ "plan": "1dolla",
802
+ "id": "quarters_as_a_service",
803
+ "capacity_unit": 1,
804
+ "max_capacity": 100,
805
+ "available_capacity": 100
852
806
  }
853
807
  PAYLOAD
854
808
 
855
- it "prints the type, index, host, start time" do
856
- stub(NATS).subscribe(">") do |_, block|
857
- block.call(payload, nil, "vcap.component.announce")
858
- end
859
-
860
- cf %W[watch]
809
+ it "prints the dea, its stacks, and its available memory" do
810
+ cf %W[watch]
861
811
 
862
- expect(output).to say("type: QaaS-Provisioner, index: 0, uuid: some-uuid, start time: 2013-05-24 16:45:01 +0000")
863
- end
812
+ expect(output).to say("id: quarters_as_a_service, plan: 1dolla, supported versions: n/a, capacity: (available: 100, max: 100, unit: 1)")
864
813
  end
814
+ end
865
815
 
866
- context "and it is a START operation" do
867
- let(:payload) { <<PAYLOAD }
816
+ context "when a message is seen with subject vcap.component.announce" do
817
+ let(:subject) { "vcap.component.announce" }
818
+
819
+ let(:payload) { <<PAYLOAD }
868
820
  {
869
- "indices": [
870
- 1,
871
- 3
872
- ],
873
- "version": "some-version",
874
- "last_updated": #{last_updated.to_i},
875
- "op": "START",
876
- "droplet": "#{app.guid}"
821
+ "start": "2013-05-24 16:45:01 +0000",
822
+ "credentials": [
823
+ "cb68328a26f68416eabbad702c542000",
824
+ "0e6b5ec19df10c7ba2e7f36cdf33474e"
825
+ ],
826
+ "host": "10.10.32.10:39195",
827
+ "uuid": "some-uuid",
828
+ "index": 0,
829
+ "type": "QaaS-Provisioner"
877
830
  }
878
831
  PAYLOAD
879
832
 
880
- it "prints the operation, last updated timestamp, and instances" do
881
- stub(NATS).subscribe(">") do |_, block|
882
- block.call(payload, nil, "cloudcontrollers.hm.requests.default")
883
- end
884
-
885
- cf %W[watch]
833
+ it "prints the type, index, host, start time" do
834
+ cf %W[watch]
886
835
 
887
- expect(output).to say(
888
- "app: myapp, operation: start, app last updated: #{last_updated}, indices: 1, 3")
889
- end
836
+ expect(output).to say("type: QaaS-Provisioner, index: 0, uuid: some-uuid, start time: 2013-05-24 16:45:01 +0000")
890
837
  end
891
838
  end
892
839
 
893
840
  context "when a message is seen with subject vcap.component.discover" do
841
+ let(:subject) { "vcap.component.discover" }
842
+
894
843
  let(:payload) { "" }
895
844
 
896
845
  let(:response_payload) { <<PAYLOAD }
@@ -898,8 +847,8 @@ PAYLOAD
898
847
  "uptime": "0d:23h:51m:21s",
899
848
  "start": "2013-05-24 17:58:08 +0000",
900
849
  "credentials": [
901
- "d34f205a31232eef040d1e39ebdd631a",
902
- "701e1a68a811a1ac8c137a70db08c1a8"
850
+ "user",
851
+ "pass"
903
852
  ],
904
853
  "host": "1.2.3.4:8080",
905
854
  "uuid": "4-deadbeef",
@@ -909,25 +858,22 @@ PAYLOAD
909
858
  PAYLOAD
910
859
 
911
860
  it "prints the states being queried" do
912
- stub(NATS).subscribe(">") do |_, block|
913
- block.call(payload, nil, "vcap.component.discover")
914
- end
915
-
916
861
  cf %W[watch]
917
862
 
918
863
  expect(output).to say("vcap.component.discover")
919
864
  end
920
865
 
921
866
  context "and we see the response" do
922
- it "pretty-prints the response" do
923
- stub(NATS).subscribe(">") do |_, block|
924
- block.call(payload, "some-inbox", "vcap.component.discover")
925
- block.call(response_payload, nil, "some-inbox")
926
- end
867
+ let(:messages) do
868
+ [ [payload, "some-inbox", "vcap.component.discover"],
869
+ [response_payload, nil, "some-inbox"]
870
+ ]
871
+ end
927
872
 
873
+ it "pretty-prints the response" do
928
874
  cf %W[watch]
929
875
 
930
- expect(output).to say("reply to vcap.component.discover (1)\ttype: DEA, index: 4, host: 1.2.3.4:8080, uptime: 0d:23h:51m:21s")
876
+ expect(output).to say("reply to vcap.component.discover (1)\ttype: DEA, index: 4, uri: user:pass@1.2.3.4:8080, uptime: 0d:23h:51m:21s")
931
877
  end
932
878
 
933
879
  context "and there's no uptime" do
@@ -946,11 +892,6 @@ PAYLOAD
946
892
  PAYLOAD
947
893
 
948
894
  it "does not include it in the message" do
949
- stub(NATS).subscribe(">") do |_, block|
950
- block.call(payload, "some-inbox", "vcap.component.discover")
951
- block.call(response_payload, nil, "some-inbox")
952
- end
953
-
954
895
  cf %W[watch]
955
896
 
956
897
  expect(output).to say("reply to vcap.component.discover (1)\ttype: login, index: 1, host: 1.2.3.4:8080")