aws-must-templates 0.1.6 → 0.2.1

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.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +97 -44
  3. data/lib/tasks/cross-ref.rb +6 -0
  4. data/lib/tasks/suite.rake +150 -48
  5. data/lib/test-suites/test_suites.rb +13 -13
  6. data/mustache/commonDependsOn.mustache +24 -2
  7. data/mustache/commonRef.mustache +22 -0
  8. data/mustache/commonValue.mustache +1 -1
  9. data/mustache/commonXGressRule.mustache +31 -0
  10. data/mustache/mapping.mustache +3 -1
  11. data/mustache/mappingAmazonVpcNat.mustache +38 -0
  12. data/mustache/resource.mustache +4 -0
  13. data/mustache/resourceInstance.mustache +26 -7
  14. data/mustache/resourceInternetGateway.mustache +30 -16
  15. data/mustache/resourceRoute.mustache +50 -0
  16. data/mustache/resourceRouteTable.mustache +67 -0
  17. data/mustache/resourceSecurityGroup.mustache +13 -12
  18. data/mustache/resourceSubnet.mustache +20 -8
  19. data/mustache/root.mustache +26 -11
  20. data/spec/aws-must-templates/AllwaysOk/AllwaysOk_spec.rb +35 -0
  21. data/spec/aws-must-templates/AwsCommandLineInterfaceInstalled/AwsCommandLineInterfaceInstalled_spec.rb +19 -1
  22. data/spec/aws-must-templates/AwsMustTestRunnerProperties/AwsMustTestRunnerProperties_spec.rb +16 -1
  23. data/spec/aws-must-templates/CloudFormationHelperScriptsInstalled/CloudFormationHelperScriptsInstalled_spec.rb +17 -0
  24. data/spec/aws-must-templates/Ec2InstanceType/Ec2InstanceType_spec.rb +47 -0
  25. data/spec/aws-must-templates/Ec2PrivateIp/Ec2PrivateIp_spec.rb +49 -0
  26. data/spec/aws-must-templates/Ec2PublicIp/Ec2PublicIp_spec.rb +68 -0
  27. data/spec/aws-must-templates/Ec2Routes/Ec2Routes_spec.rb +69 -0
  28. data/spec/aws-must-templates/Ec2SecurityGroups/Ec2SecurityGroups_spec.rb +151 -0
  29. data/spec/aws-must-templates/Ec2StatusNormal/Ec2StatusNormal_spec.rb +55 -0
  30. data/spec/aws-must-templates/NetworkCanPing/NetworkCanPing_spec.rb +36 -0
  31. data/spec/aws-must-templates/ParameterTest/ParameterTest_spec.rb +17 -1
  32. data/spec/aws-must-templates/RespondsToPing/RespondsToPing_spec.rb +46 -0
  33. data/spec/aws-must-templates/S3NoAccess/S3NoAccess_spec.rb +17 -3
  34. data/spec/aws-must-templates/S3ReadAccessAllowed/S3ReadAccessAllowed_spec.rb +18 -1
  35. data/spec/aws-must-templates/Stack/Stack_spec.rb +28 -1
  36. data/spec/aws-must-templates/ValidOSVersion/ValidOSVersion_spec.rb +16 -1
  37. data/spec/aws-must-templates/Vpc/vpc_spec.rb +51 -0
  38. data/spec/aws-must-templates/table_of_content.mustache +67 -0
  39. data/spec/lib/test_suites_spec.rb +101 -28
  40. data/spec/mustache/commonDependsOn_spec.rb +57 -2
  41. data/spec/mustache/commonInstanceType_spec.rb +1 -1
  42. data/spec/mustache/mappingAmazonVpcNat_spec.rb +56 -0
  43. data/spec/mustache/mapping_spec.rb +48 -7
  44. data/spec/mustache/resourceInstance_spec.rb +102 -1
  45. data/spec/mustache/resourceInternetGateway_spec.rb +14 -9
  46. data/spec/mustache/resourcePolicy_spec.rb +1 -1
  47. data/spec/mustache/resourceS3Bucket_spec.rb +1 -1
  48. data/spec/mustache/resourceSecurityGroup_spec.rb +3 -3
  49. data/spec/mustache/resourceSubnet_spec.rb +50 -3
  50. data/spec/support/lib/aws/aws.rb +6 -0
  51. data/spec/support/lib/aws/ec2_resource.rb +177 -0
  52. data/spec/support/lib/aws/mixin_cidr.rb +18 -0
  53. data/spec/support/lib/aws/mixin_ec2.rb +53 -0
  54. data/spec/support/lib/aws/mixin_security_group.rb +15 -0
  55. data/spec/support/lib/aws/mixin_subnet.rb +77 -0
  56. data/spec/support/lib/aws/mixin_vpc.rb +10 -0
  57. data/spec/support/lib/aws/route_resource.rb +86 -0
  58. data/spec/support/lib/aws/security_group_resource.rb +120 -0
  59. data/spec/support/lib/aws/vpc_resource.rb +69 -0
  60. data/spec/support/lib/suite_value.rb +38 -0
  61. data/spec/support/lib/test_parameter.rb +12 -8
  62. data/spec/support/lib/valid_property.rb +29 -9
  63. data/spec/support/spec_helper.rb +75 -44
  64. data/spec/support/utils.rb +4 -0
  65. metadata +34 -24
