Merge branch '8784-dir-listings'
[arvados.git] / services / api / test / helpers / manifest_examples.rb
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: AGPL-3.0
4
5 module ManifestExamples
6   def make_manifest opts={}
7     opts = {
8       bytes_per_block: 1,
9       blocks_per_file: 1,
10       files_per_stream: 1,
11       streams: 1,
12     }.merge(opts)
13     datablip = "x" * opts[:bytes_per_block]
14     locator = Blob.sign_locator(Digest::MD5.hexdigest(datablip) +
15                                 '+' + datablip.length.to_s,
16                                 api_token: opts[:api_token])
17     filesize = datablip.length * opts[:blocks_per_file]
18     txt = ''
19     (1..opts[:streams]).each do |s|
20       streamtoken = "./stream#{s}"
21       streamsize = 0
22       blocktokens = []
23       filetokens = []
24       (1..opts[:files_per_stream]).each do |f|
25         filetokens << "#{streamsize}:#{filesize}:file#{f}.txt"
26         (1..opts[:blocks_per_file]).each do |b|
27           blocktokens << locator
28         end
29         streamsize += filesize
30       end
31       txt << ([streamtoken] + blocktokens + filetokens).join(' ') + "\n"
32     end
33     txt
34   end
35 end