File: test_multipart.rb

package info (click to toggle)
ruby-aliyun-sdk 0.8.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 792 kB
  • sloc: ruby: 7,909; ansic: 204; makefile: 4
file content (97 lines) | stat: -rw-r--r-- 2,463 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# coding: utf-8
require 'minitest/autorun'
require 'yaml'
$LOAD_PATH.unshift(File.expand_path("../../lib", __FILE__))
require 'aliyun/oss'
require_relative 'config'

class TestMultipart < Minitest::Test
  def setup
    Aliyun::Common::Logging.set_log_level(Logger::DEBUG)
    client = Aliyun::OSS::Client.new(TestConf.creds)
    @bucket_name = TestConf.bucket
    @bucket = client.get_bucket(TestConf.bucket)

    @protocol = Aliyun::OSS::Protocol.new(Aliyun::OSS::Config.new(TestConf.creds))
    @prefix = 'tests/multipart/'
  end

  def get_key(k)
    @prefix + k
  end

  def clear_uploads
    all = @bucket.list_uploads.to_a
    all.each { |t| @bucket.abort_upload(t.id, t.object) }
  end

  def test_key_marker
    clear_uploads

    # initiate 5 uploads
    ids = []
    5.times { |i|
      id = @protocol.initiate_multipart_upload(@bucket_name, get_key("obj-#{i}"))
      ids << id
    }

    all = @bucket.list_uploads(limit: 1).to_a
    assert_equal ids, all.map(&:id)

    after_1 = @bucket.list_uploads(key_marker: get_key("obj-0")).to_a
    assert_equal ids[1, 5], after_1.map(&:id)

    after_5 = @bucket.list_uploads(key_marker: get_key("obj-4")).to_a
    assert after_5.empty?, after_5.to_s
  end

  def test_id_marker
    clear_uploads

    # initiate 5 uploads
    ids = []
    5.times { |i|
      id = @protocol.initiate_multipart_upload(@bucket_name, get_key("object"))
      ids << id
    }
    ids.sort!

    all = @bucket.list_uploads.to_a
    assert_equal ids, all.map(&:id)

    # id_marker is ignored
    after_1 = @bucket.list_uploads(id_marker: ids[0]).to_a
    assert_equal ids, after_1.map(&:id)

    # id_marker is ignored
    after_5 = @bucket.list_uploads(id_marker: ids[4]).to_a
    assert_equal ids, after_5.map(&:id)
  end

  def test_id_key_marker
    clear_uploads

    # initiate 5 uploads
    foo_ids = []
    5.times { |i|
      id = @protocol.initiate_multipart_upload(@bucket_name, get_key("foo"))
      foo_ids << id
    }
    foo_ids.sort!

    bar_ids = []
    5.times { |i|
      id = @protocol.initiate_multipart_upload(@bucket_name, get_key("bar"))
      bar_ids << id
    }
    bar_ids.sort!

    after_1 = @bucket.list_uploads(
      id_marker: bar_ids[0], key_marker: get_key("bar"), limit: 1).to_a
    assert_equal bar_ids[1, 5] + foo_ids, after_1.map(&:id)

    after_5 = @bucket.list_uploads(
      id_marker: bar_ids[4], key_marker: get_key("bar")).to_a
    assert_equal foo_ids, after_5.map(&:id)
  end
end