taps2 0.5.5 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
data/spec/base.rb CHANGED
@@ -5,13 +5,13 @@ require 'mocha/api'
5
5
  require 'rack/test'
6
6
  require 'tempfile'
7
7
 
8
- $:.unshift File.dirname(__FILE__) + "/../lib"
8
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
9
9
 
10
10
  class Bacon::Context
11
11
  include Mocha::API
12
12
  include Rack::Test::Methods
13
13
 
14
- alias_method :old_it, :it
14
+ alias old_it it
15
15
  def it(description)
16
16
  old_it(description) do
17
17
  mocha_setup
@@ -2,22 +2,22 @@ require File.dirname(__FILE__) + '/base'
2
2
  require 'taps/utils'
3
3
 
4
4
  describe Taps::Chunksize do
5
- it "scales chunksize down slowly when the time delta of the block is just over a second" do
5
+ it 'scales chunksize down slowly when the time delta of the block is just over a second' do
6
6
  Time.stubs(:now).returns(10.0).returns(11.5)
7
7
  Taps::Utils.calculate_chunksize(1000) { |c| }.should == 900
8
8
  end
9
9
 
10
- it "scales chunksize down fast when the time delta of the block is over 3 seconds" do
10
+ it 'scales chunksize down fast when the time delta of the block is over 3 seconds' do
11
11
  Time.stubs(:now).returns(10.0).returns(15.0)
12
12
  Taps::Utils.calculate_chunksize(3000) { |c| }.should == 1000
13
13
  end
14
14
 
15
- it "scales up chunksize fast when the time delta of the block is under 0.8 seconds" do
15
+ it 'scales up chunksize fast when the time delta of the block is under 0.8 seconds' do
16
16
  Time.stubs(:now).returns(10.0).returns(10.7)
17
17
  Taps::Utils.calculate_chunksize(1000) { |c| }.should == 2000
18
18
  end
19
19
 
20
- it "scales up chunksize slow when the time delta of the block is between 0.8 and 1.1 seconds" do
20
+ it 'scales up chunksize slow when the time delta of the block is between 0.8 and 1.1 seconds' do
21
21
  Time.stubs(:now).returns(10.0).returns(10.8)
22
22
  Taps::Utils.calculate_chunksize(1000) { |c| }.should == 1100
23
23
 
@@ -25,14 +25,14 @@ describe Taps::Chunksize do
25
25
  Taps::Utils.calculate_chunksize(1000) { |c| }.should == 1100
26
26
  end
27
27
 
28
- it "will reset the chunksize to a small value if we got a broken pipe exception" do
28
+ it 'will reset the chunksize to a small value if we got a broken pipe exception' do
29
29
  Taps::Utils.calculate_chunksize(1000) do |c|
30
30
  raise Errno::EPIPE if c.chunksize == 1000
31
31
  c.chunksize.should == 10
32
32
  end.should == 10
33
33
  end
34
34
 
35
- it "will reset the chunksize to a small value if we got a broken pipe exception a second time" do
35
+ it 'will reset the chunksize to a small value if we got a broken pipe exception a second time' do
36
36
  Taps::Utils.calculate_chunksize(1000) do |c|
37
37
  raise Errno::EPIPE if c.chunksize == 1000 || c.chunksize == 10
38
38
  c.chunksize.should == 1
data/spec/cli_spec.rb CHANGED
@@ -2,15 +2,15 @@ require File.dirname(__FILE__) + '/base'
2
2
  require 'taps/cli'
3
3
 
4
4
  describe Taps::Cli do
5
- it "translates a list of tables into a regex that can be used in table_filter" do
6
- @cli = Taps::Cli.new(["-t", "mytable1,logs", "sqlite://tmp.db", "http://x:y@localhost:5000"])
5
+ it 'translates a list of tables into a regex that can be used in table_filter' do
6
+ @cli = Taps::Cli.new(['-t', 'mytable1,logs', 'sqlite://tmp.db', 'http://x:y@localhost:5000'])
7
7
  opts = @cli.clientoptparse(:pull)
8
- opts[:table_filter].should == "(^mytable1$|^logs$)"
8
+ opts[:table_filter].should == '(^mytable1$|^logs$)'
9
9
  end
