2 require 'helpers/manifest_examples'
3 require 'helpers/time_block'
5 class CollectionsApiPerformanceTest < ActionDispatch::IntegrationTest
6 include ManifestExamples
8 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 Oj.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 test "memory usage" do
44 hugemanifest = make_manifest(streams: 1,
45 files_per_stream: 2000,
47 bytes_per_block: 2**26,
48 api_token: api_token(:active))
49 json = time_block "JSON encode #{hugemanifest.length>>20}MiB manifest" do
50 Oj.dump({manifest_text: hugemanifest})
53 post '/arvados/v1/collections', {collection: json}, auth(:active)