kitchen-transport-docker 0.0.2

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4c863044af03ce03ba44c822709482d97677a0ca
4
+ data.tar.gz: 5cd54185f9119492dfbcc484b9dc4f3d3d1eda88
5
+ SHA512:
6
+ metadata.gz: 80c3a29e31e77bb6787aac634087963c138bf2aa713dae1957e2c4983eb2f805f715693f2278b24f5904709ed07062a3e1cc1e262104442d5c1f2b9e326d0977
7
+ data.tar.gz: 959d4af052595fb1b26f2aab79dc8a0a14872c99c0c92229bcdb12b0644f410d65b708ad991e6316ab5cf6128543f48a0205d77a5e3c1ccf48cd087f7188b7f2
@@ -0,0 +1,3 @@
1
+ Gemfile.lock
2
+ *.swp
3
+ *.swo
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gemspec
@@ -0,0 +1,17 @@
1
+ kitchen-transport-docker
2
+ ============
3
+
4
+ If you run test-kitchen using docker, speed up your tests by using docker cp instead of an SSH-based transport.
5
+
6
+ kitchen-transport-docker uses the kitchen ssh transport for everything but uploading files. For that, it uses docker cp.
7
+
8
+
9
+ Quick Start
10
+ -----------
11
+
12
+ Run `chef gem install kitchen-transport-docker` and then set your transport to `dockercp`:
13
+
14
+ ```
15
+ transport:
16
+ name: dockercp
17
+ ```
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env rake
2
+
3
+ require 'bundler/gem_tasks'
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'kitchen-transport-docker/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'kitchen-transport-docker'
8
+ spec.version = KitchenTransportDocker::VERSION
9
+ spec.authors = ['Dale Hamel']
10
+ spec.email = ['dale.hamel@srvthe.net']
11
+ spec.description = %q{Faster file transfer with docker copy}
12
+ spec.summary = spec.description
13
+ spec.homepage = 'https://github.com/dalehamel/kitchen-transport-docker'
14
+ spec.license = 'Apache 2.0'
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = []
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.add_dependency 'test-kitchen', '>= 1.0.0'
22
+
23
+ spec.add_development_dependency 'bundler'
24
+ spec.add_development_dependency 'rake'
25
+ end
@@ -0,0 +1,3 @@
1
+ class KitchenTransportDocker
2
+ autoload :VERSION, 'kitchen-transport-docker/version'
3
+ end
@@ -0,0 +1,3 @@
1
+ class KitchenTransportDocker
2
+ VERSION = '0.0.2'
3
+ end
@@ -0,0 +1,49 @@
1
+ require 'benchmark'
2
+ require 'json'
3
+
4
+ require 'kitchen/transport/ssh'
5
+
6
+ # Inspired by kitchen-sync
7
+ module Kitchen
8
+ module Transport
9
+ class Dockercp < Ssh
10
+
11
+ # Copy-pasta from Ssh#create_new_connection because I need the SFTP
12
+ # connection class.
13
+ # Tracked in https://github.com/test-kitchen/test-kitchen/pull/726
14
+ def create_new_connection(options, &block)
15
+ if @connection
16
+ logger.debug("[SSH] shutting previous connection #{@connection}")
17
+ @connection.close
18
+ end
19
+
20
+ @connection_options = options
21
+ @connection = self.class::Connection.new(options.merge(instance: instance), &block)
22
+ end
23
+
24
+ class Connection < Ssh::Connection
25
+
26
+ def initialize(opts)
27
+ @instance = opts.delete(:instance)
28
+ @container_name = @instance.driver.send(:config)[:instance_name]
29
+ super
30
+ end
31
+
32
+ def upload(locals, remote)
33
+ puts "Upload"
34
+ Array(locals).each do |local|
35
+ full_remote = File.join(remote, File.basename(local))
36
+ options = {
37
+ recursive: File.directory?(local),
38
+ purge: File.basename(local) != 'cache',
39
+ }
40
+ time = Benchmark.realtime do
41
+ system("docker cp #{local} #{@container_name}:#{full_remote}")
42
+ end
43
+ logger.info("[Docker CP] Time taken to upload #{local} to #{@container_name}:#{full_remote}: %.2f sec" % time)
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
metadata ADDED
@@ -0,0 +1,94 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kitchen-transport-docker
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Dale Hamel
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-07-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: test-kitchen
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: Faster file transfer with docker copy
56
+ email:
57
+ - dale.hamel@srvthe.net
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - Gemfile
64
+ - README.md
65
+ - Rakefile
66
+ - kitchen-transport-docker.gemspec
67
+ - lib/kitchen-transport-docker.rb
68
+ - lib/kitchen-transport-docker/version.rb
69
+ - lib/kitchen/transport/dockercp.rb
70
+ homepage: https://github.com/dalehamel/kitchen-transport-docker
71
+ licenses:
72
+ - Apache 2.0
73
+ metadata: {}
74
+ post_install_message:
75
+ rdoc_options: []
76
+ require_paths:
77
+ - lib
78
+ required_ruby_version: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ requirements: []
89
+ rubyforge_project:
90
+ rubygems_version: 2.5.1
91
+ signing_key:
92
+ specification_version: 4
93
+ summary: Faster file transfer with docker copy
94
+ test_files: []