kumogata-template 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (241) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +54 -0
  3. data/.travis.yml +8 -0
  4. data/Gemfile +4 -0
  5. data/Gemfile.lock +75 -0
  6. data/README.md +204 -0
  7. data/Rakefile +23 -0
  8. data/bin/kumogata-template +9 -0
  9. data/kumogata-template.gemspec +26 -0
  10. data/lib/kumogata/template.rb +17 -0
  11. data/lib/kumogata/template/autoscaling.rb +77 -0
  12. data/lib/kumogata/template/cloudwatch.rb +28 -0
  13. data/lib/kumogata/template/codedeploy.rb +85 -0
  14. data/lib/kumogata/template/const.rb +175 -0
  15. data/lib/kumogata/template/datapipeline.rb +90 -0
  16. data/lib/kumogata/template/dynamodb.rb +111 -0
  17. data/lib/kumogata/template/ec2.rb +165 -0
  18. data/lib/kumogata/template/ecs.rb +119 -0
  19. data/lib/kumogata/template/elasticbeanstalk.rb +33 -0
  20. data/lib/kumogata/template/elb.rb +132 -0
  21. data/lib/kumogata/template/emr.rb +166 -0
  22. data/lib/kumogata/template/events.rb +25 -0
  23. data/lib/kumogata/template/ext/argument_parser.rb +8 -0
  24. data/lib/kumogata/template/ext/kumogata.rb +103 -0
  25. data/lib/kumogata/template/helper.rb +211 -0
  26. data/lib/kumogata/template/iam.rb +96 -0
  27. data/lib/kumogata/template/lambda.rb +34 -0
  28. data/lib/kumogata/template/s3.rb +223 -0
  29. data/lib/kumogata/template/sns.rb +25 -0
  30. data/lib/kumogata/template/version.rb +1 -0
  31. data/template/_template.rb +25 -0
  32. data/template/autoscaling-group.rb +47 -0
  33. data/template/autoscaling-launch-configuration.rb +54 -0
  34. data/template/autoscaling-lifecycle-hook.rb +27 -0
  35. data/template/autoscaling-scaling-policy.rb +33 -0
  36. data/template/autoscaling-scheduled-action.rb +37 -0
  37. data/template/cloudtrail.rb +39 -0
  38. data/template/cloudwatch-alarm.rb +45 -0
  39. data/template/codedeploy-application.rb +15 -0
  40. data/template/codedeploy-deployment-config.rb +23 -0
  41. data/template/codedeploy-deployment-group.rb +35 -0
  42. data/template/datapipeline-pipeline.rb +28 -0
  43. data/template/dynamodb-table.rb +33 -0
  44. data/template/ec2-eip-association.rb +23 -0
  45. data/template/ec2-eip.rb +17 -0
  46. data/template/ec2-instance.rb +65 -0
  47. data/template/ec2-internet-gateway.rb +15 -0
  48. data/template/ec2-nat-gateway.rb +17 -0
  49. data/template/ec2-network-acl-entry.rb +30 -0
  50. data/template/ec2-network-acl.rb +17 -0
  51. data/template/ec2-route-table.rb +17 -0
  52. data/template/ec2-route.rb +27 -0
  53. data/template/ec2-security-group.rb +24 -0
  54. data/template/ec2-subnet-network-acl-association.rb +17 -0
  55. data/template/ec2-subnet-route-table-association.rb +17 -0
  56. data/template/ec2-subnet.rb +23 -0
  57. data/template/ec2-volume-attachment.rb +19 -0
  58. data/template/ec2-volume.rb +31 -0
  59. data/template/ec2-vpc-endpoint.rb +23 -0
  60. data/template/ec2-vpc-gateway-attachment.rb +19 -0
  61. data/template/ec2-vpc.rb +24 -0
  62. data/template/ecs-cluster.rb +11 -0
  63. data/template/ecs-service.rb +24 -0
  64. data/template/ecs-task-definition.rb +18 -0
  65. data/template/elasticache-cache-cluster.rb +63 -0
  66. data/template/elasticache-parameter-group.rb +20 -0
  67. data/template/elasticache-replication-group.rb +58 -0
  68. data/template/elasticache-subnet-group.rb +17 -0
  69. data/template/elasticbeanstalk-application-version.rb +24 -0
  70. data/template/elasticbeanstalk-application.rb +17 -0
  71. data/template/elasticbeanstalk-configuration-template.rb +31 -0
  72. data/template/elasticbeanstalk-environment.rb +44 -0
  73. data/template/elb-loadbalancer.rb +46 -0
  74. data/template/emr-cluster.rb +39 -0
  75. data/template/emr-instance-group-config.rb +33 -0
  76. data/template/emr-step.rb +22 -0
  77. data/template/events-rule.rb +28 -0
  78. data/template/iam-access-key.rb +19 -0
  79. data/template/iam-group.rb +20 -0
  80. data/template/iam-instance-profile.rb +17 -0
  81. data/template/iam-managed-policy.rb +28 -0
  82. data/template/iam-policy.rb +26 -0
  83. data/template/iam-role.rb +21 -0
  84. data/template/iam-user-to-group-addition.rb +17 -0
  85. data/template/iam-user.rb +24 -0
  86. data/template/lambda-alias.rb +21 -0
  87. data/template/lambda-event-source-mapping.rb +24 -0
  88. data/template/lambda-function.rb +34 -0
  89. data/template/lambda-permission.rb +26 -0
  90. data/template/lambda-version.rb +19 -0
  91. data/template/mappings-ec2.rb +85 -0
  92. data/template/output-access-key.rb +6 -0
  93. data/template/output-arn.rb +6 -0
  94. data/template/output-autoscaling.rb +6 -0
  95. data/template/output-az.rb +6 -0
  96. data/template/output-dynamodb.rb +6 -0
  97. data/template/output-ec2.rb +8 -0
  98. data/template/output-elasticache.rb +30 -0
  99. data/template/output-elb.rb +12 -0
  100. data/template/output-emr.rb +6 -0
  101. data/template/output-rds.rb +10 -0
  102. data/template/output-redshift.rb +10 -0
  103. data/template/output-s3.rb +8 -0
  104. data/template/output-security-group.rb +5 -0
  105. data/template/output-sqs.rb +5 -0
  106. data/template/output-topic.rb +6 -0
  107. data/template/output-vpc.rb +10 -0
  108. data/template/output.rb +29 -0
  109. data/template/parameter-ec2.rb +22 -0
  110. data/template/parameter-elasticache.rb +9 -0
  111. data/template/parameter-rds.rb +9 -0
  112. data/template/parameter-redshift.rb +9 -0
  113. data/template/parameter.rb +20 -0
  114. data/template/rds-db-cluster-parameter-group.rb +22 -0
  115. data/template/rds-db-cluster.rb +47 -0
  116. data/template/rds-db-instance.rb +82 -0
  117. data/template/rds-db-parameter-group.rb +21 -0
  118. data/template/rds-db-subnet-group.rb +19 -0
  119. data/template/rds-event-subscription.rb +42 -0
  120. data/template/rds-option-group.rb +23 -0
  121. data/template/redshift-cluster-parameter-group.rb +19 -0
  122. data/template/redshift-cluster-subnet-group.rb +17 -0
  123. data/template/redshift-cluster.rb +60 -0
  124. data/template/s3-bucket-policy.rb +20 -0
  125. data/template/s3-bucket.rb +42 -0
  126. data/template/sns-topic.rb +20 -0
  127. data/template/sqs-queue.rb +27 -0
  128. data/test/_template.rb +26 -0
  129. data/test/abstract_unit.rb +101 -0
  130. data/test/autoscaling_test.rb +109 -0
  131. data/test/codedeploy_test.rb +117 -0
  132. data/test/datapipeline_test.rb +142 -0
  133. data/test/dynamodb_test.rb +184 -0
  134. data/test/ec2_test.rb +286 -0
  135. data/test/ecs_test.rb +135 -0
  136. data/test/elasticbeanstalk_test.rb +56 -0
  137. data/test/elb_test.rb +147 -0
  138. data/test/emr_test.rb +193 -0
  139. data/test/events_test.rb +22 -0
  140. data/test/helper_test.rb +547 -0
  141. data/test/iam_test.rb +93 -0
  142. data/test/lambda_test.rb +41 -0
  143. data/test/s3_test.rb +195 -0
  144. data/test/sns_test.rb +27 -0
  145. data/test/template/autoscaling-group_test.rb +177 -0
  146. data/test/template/autoscaling-launch-configuration_test.rb +117 -0
  147. data/test/template/autoscaling-lifecycle-hook_test.rb +33 -0
  148. data/test/template/autoscaling-scaling-policy_test.rb +26 -0
  149. data/test/template/autoscaling-scheduled-action_test.rb +26 -0
  150. data/test/template/cloudtrail_test.rb +55 -0
  151. data/test/template/cloudwatch-alarm_test.rb +38 -0
  152. data/test/template/codedeploy-application_test.rb +21 -0
  153. data/test/template/codedeploy-deployment-config_test.rb +26 -0
  154. data/test/template/codedeploy-deployment-group_test.rb +48 -0
  155. data/test/template/datapipeline-pipeline_test.rb +358 -0
  156. data/test/template/dynamodb-table_test.rb +94 -0
  157. data/test/template/ec2-eip-association_test.rb +22 -0
  158. data/test/template/ec2-eip_test.rb +21 -0
  159. data/test/template/ec2-instance_test.rb +95 -0
  160. data/test/template/ec2-internet-gateway_test.rb +48 -0
  161. data/test/template/ec2-nat-gateway_test.rb +22 -0
  162. data/test/template/ec2-network-acl-entry_test.rb +61 -0
  163. data/test/template/ec2-network-acl_test.rb +51 -0
  164. data/test/template/ec2-route-table_test.rb +49 -0
  165. data/test/template/ec2-route_test.rb +21 -0
  166. data/test/template/ec2-security-group_test.rb +50 -0
  167. data/test/template/ec2-subnet-netwokr-acl-association_test.rb +26 -0
  168. data/test/template/ec2-subnet-route-table-association_test.rb +22 -0
  169. data/test/template/ec2-subnet_test.rb +51 -0
  170. data/test/template/ec2-volume-attachment_test.rb +24 -0
  171. data/test/template/ec2-volume_test.rb +52 -0
  172. data/test/template/ec2-vpc-gateway-attachment_test.rb +23 -0
  173. data/test/template/ec2-vpc_test.rb +102 -0
  174. data/test/template/ecs-cluster_test.rb +18 -0
  175. data/test/template/ecs-service_test.rb +29 -0
  176. data/test/template/ecs-task-definition_test.rb +143 -0
  177. data/test/template/elasticache-cache-cluster_test.rb +77 -0
  178. data/test/template/elasticache-parameter-group_test.rb +25 -0
  179. data/test/template/elasticache-replication-group_test.rb +45 -0
  180. data/test/template/elasticache-subnet-group_test.rb +26 -0
  181. data/test/template/elasticbeanstalk-application-version_test.rb +27 -0
  182. data/test/template/elasticbeanstalk-application_test.rb +21 -0
  183. data/test/template/elasticbeanstalk-configuration-template_test.rb +23 -0
  184. data/test/template/elasticbeanstalk-environment_test.rb +56 -0
  185. data/test/template/elasticbeanstalk-template_test.rb +33 -0
  186. data/test/template/elb-loadbalancer_test.rb +94 -0
  187. data/test/template/emr-cluster_test.rb +147 -0
  188. data/test/template/emr-instance-group-config_test.rb +65 -0
  189. data/test/template/emr-step_test.rb +82 -0
  190. data/test/template/events-rule_test.rb +34 -0
  191. data/test/template/iam-access-key_test.rb +22 -0
  192. data/test/template/iam-group_test.rb +21 -0
  193. data/test/template/iam-instance-profile_test.rb +24 -0
  194. data/test/template/iam-managed-policy_test.rb +35 -0
  195. data/test/template/iam-policy_test.rb +52 -0
  196. data/test/template/iam-role_test.rb +37 -0
  197. data/test/template/iam-user-to-group-addition_test.rb +24 -0
  198. data/test/template/iam-user_test.rb +21 -0
  199. data/test/template/lambda-alias_test.rb +46 -0
  200. data/test/template/lambda-event-source-mapping_test.rb +36 -0
  201. data/test/template/lambda-function_test.rb +34 -0
  202. data/test/template/lambda-permission_test.rb +32 -0
  203. data/test/template/lambda-version_test.rb +27 -0
  204. data/test/template/mappings-ec2_test.rb +92 -0
  205. data/test/template/output-access-key_test.rb +30 -0
  206. data/test/template/output-arn_test.rb +30 -0
  207. data/test/template/output-autoscaling_test.rb +27 -0
  208. data/test/template/output-az_test.rb +31 -0
  209. data/test/template/output-dynamodb_test.rb +21 -0
  210. data/test/template/output-ec2_test.rb +82 -0
  211. data/test/template/output-elasticache_test.rb +107 -0
  212. data/test/template/output-elb_test.rb +48 -0
  213. data/test/template/output-emr_test.rb +30 -0
  214. data/test/template/output-rds_test.rb +39 -0
  215. data/test/template/output-redshift_test.rb +39 -0
  216. data/test/template/output-s3_test.rb +52 -0
  217. data/test/template/output-security-group_test.rb +21 -0
  218. data/test/template/output-sqs_test.rb +21 -0
  219. data/test/template/output-topic_test.rb +30 -0
  220. data/test/template/output-vpc_test.rb +48 -0
  221. data/test/template/output_test.rb +87 -0
  222. data/test/template/parameter-ec2_test.rb +44 -0
  223. data/test/template/parameter-elasticache_test.rb +30 -0
  224. data/test/template/parameter-rds_test.rb +30 -0
  225. data/test/template/parameter-redshift_test.rb +30 -0
  226. data/test/template/parameter_test.rb +40 -0
  227. data/test/template/rds-db-cluster-parameter-group_test.rb +53 -0
  228. data/test/template/rds-db-cluster_test.rb +84 -0
  229. data/test/template/rds-db-instance_test.rb +93 -0
  230. data/test/template/rds-db-parameter-group_test.rb +53 -0
  231. data/test/template/rds-db-subnet-group.rb +54 -0
  232. data/test/template/rds-event-subscription_test.rb +48 -0
  233. data/test/template/rds-option-group_test.rb +56 -0
  234. data/test/template/redshift-cluster-parameter-group_test.rb +28 -0
  235. data/test/template/redshift-cluster-subnet-group_test.rb +26 -0
  236. data/test/template/redshift-cluster_test.rb +47 -0
  237. data/test/template/s3-bucket-policy_test.rb +40 -0
  238. data/test/template/s3-bucket_test.rb +127 -0
  239. data/test/template/sns-topic_test.rb +42 -0
  240. data/test/template/sqs-queue_test.rb +25 -0
  241. metadata +468 -0
