td 0.11.5 → 0.11.6
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.
- checksums.yaml +5 -13
- data/ChangeLog +4 -0
- data/lib/td/command/import.rb +4 -0
- data/lib/td/updater.rb +37 -37
- data/lib/td/version.rb +1 -1
- data/spec/td/fixture/ca.cert +23 -0
- data/spec/td/fixture/server.cert +19 -0
- data/spec/td/fixture/server.key +15 -0
- data/spec/td/fixture/tmp.zip +0 -0
- data/spec/td/updater_spec.rb +176 -0
- data/td.gemspec +1 -1
- metadata +27 -19
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
ZjBiOWUwYjMwMWEwYTczODYyNjMxMTJiMWY2ODc0ZDEyNTVjYmQ4ZA==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fbc07ea58b09419ef7a3ba5dd850af222c8af299
|
4
|
+
data.tar.gz: db4fd8cfdece04ac1c94b3b68d8a642488c07be5
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
ZmZhYTYxNTg4NmZmNzczYjg0ZWM4ZmU5Y2E2MWIxYjE3N2Y0YmEyZmNjZjVj
|
11
|
-
YTE5NzFkMjY3NzA5YTM3MThhMTU2NjNhNTBlM2UxM2JmMzI5NTI=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ODBiOTk0ZmYzMzgyMDgxNDRkMDI0Njc0YmE5YTI1NTlmZDUwYzNiODk1M2Iw
|
14
|
-
MmE2ODk4N2E0MjIzNTRmY2I0ZDU2OWIwYWIxZjFkNmZiOTkxZTY0MTBkYzAz
|
15
|
-
MGVlNjE1MDJhMzRmNjk1OTMxYzVlNzRkOTFhMmQyNDNmYzIyZTc=
|
6
|
+
metadata.gz: cebcfe70d4474b64ae1b440981f9aee6c200f3b6b3e4b09c2dc1137faa7a2495e6f9e86ef8527181613c9d41af569d77ebf9091327d3e088e3e79bcfb95e7107
|
7
|
+
data.tar.gz: a261af1042634927563564043865d7e41e232c1bf048af3759025c5a46039fd64391b3d54900beb427371b93c3e6f19349194aa4246a14cc93ba3b17df1da2e0
|
data/ChangeLog
CHANGED
data/lib/td/command/import.rb
CHANGED
@@ -25,11 +25,13 @@ module Command
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def import_jar_version(op)
|
28
|
+
op.cmd_parse
|
28
29
|
version = find_version_file
|
29
30
|
puts "td-import-java #{File.open(version, 'r').read}"
|
30
31
|
end
|
31
32
|
|
32
33
|
def import_jar_update(op)
|
34
|
+
op.cmd_parse
|
33
35
|
check_n_update_jar(false)
|
34
36
|
end
|
35
37
|
|
@@ -233,7 +235,9 @@ module Command
|
|
233
235
|
end
|
234
236
|
|
235
237
|
sysprops << "-Dhttp.proxyHost=#{proxy_host}" if proxy_host
|
238
|
+
sysprops << "-Dhttps.proxyHost=#{ proxy_host}" if proxy_host
|
236
239
|
sysprops << "-Dhttp.proxyPort=#{proxy_port}" if proxy_port
|
240
|
+
sysprops << "-Dhttps.proxyPort=#{ proxy_port}" if proxy_port
|
237
241
|
end
|
238
242
|
|
239
243
|
#
|
data/lib/td/updater.rb
CHANGED
@@ -9,37 +9,38 @@ module Updater
|
|
9
9
|
# Toolbelt upgrade
|
10
10
|
#
|
11
11
|
|
12
|
-
|
12
|
+
module ModuleDefinition
|
13
|
+
def raise_error(message)
|
13
14
|
# TODO: Replace better Exception class
|
14
15
|
raise Command::UpdateError, message
|
15
16
|
end
|
16
17
|
|
17
18
|
# copied from TreasureData::Helpers to avoid load issue.
|
18
|
-
def
|
19
|
+
def home_directory
|
19
20
|
on_windows? ? ENV['USERPROFILE'].gsub("\\","/") : ENV['HOME']
|
20
21
|
end
|
21
22
|
|
22
|
-
def
|
23
|
+
def on_windows?
|
23
24
|
RUBY_PLATFORM =~ /mswin32|mingw32/
|
24
25
|
end
|
25
26
|
|
26
|
-
def
|
27
|
+
def on_mac?
|
27
28
|
RUBY_PLATFORM =~ /-darwin\d/
|
28
29
|
end
|
29
30
|
|
30
|
-
def
|
31
|
+
def updating_lock_path
|
31
32
|
File.join(home_directory, ".td", "updating")
|
32
33
|
end
|
33
34
|
|
34
|
-
def
|
35
|
+
def installed_client_path
|
35
36
|
File.expand_path("../../../../../..", __FILE__)
|
36
37
|
end
|
37
38
|
|
38
|
-
def
|
39
|
+
def updated_client_path
|
39
40
|
File.join(home_directory, ".td", "updated")
|
40
41
|
end
|
41
42
|
|
42
|
-
def
|
43
|
+
def latest_local_version
|
43
44
|
installed_version = client_version_from_path(installed_client_path)
|
44
45
|
updated_version = client_version_from_path(updated_client_path)
|
45
46
|
if compare_versions(updated_version, installed_version) > 0
|
@@ -49,7 +50,7 @@ module Updater
|
|
49
50
|
end
|
50
51
|
end
|
51
52
|
|
52
|
-
def
|
53
|
+
def get_client_version_file(path)
|
53
54
|
td_gems = Dir[File.join(path, "vendor/gems/td-*")]
|
54
55
|
td_gems.each { |td_gem|
|
55
56
|
if td_gem =~ /#{"#{Regexp.escape(path)}\/vendor\/gems\/td-\\d*.\\d*.\\d*"}/
|
@@ -59,7 +60,7 @@ module Updater
|
|
59
60
|
nil
|
60
61
|
end
|
61
62
|
|
62
|
-
def
|
63
|
+
def client_version_from_path(path)
|
63
64
|
if version_file = get_client_version_file(path)
|
64
65
|
File.read(version_file).match(/TOOLBELT_VERSION = '([^']+)'/)[1]
|
65
66
|
else
|
@@ -67,19 +68,19 @@ module Updater
|
|
67
68
|
end
|
68
69
|
end
|
69
70
|
|
70
|
-
def
|
71
|
+
def disable(message)
|
71
72
|
@disable = message
|
72
73
|
end
|
73
74
|
|
74
|
-
def
|
75
|
+
def disable?
|
75
76
|
!@disable.nil?
|
76
77
|
end
|
77
78
|
|
78
|
-
def
|
79
|
+
def disable_message
|
79
80
|
@disable
|
80
81
|
end
|
81
82
|
|
82
|
-
def
|
83
|
+
def wait_for_lock(path, wait_for = 5, check_every = 0.5)
|
83
84
|
start = Time.now.to_i
|
84
85
|
while File.exists?(path)
|
85
86
|
sleep check_every
|
@@ -96,7 +97,7 @@ module Updater
|
|
96
97
|
ret
|
97
98
|
end
|
98
99
|
|
99
|
-
def
|
100
|
+
def package_category
|
100
101
|
case
|
101
102
|
when on_windows?
|
102
103
|
'exe'
|
@@ -107,7 +108,7 @@ module Updater
|
|
107
108
|
end
|
108
109
|
end
|
109
110
|
|
110
|
-
def
|
111
|
+
def fetch(url)
|
111
112
|
require 'net/http'
|
112
113
|
require 'openssl'
|
113
114
|
|
@@ -118,8 +119,7 @@ module Updater
|
|
118
119
|
# So we use following code to avoid these issues.
|
119
120
|
uri = URI(url)
|
120
121
|
response =
|
121
|
-
if uri.scheme == 'https'
|
122
|
-
# NOTE: SSL is force off for communications over proxy
|
122
|
+
if uri.scheme == 'https'
|
123
123
|
http = http_class.new(uri.host, uri.port)
|
124
124
|
http.use_ssl = true
|
125
125
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
@@ -137,23 +137,19 @@ module Updater
|
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
140
|
-
def
|
140
|
+
def endpoint_root
|
141
141
|
ENV['TD_TOOLBELT_UPDATE_ROOT'] || "http://toolbelt.treasuredata.com"
|
142
142
|
end
|
143
143
|
|
144
|
-
def
|
145
|
-
ENV['TD_TOOLBELT_JARUPDATE_ROOT'] || "http://central.maven.org"
|
146
|
-
end
|
147
|
-
|
148
|
-
def self.version_endpoint
|
144
|
+
def version_endpoint
|
149
145
|
"#{endpoint_root}/version.#{package_category}"
|
150
146
|
end
|
151
147
|
|
152
|
-
def
|
148
|
+
def update_package_endpoint
|
153
149
|
"#{endpoint_root}/td-update-#{package_category}.zip"
|
154
150
|
end
|
155
151
|
|
156
|
-
def
|
152
|
+
def update(autoupdate = false)
|
157
153
|
wait_for_lock(updating_lock_path, 5) do
|
158
154
|
require "td"
|
159
155
|
require 'open-uri'
|
@@ -210,11 +206,11 @@ module Updater
|
|
210
206
|
FileUtils.rm_f(updating_lock_path)
|
211
207
|
end
|
212
208
|
|
213
|
-
def
|
209
|
+
def compare_versions(first_version, second_version)
|
214
210
|
first_version.split('.').map { |part| Integer(part) rescue part } <=> second_version.split('.').map { |part| Integer(part) rescue part }
|
215
211
|
end
|
216
212
|
|
217
|
-
def
|
213
|
+
def inject_libpath
|
218
214
|
old_version = client_version_from_path(installed_client_path)
|
219
215
|
new_version = client_version_from_path(updated_client_path)
|
220
216
|
|
@@ -247,7 +243,7 @@ module Updater
|
|
247
243
|
FileUtils.touch last_toolbelt_autoupdate_timestamp
|
248
244
|
end
|
249
245
|
|
250
|
-
def
|
246
|
+
def last_toolbelt_autoupdate_timestamp
|
251
247
|
File.join(home_directory, ".td", "autoupdate.last")
|
252
248
|
end
|
253
249
|
|
@@ -256,20 +252,18 @@ module Updater
|
|
256
252
|
#
|
257
253
|
|
258
254
|
# locate the root of the td package which is 3 folders up from the location of this file
|
259
|
-
def
|
255
|
+
def jarfile_dest_path
|
260
256
|
File.join(home_directory, ".td", "java")
|
261
257
|
end
|
262
258
|
|
263
|
-
|
264
|
-
def self.stream_fetch(url, binfile, &progress)
|
259
|
+
def stream_fetch(url, binfile, &progress)
|
265
260
|
require 'net/http'
|
266
261
|
|
267
262
|
uri = URI(url)
|
268
263
|
http_class = Command.get_http_class
|
269
264
|
http = http_class.new(uri.host, uri.port)
|
270
265
|
|
271
|
-
|
272
|
-
if uri.scheme == 'https' and ENV['HTTP_PROXY'].nil?
|
266
|
+
if uri.scheme == 'https'
|
273
267
|
http.use_ssl = true
|
274
268
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
275
269
|
end
|
@@ -289,13 +283,19 @@ module Updater
|
|
289
283
|
end
|
290
284
|
return stream_fetch(response['Location'], binfile, &progress)
|
291
285
|
else
|
292
|
-
raise_error
|
293
|
-
"An error occurred when fetching from '#{uri}' " +
|
286
|
+
raise_error "An error occurred when fetching from '#{uri}' " +
|
294
287
|
"(#{response.class.to_s}: #{response.message})."
|
295
288
|
return false
|
296
289
|
end
|
297
290
|
}
|
298
291
|
end
|
292
|
+
end # module ModuleDefinition
|
293
|
+
|
294
|
+
extend ModuleDefinition
|
295
|
+
|
296
|
+
def maven_repo_root
|
297
|
+
ENV['TD_TOOLBELT_JARUPDATE_ROOT'] || "http://central.maven.org"
|
298
|
+
end
|
299
299
|
|
300
300
|
private
|
301
301
|
def jar_update(hourly = false)
|
@@ -410,4 +410,4 @@ module Updater
|
|
410
410
|
end
|
411
411
|
|
412
412
|
end # module Updater
|
413
|
-
end # module TreasureData
|
413
|
+
end # module TreasureData
|
data/lib/td/version.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIID0DCCArigAwIBAgIBADANBgkqhkiG9w0BAQUFADA8MQswCQYDVQQGDAJKUDES
|
3
|
+
MBAGA1UECgwJSklOLkdSLkpQMQwwCgYDVQQLDANSUlIxCzAJBgNVBAMMAkNBMB4X
|
4
|
+
DTA0MDEzMDAwNDIzMloXDTM2MDEyMjAwNDIzMlowPDELMAkGA1UEBgwCSlAxEjAQ
|
5
|
+
BgNVBAoMCUpJTi5HUi5KUDEMMAoGA1UECwwDUlJSMQswCQYDVQQDDAJDQTCCASIw
|
6
|
+
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANbv0x42BTKFEQOE+KJ2XmiSdZpR
|
7
|
+
wjzQLAkPLRnLB98tlzs4xo+y4RyY/rd5TT9UzBJTIhP8CJi5GbS1oXEerQXB3P0d
|
8
|
+
L5oSSMwGGyuIzgZe5+vZ1kgzQxMEKMMKlzA73rbMd4Jx3u5+jdbP0EDrPYfXSvLY
|
9
|
+
bS04n2aX7zrN3x5KdDrNBfwBio2/qeaaj4+9OxnwRvYP3WOvqdW0h329eMfHw0pi
|
10
|
+
JI0drIVdsEqClUV4pebT/F+CPUPkEh/weySgo9wANockkYu5ujw2GbLFcO5LXxxm
|
11
|
+
dEfcVr3r6t6zOA4bJwL0W/e6LBcrwiG/qPDFErhwtgTLYf6Er67SzLyA66UCAwEA
|
12
|
+
AaOB3DCB2TAPBgNVHRMBAf8EBTADAQH/MDEGCWCGSAGG+EIBDQQkFiJSdWJ5L09w
|
13
|
+
ZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBRJ7Xd380KzBV7f
|
14
|
+
USKIQ+O/vKbhDzAOBgNVHQ8BAf8EBAMCAQYwZAYDVR0jBF0wW4AUSe13d/NCswVe
|
15
|
+
31EiiEPjv7ym4Q+hQKQ+MDwxCzAJBgNVBAYMAkpQMRIwEAYDVQQKDAlKSU4uR1Iu
|
16
|
+
SlAxDDAKBgNVBAsMA1JSUjELMAkGA1UEAwwCQ0GCAQAwDQYJKoZIhvcNAQEFBQAD
|
17
|
+
ggEBAIu/mfiez5XN5tn2jScgShPgHEFJBR0BTJBZF6xCk0jyqNx/g9HMj2ELCuK+
|
18
|
+
r/Y7KFW5c5M3AQ+xWW0ZSc4kvzyTcV7yTVIwj2jZ9ddYMN3nupZFgBK1GB4Y05GY
|
19
|
+
MJJFRkSu6d/Ph5ypzBVw2YMT/nsOo5VwMUGLgS7YVjU+u/HNWz80J3oO17mNZllj
|
20
|
+
PvORJcnjwlroDnS58KoJ7GDgejv3ESWADvX1OHLE4cRkiQGeLoEU4pxdCxXRqX0U
|
21
|
+
PbwIkZN9mXVcrmPHq8MWi4eC/V7hnbZETMHuWhUoiNdOEfsAXr3iP4KjyyRdwc7a
|
22
|
+
d/xgcK06UVQRL/HbEYGiQL056mc=
|
23
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,19 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIC/zCCAeegAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQGDAJKUDES
|
3
|
+
MBAGA1UECgwJSklOLkdSLkpQMQwwCgYDVQQLDANSUlIxDjAMBgNVBAMMBVN1YkNB
|
4
|
+
MB4XDTA0MDEzMTAzMTMxNloXDTMzMDEyMzAzMTMxNlowQzELMAkGA1UEBgwCSlAx
|
5
|
+
EjAQBgNVBAoMCUpJTi5HUi5KUDEMMAoGA1UECwwDUlJSMRIwEAYDVQQDDAlsb2Nh
|
6
|
+
bGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANFJTxWqup3nV9dsJAku
|
7
|
+
p+WaXnPNIzcpAA3qMGZDJTJsfa8Du7ZxTP0XJK5mETttBrn711cJxAuP3KjqnW9S
|
8
|
+
vtZ9lY2sXJ6Zj62sN5LwG3VVe25dI28yR1EsbHjJ5Zjf9tmggMC6am52dxuHbt5/
|
9
|
+
vHo4ngJuKE/U+eeGRivMn6gFAgMBAAGjgYUwgYIwDAYDVR0TAQH/BAIwADAxBglg
|
10
|
+
hkgBhvhCAQ0EJBYiUnVieS9PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAd
|
11
|
+
BgNVHQ4EFgQUpZIyygD9JxFYHHOTEuWOLbCKfckwCwYDVR0PBAQDAgWgMBMGA1Ud
|
12
|
+
JQQMMAoGCCsGAQUFBwMBMA0GCSqGSIb3DQEBBQUAA4IBAQBwAIj5SaBHaA5X31IP
|
13
|
+
CFCJiep96awfp7RANO0cuUj+ZpGoFn9d6FXY0g+Eg5wAkCNIzZU5NHN9xsdOpnUo
|
14
|
+
zIBbyTfQEPrge1CMWMvL6uGaoEXytq84VTitF/xBTky4KtTn6+es4/e7jrrzeUXQ
|
15
|
+
RC46gkHObmDT91RkOEGjHLyld2328jo3DIN/VTHIryDeVHDWjY5dENwpwdkhhm60
|
16
|
+
DR9IrNBbXWEe9emtguNXeN0iu1ux0lG1Hc6pWGQxMlRKNvGh0yZB9u5EVe38tOV0
|
17
|
+
jQaoNyL7qzcQoXD3Dmbi1p0iRmg/+HngISsz8K7k7MBNVsSclztwgCzTZOBiVtkM
|
18
|
+
rRlQ
|
19
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,15 @@
|
|
1
|
+
-----BEGIN RSA PRIVATE KEY-----
|
2
|
+
MIICXQIBAAKBgQDRSU8Vqrqd51fXbCQJLqflml5zzSM3KQAN6jBmQyUybH2vA7u2
|
3
|
+
cUz9FySuZhE7bQa5+9dXCcQLj9yo6p1vUr7WfZWNrFyemY+trDeS8Bt1VXtuXSNv
|
4
|
+
MkdRLGx4yeWY3/bZoIDAumpudncbh27ef7x6OJ4CbihP1PnnhkYrzJ+oBQIDAQAB
|
5
|
+
AoGBAIf4CstW2ltQO7+XYGoex7Hh8s9lTSW/G2vu5Hbr1LTHy3fzAvdq8MvVR12O
|
6
|
+
rk9fa+lU9vhzPc0NMB0GIDZ9GcHuhW5hD1Wg9OSCbTOkZDoH3CAFqonjh4Qfwv5W
|
7
|
+
IPAFn9KHukdqGXkwEMdErsUaPTy9A1V/aROVEaAY+HJgq/eZAkEA/BP1QMV04WEZ
|
8
|
+
Oynzz7/lLizJGGxp2AOvEVtqMoycA/Qk+zdKP8ufE0wbmCE3Qd6GoynavsHb6aGK
|
9
|
+
gQobb8zDZwJBANSK6MrXlrZTtEaeZuyOB4mAmRzGzOUVkUyULUjEx2GDT93ujAma
|
10
|
+
qm/2d3E+wXAkNSeRpjUmlQXy/2oSqnGvYbMCQQDRM+cYyEcGPUVpWpnj0shrF/QU
|
11
|
+
9vSot/X1G775EMTyaw6+BtbyNxVgOIu2J+rqGbn3c+b85XqTXOPL0A2RLYkFAkAm
|
12
|
+
syhSDtE9X55aoWsCNZY/vi+i4rvaFoQ/WleogVQAeGVpdo7/DK9t9YWoFBIqth0L
|
13
|
+
mGSYFu9ZhvZkvQNV8eYrAkBJ+rOIaLDsmbrgkeDruH+B/9yrm4McDtQ/rgnOGYnH
|
14
|
+
LjLpLLOrgUxqpzLWe++EwSLwK2//dHO+SPsQJ4xsyQJy
|
15
|
+
-----END RSA PRIVATE KEY-----
|
Binary file
|
data/spec/td/updater_spec.rb
CHANGED
@@ -1,5 +1,10 @@
|
|
1
1
|
require 'spec_helper'
|
2
|
+
require 'td/command/common'
|
2
3
|
require 'td/updater'
|
4
|
+
require 'webrick'
|
5
|
+
require 'webrick/https'
|
6
|
+
require 'webrick/httpproxy'
|
7
|
+
require 'logger'
|
3
8
|
|
4
9
|
module TreasureData::Updater
|
5
10
|
|
@@ -32,4 +37,175 @@ module TreasureData::Updater
|
|
32
37
|
ENV.delete 'TD_TOOLBELT_UPDATE_ROOT'
|
33
38
|
end
|
34
39
|
end
|
40
|
+
|
41
|
+
describe 'with a proxy' do
|
42
|
+
before :each do
|
43
|
+
setup_proxy_server
|
44
|
+
setup_server
|
45
|
+
end
|
46
|
+
|
47
|
+
after :each do
|
48
|
+
if @proxy_server
|
49
|
+
@proxy_server.shutdown
|
50
|
+
@proxy_server_thread.join
|
51
|
+
end
|
52
|
+
if @server
|
53
|
+
@server.shutdown
|
54
|
+
@server_thread.join
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
class TestUpdater
|
59
|
+
include TreasureData::Updater::ModuleDefinition
|
60
|
+
|
61
|
+
def initialize(endpoint_root)
|
62
|
+
@endpoint_root = endpoint_root
|
63
|
+
end
|
64
|
+
|
65
|
+
def updating_lock_path
|
66
|
+
File.expand_path("updating_lock_path.lock", File.dirname(__FILE__))
|
67
|
+
end
|
68
|
+
|
69
|
+
def on_windows?
|
70
|
+
true
|
71
|
+
end
|
72
|
+
|
73
|
+
def endpoint_root
|
74
|
+
@endpoint_root
|
75
|
+
end
|
76
|
+
|
77
|
+
def latest_local_version
|
78
|
+
'0.11.5'
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
class JarUpdateTester
|
83
|
+
include TreasureData::Updater
|
84
|
+
|
85
|
+
def kick
|
86
|
+
jar_update
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'downloads tmp.zip via proxy and raise td version conflict' do
|
91
|
+
with_proxy do
|
92
|
+
expect {
|
93
|
+
TestUpdater.new("https://localhost:#{@server.config[:Port]}").update
|
94
|
+
}.to raise_error TreasureData::Command::UpdateError
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'works' do
|
99
|
+
with_proxy do
|
100
|
+
with_env('TD_TOOLBELT_JARUPDATE_ROOT', "https://localhost:#{@server.config[:Port]}") do
|
101
|
+
expect {
|
102
|
+
JarUpdateTester.new.kick
|
103
|
+
}.not_to raise_error
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def with_proxy
|
109
|
+
with_env('HTTP_PROXY', "http://localhost:#{@proxy_server.config[:Port]}") do
|
110
|
+
yield
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def with_env(name, var)
|
115
|
+
backup, ENV[name] = ENV[name], var
|
116
|
+
begin
|
117
|
+
yield
|
118
|
+
ensure
|
119
|
+
ENV[name] = backup
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def setup_proxy_server
|
124
|
+
logger = Logger.new(STDERR)
|
125
|
+
logger.progname = 'proxy'
|
126
|
+
logger.level = Logger::Severity::FATAL # avoid logging
|
127
|
+
@proxy_server = WEBrick::HTTPProxyServer.new(
|
128
|
+
:BindAddress => "localhost",
|
129
|
+
:Logger => logger,
|
130
|
+
:Port => 0,
|
131
|
+
:AccessLog => []
|
132
|
+
)
|
133
|
+
@proxy_server_thread = start_server_thread(@proxy_server)
|
134
|
+
@proxy_server
|
135
|
+
end
|
136
|
+
|
137
|
+
def setup_server
|
138
|
+
logger = Logger.new(STDERR)
|
139
|
+
logger.progname = 'server'
|
140
|
+
logger.level = Logger::Severity::FATAL # avoid logging
|
141
|
+
@server = WEBrick::HTTPServer.new(
|
142
|
+
:BindAddress => "localhost",
|
143
|
+
:Logger => logger,
|
144
|
+
:Port => 0,
|
145
|
+
:AccessLog => [],
|
146
|
+
:DocumentRoot => '.',
|
147
|
+
:SSLEnable => true,
|
148
|
+
:SSLCACertificateFile => fixture_file('ca.cert'),
|
149
|
+
:SSLCertificate => cert('server.cert'),
|
150
|
+
:SSLPrivateKey => key('server.key')
|
151
|
+
)
|
152
|
+
@serverport = @server.config[:Port]
|
153
|
+
@server.mount(
|
154
|
+
'/version.exe',
|
155
|
+
WEBrick::HTTPServlet::ProcHandler.new(method(:version).to_proc)
|
156
|
+
)
|
157
|
+
@server.mount(
|
158
|
+
'/td-update-exe.zip',
|
159
|
+
WEBrick::HTTPServlet::ProcHandler.new(method(:download).to_proc)
|
160
|
+
)
|
161
|
+
@server.mount(
|
162
|
+
'/maven2/com/treasuredata/td-import/maven-metadata.xml',
|
163
|
+
WEBrick::HTTPServlet::ProcHandler.new(method(:metadata).to_proc)
|
164
|
+
)
|
165
|
+
@server_thread = start_server_thread(@server)
|
166
|
+
@server
|
167
|
+
end
|
168
|
+
|
169
|
+
def version(req, res)
|
170
|
+
res['content-type'] = 'text/plain'
|
171
|
+
res.body = '0.11.6'
|
172
|
+
end
|
173
|
+
|
174
|
+
def download(req, res)
|
175
|
+
res['content-type'] = 'application/octet-stream'
|
176
|
+
res.body = File.read(fixture_file('tmp.zip'))
|
177
|
+
end
|
178
|
+
|
179
|
+
def metadata(req, res)
|
180
|
+
res['content-type'] = 'application/xml'
|
181
|
+
res.body = '<metadata><versioning><lastUpdated>20141204123456</lastUpdated><release>version</release></versioning></metadata>'
|
182
|
+
end
|
183
|
+
|
184
|
+
def start_server_thread(server)
|
185
|
+
t = Thread.new {
|
186
|
+
Thread.current.abort_on_exception = true
|
187
|
+
server.start
|
188
|
+
}
|
189
|
+
while server.status != :Running
|
190
|
+
sleep 0.1
|
191
|
+
unless t.alive?
|
192
|
+
t.join
|
193
|
+
raise
|
194
|
+
end
|
195
|
+
end
|
196
|
+
t
|
197
|
+
end
|
198
|
+
|
199
|
+
def cert(filename)
|
200
|
+
OpenSSL::X509::Certificate.new(File.read(fixture_file(filename)))
|
201
|
+
end
|
202
|
+
|
203
|
+
def key(filename)
|
204
|
+
OpenSSL::PKey::RSA.new(File.read(fixture_file(filename)))
|
205
|
+
end
|
206
|
+
|
207
|
+
def fixture_file(filename)
|
208
|
+
File.expand_path(File.join('fixture', filename), File.dirname(__FILE__))
|
209
|
+
end
|
210
|
+
end
|
35
211
|
end
|
data/td.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |gem|
|
|
21
21
|
gem.add_dependency "yajl-ruby", "~> 1.1"
|
22
22
|
gem.add_dependency "hirb", ">= 0.4.5"
|
23
23
|
gem.add_dependency "parallel", "~> 0.6.1"
|
24
|
-
gem.add_dependency "td-client", "~> 0.8.
|
24
|
+
gem.add_dependency "td-client", "~> 0.8.67"
|
25
25
|
gem.add_dependency "td-logger", "~> 0.3.21"
|
26
26
|
gem.add_dependency "rubyzip", "~> 0.9.9"
|
27
27
|
gem.add_development_dependency "rake", "~> 0.9"
|
metadata
CHANGED
@@ -1,32 +1,32 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: td
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Treasure Data, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.4.4
|
20
|
-
- -
|
20
|
+
- - '!='
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: 0.5.0
|
23
|
-
- -
|
23
|
+
- - '!='
|
24
24
|
- !ruby/object:Gem::Version
|
25
25
|
version: 0.5.1
|
26
|
-
- -
|
26
|
+
- - '!='
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: 0.5.2
|
29
|
-
- -
|
29
|
+
- - '!='
|
30
30
|
- !ruby/object:Gem::Version
|
31
31
|
version: 0.5.3
|
32
32
|
- - <
|
@@ -36,19 +36,19 @@ dependencies:
|
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- -
|
39
|
+
- - '>='
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: 0.4.4
|
42
|
-
- -
|
42
|
+
- - '!='
|
43
43
|
- !ruby/object:Gem::Version
|
44
44
|
version: 0.5.0
|
45
|
-
- -
|
45
|
+
- - '!='
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 0.5.1
|
48
|
-
- -
|
48
|
+
- - '!='
|
49
49
|
- !ruby/object:Gem::Version
|
50
50
|
version: 0.5.2
|
51
|
-
- -
|
51
|
+
- - '!='
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: 0.5.3
|
54
54
|
- - <
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
name: hirb
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- -
|
75
|
+
- - '>='
|
76
76
|
- !ruby/object:Gem::Version
|
77
77
|
version: 0.4.5
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
|
-
- -
|
82
|
+
- - '>='
|
83
83
|
- !ruby/object:Gem::Version
|
84
84
|
version: 0.4.5
|
85
85
|
- !ruby/object:Gem::Dependency
|
@@ -102,14 +102,14 @@ dependencies:
|
|
102
102
|
requirements:
|
103
103
|
- - ~>
|
104
104
|
- !ruby/object:Gem::Version
|
105
|
-
version: 0.8.
|
105
|
+
version: 0.8.67
|
106
106
|
type: :runtime
|
107
107
|
prerelease: false
|
108
108
|
version_requirements: !ruby/object:Gem::Requirement
|
109
109
|
requirements:
|
110
110
|
- - ~>
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version: 0.8.
|
112
|
+
version: 0.8.67
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: td-logger
|
115
115
|
requirement: !ruby/object:Gem::Requirement
|
@@ -249,6 +249,10 @@ files:
|
|
249
249
|
- spec/file_reader_spec.rb
|
250
250
|
- spec/spec_helper.rb
|
251
251
|
- spec/td/common_spec.rb
|
252
|
+
- spec/td/fixture/ca.cert
|
253
|
+
- spec/td/fixture/server.cert
|
254
|
+
- spec/td/fixture/server.key
|
255
|
+
- spec/td/fixture/tmp.zip
|
252
256
|
- spec/td/helpers_spec.rb
|
253
257
|
- spec/td/updater_spec.rb
|
254
258
|
- spec/td/version_spec.rb
|
@@ -262,17 +266,17 @@ require_paths:
|
|
262
266
|
- lib
|
263
267
|
required_ruby_version: !ruby/object:Gem::Requirement
|
264
268
|
requirements:
|
265
|
-
- -
|
269
|
+
- - '>='
|
266
270
|
- !ruby/object:Gem::Version
|
267
271
|
version: '1.9'
|
268
272
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
269
273
|
requirements:
|
270
|
-
- -
|
274
|
+
- - '>='
|
271
275
|
- !ruby/object:Gem::Version
|
272
276
|
version: '0'
|
273
277
|
requirements: []
|
274
278
|
rubyforge_project:
|
275
|
-
rubygems_version: 2.
|
279
|
+
rubygems_version: 2.0.14
|
276
280
|
signing_key:
|
277
281
|
specification_version: 4
|
278
282
|
summary: CLI to manage data on Treasure Data, the Hadoop-based cloud data warehousing
|
@@ -285,6 +289,10 @@ test_files:
|
|
285
289
|
- spec/file_reader_spec.rb
|
286
290
|
- spec/spec_helper.rb
|
287
291
|
- spec/td/common_spec.rb
|
292
|
+
- spec/td/fixture/ca.cert
|
293
|
+
- spec/td/fixture/server.cert
|
294
|
+
- spec/td/fixture/server.key
|
295
|
+
- spec/td/fixture/tmp.zip
|
288
296
|
- spec/td/helpers_spec.rb
|
289
297
|
- spec/td/updater_spec.rb
|
290
298
|
- spec/td/version_spec.rb
|