@@ -14,143 +14,84 @@ def perform
1414 zip_output_dir = Dir . mktmpdir
1515 zip_file = zip_resources ( resource_dir , zip_output_dir )
1616
17- benchmark_packages ( zip_file , resource_dir )
18- benchmark_buildpacks ( resource_dir )
19- benchmark_droplets ( zip_file , resource_dir )
20- benchmark_big_droplets ( resource_dir )
17+ package_guid , resource_timing = upload_package ( zip_file )
18+ puts ( "package upload timing: #{ resource_timing * 1000 } ms" )
19+
20+ resource_timing = download_package ( package_guid , resource_dir )
21+ puts ( "package download timing: #{ resource_timing * 1000 } ms" )
22+
23+ bytes_read , resource_timing = download_buildpacks ( resource_dir )
24+ puts ( "downloaded #{ Buildpack . count } buildpacks, total #{ bytes_read } bytes read" )
25+ puts ( "buildpack download timing: #{ resource_timing * 1000 } ms" )
26+
27+ droplet_guid , resource_timing = upload_droplet ( zip_file )
28+ puts ( "droplet upload timing: #{ resource_timing * 1000 } ms" )
29+
30+ resource_timing = download_droplet ( droplet_guid , resource_dir )
31+ puts ( "droplet download timing: #{ resource_timing * 1000 } ms" )
32+
33+ big_droplet_file = Tempfile . new ( 'big-droplet' , resource_dir )
34+ big_droplet_file . write ( 'abc' * 1024 * 1024 * 100 )
35+ big_droplet_guid , resource_timing = upload_droplet ( big_droplet_file . path )
36+ puts ( "big droplet upload timing: #{ resource_timing * 1000 } ms" )
37+
38+ resource_timing = download_droplet ( big_droplet_guid , resource_dir )
39+ puts ( "big droplet download timing: #{ resource_timing * 1000 } ms" )
2140 ensure
22- cleanup ( resource_dir , zip_output_dir )
41+ FileUtils . remove_dir ( resource_dir , true )
42+ FileUtils . remove_dir ( zip_output_dir , true )
43+ package_blobstore_client . delete ( package_guid ) if package_guid
44+ droplet_blobstore_client . delete ( droplet_guid ) if droplet_guid
45+ droplet_blobstore_client . delete ( big_droplet_guid ) if big_droplet_guid
2346 end
2447
2548 def resource_match ( dir_path )
2649 resources = Find . find ( dir_path ) .
27- select { |f | File . file? ( f ) } .
28- map { |f | { 'size' => File . stat ( f ) . size , 'sha1' => Digester . new . digest_path ( f ) } }
50+ select { |f | File . file? ( f ) } .
51+ map { |f | { 'size' => File . stat ( f ) . size , 'sha1' => Digester . new . digest_path ( f ) } }
2952
3053 ::Benchmark . realtime do
3154 resource_pool . match_resources ( resources )
3255 end
3356 end
3457
35- def upload_package ( package_path , client = package_blobstore_client )
36- copy_to_blobstore ( package_path , client )
58+ def upload_package ( package_path )
59+ copy_to_blobstore ( package_path , package_blobstore_client )
3760 end
3861
39- def download_package ( package_guid , tmp_dir , client = package_blobstore_client )
62+ def download_package ( package_guid , tmp_dir )
4063 tempfile = Tempfile . new ( 'package-download-benchmark' , tmp_dir )
4164 ::Benchmark . realtime do
42- client . download_from_blobstore ( package_guid , tempfile . path )
65+ package_blobstore_client . download_from_blobstore ( package_guid , tempfile . path )
4366 end
4467 end
4568
46- def download_buildpacks ( tmp_dir , client = buildpack_blobstore_client )
69+ def download_buildpacks ( tmp_dir )
4770 tempfile = Tempfile . new ( 'buildpack-download-benchmark' , tmp_dir )
4871 bytes_read = 0
4972
5073 timing = ::Benchmark . realtime do
5174 bytes_read = Buildpack . map do |buildpack |
52- client . download_from_blobstore ( buildpack . key , tempfile . path )
75+ buildpack_blobstore_client . download_from_blobstore ( buildpack . key , tempfile . path )
5376 File . stat ( tempfile . path ) . size
5477 end . sum
5578 end
5679
5780 [ bytes_read , timing ]
5881 end
5982
60- def upload_droplet ( droplet_path , client = droplet_blobstore_client )
61- copy_to_blobstore ( droplet_path , client )
83+ def upload_droplet ( droplet_path )
84+ copy_to_blobstore ( droplet_path , droplet_blobstore_client )
6285 end
6386
64- def download_droplet ( droplet_guid , tmp_dir , client = droplet_blobstore_client )
87+ def download_droplet ( droplet_guid , tmp_dir )
6588 tempfile = Tempfile . new ( 'droplet-download-benchmark' , tmp_dir )
6689
6790 ::Benchmark . realtime do
68- client . download_from_blobstore ( droplet_guid , tempfile . path )
69- end
70- end
71-
72- def benchmark_packages ( zip_file , resource_dir )
73- fog_guid , fog_time = upload_package ( zip_file , package_blobstore_client )
74- cli_guid , cli_time = upload_package ( zip_file , package_blobstore_client_storage_cli )
75-
76- puts ( "package upload timing fog: #{ fog_time * 1000 } ms" )
77- puts ( "package upload timing storage-cli: #{ cli_time * 1000 } ms" )
78-
79- fog_dl = download_package ( fog_guid , resource_dir , package_blobstore_client )
80- cli_dl = download_package ( cli_guid , resource_dir , package_blobstore_client_storage_cli )
81-
82- puts ( "package download timing fog: #{ fog_dl * 1000 } ms" )
83- puts ( "package download timing storage-cli: #{ cli_dl * 1000 } ms" )
84-
85- remember_cleanup ( :package , fog_guid , cli_guid )
86- end
87-
88- def benchmark_buildpacks ( resource_dir )
89- fog_bytes , fog_time = download_buildpacks ( resource_dir , buildpack_blobstore_client )
90- cli_bytes , cli_time = download_buildpacks ( resource_dir , buildpack_blobstore_client_storage_cli )
91-
92- puts ( "downloaded #{ Buildpack . count } buildpacks, total fog #{ fog_bytes } bytes read" )
93- puts ( "downloaded #{ Buildpack . count } buildpacks, total storage-cli #{ cli_bytes } bytes read" )
94- puts ( "buildpack download timing fog: #{ fog_time * 1000 } ms" )
95- puts ( "buildpack download timing storage-cli: #{ cli_time * 1000 } ms" )
96- end
97-
98- def benchmark_droplets ( zip_file , resource_dir )
99- fog_guid , fog_time = upload_droplet ( zip_file , droplet_blobstore_client )
100- cli_guid , cli_time = upload_droplet ( zip_file , droplet_blobstore_client_storage_cli )
101-
102- puts ( "droplet upload timing fog: #{ fog_time * 1000 } ms" )
103- puts ( "droplet upload timing storage-cli: #{ cli_time * 1000 } ms" )
104-
105- fog_dl = download_droplet ( fog_guid , resource_dir , droplet_blobstore_client )
106- cli_dl = download_droplet ( cli_guid , resource_dir , droplet_blobstore_client_storage_cli )
107-
108- puts ( "droplet download timing fog: #{ fog_dl * 1000 } ms" )
109- puts ( "droplet download timing storage-cli: #{ cli_dl * 1000 } ms" )
110-
111- remember_cleanup ( :droplet , fog_guid , cli_guid )
112- end
113-
114- def benchmark_big_droplets ( resource_dir )
115- fog_guid , fog_time = upload_big_droplet ( resource_dir , droplet_blobstore_client )
116- cli_guid , cli_time = upload_big_droplet ( resource_dir , droplet_blobstore_client_storage_cli )
117-
118- puts ( "big droplet upload timing fog: #{ fog_time * 1000 } ms" )
119- puts ( "big droplet upload timing storage-cli: #{ cli_time * 1000 } ms" )
120-
121- fog_dl = download_droplet ( fog_guid , resource_dir , droplet_blobstore_client )
122- cli_dl = download_droplet ( cli_guid , resource_dir , droplet_blobstore_client_storage_cli )
123-
124- puts ( "big droplet download timing fog: #{ fog_dl * 1000 } ms" )
125- puts ( "big droplet download timing storage-cli: #{ cli_dl * 1000 } ms" )
126-
127- remember_cleanup ( :droplet , fog_guid , cli_guid )
128- end
129-
130- def remember_cleanup ( type , fog_guid , cli_guid )
131- cleanup_items << [ type , fog_guid , cli_guid ]
132- end
133-
134- def cleanup ( resource_dir , zip_output_dir )
135- FileUtils . remove_dir ( resource_dir , true )
136- FileUtils . remove_dir ( zip_output_dir , true )
137-
138- cleanup_items . each do |type , fog_guid , cli_guid |
139- client_fog , client_cli =
140- case type
141- when :package then [ package_blobstore_client , package_blobstore_client_storage_cli ]
142- when :droplet then [ droplet_blobstore_client , droplet_blobstore_client_storage_cli ]
143- end
144-
145- client_fog . delete ( fog_guid ) if fog_guid
146- client_cli . delete ( cli_guid ) if cli_guid
91+ droplet_blobstore_client . download_from_blobstore ( droplet_guid , tempfile . path )
14792 end
14893 end
14994
150- def cleanup_items
151- @cleanup_items ||= [ ]
152- end
153-
15495 private
15596
15697 def generate_resources
@@ -187,27 +128,15 @@ def copy_to_blobstore(path, client)
187128 end
188129
189130 def buildpack_blobstore_client
190- @buildpack_blobstore_client ||= CloudController ::DependencyLocator . instance . buildpack_blobstore ( blobstore_type : 'fog' )
191- end
192-
193- def buildpack_blobstore_client_storage_cli
194- @buildpack_blobstore_client_storage_cli ||= CloudController ::DependencyLocator . instance . buildpack_blobstore ( blobstore_type : 'storage-cli' )
131+ @buildpack_blobstore_client ||= CloudController ::DependencyLocator . instance . buildpack_blobstore
195132 end
196133
197134 def droplet_blobstore_client
198- @droplet_blobstore_client ||= CloudController ::DependencyLocator . instance . droplet_blobstore ( blobstore_type : 'fog' )
199- end
200-
201- def droplet_blobstore_client_storage_cli
202- @droplet_blobstore_client_storage_cli ||= CloudController ::DependencyLocator . instance . droplet_blobstore ( blobstore_type : 'storage-cli' )
135+ @droplet_blobstore_client ||= CloudController ::DependencyLocator . instance . droplet_blobstore
203136 end
204137
205138 def package_blobstore_client
206- @package_blobstore_client ||= CloudController ::DependencyLocator . instance . package_blobstore ( blobstore_type : 'fog' )
207- end
208-
209- def package_blobstore_client_storage_cli
210- @package_blobstore_client_storage_cli ||= CloudController ::DependencyLocator . instance . package_blobstore ( blobstore_type : 'storage-cli' )
139+ @package_blobstore_client ||= CloudController ::DependencyLocator . instance . package_blobstore
211140 end
212141
213142 def resource_pool
0 commit comments