data/test/ecs_test.rb ADDED
@@ -0,0 +1,135 @@
1
+ require 'abstract_unit'
2
+ require 'kumogata/template/ecs'
3
+
4
+ class EcsTest < Minitest::Test
5
+ def test_ecs_load_balancers
6
+ template = <<-EOS
7
+ Test _ecs_load_balancers(load_balancers: [ { container_name: "test", container_port: 80, lb_name: "test" } ])
8
+ EOS
9
+ act_template = run_client_as_json(template)
10
+ exp_template = <<-EOS
11
+ {
12
+ "Test": [
13
+ {
14
+ "ContainerName": "test",
15
+ "ContainerPort": "80",
16
+ "LoadBalancerName": "test"
17
+ }
18
+ ]
19
+ }
20
+ EOS
21
+ assert_equal exp_template.chomp, act_template
22
+ end
23
+
24
+ def test_ecs_container_definitions
25
+ template = <<-EOS
26
+ Test _ecs_container_definitions(container_definitions: [ { name: "test", image: "test" } ])
27
+ EOS
28
+ act_template = run_client_as_json(template)
29
+ exp_template = <<-EOS
30
+ {
31
+ "Test": [
32
+ {
33
+ "Cpu": "10",
34
+ "Essential": "true",
35
+ "Image": "test",
36
+ "Memory": "300",
37
+ "Name": "test",
38
+ "PortMappings": [
39
+ {
40
+ "ContainerPort": "80"
41
+ }
42
+ ]
43
+ }
44
+ ]
45
+ }
46
+ EOS
47
+ assert_equal exp_template.chomp, act_template
48
+ end
49
+
50
+ def test_ecs_mount_points
51
+ template = <<-EOS
52
+ Test _ecs_mount_points(mount_points: [ { container_path: "/", source_volume: "/" } ])
53
+ EOS
54
+ act_template = run_client_as_json(template)
55
+ exp_template = <<-EOS
56
+ {
57
+ "Test": [
58
+ {
59
+ "ContainerPath": "/",
60
+ "SourceVolume": "/",
61
+ "ReadOnly": "false"
62
+ }
63
+ ]
64
+ }
65
+ EOS
66
+ assert_equal exp_template.chomp, act_template
67
+ end
68
+
69
+ def test_ecs_port_mappings
70
+ template = <<-EOS
71
+ Test _ecs_port_mappings(port_mappings: [ { container_port: 80 } ])
72
+ EOS
73
+ act_template = run_client_as_json(template)
74
+ exp_template = <<-EOS
75
+ {
76
+ "Test": [
77
+ {
78
+ "ContainerPort": "80"
79
+ }
80
+ ]
81
+ }
82
+ EOS
83
+ assert_equal exp_template.chomp, act_template
84
+ end
85
+
86
+ def test_ecs_volumes_from
87
+ template = <<-EOS
88
+ Test _ecs_volumes_from(volumes_from: [ { source: "test" } ])
89
+ EOS
90
+ act_template = run_client_as_json(template)
91
+ exp_template = <<-EOS
92
+ {
93
+ "Test": [
94
+ {
95
+ "SourceContainer": "test",
96
+ "ReadOnly": "false"
97
+ }
98
+ ]
99
+ }
100
+ EOS
101
+ assert_equal exp_template.chomp, act_template
102
+ end
103
+
104
+ def test_ecs_volumes
105
+ template = <<-EOS
106
+ Test _ecs_volumes(volumes: [ { name: "test" } ])
107
+ EOS
108
+ act_template = run_client_as_json(template)
109
+ exp_template = <<-EOS
110
+ {
111
+ "Test": [
112
+ {
113
+ "Name": "test"
114
+ }
115
+ ]
116
+ }
117
+ EOS
118
+ assert_equal exp_template.chomp, act_template
119
+ end
120
+
121
+ def test_ecs_volumes_host
122
+ template = <<-EOS
123
+ Test _ecs_volumes_host(source_path: "test")
124
+ EOS
125
+ act_template = run_client_as_json(template)
126
+ exp_template = <<-EOS
127
+ {
128
+ "Test": {
129
+ "SourcePath": "test"
130
+ }
131
+ }
132
+ EOS
133
+ assert_equal exp_template.chomp, act_template
134
+ end
135
+ end
@@ -0,0 +1,56 @@
1
+ require 'abstract_unit'
2
+ require 'kumogata/template/elasticbeanstalk'
3
+
4
+ class ElasticbeantalkTest < Minitest::Test
5
+ def test_elasticbeanstalk_option
6
+ template = <<-EOS
7
+ Test _elasticbeanstalk_option([ namespace: "test", option: "test", value: "test" ])
8
+ EOS
9
+ act_template = run_client_as_json(template)
10
+ exp_template = <<-EOS
11
+ {
12
+ "Test": [
13
+ {
14
+ "Namespace": "test",
15
+ "OptionName": "test",
16
+ "Value": "test"
17
+ }
18
+ ]
19
+ }
20
+ EOS
21
+ assert_equal exp_template.chomp, act_template
22
+ end
23
+
24
+ def test_elasticbeanstalk_configuration
25
+ template = <<-EOS
26
+ Test _elasticbeanstalk_configuration(application: "test", template: "test")
27
+ EOS
28
+ act_template = run_client_as_json(template)
29
+ exp_template = <<-EOS
30
+ {
31
+ "Test": {
32
+ "ApplicationName": "test",
33
+ "TemplateName": "test"
34
+ }
35
+ }
36
+ EOS
37
+ assert_equal exp_template.chomp, act_template
38
+ end
39
+
40
+ def test_elasticbeanstalk_tier
41
+ template = <<-EOS
42
+ Test _elasticbeanstalk_tier(name: "test")
43
+ EOS
44
+ act_template = run_client_as_json(template)
45
+ exp_template = <<-EOS
46
+ {
47
+ "Test": {
48
+ "Name": "WebServer",
49
+ "Type": "Standard",
50
+ "Version": "1.0"
51
+ }
52
+ }
53
+ EOS
54
+ assert_equal exp_template.chomp, act_template
55
+ end
56
+ end
data/test/elb_test.rb ADDED
@@ -0,0 +1,147 @@
1
+ require 'abstract_unit'
2
+ require 'kumogata/template/elb'
3
+
4
+ class ElbTest < Minitest::Test
5
+ def test_elb_acccess_logging_policy
6
+ template = <<-EOS
7
+ Test _elb_access_logging_policy(access_logging: { s3_bucket: "test", s3_bucket_prefix: "test" })
8
+ EOS
9
+ act_template = run_client_as_json(template)
10
+ exp_template = <<-EOS
11
+ {
12
+ "Test": {
13
+ "EmitInterval": "5",
14
+ "Enabled": "true",
15
+ "S3BucketName": "test",
16
+ "S3BucketPrefix": "test"
17
+ }
18
+ }
19
+ EOS
20
+ assert_equal exp_template.chomp, act_template
21
+ end
22
+
23
+ def test_elb_app_cookie_stickness_policy
24
+ template = <<-EOS
25
+ Test _elb_app_cookie_stickiness_policy(app_cookie: [ { cookie: "test", policy: "test" } ])
26
+
27
+ EOS
28
+ act_template = run_client_as_json(template)
29
+ exp_template = <<-EOS
30
+ {
31
+ "Test": [
32
+ {
33
+ "CookieName": "test",
34
+ "PolicyName": "test"
35
+ }
36
+ ]
37
+ }
38
+ EOS
39
+ assert_equal exp_template.chomp, act_template
40
+ end
41
+
42
+ def test_elb_connection_draining_policy
43
+ template = <<-EOS
44
+ Test _elb_connection_draining_policy(connection_draining: {})
45
+ EOS
46
+ act_template = run_client_as_json(template)
47
+ exp_template = <<-EOS
48
+ {
49
+ "Test": {
50
+ "Enabled": "true",
51
+ "Timeout": "60"
52
+ }
53
+ }
54
+ EOS
55
+ assert_equal exp_template.chomp, act_template
56
+ end
57
+
58
+ def test_elb_connection_settings
59
+ template = <<-EOS
60
+ Test _elb_connection_settings({ })
61
+ EOS
62
+ act_template = run_client_as_json(template)
63
+ exp_template = <<-EOS
64
+ {
65
+ "Test": {
66
+ "IdleTimeout": "60"
67
+ }
68
+ }
69
+ EOS
70
+ assert_equal exp_template.chomp, act_template
71
+ end
72
+
73
+ def test_elb_health_check
74
+ template = <<-EOS
75
+ Test _elb_health_check({ })
76
+ EOS
77
+ act_template = run_client_as_json(template)
78
+ exp_template = <<-EOS
79
+ {
80
+ "Test": {
81
+ "HealthyThreshold": "10",
82
+ "Interval": "30",
83
+ "Target": "HTTP:80/index.html",
84
+ "Timeout": "5",
85
+ "UnhealthyThreshold": "2"
86
+ }
87
+ }
88
+ EOS
89
+ assert_equal exp_template.chomp, act_template
90
+ end
91
+
92
+ def test_elb_cookie_stickiness_policy
93
+ template = <<-EOS
94
+ Test _elb_cookie_stickiness_policy(cookie_stickiness: [ { expiration: 0, policy: "test" } ])
95
+ EOS
96
+ act_template = run_client_as_json(template)
97
+ exp_template = <<-EOS
98
+ {
99
+ "Test": [
100
+ {
101
+ "CookieExpirationPeriod": "0",
102
+ "PolicyName": "test"
103
+ }
104
+ ]
105
+ }
106
+ EOS
107
+ assert_equal exp_template.chomp, act_template
108
+ end
109
+
110
+ def test_elb_listeners
111
+ template = <<-EOS
112
+ Test _elb_listeners({})
113
+ EOS
114
+ act_template = run_client_as_json(template)
115
+ exp_template = <<-EOS
116
+ {
117
+ "Test": [
118
+ {
119
+ "InstancePort": "80",
120
+ "InstanceProtocol": "HTTP",
121
+ "LoadBalancerPort": "80",
122
+ "Protocol": "HTTP"
123
+ }
124
+ ]
125
+ }
126
+ EOS
127
+ assert_equal exp_template.chomp, act_template
128
+ end
129
+
130
+ def test_elb_policy_types
131
+ template = <<-EOS
132
+ Test _elb_policy_types(policy: [ { name: "test", type: "test" } ])
133
+ EOS
134
+ act_template = run_client_as_json(template)
135
+ exp_template = <<-EOS
136
+ {
137
+ "Test": [
138
+ {
139
+ "PolicyName": "test",
140
+ "PolicyType": "test"
141
+ }
142
+ ]
143
+ }
144
+ EOS
145
+ assert_equal exp_template.chomp, act_template
146
+ end
147
+ end
data/test/emr_test.rb ADDED
@@ -0,0 +1,193 @@
1
+ require 'abstract_unit'
2
+ require 'kumogata/template/emr'
3
+
4
+ class EmrTest < Minitest::Test
5
+ def test_emr_applications
6
+ template = <<-EOS
7
+ Test _emr_applications(applications: [ { name: "test", version: "test" } ])
8
+ EOS
9
+ act_template = run_client_as_json(template)
10
+ exp_template = <<-EOS
11
+ {
12
+ "Test": [
13
+ {
14
+ "Name": "Test",
15
+ "Version": "test"
16
+ }
17
+ ]
18
+ }
19
+ EOS
20
+ assert_equal exp_template.chomp, act_template
21
+ end
22
+
23
+ def test_emr_bootstraps
24
+ template = <<-EOS
25
+ Test _emr_bootstraps(bootstraps: [ { name: "test", script_path: "test" } ])
26
+ EOS
27
+ act_template = run_client_as_json(template)
28
+ exp_template = <<-EOS
29
+ {
30
+ "Test": [
31
+ {
32
+ "Name": "test",
33
+ "ScriptBootstrapAction": {
34
+ "Path": "test"
35
+ }
36
+ }
37
+ ]
38
+ }
39
+ EOS
40
+ assert_equal exp_template.chomp, act_template
41
+ end
42
+
43
+ def test_emr_configurations
44
+ template = <<-EOS
45
+ Test _emr_configurations(configurations: [ { classification: "test" } ])
46
+ EOS
47
+ act_template = run_client_as_json(template)
48
+ exp_template = <<-EOS
49
+ {
50
+ "Test": [
51
+ {
52
+ "Classification": "test"
53
+ }
54
+ ]
55
+ }
56
+ EOS
57
+ assert_equal exp_template.chomp, act_template
58
+ end
59
+
60
+ def test_emr_ebs
61
+ template = <<-EOS
62
+ Test _emr_ebs(ebs: [ { size: "test" } ])
63
+ EOS
64
+ act_template = run_client_as_json(template)
65
+ exp_template = <<-EOS
66
+ {
67
+ "Test": {
68
+ "EbsBlockDeviceConfig": [
69
+ {
70
+ "VolumeSpecification": {
71
+ "SizeInGB": "test",
72
+ "VolumeType": "gp2"
73
+ }
74
+ }
75
+ ]
76
+ }
77
+ }
78
+ EOS
79
+ assert_equal exp_template.chomp, act_template
80
+ end
81
+
82
+ def test_emr_ebs_block_device
83
+ template = <<-EOS
84
+ Test _emr_ebs_block_device({ size: "test" })
85
+ EOS
86
+ act_template = run_client_as_json(template)
87
+ exp_template = <<-EOS
88
+ {
89
+ "Test": {
90
+ "VolumeSpecification": {
91
+ "SizeInGB": "test",
92
+ "VolumeType": "gp2"
93
+ }
94
+ }
95
+ }
96
+ EOS
97
+ assert_equal exp_template.chomp, act_template
98
+ end
99
+
100
+ def test_emr_ebs_volume
101
+ template = <<-EOS
102
+ Test _emr_ebs_volume({ size: "test" })
103
+ EOS
104
+ act_template = run_client_as_json(template)
105
+ exp_template = <<-EOS
106
+ {
107
+ "Test": {
108
+ "SizeInGB": "test",
109
+ "VolumeType": "gp2"
110
+ }
111
+ }
112
+ EOS
113
+ assert_equal exp_template.chomp, act_template
114
+ end
115
+
116
+ def test_emr_job_flow
117
+ template = <<-EOS
118
+ Test _emr_job_flow(job: { core: { name: "test" }, master: { name: "test" } })
119
+ EOS
120
+ act_template = run_client_as_json(template)
121
+ exp_template = <<-EOS
122
+ {
123
+ "Test": {
124
+ "CoreInstanceGroup": {
125
+ "InstanceCount": "1",
126
+ "InstanceType": "c4.large",
127
+ "Market": "ON_DEMAND",
128
+ "Name": "test"
129
+ },
130
+ "MasterInstanceGroup": {
131
+ "InstanceCount": "1",
132
+ "InstanceType": "c4.large",
133
+ "Market": "ON_DEMAND",
134
+ "Name": "test"
135
+ },
136
+ "TerminationProtected": "false"
137
+ }
138
+ }
139
+ EOS
140
+ assert_equal exp_template.chomp, act_template
141
+ end
142
+
143
+ def test_emr_instance_group
144
+ template = <<-EOS
145
+ Test _emr_instance_group({ name: "test" })
146
+ EOS
147
+ act_template = run_client_as_json(template)
148
+ exp_template = <<-EOS
149
+ {
150
+ "Test": {
151
+ "InstanceCount": "1",
152
+ "InstanceType": "c4.large",
153
+ "Market": "ON_DEMAND",
154
+ "Name": "test"
155
+ }
156
+ }
157
+ EOS
158
+ assert_equal exp_template.chomp, act_template
159
+ end
160
+
161
+ def _emr_hadoop_jar_config
162
+ template = <<-EOS
163
+ Test _emr_hadopo_jar_config(jar: "test")
164
+ EOS
165
+ act_template = run_client_as_json(template)
166
+ exp_template = <<-EOS
167
+ {
168
+ "Test": {
169
+ "Jar": "test"
170
+ }
171
+ }
172
+ EOS
173
+ assert_equal exp_template.chomp, act_template
174
+ end
175
+
176
+ def _emr_step_properties
177
+ template = <<-EOS
178
+ Test _emr_step_properties([ key: "test", value: "test" ])
179
+ EOS
180
+ act_template = run_client_as_json(template)
181
+ exp_template = <<-EOS
182
+ {
183
+ "Test": [
184
+ {
185
+ "Key": "test",
186
+ "Valuue": "test"
187
+ }
188
+ ]
189
+ }
190
+ EOS
191
+ assert_equal exp_template.chomp, act_template
192
+ end
193
+ end