10
10
 
11
- it "translates a list of tables to exclude into a regex that can be used in table_filter" do
12
- @cli = Taps::Cli.new(["-e", "mytable1,logs", "sqlite://tmp.db", "http://x:y@localhost:5000"])
11
+ it 'translates a list of tables to exclude into a regex that can be used in table_filter' do
12
+ @cli = Taps::Cli.new(['-e', 'mytable1,logs', 'sqlite://tmp.db', 'http://x:y@localhost:5000'])
13
13
  opts = @cli.clientoptparse(:pull)
14
- opts[:exclude_tables].should == ['mytable1','logs']
14
+ opts[:exclude_tables].should == %w[mytable1 logs]
15
15
  end
16
16
  end
@@ -6,15 +6,15 @@ describe Taps::DataStream do
6
6
  @db = mock('db')
7
7
  end
8
8
 
9
- it "increments the offset" do
10
- stream = Taps::DataStream.new(@db, :table_name => 'test_table', :chunksize => 100)
9
+ it 'increments the offset' do
10
+ stream = Taps::DataStream.new(@db, table_name: 'test_table', chunksize: 100)
11
11
  stream.state[:offset].should == 0
12
12
  stream.increment(100)
13
13
  stream.state[:offset].should == 100
14
14
  end
15
15
 
16
- it "marks the stream complete if no rows are fetched" do
17
- stream = Taps::DataStream.new(@db, :table_name => 'test_table', :chunksize => 100)
16
+ it 'marks the stream complete if no rows are fetched' do
17
+ stream = Taps::DataStream.new(@db, table_name: 'test_table', chunksize: 100)
18
18
  stream.stubs(:fetch_rows).returns({})
19
19
  stream.complete?.should.be.false
20
20
  stream.fetch
@@ -6,37 +6,36 @@ describe Taps::Operation do
6
6
  @op = Taps::Operation.new('dummy://localhost', 'http://x:y@localhost:5000')
7
7
  end
8
8
 
9
- it "returns an array of tables that match the regex table_filter" do
10
- @op = Taps::Operation.new('dummy://localhost', 'http://x:y@localhost:5000', :table_filter => 'abc')
11
- @op.apply_table_filter(['abc', 'def']).should == ['abc']
9
+ it 'returns an array of tables that match the regex table_filter' do
10
+ @op = Taps::Operation.new('dummy://localhost', 'http://x:y@localhost:5000', table_filter: 'abc')
11
+ @op.apply_table_filter(%w[abc def]).should == ['abc']
12
12
  end
13
13
 
14
- it "returns a hash of tables that match the regex table_filter" do
15
- @op = Taps::Operation.new('dummy://localhost', 'http://x:y@localhost:5000', :table_filter => 'abc')
16
- @op.apply_table_filter({ 'abc' => 1, 'def' => 2 }).should == { 'abc' => 1 }
14
+ it 'returns a hash of tables that match the regex table_filter' do
15
+ @op = Taps::Operation.new('dummy://localhost', 'http://x:y@localhost:5000', table_filter: 'abc')
16
+ @op.apply_table_filter('abc' => 1, 'def' => 2).should == { 'abc' => 1 }
17
17
  end
18
18
 
19
- it "returns an array of tables without the exclude_tables tables" do
20
- @op = Taps::Operation.new('dummy://localhost', 'http://x:y@localhost:5000', :exclude_tables => ['abc', 'ghi', 'jkl'])
21
- @op.apply_table_filter(['abc', 'def', 'ghi', 'jkl', 'mno']).should == ['def', 'mno']
19
+ it 'returns an array of tables without the exclude_tables tables' do
20
+ @op = Taps::Operation.new('dummy://localhost', 'http://x:y@localhost:5000', exclude_tables: %w[abc ghi jkl])
21
+ @op.apply_table_filter(%w[abc def ghi jkl mno]).should == %w[def mno]
22
22
  end
23
23
 
