mtncd 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NTJlNzcwODU3MjhkMGRkNDlhNDYwOTgwZTBjZTM3MGRkZTA0N2I3Mg==
5
+ data.tar.gz: !binary |-
6
+ MTlmZjJhOTE1M2FhOTM2Yzg4Yjk2ZTU0ODc4NmVlYTZmMjVjNDA1NQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ YzlkZDgwOGE4ZjRhZGExMzQ4MjkzNWVmMmNiYzJjYmEzOWU5NTQ4ZTBiNjRi
10
+ ZTgxNWEzMTMzODQyMTg5NmEzYjkzOGZiOGNiYmYwZmVhZGE5Zjc3NTZhN2Yy
11
+ YWY1NzNiNGJhY2E0NTQwY2QyYzg2ZDVjOGY4NmFiZmM0MGYyM2Y=
12
+ data.tar.gz: !binary |-
13
+ OTY5YjYwMGIxN2E3ODVmZDMwYmE3Y2FhYWI3MzUyZDI5MWMyYTY0YTI5Y2Yw
14
+ YTNhNmUxN2YyOWMwZGQ0YTk5OWU5ZTU5YjEzMDM2YjdiY2ZmNGRlMWMxZTMy
15
+ NDlhYThjZWQzNDc1YTcxZDc0NjhiNGZiMWZmYTE3MDFmMGE3Yjc=
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,77 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ mtncd (0.0.1)
5
+ awesome_print
6
+ gli (= 2.12.2)
7
+ msgpack
8
+ redis
9
+ resque
10
+ serfx
11
+
12
+ GEM
13
+ remote: https://rubygems.org/
14
+ specs:
15
+ aruba (0.6.1)
16
+ childprocess (>= 0.3.6)
17
+ cucumber (>= 1.1.1)
18
+ rspec-expectations (>= 2.7.0)
19
+ awesome_print (1.2.0)
20
+ builder (3.2.2)
21
+ childprocess (0.5.5)
22
+ ffi (~> 1.0, >= 1.0.11)
23
+ cucumber (1.3.17)
24
+ builder (>= 2.1.2)
25
+ diff-lcs (>= 1.1.3)
26
+ gherkin (~> 2.12)
27
+ multi_json (>= 1.7.5, < 2.0)
28
+ multi_test (>= 0.1.1)
29
+ diff-lcs (1.2.5)
30
+ ffi (1.9.6)
31
+ gherkin (2.12.2)
32
+ multi_json (~> 1.3)
33
+ gli (2.12.2)
34
+ json (1.8.1)
35
+ mixlib-log (1.6.0)
36
+ mono_logger (1.1.0)
37
+ msgpack (0.5.8)
38
+ multi_json (1.10.1)
39
+ multi_test (0.1.1)
40
+ rack (1.5.2)
41
+ rack-protection (1.5.3)
42
+ rack
43
+ rake (10.3.2)
44
+ rdoc (4.1.2)
45
+ json (~> 1.4)
46
+ redis (3.1.0)
47
+ redis-namespace (1.5.1)
48
+ redis (~> 3.0, >= 3.0.4)
49
+ resque (1.25.2)
50
+ mono_logger (~> 1.0)
51
+ multi_json (~> 1.0)
52
+ redis-namespace (~> 1.3)
53
+ sinatra (>= 0.9.2)
54
+ vegas (~> 0.1.2)
55
+ rspec-expectations (3.1.2)
56
+ diff-lcs (>= 1.2.0, < 2.0)
57
+ rspec-support (~> 3.1.0)
58
+ rspec-support (3.1.2)
59
+ serfx (0.0.7)
60
+ mixlib-log
61
+ msgpack
62
+ sinatra (1.4.5)
63
+ rack (~> 1.4)
64
+ rack-protection (~> 1.4)
65
+ tilt (~> 1.3, >= 1.3.4)
66
+ tilt (1.4.1)
67
+ vegas (0.1.11)
68
+ rack (>= 1.0.0)
69
+
70
+ PLATFORMS
71
+ ruby
72
+
73
+ DEPENDENCIES
74
+ aruba
75
+ mtncd!
76
+ rake
77
+ rdoc
data/README.md ADDED
@@ -0,0 +1,27 @@
1
+ # Example yaml config file (.mtncdconf)
2
+ ---
3
+ node: test
4
+ role: central
5
+ default_exclude: mtn\-aws2
6
+ deploy:
7
+ global:
8
+ stop: stop_deploy
9
+ start: deploy
10
+ local:
11
+ stop: stop_deploy
12
+ start: deploy
13
+ system:
14
+ resque:
15
+ workers: 0
16
+ redis:
17
+ ip: 127.0.0.1
18
+ port: 6379
19
+ serf:
20
+ global:
21
+ ip: < some ip >
22
+ port: < some port >
23
+ auth: super secret token
24
+ local:
25
+ ip: < some ip >
26
+ port: < some port >
27
+ auth: super secret token
data/README.rdoc ADDED
@@ -0,0 +1,6 @@
1
+ = mtncd
2
+
3
+ Describe your project here
4
+
5
+ :include:mtncd.rdoc
6
+
data/Rakefile ADDED
@@ -0,0 +1,45 @@
1
+ require 'rake/clean'
2
+ require 'rubygems'
3
+ require 'rubygems/package_task'
4
+ require 'rdoc/task'
5
+ require 'cucumber'
6
+ require 'cucumber/rake/task'
7
+ require "bundler/gem_tasks"
8
+ Rake::RDocTask.new do |rd|
9
+ rd.main = "README.rdoc"
10
+ rd.rdoc_files.include("README.rdoc","lib/**/*.rb","bin/**/*")
11
+ rd.title = 'Your application title'
12
+ end
13
+
14
+ spec = eval(File.read('mtncd.gemspec'))
15
+
16
+ Gem::PackageTask.new(spec) do |pkg|
17
+ end
18
+ CUKE_RESULTS = 'results.html'
19
+ CLEAN << CUKE_RESULTS
20
+ desc 'Run features'
21
+ Cucumber::Rake::Task.new(:features) do |t|
22
+ opts = "features --format html -o #{CUKE_RESULTS} --format progress -x"
23
+ opts += " --tags #{ENV['TAGS']}" if ENV['TAGS']
24
+ t.cucumber_opts = opts
25
+ t.fork = false
26
+ end
27
+
28
+ desc 'Run features tagged as work-in-progress (@wip)'
29
+ Cucumber::Rake::Task.new('features:wip') do |t|
30
+ tag_opts = ' --tags ~@pending'
31
+ tag_opts = ' --tags @wip'
32
+ t.cucumber_opts = "features --format html -o #{CUKE_RESULTS} --format pretty -x -s#{tag_opts}"
33
+ t.fork = false
34
+ end
35
+
36
+ task :cucumber => :features
37
+ task 'cucumber:wip' => 'features:wip'
38
+ task :wip => 'features:wip'
39
+ require 'rake/testtask'
40
+ Rake::TestTask.new do |t|
41
+ t.libs << "test"
42
+ t.test_files = FileList['test/*_test.rb']
43
+ end
44
+
45
+ task :default => [:test,:features]
data/bin/mtncd ADDED
@@ -0,0 +1,300 @@
1
+ #!/usr/bin/env ruby
2
+ # encoding
3
+ require 'gli'
4
+ begin # XXX: Remove this begin/rescue before distributing your app
5
+ require 'mtncd'
6
+ require 'yaml'
7
+ require 'securerandom'
8
+ require 'serfx'
9
+ require 'resque'
10
+ require 'msgpack'
11
+ require 'awesome_print'
12
+ require 'redis'
13
+ require 'open3'
14
+
15
+ rescue LoadError
16
+ STDERR.puts "In development, you need to use `bundle exec bin/mtncd` to run your app"
17
+ STDERR.puts "At install-time, RubyGems will make sure lib, etc. are in the load path"
18
+ STDERR.puts "Feel free to remove this message from bin/mtncd now"
19
+ exit 64
20
+ end
21
+
22
+ include GLI::App
23
+
24
+ program_desc 'Helper tools for controlling MTN CICD pipeline'
25
+
26
+ version Mtncd::VERSION
27
+
28
+ subcommand_option_handling :normal
29
+ arguments :strict
30
+
31
+ desc 'start or stop a deployment'
32
+ command :deploy do |deploy|
33
+
34
+ deploy.desc "starts a deployment"
35
+ deploy.command :start do |start|
36
+
37
+ start.desc 'deploy starting with environment'
38
+ start.default_value 'integration'
39
+ start.flag :env, :must_match => {
40
+ 'integration' => :integ,
41
+ 'staging' => :stage,
42
+ 'prod' => :prod
43
+ }
44
+
45
+ start.desc 'use deployment id'
46
+ start.default_value SecureRandom.uuid
47
+ start.flag :id
48
+
49
+ start.desc 'local or global cluster command'
50
+ start.default_value 'global'
51
+ start.flag :cluster, :must_match => {
52
+ 'global' => :global,
53
+ 'local' => :local
54
+ }
55
+
56
+ start.desc 'regex matching shipcodes to exclude from a deploy (overrides config file)'
57
+ start.flag :exclude
58
+
59
+ start.desc 'comma-separated list of ship codes'
60
+ start.flag :ships
61
+
62
+ start.desc 'single deployment (environment or ship)'
63
+ start.default_value false
64
+ start.switch :single
65
+
66
+ start.action do |global_options,options,args|
67
+ if $config['role'] == 'sled' && options[:cluster] == :global
68
+ raise "global commands are only available on central or infra nodes"
69
+ end
70
+
71
+ if $config['role'] == 'central' && options[:cluster] == :local
72
+ raise "local commands are only available on infra or sled nodes"
73
+ end
74
+
75
+ event_options_hash = {
76
+ 'id' => "#{options[:id]}",
77
+ 'single' => options[:single],
78
+ }
79
+ event_options_hash['exclusion'] = options[:exclude].nil? ? $config['default_exclude'] : options[:exclude]
80
+ event_options_hash['env'] = options[:env] unless options[:env].nil?
81
+ event_options_hash['shipcodes'] = options[:ships].split(",") unless options[:ships].nil?
82
+
83
+ serf_options_hash = {
84
+ 'ip' => $config['system']['serf'][options[:cluster]]['ip'],
85
+ 'port' => $config['system']['serf'][options[:cluster]]['port'],
86
+ 'auth' => $config['system']['serf'][options[:cluster]]['auth'],
87
+ 'event' => $config['deploy'][options[:cluster]]['start']
88
+ }
89
+
90
+ begin
91
+ Serfx.connect(host: serf_options_hash['ip'], port: serf_options_hash['port'], authkey: serf_options_hash['auth']) do |conn|
92
+ resp = conn.event(serf_options_hash['event'], event_options_hash.to_msgpack, false)
93
+ puts "deploy start success: #{resp.body}"
94
+ end
95
+ rescue Serfx::RPCError => e
96
+ raise "Error running 'deploy start' : #{e.message}"
97
+ end
98
+ end
99
+ end
100
+
101
+ deploy.desc "stops a deployment"
102
+ deploy.command :stop do |stop|
103
+ stop.desc 'use deployment id'
104
+ stop.flag :id, :required => true
105
+
106
+ stop.desc 'local or global cluster command'
107
+ stop.default_value 'global'
108
+ stop.flag :cluster, :must_match => {
109
+ "global" => :global,
110
+ "local" => :local
111
+ }
112
+
113
+ stop.action do |global_options,options,args|
114
+ if $config['role'] == 'sled' && options[:cluster] == :global
115
+ raise "global commands are only available on central or infra nodes"
116
+ end
117
+
118
+ if $config['role'] == 'central' && options[:cluster] == :local
119
+ raise "local commands are only available on infra or sled nodes"
120
+ end
121
+
122
+ event_options_hash = {
123
+ 'id' => "#{options[:id]}"
124
+ }
125
+
126
+ serf_options_hash = {
127
+ 'ip' => $config['system']['serf'][options[:cluster]]['ip'],
128
+ 'port' => $config['system']['serf'][options[:cluster]]['port'],
129
+ 'auth' => $config['system']['serf'][options[:cluster]]['auth'],
130
+ 'event' => $config['deploy'][options[:cluster]]['stop']
131
+ }
132
+
133
+ begin
134
+ Serfx.connect(host: serf_options_hash['ip'], port: serf_options_hash['port'], authkey: serf_options_hash['auth']) do |conn|
135
+ resp = conn.event(serf_options_hash['event'], event_options_hash.to_msgpack, false)
136
+ puts "deploy stop success: #{resp.body}"
137
+ end
138
+ rescue Serfx::RPCError => e
139
+ raise "Error running 'deploy stop' : #{e.message}"
140
+ end
141
+ end
142
+ end
143
+
144
+ deploy.desc "checks the status of a deployment"
145
+ deploy.command :status do |status|
146
+ status.action do |global_options,options,args|
147
+ puts "not yet implemented"
148
+ end
149
+ end
150
+
151
+ end
152
+
153
+ desc 'cluster status'
154
+ command :status do |status|
155
+ status.desc 'local or global cluster'
156
+ status.default_value 'global'
157
+ status.flag :cluster, :must_match => {
158
+ 'global' => :global,
159
+ 'local' => :local
160
+ }
161
+
162
+ status.action do |global_options,options,args|
163
+ if $config['role'] == 'sled' && options[:cluster] == :global
164
+ raise "global status is only available on central or infra nodes"
165
+ end
166
+
167
+ if $config['role'] == 'central' && options[:cluster] == :local
168
+ raise "local status is only available on infra or sled nodes"
169
+ end
170
+
171
+ serf_options_hash = {
172
+ 'ip' => $config['system']['serf'][options[:cluster]]['ip'],
173
+ 'port' => $config['system']['serf'][options[:cluster]]['port'],
174
+ 'auth' => $config['system']['serf'][options[:cluster]]['auth']
175
+ }
176
+
177
+ command_string = serf_options_hash['auth'].nil? ? "serf members -rpc-addr=#{serf_options_hash['ip']}:#{serf_options_hash['port']}" : "serf members -rpc-addr=#{serf_options_hash['ip']}:#{serf_options_hash['port']} -rpc-auth=#{serf_options_hash['auth']}"
178
+
179
+ stdin, stdout, stderr, wait_thr = Open3.popen3(command_string)
180
+ if wait_thr.value == 0
181
+ puts stdout.read
182
+ else
183
+ puts "local failed: #{stdout.read}"
184
+ end
185
+ end
186
+ end
187
+
188
+
189
+ desc 'Status of pipeline components on this particular machine'
190
+ command :system do |system|
191
+ system.action do |global_options,options,args|
192
+ success = true
193
+ # check redis
194
+ result = "OK"
195
+ begin
196
+ redis = Redis.new(:host => $config['system']['redis']['ip'], :port => $config['system']['redis']['port'])
197
+ rescue
198
+ result = "\033[31mFAIL\033[0m"
199
+ success = false
200
+ end
201
+ puts "Redis - Connected to #{$config['system']['redis']['ip']}:#{$config['system']['redis']['port']} - [#{result}]"
202
+
203
+ # check resque
204
+ Resque.redis = "#{$config['system']['redis']['ip']}:#{$config['system']['redis']['port']}"
205
+ result = (Resque.workers.count == $config['system']['resque']['workers']) ? "OK" : "\033[31mFAIL\033[0m"
206
+ success = Resque.workers.count == $config['system']['resque']['workers'] unless success == false
207
+ puts "Resque - Should have #{$config['system']['resque']['workers']} workers, running #{Resque.workers.count} workers - [#{result}]"
208
+
209
+ # check serf
210
+ if $config['role'] != 'central'
211
+ begin
212
+ Serfx.connect(host: $config['system']['serf']['local']['ip'], port: $config['system']['serf']['local']['port'], authkey:$config['system']['serf']['local']['auth']) do |conn|
213
+ result = (conn.members.body['Members'].length > 1) ? "OK" : "\033[31mFAIL\033[0m"
214
+ end
215
+ rescue Serfx::RPCError => e
216
+ result = "\033[31mFAIL\033[0m"
217
+ success = false
218
+ end
219
+
220
+ puts "Serf Local Cluster - connected and has more than one member - [#{result}]"
221
+ end
222
+
223
+ if $config['role'] != 'sled'
224
+ begin
225
+ Serfx.connect(host: $config['system']['serf']['global']['ip'], port: $config['system']['serf']['global']['port'], authkey:$config['system']['serf']['global']['auth']) do |conn|
226
+ result = (conn.members.body['Members'].length > 1) ? "OK" : "\033[31mFAIL\033[0m"
227
+ end
228
+ rescue Serfx::RPCError => e
229
+ result = "\033[31mFAIL\033[0m"
230
+ success = false
231
+ end
232
+
233
+ puts "Serf Global Cluster - connected and has more than one member - [#{result}]"
234
+ end
235
+
236
+ raise "Pipeline node #{$config['node']} is likely unstable" unless success == true
237
+ end
238
+ end
239
+
240
+ pre do |global,command,options,args|
241
+ $config = nil
242
+ begin
243
+ $config = YAML.load_file(File.join(Dir.home, '.mtncdconf'))
244
+ rescue
245
+ raise "Missing #{File.join(Dir.home, '.mtncdconf')}"
246
+ end
247
+
248
+ # check the file
249
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['node'].nil?
250
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['role'].nil?
251
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['deploy'].nil?
252
+
253
+ if $config['role'] == 'central' || $config['role'] == 'ship'
254
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['deploy']['global'].nil?
255
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['deploy']['global']['stop'].nil?
256
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['deploy']['global']['start'].nil?
257
+ end
258
+
259
+ if $config['role'] == 'ship' || $config['role'] == 'sled'
260
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['deploy']['local'].nil?
261
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['deploy']['local']['stop'].nil?
262
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['deploy']['local']['start'].nil?
263
+ end
264
+
265
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system'].nil?
266
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['resque'].nil?
267
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['resque']['workers'].nil?
268
+
269
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['redis'].nil?
270
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['redis']['ip'].nil?
271
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['redis']['port'].nil?
272
+
273
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['serf'].nil?
274
+ if $config['role'] == 'central' || $config['role'] == 'ship'
275
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['serf']['global'].nil?
276
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['serf']['global']['ip'].nil?
277
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['serf']['global']['port'].nil?
278
+ end
279
+ if $config['role'] == 'ship' || $config['role'] == 'sled'
280
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['serf']['local'].nil?
281
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['serf']['local']['ip'].nil?
282
+ raise "Invalid #{File.join(Dir.home, '.mtncdconf')}" if $config['system']['serf']['local']['port'].nil?
283
+ end
284
+
285
+ true
286
+ end
287
+
288
+ post do |global,command,options,args|
289
+ # Post logic here
290
+ # Use skips_post before a command to skip this
291
+ # block on that command only
292
+ end
293
+
294
+ on_error do |exception|
295
+ # Error logic here
296
+ # return false to skip default error handling
297
+ true
298
+ end
299
+
300
+ exit run(ARGV)
@@ -0,0 +1,8 @@
1
+ Feature: My bootstrapped app kinda works
2
+ In order to get going on coding my awesome app
3
+ I want to have aruba and cucumber setup
4
+ So I don't have to do it myself
5
+
6
+ Scenario: App just runs
7
+ When I get help for "mtncd"
8
+ Then the exit status should be 0
@@ -0,0 +1,6 @@
1
+ When /^I get help for "([^"]*)"$/ do |app_name|
2
+ @app_name = app_name
3
+ step %(I run `#{app_name} help`)
4
+ end
5
+
6
+ # Add more step definitions here
@@ -0,0 +1,15 @@
1
+ require 'aruba/cucumber'
2
+
3
+ ENV['PATH'] = "#{File.expand_path(File.dirname(__FILE__) + '/../../bin')}#{File::PATH_SEPARATOR}#{ENV['PATH']}"
4
+ LIB_DIR = File.join(File.expand_path(File.dirname(__FILE__)),'..','..','lib')
5
+
6
+ Before do
7
+ # Using "announce" causes massive warnings on 1.9.2
8
+ @puts = true
9
+ @original_rubylib = ENV['RUBYLIB']
10
+ ENV['RUBYLIB'] = LIB_DIR + File::PATH_SEPARATOR + ENV['RUBYLIB'].to_s
11
+ end
12
+
13
+ After do
14
+ ENV['RUBYLIB'] = @original_rubylib
15
+ end
@@ -0,0 +1,3 @@
1
+ module Mtncd
2
+ VERSION = '0.0.1'
3
+ end
data/lib/mtncd.rb ADDED
@@ -0,0 +1,4 @@
1
+ require 'mtncd/version.rb'
2
+
3
+ # Add requires for other files you add to your project here, so
4
+ # you just need to require this one file in your bin file
data/mtncd.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ # Ensure we require the local version and not one we might have installed already
2
+ require File.join([File.dirname(__FILE__),'lib','mtncd','version.rb'])
3
+ spec = Gem::Specification.new do |s|
4
+ s.name = 'mtncd'
5
+ s.version = Mtncd::VERSION
6
+ s.author = 'MTN Satellite Communications'
7
+ s.email = 'marat_garafutdinov@mtnsat.com'
8
+ s.homepage = 'https://github.com/mtnsat'
9
+ s.platform = Gem::Platform::RUBY
10
+ s.summary = 'A helper tool for MTN CICD pipeline'
11
+ s.files = `git ls-files`.split("
12
+ ")
13
+ s.require_paths << 'lib'
14
+ s.has_rdoc = true
15
+ s.extra_rdoc_files = ['README.rdoc','mtncd.rdoc']
16
+ s.rdoc_options << '--title' << 'mtncd' << '--main' << 'README.rdoc' << '-ri'
17
+ s.bindir = 'bin'
18
+ s.executables << 'mtncd'
19
+ s.add_dependency('resque', '1.25.2')
20
+ s.add_dependency('serfx', '0.0.8')
21
+ s.add_dependency('msgpack', '0.5.9')
22
+ s.add_dependency('awesome_print', '1.2.0')
23
+ s.add_dependency('redis', '3.1.0')
24
+ s.add_development_dependency('rake')
25
+ s.add_development_dependency('rdoc')
26
+ s.add_development_dependency('aruba')
27
+ s.add_runtime_dependency('gli','2.12.2')
28
+ end
data/mtncd.rdoc ADDED
@@ -0,0 +1,5 @@
1
+ = mtncd
2
+
3
+ Generate this with
4
+ mtncd rdoc
5
+ After you have described your command line interface
@@ -0,0 +1,14 @@
1
+ require 'test_helper'
2
+
3
+ class DefaultTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ end
7
+
8
+ def teardown
9
+ end
10
+
11
+ def test_the_truth
12
+ assert true
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ require 'test/unit'
2
+
3
+ # Add test libraries you want to use here, e.g. mocha
4
+
5
+ class Test::Unit::TestCase
6
+
7
+ # Add global extensions to the test case class here
8
+
9
+ end
metadata ADDED
@@ -0,0 +1,192 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mtncd
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - MTN Satellite Communications
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-11-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: resque
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.25.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.25.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: serfx
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.8
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 0.0.8
41
+ - !ruby/object:Gem::Dependency
42
+ name: msgpack
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.5.9
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.5.9
55
+ - !ruby/object:Gem::Dependency
56
+ name: awesome_print
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.2.0
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 1.2.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: redis
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 3.1.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 3.1.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ! '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ! '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rdoc
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: aruba
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ! '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: gli
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '='
130
+ - !ruby/object:Gem::Version
131
+ version: 2.12.2
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '='
137
+ - !ruby/object:Gem::Version
138
+ version: 2.12.2
139
+ description:
140
+ email: marat_garafutdinov@mtnsat.com
141
+ executables:
142
+ - mtncd
143
+ extensions: []
144
+ extra_rdoc_files:
145
+ - README.rdoc
146
+ - mtncd.rdoc
147
+ files:
148
+ - Gemfile
149
+ - Gemfile.lock
150
+ - README.md
151
+ - README.rdoc
152
+ - Rakefile
153
+ - bin/mtncd
154
+ - features/mtncd.feature
155
+ - features/step_definitions/mtncd_steps.rb
156
+ - features/support/env.rb
157
+ - lib/mtncd.rb
158
+ - lib/mtncd/version.rb
159
+ - mtncd.gemspec
160
+ - mtncd.rdoc
161
+ - test/default_test.rb
162
+ - test/test_helper.rb
163
+ homepage: https://github.com/mtnsat
164
+ licenses: []
165
+ metadata: {}
166
+ post_install_message:
167
+ rdoc_options:
168
+ - --title
169
+ - mtncd
170
+ - --main
171
+ - README.rdoc
172
+ - -ri
173
+ require_paths:
174
+ - lib
175
+ - lib
176
+ required_ruby_version: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ! '>='
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
181
+ required_rubygems_version: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ! '>='
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ requirements: []
187
+ rubyforge_project:
188
+ rubygems_version: 2.2.2
189
+ signing_key:
190
+ specification_version: 4
191
+ summary: A helper tool for MTN CICD pipeline
192
+ test_files: []