Initial commit

This commit is contained in:
zhongjin
2020-06-15 10:58:47 +08:00
commit 4f1dfe7564
8590 changed files with 1516878 additions and 0 deletions
@@ -0,0 +1,87 @@
require_relative '../../spec_helper'
include CartoDB
describe CartoDB::PlatformLimits::Importer::UserConcurrentImportsAmount do
before(:all) do
@user = create_user( :quota_in_bytes => 524288000, :table_quota => 100 )
end
before(:each) do
end
after(:all) do
bypass_named_maps
@user.destroy
end
describe '#importer-limits' do
it 'checks concurrent imports rate limit' do
old_concurrent_import_count = @user.max_concurrent_import_count
new_limit_max = 2
@user.update max_concurrent_import_count: new_limit_max
# Set TTL threshold to 0 to ease calculations
limit = CartoDB::PlatformLimits::Importer::UserConcurrentImportsAmount.new({
user: @user,
redis: {
db: $users_metadata,
expire_ttl_threshold_percent: 0
}
})
limit.peek.should eq 0
limit.is_over_limit?.should eq false
limit.peek.should eq 0
limit.maximum_limit?.should eq new_limit_max
limit.remaining_limit?.should eq new_limit_max
start_datetime = DateTime.now
limit.is_over_limit!.should eq false
end_datetime = limit.time_period?
limit.peek.should eq 1
limit.remaining_limit?.should eq new_limit_max-1
limit.is_over_limit?.should eq false
limit.is_over_limit!.should eq false
limit.peek.should eq 2
limit.is_over_limit!.should eq true
limit.peek.should eq 3
limit.is_over_limit?.should eq true
limit.peek.should eq 3
limit.decrement!
limit.peek.should eq 2
limit.is_over_limit?.should eq false
ttl = end_datetime - start_datetime
# We redis won't take more than 2 seconds on performing key creation + retrieval of TTL
(ttl - (@user.database_timeout/1000)).should be_within(2.0).of(0.0)
limit.decrement!
limit.decrement!
limit.peek.should eq 0
limit.is_within_limit!.should eq true
limit.peek.should eq 1
limit.is_within_limit?.should eq true
limit.peek.should eq 1
limit.is_within_limit!.should eq true
limit.peek.should eq 2
limit.is_within_limit!.should eq false
limit.peek.should eq 3
limit.is_within_limit?.should eq false
limit.peek.should eq 3
@user.update max_concurrent_import_count: old_concurrent_import_count
end
end
end
@@ -0,0 +1,70 @@
require_relative '../../spec_helper'
include CartoDB
describe CartoDB::PlatformLimits::Importer::UserConcurrentSyncsAmount do
describe '#importer-limits' do
before(:all) do
@user = FactoryGirl.create(:valid_user)
end
after(:all) do
@user.destroy
end
it 'checks concurrent sync rate limit' do
syncs_limit = CartoDB::PlatformLimits::Importer::UserConcurrentSyncsAmount::MAX_SYNCS_PER_USER
limit = CartoDB::PlatformLimits::Importer::UserConcurrentSyncsAmount.new({
user: @user,
redis: {
db: $users_metadata
}
})
limit.peek.should eq 0
limit.is_over_limit?.should eq false
limit.peek.should eq 0
limit.maximum_limit?.should eq syncs_limit
limit.remaining_limit?.should eq syncs_limit
limit.is_over_limit!.should eq false
limit.peek.should eq 1
limit.remaining_limit?.should eq syncs_limit-1
limit.is_over_limit?.should eq false
limit.is_over_limit!.should eq false
limit.peek.should eq 2
limit.is_over_limit?.should eq false
# First increments, then checks
limit.is_over_limit!.should eq true
limit.peek.should eq 3
limit.is_over_limit?.should eq true
limit.is_over_limit!.should eq true
limit.is_over_limit?.should eq true
limit.peek.should eq 3
limit.decrement!
limit.peek.should eq 2
limit.is_over_limit?.should eq false
limit.decrement!
limit.peek.should eq 1
limit.decrement!
limit.decrement!
limit.decrement!
limit.peek.should eq 0
limit.is_within_limit!.should eq true
limit.peek.should eq 1
limit.is_within_limit!.should eq true
limit.peek.should eq 2
limit.is_within_limit!.should eq false
limit.peek.should eq 3
end
end
end