24
- it "returns a hash of tables without the exclude_tables tables" do
25
- @op = Taps::Operation.new('dummy://localhost', 'http://x:y@localhost:5000', :exclude_tables => ['abc', 'ghi', 'jkl'])
26
- @op.apply_table_filter({ 'abc' => 1, 'def' => 2, 'ghi' => 3, 'jkl' => 4, 'mno' => 5 }).should == { 'def' => 2, 'mno' => 5 }
24
+ it 'returns a hash of tables without the exclude_tables tables' do
25
+ @op = Taps::Operation.new('dummy://localhost', 'http://x:y@localhost:5000', exclude_tables: %w[abc ghi jkl])
26
+ @op.apply_table_filter('abc' => 1, 'def' => 2, 'ghi' => 3, 'jkl' => 4, 'mno' => 5).should == { 'def' => 2, 'mno' => 5 }
27
27
  end
28
28
 
29
29
  it "masks a url's password" do
30
- @op.safe_url("mysql://root:password@localhost/mydb").should == "mysql://root:[hidden]@localhost/mydb"
30
+ @op.safe_url('mysql://root:password@localhost/mydb').should == 'mysql://root:[hidden]@localhost/mydb'
31
31
  end
32
32
 
33
- it "returns http headers with compression enabled" do
34
- @op.http_headers.should == { :taps_version => Taps.version, :accept_encoding => "gzip, deflate" }
33
+ it 'returns http headers with compression enabled' do
34
+ @op.http_headers.should == { taps_version: Taps.version, accept_encoding: 'gzip, deflate' }
35
35
  end
36
36
 
37
- it "returns http headers with compression disabled" do
37
+ it 'returns http headers with compression disabled' do
38
38
  @op.stubs(:compression_disabled?).returns(true)
39
- @op.http_headers.should == { :taps_version => Taps.version, :accept_encoding => "" }
39
+ @op.http_headers.should == { taps_version: Taps.version, accept_encoding: '' }
40
40
  end
41
-
42
41
  end
data/spec/server_spec.rb CHANGED
@@ -13,26 +13,26 @@ describe Taps::Server do
13
13
  Taps::Config.password = 'tpass'
14
14
 
15
15
  @app = Taps::Server
16
- @auth_header = "Basic " + ["taps:tpass"].pack("m*")
16
+ @auth_header = 'Basic ' + ['taps:tpass'].pack('m*')
17
17
  end
18
18
 
19
- it "asks for http basic authentication" do
19
+ it 'asks for http basic authentication' do
20
20
  get '/'
21
21
  last_response.status.should == 401
22
22
  end
23
23
 
24
- it "verifies the client taps version" do
25
- get('/', { }, { 'HTTP_AUTHORIZATION' => @auth_header, 'HTTP_TAPS_VERSION' => Taps.version })
24
+ it 'verifies the client taps version' do
25
+ get('/', {}, 'HTTP_AUTHORIZATION' => @auth_header, 'HTTP_TAPS_VERSION' => Taps.version)
26
26
  last_response.status.should == 200
27
27
  end
28
28
 
29
29
  it "yells loudly if the client taps version doesn't match" do
30
- get('/', { }, { 'HTTP_AUTHORIZATION' => @auth_header, 'HTTP_TAPS_VERSION' => '0.0.1' })
30
+ get('/', {}, 'HTTP_AUTHORIZATION' => @auth_header, 'HTTP_TAPS_VERSION' => '0.0.1')
31
31
  last_response.status.should == 417
32
32
  end
33
33
 
34
- it "allows healthcheck to be accessed w/o HTTP_TAPS_VERSION" do
35
- get('/health', { }, { 'HTTP_AUTHORIZATION' => @auth_header })
34
+ it 'allows healthcheck to be accessed w/o HTTP_TAPS_VERSION' do
35
+ get('/health', {}, 'HTTP_AUTHORIZATION' => @auth_header)
36
36
  last_response.status.should == 200
37
37
  end
38
38
  end
data/spec/utils_spec.rb CHANGED
@@ -2,37 +2,37 @@ require File.dirname(__FILE__) + '/base'
2
2
  require 'taps/utils'
3
3
 
4
4
  describe Taps::Utils do
5
- it "generates a checksum using crc32" do
6
- Taps::Utils.checksum("hello world").should == Zlib.crc32("hello world")
5
+ it 'generates a checksum using crc32' do
6
+ Taps::Utils.checksum('hello world').should == Zlib.crc32('hello world')
7
7
  end