@@ -1,6 +1,22 @@
1
+ =begin
2
+
3
+ +++start+++
4
+
5
+ ## <a id="AwsCommandLineInterfaceInstalled"></a>AwsCommandLineInterfaceInstalled<a class='navigator' href='#top'>[top]</a>
6
+
7
+ Validate that command `aws` is installed.
8
+
9
+ +++close+++
10
+
11
+ =end
12
+
13
+ # +++fold-on+++
14
+
1
15
  require 'spec_helper'
2
16
 
3
- describe "AwsCommandLineInterfaceInstalled" do
17
+ current_test = File.basename File.dirname __FILE__
18
+
19
+ describe current_test do
4
20
 
5
21
  describe command('type aws') do
6
22
  its( :exit_status ) { should eq 0 }
@@ -8,3 +24,5 @@ describe "AwsCommandLineInterfaceInstalled" do
8
24
 
9
25
 
10
26
  end
27
+
28
+ # +++fold-off+++
@@ -1,12 +1,25 @@
1
1
  require 'spec_helper'
2
2
 
3
+ =begin
4
+
5
+ +++start+++
6
+
7
+ ## <a id="AwsMustTestRunnerProperties"></a>AwsMustTestRunnerProperties<a class='navigator' href='#top'>[top]</a>
8
+
9
+ Validata that Test Runner works correctly and set properties
10
+
11
+ +++close+++
12
+
13
+ =end
14
+
15
+ # +++fold-on+++
3
16
 
4
17
 
5
18
  # ------------------------------------------------------------------
6
19
  # Configuration
7
20
  #
8
21
 
9
- current_test = "AwsMustTestRunnerProperties"
22
+ current_test = File.basename File.dirname __FILE__
10
23
 
11
24
  # every suite should define these paramentes
