right_agent 0.10.13 → 0.13.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/right_agent.rb +2 -0
- data/lib/right_agent/actor.rb +45 -10
- data/lib/right_agent/actor_registry.rb +5 -5
- data/lib/right_agent/actors/agent_manager.rb +4 -4
- data/lib/right_agent/agent.rb +97 -37
- data/lib/right_agent/agent_tag_manager.rb +1 -2
- data/lib/right_agent/command/command_io.rb +1 -3
- data/lib/right_agent/command/command_runner.rb +9 -3
- data/lib/right_agent/dispatched_cache.rb +110 -0
- data/lib/right_agent/dispatcher.rb +119 -180
- data/lib/right_agent/history.rb +136 -0
- data/lib/right_agent/log.rb +6 -3
- data/lib/right_agent/monkey_patches/ruby_patch.rb +0 -1
- data/lib/right_agent/pid_file.rb +1 -1
- data/lib/right_agent/platform.rb +2 -2
- data/lib/right_agent/platform/linux.rb +8 -1
- data/lib/right_agent/platform/windows.rb +1 -1
- data/lib/right_agent/sender.rb +57 -41
- data/right_agent.gemspec +4 -4
- data/spec/actor_registry_spec.rb +7 -8
- data/spec/actor_spec.rb +87 -24
- data/spec/agent_spec.rb +107 -8
- data/spec/command/command_runner_spec.rb +12 -1
- data/spec/dispatched_cache_spec.rb +142 -0
- data/spec/dispatcher_spec.rb +110 -129
- data/spec/history_spec.rb +234 -0
- data/spec/idempotent_request_spec.rb +1 -1
- data/spec/log_spec.rb +15 -0
- data/spec/operation_result_spec.rb +4 -2
- data/spec/platform/darwin_spec.rb +13 -0
- data/spec/platform/linux_spec.rb +38 -0
- data/spec/platform/platform_spec.rb +46 -51
- data/spec/platform/windows_spec.rb +13 -0
- data/spec/sender_spec.rb +81 -38
- metadata +12 -9
- data/lib/right_agent/monkey_patches/ruby_patch/singleton_patch.rb +0 -45
- data/spec/platform/darwin.rb +0 -11
- data/spec/platform/linux.rb +0 -23
- data/spec/platform/windows.rb +0 -11
@@ -0,0 +1,13 @@
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
2
|
+
|
3
|
+
describe RightScale::Platform do
|
4
|
+
subject { RightScale::Platform }
|
5
|
+
|
6
|
+
context 'under Windows' do
|
7
|
+
context :installer do
|
8
|
+
context :install do
|
9
|
+
specify { lambda { subject.installer.install([]) }.should raise_exception }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end if RightScale::Platform.windows?
|
data/spec/sender_spec.rb
CHANGED
@@ -381,7 +381,6 @@ describe RightScale::Sender do
|
|
381
381
|
@timer = flexmock("timer")
|
382
382
|
flexmock(EM::Timer).should_receive(:new).and_return(@timer).by_default
|
383
383
|
flexmock(EM).should_receive(:next_tick).and_yield.by_default
|
384
|
-
flexmock(EM).should_receive(:defer).and_yield.by_default
|
385
384
|
@broker_id = "broker"
|
386
385
|
@broker_ids = [@broker_id]
|
387
386
|
@broker = flexmock("Broker", :subscribe => true, :publish => @broker_ids, :connected? => true,
|
@@ -415,7 +414,7 @@ describe RightScale::Sender do
|
|
415
414
|
it "should create a Request object" do
|
416
415
|
@broker.should_receive(:publish).with(hsh(:name => "request"), on do |request|
|
417
416
|
request.class.should == RightScale::Request
|
418
|
-
end, hsh(:persistent => false, :mandatory => true)).
|
417
|
+
end, hsh(:persistent => false, :mandatory => true)).once
|
419
418
|
@instance.send_retryable_request('/welcome/aboard', 'iZac') {|response|}
|
420
419
|
end
|
421
420
|
|
@@ -433,7 +432,7 @@ describe RightScale::Sender do
|
|
433
432
|
request.from.should == 'agent'
|
434
433
|
request.target.should be_nil
|
435
434
|
request.expires_at.should == 1000100
|
436
|
-
end, hsh(:persistent => false, :mandatory => true)).
|
435
|
+
end, hsh(:persistent => false, :mandatory => true)).once
|
437
436
|
@instance.send_retryable_request('/welcome/aboard', 'iZac') {|response|}
|
438
437
|
end
|
439
438
|
|
@@ -445,14 +444,14 @@ describe RightScale::Sender do
|
|
445
444
|
flexmock(Time).should_receive(:now).and_return(Time.at(1000000))
|
446
445
|
@broker.should_receive(:publish).with(hsh(:name => "request"), on do |request|
|
447
446
|
request.expires_at.should == 0
|
448
|
-
end, hsh(:persistent => false, :mandatory => true)).
|
447
|
+
end, hsh(:persistent => false, :mandatory => true)).once
|
449
448
|
@instance.send_retryable_request('/welcome/aboard', 'iZac') {|response|}
|
450
449
|
end
|
451
450
|
|
452
451
|
it "should set the correct target if specified" do
|
453
452
|
@broker.should_receive(:publish).with(hsh(:name => "request"), on do |request|
|
454
453
|
request.target.should == 'my-target'
|
455
|
-
end, hsh(:persistent => false, :mandatory => true)).
|
454
|
+
end, hsh(:persistent => false, :mandatory => true)).once
|
456
455
|
@instance.send_retryable_request('/welcome/aboard', 'iZac', 'my-target') {|response|}
|
457
456
|
end
|
458
457
|
|
@@ -461,7 +460,7 @@ describe RightScale::Sender do
|
|
461
460
|
request.tags.should == ['tag']
|
462
461
|
request.selector.should == :any
|
463
462
|
request.scope.should == {:account => 123}
|
464
|
-
end, hsh(:persistent => false, :mandatory => true)).
|
463
|
+
end, hsh(:persistent => false, :mandatory => true)).once
|
465
464
|
@instance.send_retryable_request('/welcome/aboard', 'iZac', :tags => ['tag'], :scope => {:account => 123})
|
466
465
|
end
|
467
466
|
|
@@ -512,7 +511,7 @@ describe RightScale::Sender do
|
|
512
511
|
@agent.should_receive(:options).and_return({:retry_timeout => nil})
|
513
512
|
RightScale::Sender.new(@agent)
|
514
513
|
@instance = RightScale::Sender.instance
|
515
|
-
@broker.should_receive(:publish).
|
514
|
+
@broker.should_receive(:publish).once
|
516
515
|
@instance.send_retryable_request('/welcome/aboard', 'iZac') {|response|}
|
517
516
|
end
|
518
517
|
|
@@ -521,7 +520,7 @@ describe RightScale::Sender do
|
|
521
520
|
@agent.should_receive(:options).and_return({:retry_interval => nil})
|
522
521
|
RightScale::Sender.new(@agent)
|
523
522
|
@instance = RightScale::Sender.instance
|
524
|
-
@broker.should_receive(:publish).
|
523
|
+
@broker.should_receive(:publish).once
|
525
524
|
@instance.send_retryable_request('/welcome/aboard', 'iZac') {|response|}
|
526
525
|
end
|
527
526
|
|
@@ -534,20 +533,6 @@ describe RightScale::Sender do
|
|
534
533
|
@instance.send_retryable_request('/welcome/aboard', 'iZac') {|response|}
|
535
534
|
end
|
536
535
|
|
537
|
-
it "should respond with non-delivery if publish failed" do
|
538
|
-
flexmock(EM).should_receive(:add_timer).never
|
539
|
-
@agent.should_receive(:options).and_return({:retry_timeout => 60, :retry_interval => 60})
|
540
|
-
RightScale::Sender.new(@agent)
|
541
|
-
@instance = RightScale::Sender.instance
|
542
|
-
@log.should_receive(:error).with(/Failed to publish request/, RightAMQP::HABrokerClient::NoConnectedBrokers).once
|
543
|
-
@broker.should_receive(:publish).and_raise(RightAMQP::HABrokerClient::NoConnectedBrokers).once
|
544
|
-
@instance.send_retryable_request('/welcome/aboard', 'iZac') do |response|
|
545
|
-
result = RightScale::OperationResult.from_results(response)
|
546
|
-
result.non_delivery?.should be_true
|
547
|
-
result.content.should == "request send failed"
|
548
|
-
end
|
549
|
-
end
|
550
|
-
|
551
536
|
it "should setup for retry if retry_timeout and retry_interval not nil and publish successful" do
|
552
537
|
flexmock(EM).should_receive(:add_timer).with(60, any).once
|
553
538
|
@agent.should_receive(:options).and_return({:retry_timeout => 60, :retry_interval => 60})
|
@@ -574,9 +559,12 @@ describe RightScale::Sender do
|
|
574
559
|
@instance.send_retryable_request('/welcome/aboard', 'iZac') do |response|
|
575
560
|
result = RightScale::OperationResult.from_results(response)
|
576
561
|
end
|
562
|
+
header = flexmock("amqp header")
|
563
|
+
header.should_receive(:ack).once
|
577
564
|
EM.add_timer(0.15) do
|
578
565
|
@instance.pending_requests.empty?.should be_false
|
579
|
-
|
566
|
+
result = RightScale::Result.new(token, nil, {'from' => RightScale::OperationResult.success}, nil)
|
567
|
+
@instance.handle_response(result, header)
|
580
568
|
end
|
581
569
|
EM.add_timer(0.3) do
|
582
570
|
EM.stop
|
@@ -751,55 +739,85 @@ describe RightScale::Sender do
|
|
751
739
|
RightScale::Sender.new(@agent)
|
752
740
|
@instance = RightScale::Sender.instance
|
753
741
|
flexmock(RightScale::AgentIdentity, :generate => 'token1')
|
742
|
+
@header = flexmock("amqp header")
|
754
743
|
end
|
755
744
|
|
756
745
|
it "should deliver the response for a Request" do
|
757
746
|
@instance.send_retryable_request('/welcome/aboard', 'iZac') {|_|}
|
758
747
|
response = RightScale::Result.new('token1', 'to', RightScale::OperationResult.success, 'target1')
|
759
|
-
flexmock(@instance).should_receive(:deliver).with(response, RightScale::Sender::PendingRequest).once
|
760
|
-
@instance.handle_response(response)
|
748
|
+
flexmock(@instance).should_receive(:deliver).with(response, RightScale::Sender::PendingRequest, @header).once
|
749
|
+
@instance.handle_response(response, @header)
|
761
750
|
end
|
762
751
|
|
763
752
|
it "should deliver the response for a Push" do
|
764
753
|
@instance.send_push('/welcome/aboard', 'iZac') {|_|}
|
765
754
|
response = RightScale::Result.new('token1', 'to', RightScale::OperationResult.success, 'target1')
|
766
|
-
flexmock(@instance).should_receive(:deliver).with(response, RightScale::Sender::PendingRequest).once
|
767
|
-
@instance.handle_response(response)
|
755
|
+
flexmock(@instance).should_receive(:deliver).with(response, RightScale::Sender::PendingRequest, @header).once
|
756
|
+
@instance.handle_response(response, @header)
|
768
757
|
end
|
769
758
|
|
770
759
|
it "should not deliver TARGET_NOT_CONNECTED and TTL_EXPIRATION responses for send_retryable_request" do
|
760
|
+
@header.should_receive(:ack).twice
|
771
761
|
@instance.send_retryable_request('/welcome/aboard', 'iZac') {|_|}
|
772
762
|
flexmock(@instance).should_receive(:deliver).never
|
773
763
|
non_delivery = RightScale::OperationResult.non_delivery(RightScale::OperationResult::TARGET_NOT_CONNECTED)
|
774
764
|
response = RightScale::Result.new('token1', 'to', non_delivery, 'target1')
|
775
|
-
@instance.handle_response(response)
|
765
|
+
@instance.handle_response(response, @header)
|
776
766
|
non_delivery = RightScale::OperationResult.non_delivery(RightScale::OperationResult::TTL_EXPIRATION)
|
777
767
|
response = RightScale::Result.new('token1', 'to', non_delivery, 'target1')
|
778
|
-
@instance.handle_response(response)
|
768
|
+
@instance.handle_response(response, @header)
|
779
769
|
end
|
780
770
|
|
781
771
|
it "should record non-delivery regardless of whether there is a response handler" do
|
772
|
+
@header.should_receive(:ack).once
|
782
773
|
@instance.send_retryable_request('/welcome/aboard', 'iZac') {|_|}
|
783
774
|
non_delivery = RightScale::OperationResult.non_delivery(RightScale::OperationResult::NO_ROUTE_TO_TARGET)
|
784
775
|
response = RightScale::Result.new('token1', 'to', non_delivery, 'target1')
|
785
|
-
@instance.handle_response(response)
|
776
|
+
@instance.handle_response(response, @header)
|
786
777
|
@instance.instance_variable_get(:@non_delivery_stats).total.should == 1
|
787
778
|
end
|
788
779
|
|
789
780
|
it "should log non-delivery if there is no response handler" do
|
781
|
+
@header.should_receive(:ack).once
|
790
782
|
@log.should_receive(:info).with(/Non-delivery of/).once
|
791
783
|
@instance.send_push('/welcome/aboard', 'iZac')
|
792
784
|
non_delivery = RightScale::OperationResult.non_delivery(RightScale::OperationResult::NO_ROUTE_TO_TARGET)
|
793
785
|
response = RightScale::Result.new('token1', 'to', non_delivery, 'target1')
|
794
|
-
@instance.handle_response(response)
|
786
|
+
@instance.handle_response(response, @header)
|
795
787
|
end
|
796
788
|
|
797
789
|
it "should log a debug message if request no longer pending" do
|
790
|
+
@header.should_receive(:ack).once
|
798
791
|
@log.should_receive(:debug).with(/No pending request for response/).once
|
799
792
|
@instance.send_retryable_request('/welcome/aboard', 'iZac') {|_|}
|
800
793
|
@instance.pending_requests['token1'].should_not be_nil
|
801
794
|
@instance.pending_requests['token2'].should be_nil
|
802
795
|
response = RightScale::Result.new('token2', 'to', RightScale::OperationResult.success, 'target1')
|
796
|
+
@instance.handle_response(response, @header)
|
797
|
+
end
|
798
|
+
|
799
|
+
it "should ack response even if fail while handling it" do
|
800
|
+
@header.should_receive(:ack).once
|
801
|
+
@instance.send_push('/welcome/aboard', 'iZac') {|_|}
|
802
|
+
response = RightScale::Result.new('token1', 'to', RightScale::OperationResult.success, 'target1')
|
803
|
+
flexmock(response).should_receive(:token).and_raise(Exception).once
|
804
|
+
flexmock(@instance).should_receive(:deliver).never
|
805
|
+
lambda { @instance.handle_response(response, @header) }.should raise_error(Exception)
|
806
|
+
end
|
807
|
+
|
808
|
+
it "should not attempt to ack response if fail while handling it and there is no header" do
|
809
|
+
@instance.send_push('/welcome/aboard', 'iZac') {|_|}
|
810
|
+
response = RightScale::Result.new('token1', 'to', RightScale::OperationResult.success, 'target1')
|
811
|
+
exception = Exception.new("test")
|
812
|
+
flexmock(response).should_receive(:token).and_raise(exception).once
|
813
|
+
flexmock(@instance).should_receive(:deliver).never
|
814
|
+
lambda { @instance.handle_response(response, nil) }.should raise_error(Exception, "test")
|
815
|
+
end
|
816
|
+
|
817
|
+
it "should not attempt to ack response if there is no header" do
|
818
|
+
@instance.send_retryable_request('/welcome/aboard', 'iZac') {|_|}
|
819
|
+
response = RightScale::Result.new('token1', 'to', RightScale::OperationResult.success, 'target1')
|
820
|
+
flexmock(@instance).should_receive(:deliver).with(response, RightScale::Sender::PendingRequest, nil).once
|
803
821
|
@instance.handle_response(response)
|
804
822
|
end
|
805
823
|
end
|
@@ -814,13 +832,15 @@ describe RightScale::Sender do
|
|
814
832
|
RightScale::Sender.new(@agent)
|
815
833
|
@instance = RightScale::Sender.instance
|
816
834
|
flexmock(RightScale::AgentIdentity, :generate => 'token1')
|
835
|
+
@header = flexmock("amqp header")
|
836
|
+
@header.should_receive(:ack).once.by_default
|
817
837
|
end
|
818
838
|
|
819
839
|
it "should delete all associated pending Request requests" do
|
820
840
|
@instance.send_retryable_request('/welcome/aboard', 'iZac') {|_|}
|
821
841
|
@instance.pending_requests['token1'].should_not be_nil
|
822
842
|
response = RightScale::Result.new('token1', 'to', RightScale::OperationResult.success, 'target1')
|
823
|
-
@instance.handle_response(response)
|
843
|
+
@instance.handle_response(response, @header)
|
824
844
|
@instance.pending_requests['token1'].should be_nil
|
825
845
|
end
|
826
846
|
|
@@ -828,7 +848,7 @@ describe RightScale::Sender do
|
|
828
848
|
@instance.send_push('/welcome/aboard', 'iZac') {|_|}
|
829
849
|
@instance.pending_requests['token1'].should_not be_nil
|
830
850
|
response = RightScale::Result.new('token1', 'to', RightScale::OperationResult.success, 'target1')
|
831
|
-
@instance.handle_response(response)
|
851
|
+
@instance.handle_response(response, @header)
|
832
852
|
@instance.pending_requests['token1'].should_not be_nil
|
833
853
|
end
|
834
854
|
|
@@ -838,7 +858,7 @@ describe RightScale::Sender do
|
|
838
858
|
@instance.pending_requests['token2'] = @instance.pending_requests['token1'].dup
|
839
859
|
@instance.pending_requests['token2'].retry_parent = 'token1'
|
840
860
|
response = RightScale::Result.new('token2', 'to', RightScale::OperationResult.success, 'target1')
|
841
|
-
@instance.handle_response(response)
|
861
|
+
@instance.handle_response(response, @header)
|
842
862
|
@instance.pending_requests['token1'].should be_nil
|
843
863
|
@instance.pending_requests['token2'].should be_nil
|
844
864
|
end
|
@@ -847,7 +867,7 @@ describe RightScale::Sender do
|
|
847
867
|
called = 0
|
848
868
|
@instance.send_retryable_request('/welcome/aboard', 'iZac') {|response| called += 1}
|
849
869
|
response = RightScale::Result.new('token1', 'to', RightScale::OperationResult.success, 'target1')
|
850
|
-
@instance.handle_response(response)
|
870
|
+
@instance.handle_response(response, @header)
|
851
871
|
called.should == 1
|
852
872
|
end
|
853
873
|
|
@@ -860,7 +880,7 @@ describe RightScale::Sender do
|
|
860
880
|
response = RightScale::Result.new('token1', 'to', RightScale::OperationResult.success, 'target1')
|
861
881
|
flexmock(EM).should_receive(:defer).and_yield.once
|
862
882
|
flexmock(EM).should_receive(:next_tick).never
|
863
|
-
@instance.handle_response(response)
|
883
|
+
@instance.handle_response(response, @header)
|
864
884
|
called.should == 1
|
865
885
|
end
|
866
886
|
|
@@ -873,7 +893,7 @@ describe RightScale::Sender do
|
|
873
893
|
response = RightScale::Result.new('token1', 'to', RightScale::OperationResult.success, 'target1')
|
874
894
|
flexmock(EM).should_receive(:next_tick).and_yield.once
|
875
895
|
flexmock(EM).should_receive(:defer).never
|
876
|
-
@instance.handle_response(response)
|
896
|
+
@instance.handle_response(response, @header)
|
877
897
|
called.should == 1
|
878
898
|
end
|
879
899
|
|
@@ -883,9 +903,32 @@ describe RightScale::Sender do
|
|
883
903
|
@instance.send_retryable_request('/welcome/aboard', 'iZac') {|_| raise Exception}
|
884
904
|
@instance.pending_requests['token1'].should_not be_nil
|
885
905
|
response = RightScale::Result.new('token1', 'to', RightScale::OperationResult.success, 'target1')
|
886
|
-
@instance.handle_response(response)
|
906
|
+
@instance.handle_response(response, @header)
|
887
907
|
@instance.pending_requests['token1'].should be_nil
|
888
908
|
end
|
909
|
+
|
910
|
+
it "should ack response even if fail while delivering it" do
|
911
|
+
flexmock(EM).should_receive(:defer).and_raise(Exception).once
|
912
|
+
@instance.send_push('/welcome/aboard', 'iZac') {|_|}
|
913
|
+
response = RightScale::Result.new('token1', 'to', RightScale::OperationResult.success, 'target1')
|
914
|
+
lambda { @instance.handle_response(response, @header) }.should raise_error(Exception)
|
915
|
+
end
|
916
|
+
|
917
|
+
it "should not attempt to ack response if fail while delivering it and there is no header" do
|
918
|
+
@header.should_receive(:ack).never
|
919
|
+
exception = Exception.new("test")
|
920
|
+
flexmock(EM).should_receive(:defer).and_raise(exception).once
|
921
|
+
@instance.send_push('/welcome/aboard', 'iZac') {|_|}
|
922
|
+
response = RightScale::Result.new('token1', 'to', RightScale::OperationResult.success, 'target1')
|
923
|
+
lambda { @instance.handle_response(response, nil) }.should raise_error(Exception, "test")
|
924
|
+
end
|
925
|
+
|
926
|
+
it "should not attempt to ack response if there is no header" do
|
927
|
+
@header.should_receive(:ack).never
|
928
|
+
@instance.send_retryable_request('/welcome/aboard', 'iZac') {|_|}
|
929
|
+
response = RightScale::Result.new('token1', 'to', RightScale::OperationResult.success, 'target1')
|
930
|
+
@instance.handle_response(response)
|
931
|
+
end
|
889
932
|
end
|
890
933
|
|
891
934
|
describe "when use offline queueing" do
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: right_agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.13.5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Lee Kirchhoff
|
@@ -12,7 +12,7 @@ autorequire:
|
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
14
|
|
15
|
-
date:
|
15
|
+
date: 2012-10-03 00:00:00 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: right_support
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
requirements:
|
22
22
|
- - ">="
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version:
|
24
|
+
version: 2.4.1
|
25
25
|
- - <
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: "3.0"
|
@@ -35,7 +35,7 @@ dependencies:
|
|
35
35
|
requirements:
|
36
36
|
- - ~>
|
37
37
|
- !ruby/object:Gem::Version
|
38
|
-
version: "0.
|
38
|
+
version: "0.4"
|
39
39
|
type: :runtime
|
40
40
|
prerelease: false
|
41
41
|
version_requirements: *id002
|
@@ -153,9 +153,11 @@ files:
|
|
153
153
|
- lib/right_agent/core_payload_types/secure_document_location.rb
|
154
154
|
- lib/right_agent/core_payload_types/software_repository_instantiation.rb
|
155
155
|
- lib/right_agent/daemonize.rb
|
156
|
+
- lib/right_agent/dispatched_cache.rb
|
156
157
|
- lib/right_agent/dispatcher.rb
|
157
158
|
- lib/right_agent/enrollment_result.rb
|
158
159
|
- lib/right_agent/exceptions.rb
|
160
|
+
- lib/right_agent/history.rb
|
159
161
|
- lib/right_agent/idempotent_request.rb
|
160
162
|
- lib/right_agent/log.rb
|
161
163
|
- lib/right_agent/minimal.rb
|
@@ -166,7 +168,6 @@ files:
|
|
166
168
|
- lib/right_agent/monkey_patches/ruby_patch/linux_patch.rb
|
167
169
|
- lib/right_agent/monkey_patches/ruby_patch/linux_patch/file_patch.rb
|
168
170
|
- lib/right_agent/monkey_patches/ruby_patch/object_patch.rb
|
169
|
-
- lib/right_agent/monkey_patches/ruby_patch/singleton_patch.rb
|
170
171
|
- lib/right_agent/monkey_patches/ruby_patch/windows_patch.rb
|
171
172
|
- lib/right_agent/monkey_patches/ruby_patch/windows_patch/file_patch.rb
|
172
173
|
- lib/right_agent/monkey_patches/ruby_patch/windows_patch/process_patch.rb
|
@@ -224,19 +225,21 @@ files:
|
|
224
225
|
- spec/core_payload_types/login_user_spec.rb
|
225
226
|
- spec/core_payload_types/right_script_attachment_spec.rb
|
226
227
|
- spec/core_payload_types/spec_helper.rb
|
228
|
+
- spec/dispatched_cache_spec.rb
|
227
229
|
- spec/dispatcher_spec.rb
|
228
230
|
- spec/enrollment_result_spec.rb
|
231
|
+
- spec/history_spec.rb
|
229
232
|
- spec/idempotent_request_spec.rb
|
230
233
|
- spec/log_spec.rb
|
231
234
|
- spec/monkey_patches/eventmachine_spec.rb
|
232
235
|
- spec/multiplexer_spec.rb
|
233
236
|
- spec/operation_result_spec.rb
|
234
237
|
- spec/packets_spec.rb
|
235
|
-
- spec/platform/
|
236
|
-
- spec/platform/
|
238
|
+
- spec/platform/darwin_spec.rb
|
239
|
+
- spec/platform/linux_spec.rb
|
237
240
|
- spec/platform/linux_volume_manager_spec.rb
|
238
241
|
- spec/platform/platform_spec.rb
|
239
|
-
- spec/platform/
|
242
|
+
- spec/platform/windows_spec.rb
|
240
243
|
- spec/platform/windows_volume_manager_spec.rb
|
241
244
|
- spec/results_mock.rb
|
242
245
|
- spec/secure_identity_spec.rb
|
@@ -279,7 +282,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
279
282
|
requirements:
|
280
283
|
- - ">="
|
281
284
|
- !ruby/object:Gem::Version
|
282
|
-
hash:
|
285
|
+
hash: -1208467833270175194
|
283
286
|
segments:
|
284
287
|
- 0
|
285
288
|
version: "0"
|
@@ -1,45 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2011 RightScale Inc
|
3
|
-
#
|
4
|
-
# Permission is hereby granted, free of charge, to any person obtaining
|
5
|
-
# a copy of this software and associated documentation files (the
|
6
|
-
# "Software"), to deal in the Software without restriction, including
|
7
|
-
# without limitation the rights to use, copy, modify, merge, publish,
|
8
|
-
# distribute, sublicense, and/or sell copies of the Software, and to
|
9
|
-
# permit persons to whom the Software is furnished to do so, subject to
|
10
|
-
# the following conditions:
|
11
|
-
#
|
12
|
-
# The above copyright notice and this permission notice shall be
|
13
|
-
# included in all copies or substantial portions of the Software.
|
14
|
-
#
|
15
|
-
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
16
|
-
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
17
|
-
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
18
|
-
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
19
|
-
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
20
|
-
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
|
-
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
|
-
|
23
|
-
require 'singleton'
|
24
|
-
|
25
|
-
module RightScale
|
26
|
-
|
27
|
-
module Singleton
|
28
|
-
|
29
|
-
module ClassMethods
|
30
|
-
|
31
|
-
# Redirect missing class methods to singleton instance.
|
32
|
-
def method_missing(meth, *args, &blk)
|
33
|
-
self.instance.__send__(meth, *args, &blk)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
# Upon inclusion, also include standard Singleton mixin
|
38
|
-
def self.included(base)
|
39
|
-
base.__send__(:include, ::Singleton)
|
40
|
-
base.__send__(:extend, ClassMethods)
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
data/spec/platform/darwin.rb
DELETED
data/spec/platform/linux.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module RightScale
|
2
|
-
describe Platform do
|
3
|
-
|
4
|
-
context :installer do
|
5
|
-
context :install do
|
6
|
-
it 'should succeed if no packages are specified' do
|
7
|
-
packages = []
|
8
|
-
RightScale::Platform.installer.install(packages).should == true
|
9
|
-
end
|
10
|
-
|
11
|
-
it 'should succeed if all packages install successfully' do
|
12
|
-
packages = ['syslog-ng']
|
13
|
-
RightScale::Platform.installer.install(packages).should == true
|
14
|
-
end
|
15
|
-
|
16
|
-
it 'should fail if one more packages are not found' do
|
17
|
-
packages = ['jdk-6u26-linux-x64']
|
18
|
-
lambda { RightScale::Platform.installer.install(packages) }.should raise_error
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|