summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/ci/trigger_schedule.rb4
-rw-r--r--app/validators/cron_timezone_validator.rb (renamed from app/validators/cron_time_zone_validator.rb)10
-rw-r--r--app/validators/cron_validator.rb2
-rw-r--r--db/migrate/20170329095907_create_ci_trigger_schedules.rb16
-rw-r--r--db/migrate/20170404163427_add_trigger_id_foreign_key.rb15
-rw-r--r--db/schema.rb2
-rw-r--r--lib/gitlab/ci/cron_parser.rb14
-rw-r--r--spec/factories/ci/trigger_schedules.rb8
-rw-r--r--spec/lib/gitlab/ci/cron_parser_spec.rb28
-rw-r--r--spec/lib/gitlab/import_export/safe_model_attributes.yml2
-rw-r--r--spec/models/ci/trigger_schedule_spec.rb2
-rw-r--r--spec/workers/trigger_schedule_worker_spec.rb2
12 files changed, 56 insertions, 49 deletions
diff --git a/app/models/ci/trigger_schedule.rb b/app/models/ci/trigger_schedule.rb
index 9b1dfce969a..d18dbea284e 100644
--- a/app/models/ci/trigger_schedule.rb
+++ b/app/models/ci/trigger_schedule.rb
@@ -12,13 +12,13 @@ module Ci
validates :trigger, presence: { unless: :importing? }
validates :cron, cron: true, presence: { unless: :importing? }
- validates :cron_time_zone, cron_time_zone: true, presence: { unless: :importing? }
+ validates :cron_timezone, cron_timezone: true, presence: { unless: :importing? }
validates :ref, presence: { unless: :importing? }
after_create :schedule_next_run!
def schedule_next_run!
- next_time = Gitlab::Ci::CronParser.new(cron, cron_time_zone).next_time_from(Time.now)
+ next_time = Gitlab::Ci::CronParser.new(cron, cron_timezone).next_time_from(Time.now)
update!(next_run_at: next_time) if next_time.present?
end
end
diff --git a/app/validators/cron_time_zone_validator.rb b/app/validators/cron_timezone_validator.rb
index 9d4bbe1d458..542c7d006ad 100644
--- a/app/validators/cron_time_zone_validator.rb
+++ b/app/validators/cron_timezone_validator.rb
@@ -1,9 +1,9 @@
-# CronTimeZoneValidator
+# CronTimezoneValidator
#
-# Custom validator for CronTimeZone.
-class CronTimeZoneValidator < ActiveModel::EachValidator
+# Custom validator for CronTimezone.
+class CronTimezoneValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
- cron_parser = Gitlab::Ci::CronParser.new(record.cron, record.cron_time_zone)
- record.errors.add(attribute, " is invalid syntax") unless cron_parser.cron_time_zone_valid?
+ cron_parser = Gitlab::Ci::CronParser.new(record.cron, record.cron_timezone)
+ record.errors.add(attribute, " is invalid syntax") unless cron_parser.cron_timezone_valid?
end
end
diff --git a/app/validators/cron_validator.rb b/app/validators/cron_validator.rb
index cc07011d56b..981fade47a6 100644
--- a/app/validators/cron_validator.rb
+++ b/app/validators/cron_validator.rb
@@ -3,7 +3,7 @@
# Custom validator for Cron.
class CronValidator < ActiveModel::EachValidator
def validate_each(record, attribute, value)
- cron_parser = Gitlab::Ci::CronParser.new(record.cron, record.cron_time_zone)
+ cron_parser = Gitlab::Ci::CronParser.new(record.cron, record.cron_timezone)
record.errors.add(attribute, " is invalid syntax") unless cron_parser.cron_valid?
end
end
diff --git a/db/migrate/20170329095907_create_ci_trigger_schedules.rb b/db/migrate/20170329095907_create_ci_trigger_schedules.rb
index 3dcd05175c0..cfcfa27ebb5 100644
--- a/db/migrate/20170329095907_create_ci_trigger_schedules.rb
+++ b/db/migrate/20170329095907_create_ci_trigger_schedules.rb
@@ -3,9 +3,7 @@ class CreateCiTriggerSchedules < ActiveRecord::Migration
DOWNTIME = false
- disable_ddl_transaction!
-
- def up
+ def change
create_table :ci_trigger_schedules do |t|
t.integer "project_id"
t.integer "trigger_id", null: false
@@ -13,17 +11,11 @@ class CreateCiTriggerSchedules < ActiveRecord::Migration
t.datetime "created_at"
t.datetime "updated_at"
t.string "cron"
- t.string "cron_time_zone"
+ t.string "cron_timezone"
t.datetime "next_run_at"
end
- add_index :ci_trigger_schedules, ["next_run_at"], name: "index_ci_trigger_schedules_on_next_run_at", using: :btree
- add_index :ci_trigger_schedules, ["project_id"], name: "index_ci_trigger_schedules_on_project_id", using: :btree
- add_concurrent_foreign_key :ci_trigger_schedules, :ci_triggers, column: :trigger_id, on_delete: :cascade
- end
-
- def down
- remove_foreign_key :ci_trigger_schedules, column: :trigger_id
- drop_table :ci_trigger_schedules
+ add_index :ci_trigger_schedules, :next_run_at
+ add_index :ci_trigger_schedules, :project_id
end
end
diff --git a/db/migrate/20170404163427_add_trigger_id_foreign_key.rb b/db/migrate/20170404163427_add_trigger_id_foreign_key.rb
new file mode 100644
index 00000000000..6679a95ca11
--- /dev/null
+++ b/db/migrate/20170404163427_add_trigger_id_foreign_key.rb
@@ -0,0 +1,15 @@
+class AddTriggerIdForeignKey < ActiveRecord::Migration
+ include Gitlab::Database::MigrationHelpers
+
+ DOWNTIME = false
+
+ disable_ddl_transaction!
+
+ def up
+ add_concurrent_foreign_key :ci_trigger_schedules, :ci_triggers, column: :trigger_id, on_delete: :cascade
+ end
+
+ def down
+ remove_foreign_key :ci_trigger_schedules, column: :trigger_id
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 7d9f969c2e1..a564a4b6a12 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -307,7 +307,7 @@ ActiveRecord::Schema.define(version: 20170405080720) do
t.datetime "created_at"
t.datetime "updated_at"
t.string "cron"
- t.string "cron_time_zone"
+ t.string "cron_timezone"
t.datetime "next_run_at"
end
diff --git a/lib/gitlab/ci/cron_parser.rb b/lib/gitlab/ci/cron_parser.rb
index 69dd8ad0fce..d1877b76598 100644
--- a/lib/gitlab/ci/cron_parser.rb
+++ b/lib/gitlab/ci/cron_parser.rb
@@ -4,13 +4,13 @@ module Gitlab
VALID_SYNTAX_SAMPLE_TIME_ZONE = 'UTC'.freeze
VALID_SYNTAX_SAMPLE_CRON = '* * * * *'.freeze
- def initialize(cron, cron_time_zone = 'UTC')
+ def initialize(cron, cron_timezone = 'UTC')
@cron = cron
- @cron_time_zone = cron_time_zone
+ @cron_timezone = cron_timezone
end
def next_time_from(time)
- cron_line = try_parse_cron(@cron, @cron_time_zone)
+ cron_line = try_parse_cron(@cron, @cron_timezone)
cron_line.next_time(time).in_time_zone(Time.zone) if cron_line.present?
end
@@ -18,14 +18,14 @@ module Gitlab
try_parse_cron(@cron, VALID_SYNTAX_SAMPLE_TIME_ZONE).present?
end
- def cron_time_zone_valid?
- try_parse_cron(VALID_SYNTAX_SAMPLE_CRON, @cron_time_zone).present?
+ def cron_timezone_valid?
+ try_parse_cron(VALID_SYNTAX_SAMPLE_CRON, @cron_timezone).present?
end
private
- def try_parse_cron(cron, cron_time_zone)
- Rufus::Scheduler.parse("#{cron} #{cron_time_zone}")
+ def try_parse_cron(cron, cron_timezone)
+ Rufus::Scheduler.parse("#{cron} #{cron_timezone}")
rescue
# noop
end
diff --git a/spec/factories/ci/trigger_schedules.rb b/spec/factories/ci/trigger_schedules.rb
index 9c16d45b49a..49d2b29727f 100644
--- a/spec/factories/ci/trigger_schedules.rb
+++ b/spec/factories/ci/trigger_schedules.rb
@@ -2,7 +2,7 @@ FactoryGirl.define do
factory :ci_trigger_schedule, class: Ci::TriggerSchedule do
trigger factory: :ci_trigger_for_trigger_schedule
cron '0 1 * * *'
- cron_time_zone Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE
+ cron_timezone Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE
after(:build) do |trigger_schedule, evaluator|
trigger_schedule.update!(project: trigger_schedule.trigger.project)
@@ -16,17 +16,17 @@ FactoryGirl.define do
trait :nightly do
cron '0 1 * * *'
- cron_time_zone Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE
+ cron_timezone Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE
end
trait :weekly do
cron '0 1 * * 6'
- cron_time_zone Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE
+ cron_timezone Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE
end
trait :monthly do
cron '0 1 22 * *'
- cron_time_zone Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE
+ cron_timezone Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_TIME_ZONE
end
end
end
diff --git a/spec/lib/gitlab/ci/cron_parser_spec.rb b/spec/lib/gitlab/ci/cron_parser_spec.rb
index 1cdd8c1d2e7..b07b84027fc 100644
--- a/spec/lib/gitlab/ci/cron_parser_spec.rb
+++ b/spec/lib/gitlab/ci/cron_parser_spec.rb
@@ -6,12 +6,12 @@ describe Gitlab::Ci::CronParser do
end
describe '#next_time_from' do
- subject { described_class.new(cron, cron_time_zone).next_time_from(Time.now) }
+ subject { described_class.new(cron, cron_timezone).next_time_from(Time.now) }
- context 'when cron and cron_time_zone are valid' do
+ context 'when cron and cron_timezone are valid' do
context 'when specific time' do
let(:cron) { '3 4 5 6 *' }
- let(:cron_time_zone) { 'UTC' }
+ let(:cron_timezone) { 'UTC' }
it_behaves_like "returns time in the future"
@@ -25,7 +25,7 @@ describe Gitlab::Ci::CronParser do
context 'when specific day of week' do
let(:cron) { '* * * * 0' }
- let(:cron_time_zone) { 'UTC' }
+ let(:cron_timezone) { 'UTC' }
it_behaves_like "returns time in the future"
@@ -36,7 +36,7 @@ describe Gitlab::Ci::CronParser do
context 'when slash used' do
let(:cron) { '*/10 */6 */10 */10 *' }
- let(:cron_time_zone) { 'UTC' }
+ let(:cron_timezone) { 'UTC' }
it_behaves_like "returns time in the future"
@@ -50,7 +50,7 @@ describe Gitlab::Ci::CronParser do
context 'when range used' do
let(:cron) { '0,20,40 * 1-5 * *' }
- let(:cron_time_zone) { 'UTC' }
+ let(:cron_timezone) { 'UTC' }
it_behaves_like "returns time in the future"
@@ -60,9 +60,9 @@ describe Gitlab::Ci::CronParser do
end
end
- context 'when cron_time_zone is US/Pacific' do
+ context 'when cron_timezone is US/Pacific' do
let(:cron) { '0 0 * * *' }
- let(:cron_time_zone) { 'US/Pacific' }
+ let(:cron_timezone) { 'US/Pacific' }
it_behaves_like "returns time in the future"
@@ -72,9 +72,9 @@ describe Gitlab::Ci::CronParser do
end
end
- context 'when cron and cron_time_zone are invalid' do
+ context 'when cron and cron_timezone are invalid' do
let(:cron) { 'invalid_cron' }
- let(:cron_time_zone) { 'invalid_cron_time_zone' }
+ let(:cron_timezone) { 'invalid_cron_timezone' }
it 'returns nil' do
is_expected.to be_nil
@@ -98,17 +98,17 @@ describe Gitlab::Ci::CronParser do
end
end
- describe '#cron_time_zone_valid?' do
- subject { described_class.new(Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_CRON, cron_time_zone).cron_time_zone_valid? }
+ describe '#cron_timezone_valid?' do
+ subject { described_class.new(Gitlab::Ci::CronParser::VALID_SYNTAX_SAMPLE_CRON, cron_timezone).cron_timezone_valid? }
context 'when cron is valid' do
- let(:cron_time_zone) { 'Europe/Istanbul' }
+ let(:cron_timezone) { 'Europe/Istanbul' }
it { is_expected.to eq(true) }
end
context 'when cron is invalid' do
- let(:cron_time_zone) { 'Invalid-zone' }
+ let(:cron_timezone) { 'Invalid-zone' }
it { is_expected.to eq(false) }
end
diff --git a/spec/lib/gitlab/import_export/safe_model_attributes.yml b/spec/lib/gitlab/import_export/safe_model_attributes.yml
index 42082ff3dee..0c43c5662e8 100644
--- a/spec/lib/gitlab/import_export/safe_model_attributes.yml
+++ b/spec/lib/gitlab/import_export/safe_model_attributes.yml
@@ -249,7 +249,7 @@ Ci::TriggerSchedule:
- created_at
- updated_at
- cron
-- cron_time_zone
+- cron_timezone
- next_run_at
DeployKey:
- id
diff --git a/spec/models/ci/trigger_schedule_spec.rb b/spec/models/ci/trigger_schedule_spec.rb
index 9a4bf122bf0..fc01d702f65 100644
--- a/spec/models/ci/trigger_schedule_spec.rb
+++ b/spec/models/ci/trigger_schedule_spec.rb
@@ -13,7 +13,7 @@ describe Ci::TriggerSchedule, models: true do
end
it 'updates next_run_at' do
- next_time = Gitlab::Ci::CronParser.new(trigger_schedule.cron, trigger_schedule.cron_time_zone).next_time_from(Time.now)
+ next_time = Gitlab::Ci::CronParser.new(trigger_schedule.cron, trigger_schedule.cron_timezone).next_time_from(Time.now)
expect(Ci::TriggerSchedule.last.next_run_at).to eq(next_time)
end
end
diff --git a/spec/workers/trigger_schedule_worker_spec.rb b/spec/workers/trigger_schedule_worker_spec.rb
index 75a98e42ac5..9d8fd9305ca 100644
--- a/spec/workers/trigger_schedule_worker_spec.rb
+++ b/spec/workers/trigger_schedule_worker_spec.rb
@@ -23,7 +23,7 @@ describe TriggerScheduleWorker do
end
it 'updates next_run_at' do
- next_time = Gitlab::Ci::CronParser.new(trigger_schedule.cron, trigger_schedule.cron_time_zone).next_time_from(Time.now)
+ next_time = Gitlab::Ci::CronParser.new(trigger_schedule.cron, trigger_schedule.cron_timezone).next_time_from(Time.now)
expect(Ci::TriggerSchedule.last.next_run_at).to eq(next_time)
end
end