3 require 'helpers/manifest_examples'
4 require 'helpers/time_block'
6 class CollectionsApiPerformanceTest < ActionDispatch::IntegrationTest
7 include ManifestExamples
9 slow_test "crud cycle for a collection with a big manifest" do
10 bigmanifest = time_block 'make example' do
11 make_manifest(streams: 100,
12 files_per_stream: 100,
14 bytes_per_block: 2**26,
15 api_token: api_token(:active))
17 json = time_block "JSON encode #{bigmanifest.length>>20}MiB manifest" do
18 SafeJSON.dump({"manifest_text" => bigmanifest})
20 time_block 'create' do
21 post '/arvados/v1/collections', {collection: json}, auth(:active)
22 assert_response :success
24 uuid = json_response['uuid']
26 get '/arvados/v1/collections/' + uuid, {}, auth(:active)
27 assert_response :success
30 get '/arvados/v1/collections', {select: ['manifest_text'], filters: [['uuid', '=', uuid]].to_json}, auth(:active)
31 assert_response :success
33 time_block 'update' do
34 put '/arvados/v1/collections/' + uuid, {collection: json}, auth(:active)
35 assert_response :success
37 time_block 'delete' do
38 delete '/arvados/v1/collections/' + uuid, {}, auth(:active)
42 slow_test "memory usage" do
43 hugemanifest = make_manifest(streams: 1,
44 files_per_stream: 2000,
46 bytes_per_block: 2**26,
47 api_token: api_token(:active))
48 json = time_block "JSON encode #{hugemanifest.length>>20}MiB manifest" do
49 SafeJSON.dump({manifest_text: hugemanifest})
52 post '/arvados/v1/collections', {collection: json}, auth(:active)