12
25
  system_properties = [
@@ -37,3 +50,5 @@ describe current_test do
37
50
 
38
51
  end
39
52
 
53
+ # +++fold-off+++
54
+
@@ -1,3 +1,17 @@
1
+ =begin
2
+
3
+ +++start+++
4
+
5
+ ## <a id="CloudFormationHelperScriptsInstalled"></a>CloudFormationHelperScriptsInstalled<a class='navigator' href='#top'>[top]</a>
6
+
7
+ Validate that CloudFormation Helper script is installed.
8
+
9
+ +++close+++
10
+
11
+ =end
12
+
13
+ # +++fold-on+++
14
+
1
15
  require 'spec_helper'
2
16
 
3
17
  describe "CloudFormationHelperScriptsInstalled" do
@@ -19,3 +33,6 @@ describe "CloudFormationHelperScriptsInstalled" do
19
33
  end
20
34
 
21
35
  end
36
+
37
+
38
+ # +++fold-off+++
@@ -0,0 +1,47 @@
1
+ =begin
2
+
3
+ +++start+++
4
+
5
+ ## <a id="Ec2InstanceType"></a>Ec2InstanceType<a class='navigator' href='#top'>[top]</a>
6
+
7
+ Validates `InstanceType` of EC2 `InstanceId` as returned by `describe_instance_attribute`
8
+
9
+ * `:instance_type` == `InstanceType`
10
+
11
+ **Parameters**
12
+
13
+ - `test_parameter( current_test, "InstanceType" )`
14
+
15
+ +++close+++
16
+
17
+ =end
18
+
19
+ # +++fold-on+++
20
+
21
+ require 'spec_helper'
22
+
23
+ current_test = File.basename File.dirname __FILE__
24
+
25
+ describe current_test do
26
+
27
+ # ------------------------------------------------------------------
28
+ # test parameters
29
+
30
+ instance = suite_value( :instance_name ) # set in spec_helper
31
+ instanceType = test_parameter( current_test, "InstanceType" )
32
+
33
+ # ------------------------------------------------------------------
34
+ # tests
35
+ describe "instance '#{instance.value}'" do
36
+
37
+
38
+ describe ec2_named_resource( instance ) do
39
+ its( :instance_type ) { should eq instanceType.value }
40
+ end
41
+
42
+ end
43
+
44
+
45
+ end
46
+
47
+ # +++fold-off+++
@@ -0,0 +1,49 @@
1
+ =begin
2
+
3
+ +++start+++
4
+
5
+ ## <a id="Ec2PrivateIp"></a>Ec2PrivateIp<a class='navigator' href='#top'>[top]</a>
6
+
7
+ Validates EC2 `InstanceId` public ip 'private_ip_address' is with
8
+ `CidrBlock`
9
+
10
+ **Parameters**
11
+
12
+ * `instance = suite_value( :instance_name )` : name of instance being tested
13
+ * `test_parameter( current_test, "CidrBlock" )` : mandatory, should be valid Cidr
14
+
15
+ +++close+++
16
+
17
+ =end
18
+
19
+ # +++fold-on+++
20
+
21
+ require 'spec_helper'
22
+
23
+ current_test = File.basename File.dirname __FILE__
24
+
25
+ describe current_test do
26
+
27
+ # ------------------------------------------------------------------
28
+ # test parameters
29
+
30
+ instance = suite_value( :instance_name ) # set in spec_helper
31
+ cidr_block = test_parameter( current_test, "CidrBlock" )
32
+
33
+ # ------------------------------------------------------------------
34
+ # tests
35
+ describe "instance '#{instance.value}'" do
36
+
37
+ describe ec2_named_resource_attribute( instance, "private_ip_address" ) do
38
+
39
+ it "#valid cidr #{cidr_block.value}" do
40
+ expect( subject.private_ip_address_valid_cidr?( cidr_block.value ) ).to eql( true )
41
+ end
42
+ end
43
+
44
+ end # instance
45
+
46
+
47
+ end
48
+
49
+ # +++fold-off+++
@@ -0,0 +1,68 @@
1
+ =begin
2
+
3
+ +++start+++
4
+
5
+ ## <a id="Ec2PublicIp"></a>Ec2PublicIp<a class='navigator' href='#top'>[top]</a>
6
+
7
+ Validates that EC2 `InstanceId` `:public_ip_address` (none/defined/CidrBlock)
8
+
9
+ **Parameters**
10
+
11
+ * `instance = suite_value( :instance_name )` : name of instance being tested
12
+ * `test_parameter( current_test, "PublicIp" )` valid values
13
+ * `nil` OR `none` : should not be defined
14
+ * V4 address public_ip_address belong to CidrBlock
15
+ * `defined`: should not be nill
16
+
17
+ +++close+++
18
+
19
+ =end
20
+
21
+ # +++fold-on+++
22
+
23
+ require 'spec_helper'
24
+
25
+ current_test = File.basename File.dirname __FILE__
26
+
27
+ describe current_test do
28
+
29
+ # ------------------------------------------------------------------
30
+ # test parameters
31
+
32
+ instance = suite_value( :instance_name ) # set in spec_help
33
+ public_ip = test_parameter( current_test, "PublicIp" )
34
+
35
+
36
+ # ------------------------------------------------------------------
37
+ # tests
38
+ describe "instance '#{instance.value}'" do
39
+
40
+
41
+ describe "Public IP" do
42
+
43
+ case public_ip.value
44
+
45
+ when /\A(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\Z/
46
+ describe ec2_named_resource_attribute( instance, "public_ip_address" ) do
47
+ its( :public_ip_address ) { should eql public_ip.value }
48
+ end
49
+ when "none", "nil"
50
+ describe ec2_named_resource( instance ) do
51
+ its( :public_ip_address ) { should eql nil }
52
+ end
53
+ when "defined"
54
+ describe ec2_named_resource( instance ) do
55
+ its( :public_ip_address ) { should_not eql nil }
56
+ end
57
+ else
58
+ raise "Invalid value '#{public_ip.value}' in parameter '#{public_ip}'"
59
+ end # case
60
+ end # public ip
61
+
62
+
63
+ end # instance
64
+
65
+
66
+ end
67
+
68
+ # +++fold-off+++
@@ -0,0 +1,69 @@
1
+ =begin
2
+
3
+ +++start+++
4
+
5
+ ## <a id="Ec2Routes"></a>Ec2Routes<a class='navigator' href='#top'>[top]</a>
6
+
7
+ Validates that routes in EC2 `InstanceId`
8
+
9
+ **Parameters**
10
+
11
+ * `instance = suite_value( :instance_name )` : name of instance being tested
12
+ * `test_parameter( current_test, "Routes" )` : and array of route definitions
13
+
14
+ For example: Validata that 'Instance1' in output section defines two
15
+ routes. Fist route forwards VPC traffic to 'local' gateway, and
16
+ default route forwards to internet gateway (matched using regexp).
17
+
18
+
19
+ - Ec2Routes:
20
+ Routes:
21
+ - :destination_cidr_block: 10.0.0.0/16
22
+ :gateway_id: local
23
+ :state: active
24
+ - :destination_cidr_block: "0.0.0.0/0"
25
+ :gateway_id: !ruby/regexp '/^ig.*/'
26
+ :state: active
27
+
28
+ +++close+++
29
+
30
+ =end
31
+
32
+ # +++fold-on+++
33
+
34
+ require 'spec_helper'
35
+
36
+ current_test = File.basename File.dirname __FILE__
37
+
38
+ describe current_test do
39
+
40
+ # ------------------------------------------------------------------
41
+ # test parameters
42
+
43
+ instance = suite_value( :instance_name )
44
+ routes = test_parameter( current_test, "Routes" )
45
+
46
+ # ------------------------------------------------------------------
47
+ # tests
48
+
49
+ describe route_resource_for_ec2( instance ) do
50
+
51
+ let( :implemented_routes ) { subject.subnet_routes() }
52
+
53
+ # iterate 'expacted routes'
54
+ routes.value.each_with_index do |expected_route,i|
55
+
56
+ # use to validate corresponding implemented route
57
+ it "implement route #{expected_route}" do
58
+ expect( implemented_routes[i] ).to include( expected_route )
59
+ end
60
+
61
+ end # iterate expections
62
+
63
+
64
+ end # instance
65
+
66
+
67
+ end
68
+
69
+ # +++fold-off+++
@@ -0,0 +1,151 @@
1
+ =begin
2
+
3
+ +++start+++
4
+
5
+ ## <a id="Ec2SecurityGroups"></a>Ec2SecurityGroups<a class='navigator' href='#top'>[top]</a>
6
+
7
+ Validates EC2 security group ingress/egress rules. A
8
+
9
+ **Parameters**
10
+
11
+ * `instance = suite_value( :instance_name )` : name of instance being tested
12
+ * `ingress = test_parameter( current_test, "Ingress" )` : ingress on
13
+ the EC2 instance to validate
14
+ * `egress = test_parameter( current_test, "Egress" )`: egress rules on
15
+ the EC2 instance to validate
16
+ * `strictIngress = test_parameter( current_test, "StrictIngress",
17
+ false )`: validate exactly |Ingress| rules
18
+ * `strictEgress = test_parameter( current_test, "StrictEgress", false )`:
19
+ validate exactly |Egress| rules
20
+
21
+
22
+ - Ec2SecurityGroups:
23
+ StrictIngress: false
24
+ StrictEgress: false
25
+ Ingress:
26
+ # ping response only in local subnet
27
+ - :ip_protocol: icmp
28
+ :from_port: -1
29
+ :to_port: -1
30
+ :ip_ranges:
31
+ - :cidr_ip: *SubNetPrivate
32
+ Egress:
33
+ # allow ping Internet
34
+ - :ip_protocol: icmp
35
+ :from_port: -1
36
+ :to_port: -1
37
+ :ip_ranges:
38
+ - :cidr_ip: "0.0.0.0/0"
39
+
40
+ +++close+++
41
+
42
+ =end
43
+
44
+ # +++fold-on+++
45
+
46
+ require 'spec_helper'
47
+
48
+ current_test = File.basename File.dirname __FILE__
49
+
50
+ # ------------------------------------------------------------------
51
+ # Use custom matcher to loop array of rules and validate that expected
52
+ # rule is "included" to one of these rules.
53
+
54
+ RSpec::Matchers.define :define_rule do |expected|
55
+
56
+ match do |actual_rules|
57
+
58
+ result = false
59
+
60
+ actual_rules.each do |rule|
61
+ # puts "rule=#{rule} vs. #{expected}"
62
+ begin
63
+ result |= expect( rule ).to include( expected )
64
+ break if result
65
+ rescue Exception => e
66
+ # puts "Rescued #{e}"
67
+ end
68
+ end
69
+ return result
70
+ # actual % expected == 0
71
+ end
72
+
73
+ failure_message do |actual_rules|
74
+ "rule #{expected} was not included in actual rules #{actual_rules} "
75
+ end
76
+ end
77
+
78
+ describe current_test do
79
+
80
+ # ------------------------------------------------------------------
81
+ # test parameters
82
+
83
+ instance = suite_value( :instance_name )
84
+ ingress = test_parameter( current_test, "Ingress" )
85
+ egress = test_parameter( current_test, "Egress" )
86
+ strictIngress = test_parameter( current_test, "StrictIngress", false )
87
+ strictEgress = test_parameter( current_test, "StrictEgress", false )
88
+
89
+
90
+
91
+ # ------------------------------------------------------------------
92
+ # tests
93
+ describe security_group_resource_for_ec2( instance ) do
94
+
95
+ let( :implemented_ingress_rules ) { subject.instance_ingress_rules() }
96
+ let( :implemented_egress_rules ) { subject.instance_egress_rules() }
97
+
98
+ # ------------------------------------------------------------------
99
+ # ingresss rules
100
+ context "ingress rules" do
101
+
102
+ if strictIngress.value then
103
+ it "validate all ingress rules in test suite" do
104
+ expect( implemented_ingress_rules.length ).to eql( ingress.value.length )
105
+ end
106
+ else
107
+ it "WARNING does not validate all ingress rules in test suite" do
108
+ expect( ingress.value.length ).to eql( ingress.value.length )
109
+ end
110
+ end
111
+
112
+ # iterate 'expacted ingress' rules
113
+ ingress && ingress.value && ingress.value.each do |expected_rule|
114
+ # use to validate corresponding implemented route
115
+ it "implement ingress rule: #{expected_rule}" do
116
+ expect( implemented_ingress_rules ).to define_rule( expected_rule )
117
+ end
118
+ end
119
+
120
+ end
121
+
122
+ # ------------------------------------------------------------------
123
+ # egress
124
+
125
+ context "egress rules" do
126
+
127
+ if strictEgress.value then
128
+ it "validates all egress rules in test suite" do
129
+ expect( implemented_egress_rules.length ).to eql( egress.value.length )
130
+ end
131
+ else
132
+ it "WARNING does not validate all egress rules in test suite" do
133
+ expect( egress.value.length ).to eql( egress.value.length )
134
+ end
135
+ end
136
+
137
+
138
+ # iterate 'expacted egress' rules
139
+ egress && egress.value && egress.value.each do |expected_rule|
140
+ # use to validate corresponding implemented route
141
+ it "implement egress rule: #{expected_rule}" do
142
+ expect( implemented_egress_rules ).to define_rule( expected_rule )
143
+ end
144
+ end
145
+
146
+ end
147
+
148
+ end # instance
149
+ end
150
+
151
+ # +++fold-off+++
@@ -0,0 +1,55 @@
1
+ =begin
2
+
3
+ +++start+++
4
+
5
+ ## <a id="Ec2StatusNormal"></a>Ec2StatusNormal<a class='navigator' href='#top'>[top]</a>
6
+
7
+ Validates that status of `InstanceId` EC2 status for `describe_instance_status` normal:
8
+
9
+ * defefines `:availability_zone`
10
+ * `:system_status_ok?`
11
+ * `:instance_state_running?`
12
+
13
+ **Parameters**
14
+
15
+ * `instance = suite_value( :instance_name )` : name of instance being tested
16
+
17
+
18
+ +++close+++
19
+
20
+ =end
21
+
22
+ # +++fold-on+++
23
+
24
+ require 'spec_helper'
25
+
26
+ current_test = File.basename File.dirname __FILE__
27
+
28
+ describe current_test do
29
+
30
+ # ------------------------------------------------------------------
31
+ # test parameters
32
+
33
+ instanceName = suite_value( :instance_name )
34
+
35
+ expected = [
36
+ { :prop => :system_status_not_impaired?, :expect => true },
37
+ { :prop => :instance_state_running?, :expect => true }
38
+ ]
39
+
40
+ # ------------------------------------------------------------------
41
+ # tests
42
+
43
+ describe "instanceName '#{instanceName.value}'" do
44
+
45
+ expected.each do |prop|
46
+ describe ec2_named_resource( instanceName ) do
47
+ its( prop[:prop] ) { should eq prop[:expect] }
48
+ end
49
+ end
50
+
51
+ end # describe instanceId
52
+
53
+ end
54
+
55
+ # +++fold-off+++
@@ -0,0 +1,36 @@
1
+ =begin
2
+
3
+ +++start+++
4
+
5
+ ## <a id="NetworkCanPing"></a>NetworkCanPing<a class='navigator' href='#top'>[top]</a>
6
+
7
+ Can ping to `test_parameter( current_test, "Destination" )`
8
+
9
+ +++close+++
10
+
11
+ =end
12
+
13
+ # +++fold-on+++
14
+ require 'spec_helper'
15
+
16
+ current_test = File.basename File.dirname __FILE__
17
+
18
+ describe current_test do
19
+
20
+ # defined in test-suites.yaml
21
+ timeout = 20 # seconds
22
+ testcount = 3 # times
23
+
24
+ destination = test_parameter( current_test, "Destination" )
25
+
26
+
27
+ describe "ping #{testcount} times to '#{destination.value}', wait response within #{timeout} seconds" do
28
+ cmd = "ping #{destination.value} -W #{timeout} -c #{testcount}"
29
+ describe command( cmd ) do
30
+ its(:exit_status) { should eq 0 }
31
+ end
32
+ end
33
+ end
34
+
35
+
36
+ # +++fold-off+++
@@ -1,7 +1,21 @@
1
+ =begin
2
+
3
+ +++start+++
4
+
5
+ ## <a id="ParameterTest"></a>ParameterTest<a class='navigator' href='#top'>[top]</a>
6
+
7
+ Demonstrate a test accessing `test_parameters`
8
+
9
+ +++close+++
10
+
11
+ =end
12
+
13
+ # +++fold-on+++
14
+
1
15
  require 'spec_helper'
2
16
 
3
17
 
4
- current_test = "ParameterTest"
18
+ current_test = File.basename File.dirname __FILE__
5
19
 
6
20
  describe current_test do |ex|
7
21
 
@@ -33,3 +47,5 @@ describe current_test do |ex|
33
47
  end # describe "Test parameters" do
34
48
 
35
49
  end
50
+
51
+ # +++fold-off+++
@@ -0,0 +1,46 @@
1
+ =begin
2
+
3
+ +++start+++
4
+
5
+ ## <a id="RespondsToPing"></a>RespondsToPing<a class='navigator' href='#top'>[top]</a>
6
+
7
+ Validate that host `test_parameter( current_test, "Hostname" )` answers to ping
8
+
9
+ +++close+++
10
+
11
+ =end
12
+
13
+ # +++fold-on+++
14
+
15
+ require 'spec_helper'
16
+
17
+ current_test = File.basename File.dirname __FILE__
18
+
19
+ describe current_test do
20
+
21
+ # ------------------------------------------------------------------
22
+ # test parameters
23
+
24
+ hostname = test_parameter( current_test, "Hostname" )
25
+ timeout = 20 # seconds
26
+ testcount = 3 # times
27
+
28
+ # ------------------------------------------------------------------
29
+ # tests
30
+
31
+ describe "ping '#{hostname.value}'" do
32
+
33
+ it "#reponds within #{timeout} seconds with #{testcount} test counts" do
34
+ # -W: Time to wait for a response, in seconds
35
+ # -c: Stop after sending count ECHO_REQUEST packets. With deadline
36
+ # -option, ping waits for count ECHO_REPLY packets, until the
37
+ # -timeout expires
38
+
39
+ cmd = "ping #{hostname.value} -W 20 -c 3"
40
+ # puts cmd `#{cmd}`
41
+ raise "Error in '#{cmd}' " unless $? == 0 end
42
+ end
43
+
44
+ end
45
+
46
+ # +++fold-off+++
@@ -1,9 +1,23 @@
1
+ =begin
2
+
3
+ +++start+++
4
+
5
+ ## <a id="S3NoAccess"></a>S3NoAccess<a class='navigator' href='#top'>[top]</a>
6
+
7
+ Validate no access to S3 bucket `test_parameter( current_test, "Bucket" )`
8
+
9
+ +++close+++
10
+
11
+ =end
12
+
13
+ # +++fold-on+++
14
+
1
15
  require 'spec_helper'
2
16
 
3
17
  # ------------------------------------------------------------------
4
18
  # config
5
19
 
6
- current_test = "S3NoAccess"
20
+ current_test = File.basename File.dirname __FILE__
7
21
 
8
22
  # ------------------------------------------------------------------
9
23
  # Tests
@@ -66,7 +80,7 @@ describe current_test do
66
80
 
67
81
  end
68
82
 
83
+ end
69
84
 
70
85
 
71
-
72
- end
86
+ # +++fold-off+++