8
8
 
9
- it "formats a data hash into one hash that contains an array of headers and an array of array of data" do
10
- first_row = { :x => 1, :y => 1 }
11
- first_row.stubs(:keys).returns([:x, :y])
12
- Taps::Utils.format_data([ first_row, { :x => 2, :y => 2 } ]).should == { :header => [ :x, :y ], :data => [ [1, 1], [2, 2] ] }
9
+ it 'formats a data hash into one hash that contains an array of headers and an array of array of data' do
10
+ first_row = { x: 1, y: 1 }
11
+ first_row.stubs(:keys).returns(%i[x y])
12
+ Taps::Utils.format_data([first_row, { x: 2, y: 2 }]).should == { header: %i[x y], data: [[1, 1], [2, 2]] }
13
13
  end
14
14
 
15
- it "enforces length limitations on columns" do
16
- data = [ { :a => "aaabbbccc" } ]
17
- schema = [ [ :a, { :db_type => "varchar(3)" }]]
18
- lambda { Taps::Utils.format_data(data, :schema => schema) }.should.raise(Taps::InvalidData)
15
+ it 'enforces length limitations on columns' do
16
+ data = [{ a: 'aaabbbccc' }]
17
+ schema = [[:a, { db_type: 'varchar(3)' }]]
18
+ -> { Taps::Utils.format_data(data, schema: schema) }.should.raise(Taps::InvalidData)
19
19
  end
20
20
 
21
- it "returns a list of columns that are text fields if the database is mysql" do
22
- @db = mock("db", :url => "mysql://localhost/mydb")
21
+ it 'returns a list of columns that are text fields if the database is mysql' do
22
+ @db = mock('db', url: 'mysql://localhost/mydb')
23
23
  @db.stubs(:schema).with(:mytable).returns([
24
- [:id, { :db_type => "int" }],
25
- [:mytext, { :db_type => "text" }]
26
- ])
24
+ [:id, { db_type: 'int' }],
25
+ [:mytext, { db_type: 'text' }]
26
+ ])
27
27
  Taps::Utils.incorrect_blobs(@db, :mytable).should == [:mytext]
28
28
  end
29
29
 
30
- it "rejects a multiple-column primary key as a single integer primary key" do
31
- @db = mock("db")
30
+ it 'rejects a multiple-column primary key as a single integer primary key' do
31
+ @db = mock('db')
32
32
  @db.stubs(:schema).with(:pktable.identifier).returns([
33
- [:id1, { :primary_key => true, :type => :integer }],
34
- [:id2, { :primary_key => true, :type => :string }]
35
- ])
33
+ [:id1, { primary_key: true, type: :integer }],
34
+ [:id2, { primary_key: true, type: :string }]
35
+ ])
36
36
  Taps::Utils.single_integer_primary_key(@db, :pktable).should.be.false
37
37
  end
38
38
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: taps2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ricardo Chimal, Jr.
@@ -9,8 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-04-07 00:00:00.000000000 Z
12
+ date: 2017-11-15 00:00:00.000000000 Z
13
13
  dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: extlib
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
14
28
  - !ruby/object:Gem::Dependency
15
29
  name: rack
16
30
  requirement: !ruby/object:Gem::Requirement
@@ -43,16 +57,16 @@ dependencies:
43
57
  name: sequel
44
58
  requirement: !ruby/object:Gem::Requirement
45
59
  requirements:
46
- - - ">="
60
+ - - "~>"
47
61
  - !ruby/object:Gem::Version
48
- version: 4.0.0
62
+ version: '4.0'
49
63
  type: :runtime
50
64
  prerelease: false
51
65
  version_requirements: !ruby/object:Gem::Requirement
52
66
  requirements:
53
- - - ">="
67
+ - - "~>"
54
68
  - !ruby/object:Gem::Version
55
- version: 4.0.0
69
+ version: '4.0'
56
70
  - !ruby/object:Gem::Dependency
57
71
  name: sinatra
58
72
  requirement: !ruby/object:Gem::Requirement
@@ -68,13 +82,13 @@ dependencies:
68
82
  - !ruby/object:Gem::Version
69
83
  version: 1.4.4
70
84
  - !ruby/object:Gem::Dependency
71
- name: extlib
85
+ name: bacon
72
86
  requirement: !ruby/object:Gem::Requirement
73
87
  requirements:
74
88
  - - ">="
75
89
  - !ruby/object:Gem::Version
76
90
  version: '0'
77
- type: :runtime
91
+ type: :development
78
92
  prerelease: false
79
93
  version_requirements: !ruby/object:Gem::Requirement
80
94
  requirements:
@@ -82,21 +96,21 @@ dependencies:
82
96
  - !ruby/object:Gem::Version
83
97
  version: '0'
84
98
  - !ruby/object:Gem::Dependency
85
- name: sqlite3
99
+ name: mocha
86
100
  requirement: !ruby/object:Gem::Requirement
87
101
  requirements:
88
102
  - - ">="
89
103
  - !ruby/object:Gem::Version
90
- version: 1.3.8
104
+ version: 1.2.1
91
105
  type: :development
92
106
  prerelease: false
93
107
  version_requirements: !ruby/object:Gem::Requirement
94
108
  requirements:
95
109
  - - ">="
96
110
  - !ruby/object:Gem::Version
97
- version: 1.3.8
111
+ version: 1.2.1
98
112
  - !ruby/object:Gem::Dependency
99
- name: bacon
113
+ name: rack-test
100
114
  requirement: !ruby/object:Gem::Requirement
101
115
  requirements:
102
116
  - - ">="
@@ -110,21 +124,7 @@ dependencies:
110
124
  - !ruby/object:Gem::Version
111
125
  version: '0'
112
126
  - !ruby/object:Gem::Dependency
113
- name: mocha
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: 1.2.1
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- version: 1.2.1
126
- - !ruby/object:Gem::Dependency
127
- name: rack-test
127
+ name: rake
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
130
  - - ">="
@@ -138,7 +138,7 @@ dependencies:
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  - !ruby/object:Gem::Dependency
141
- name: rake
141
+ name: simplecov
142
142
  requirement: !ruby/object:Gem::Requirement
143
143
  requirements:
144
144
  - - ">="
@@ -152,35 +152,34 @@ dependencies:
152
152
  - !ruby/object:Gem::Version
153
153
  version: '0'
154
154
  - !ruby/object:Gem::Dependency
155
- name: simplecov
155
+ name: sqlite3
156
156
  requirement: !ruby/object:Gem::Requirement
157
157
  requirements:
158
158
  - - ">="
159
159
  - !ruby/object:Gem::Version
160
- version: '0'
160
+ version: 1.3.8
161
161
  type: :development
162
162
  prerelease: false
163
163
  version_requirements: !ruby/object:Gem::Requirement
164
164
  requirements:
165
165
  - - ">="
166
166
  - !ruby/object:Gem::Version
167
- version: '0'
167
+ version: 1.3.8
168
168
  description: A simple database agnostic import/export app to transfer data to/from
169
169
  a remote database.
170
170
  email:
171
171
  - ricardo@heroku.com
172
172
  - joel@joelvanhorn.com
173
173
  executables:
174
- - taps
175
- - schema
174
+ - taps2
175
+ - schema2
176
176
  extensions: []
177
177
  extra_rdoc_files: []
178
178
  files:
179
- - README.rdoc
180
- - VERSION.yml
181
- - bin/schema
182
- - bin/schema.cmd
183
- - bin/taps
179
+ - README.md
180
+ - bin/schema2
181
+ - bin/schema2.cmd
182
+ - bin/taps2
184
183
  - lib/taps/chunksize.rb
185
184
  - lib/taps/cli.rb
186
185
  - lib/taps/config.rb
@@ -223,7 +222,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
223
222
  version: '0'
224
223
  requirements: []
225
224
  rubyforge_project:
226
- rubygems_version: 2.6.11
225
+ rubygems_version: 2.6.14
227
226
  signing_key:
228
227
  specification_version: 4
229
228
  summary: Simple database import/export app
data/VERSION.yml DELETED
@@ -1,5 +0,0 @@
1
- ---
2
- :build:
3
- :major: 0
4
- :minor: 5
5
- :patch: 5