Skip to content

Commit a57939a

Browse files
author
gdgate
authored
Merge pull request #1769 from gooddata/develop
Merge develop to master Reviewed-by: Binh Pham https://github.com/helobinvn
2 parents d570b8d + 32b4f33 commit a57939a

39 files changed

Lines changed: 758 additions & 186 deletions

.travis.yml

Lines changed: 91 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ stages:
77
if: type IN (api, cron)
88
- name: platform-cleanup
99
if: type IN (cron)
10+
- name: license-update
11+
if: branch = master AND type = push
1012
- name: gem-release
1113
if: branch = master AND type = push
1214
- name: gem-smoke-test
@@ -73,23 +75,52 @@ jobs:
7375

7476
- name: lcm integration (vcr) tests - e2e
7577
stage: before-merge
76-
script: bundle exec rspec spec/lcm/integration/lcm_end_to_end_spec.rb
78+
script: bundle exec rspec spec/lcm/integration/spec/e2e/lcm_end_to_end_spec.rb
7779
env:
7880
- VCR_RECORD_MODE=none
7981
rvm: 2.3
8082

8183
# AFTER MERGE
8284
# staging 1
83-
- &lcm-integration-tests
84-
name: staging1 - lcm integration tests
85+
- &lcm-integration-e2e-tests
86+
name: staging1 - lcm integration-e2e tests
8587
stage: after-merge
8688
script: |
8789
bundle exec rake -f lcm.rake docker:build
8890
bundle exec rake -f lcm.rake docker:bundle
89-
bundle exec rake -f lcm.rake test:docker:integration
91+
bundle exec rake -f lcm.rake test:docker:integration-e2e
9092
env:
9193
- VCR_ON=false
9294
- GD_ENV=staging
95+
- GD_MAX_RETRY=2
96+
rvm: jruby-9.1.14
97+
jdk: openjdk8
98+
99+
- &lcm-integration-release-tests
100+
name: staging1 - lcm integration-release tests
101+
stage: after-merge
102+
script: |
103+
bundle exec rake -f lcm.rake docker:build
104+
bundle exec rake -f lcm.rake docker:bundle
105+
bundle exec rake -f lcm.rake test:docker:integration-release
106+
env:
107+
- VCR_ON=false
108+
- GD_ENV=staging
109+
- GD_MAX_RETRY=2
110+
rvm: jruby-9.1.14
111+
jdk: openjdk8
112+
113+
- &lcm-integration-others-tests
114+
name: staging1 - lcm integration-others tests
115+
stage: after-merge
116+
script: |
117+
bundle exec rake -f lcm.rake docker:build
118+
bundle exec rake -f lcm.rake docker:bundle
119+
bundle exec rake -f lcm.rake test:docker:integration-others
120+
env:
121+
- VCR_ON=false
122+
- GD_ENV=staging
123+
- GD_MAX_RETRY=2
93124
rvm: jruby-9.1.14
94125
jdk: openjdk8
95126

@@ -155,11 +186,26 @@ jobs:
155186
jdk: openjdk8
156187

157188
# staging 2
158-
- <<: *lcm-integration-tests
159-
name: staging2 - lcm integration tests
189+
- <<: *lcm-integration-e2e-tests
190+
name: staging2 - lcm integration-e2e tests
191+
env:
192+
- GD_ENV=testing
193+
- VCR_ON=false
194+
- GD_MAX_RETRY=2
195+
196+
- <<: *lcm-integration-release-tests
197+
name: staging2 - lcm integration-release tests
160198
env:
161199
- GD_ENV=testing
162200
- VCR_ON=false
201+
- GD_MAX_RETRY=2
202+
203+
- <<: *lcm-integration-others-tests
204+
name: staging2 - lcm integration-others tests
205+
env:
206+
- GD_ENV=testing
207+
- VCR_ON=false
208+
- GD_MAX_RETRY=2
163209

164210
- <<: *lcm-slow-tests
165211
name: staging2 - lcm slow tests
@@ -192,11 +238,26 @@ jobs:
192238
- VCR_ON=false
193239

194240
# staging 3
195-
- <<: *lcm-integration-tests
196-
name: staging3 - lcm integration tests
241+
- <<: *lcm-integration-e2e-tests
242+
name: staging3 - lcm integration-e2e tests
243+
env:
244+
- GD_ENV=development
245+
- VCR_ON=false
246+
- GD_MAX_RETRY=2
247+
248+
- <<: *lcm-integration-release-tests
249+
name: staging3 - lcm integration-release tests
250+
env:
251+
- GD_ENV=development
252+
- VCR_ON=false
253+
- GD_MAX_RETRY=2
254+
255+
- <<: *lcm-integration-others-tests
256+
name: staging3 - lcm integration-others tests
197257
env:
198258
- GD_ENV=development
199259
- VCR_ON=false
260+
- GD_MAX_RETRY=2
200261

201262
- <<: *lcm-slow-tests
202263
name: staging3 - lcm slow tests
@@ -234,15 +295,21 @@ jobs:
234295
stage: after-merge
235296
name: staging1 - test environment clean-up
236297
script: travis_wait 30 bundle exec ruby bin/test_projects_cleanup.rb -f
237-
env: GD_ENV=staging
298+
env:
299+
- GD_ENV=staging
300+
- GD_MAX_RETRY=2
238301

239302
- <<: *cleanup
240-
name: travis_wait 30 staging2 - test environment clean-up
241-
env: GD_ENV=testing
303+
name: staging2 - test environment clean-up
304+
env:
305+
- GD_ENV=testing
306+
- GD_MAX_RETRY=2
242307

243308
- <<: *cleanup
244-
name: travis_wait 30 staging3 - test environment clean-up
245-
env: GD_ENV=development
309+
name: staging3 - test environment clean-up
310+
env:
311+
- GD_ENV=development
312+
- GD_MAX_RETRY=2
246313

247314
# AFTER MERGE UNIT TESTS ON ALTERNATIVE PLATFORM
248315

@@ -279,8 +346,18 @@ jobs:
279346
script: bundle exec rake test:unit
280347
os: osx
281348
rvm: jruby-9.1.14
282-
osx_image: xcode7.3
349+
osx_image: xcode9.4
283350

351+
- stage: license-update
352+
name: Update license file
353+
rvm: 2.3
354+
script: |
355+
bundle exec rake license:update
356+
- stage: license-update
357+
name: Update license file
358+
rvm: jruby-9.1.14
359+
script: |
360+
bundle exec rake license:update
284361
- stage: gem-release
285362
name: deploy MRI gem
286363
rvm: 2.3

Dockerfile.jruby

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ FROM jruby:9.1-alpine
22

33
MAINTAINER Tomas Korcak <korczis@gmail.com>
44

5-
RUN apk add --no-cache curl make gcc git g++ python linux-headers binutils-gold gnupg libstdc++
5+
RUN apk add --no-cache curl make gcc git g++ python linux-headers binutils-gold gnupg libstdc++ postgresql postgresql-client openssl
66

77
# Switch to directory with sources
88
WORKDIR /src
@@ -20,3 +20,13 @@ ADD . .
2020
RUN keytool -importcert -alias gooddata-2008 -file "./data/2008.crt" -keystore $JAVA_HOME/lib/security/cacerts -trustcacerts -storepass 'changeit' -noprompt
2121
RUN keytool -importcert -alias gooddata-int -file "./data/new_ca.cer" -keystore $JAVA_HOME/lib/security/cacerts -trustcacerts -storepass 'changeit' -noprompt
2222
RUN keytool -importcert -alias gooddata-prod -file "data/new_prodgdc_ca.crt" -keystore $JAVA_HOME/lib/security/cacerts -trustcacerts -storepass 'changeit' -noprompt
23+
24+
ENV LANG en_US.utf8
25+
RUN adduser -D -g '' gooddata
26+
RUN rm -rf $HOME/spec/postgresql
27+
RUN mkdir $HOME/spec/postgresql
28+
RUN chmod -R 0750 $HOME/spec/postgresql
29+
RUN chown gooddata $HOME/spec/postgresql
30+
RUN mkdir /run/postgresql; chmod 1777 -R /run;
31+
RUN mkdir $HOME/pre-exec.d; mkdir $HOME/pre-init.d; chmod -R 1755 $HOME/pre-exec.d; chmod -R 1755 $HOME/pre-exec.d
32+
USER gooddata

Rakefile

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,13 @@ namespace :gem do
3333
desc "Release gem version #{GoodData::VERSION} to rubygems"
3434
task :release do
3535
gem = "gooddata-#{GoodData::VERSION}.gem"
36-
origin_license_file = 'LICENSE'
37-
new_license_file = 'LICENSE_FOR_RUBY_SDK_COMPONENT.txt'
3836
notices_file = 'NOTICES.txt'
39-
File.delete(origin_license_file) if File.exist?(origin_license_file)
40-
File.delete(notices_file) if File.exist?(notices_file)
41-
puts "Deleted files: #{origin_license_file} and #{notices_file}"
42-
File.rename(new_license_file, origin_license_file) if File.exists?(new_license_file)
43-
puts "Renamed file #{new_license_file} to #{origin_license_file}"
37+
38+
if File.exist?(notices_file)
39+
File.delete(notices_file)
40+
puts "Deleted files: #{notices_file}"
41+
end
42+
4443
puts "Building #{gem} ..."
4544
res = `gem build ./gooddata.gemspec`
4645
file = res.match('File: (.*)')[1]
@@ -112,6 +111,24 @@ namespace :license do
112111
puts 'All licenses seem to be OK'
113112
end
114113

114+
desc 'Update LICENSE file'
115+
task :update do
116+
origin_license_file = 'LICENSE'
117+
new_license_file = 'LICENSE_FOR_RUBY_SDK_COMPONENT.txt'
118+
119+
if File.exist?(origin_license_file)
120+
File.delete(origin_license_file)
121+
puts "Deleted files: #{origin_license_file}"
122+
end
123+
124+
if File.exists?(new_license_file)
125+
File.rename(new_license_file, origin_license_file)
126+
puts "Renamed file #{new_license_file} to #{origin_license_file}"
127+
end
128+
129+
puts 'Update LICENSE seem to be OK'
130+
end
131+
115132
desc 'Add license header to each file'
116133
task :add do
117134
spec = Gem::Specification.load('gooddata.gemspec')

bin/test_projects_cleanup.rb

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,39 @@
2222
GoodData::Environment.load
2323
config = GoodData::Environment::ConnectionHelper::LCM_ENVIRONMENT
2424
secrets = GoodData::Environment::ConnectionHelper::SECRETS
25+
default_domain = GoodData::Environment::ConnectionHelper::DEFAULT_DOMAIN
26+
27+
def delete_segment_by_title(title, segments, days = 14, force = false)
28+
return if segments.empty?
29+
dead_line = Time.now - days * 60 * 60 * 24
30+
31+
filtered_segments = segments.select do |s|
32+
if s.id.match(title) && s.id.length > 14 && s.id[s.id.length-14..-1]
33+
segment_created = s.id[s.id.length-14..-1]
34+
created = Time.parse(segment_created) if segment_created
35+
36+
s if created.year >= Time.new.year && created < dead_line
37+
end
38+
end
39+
40+
filtered_segments.each do |segment|
41+
begin
42+
if force
43+
segment.clients.each do |segment_client|
44+
GoodData.logger.info("Deleting segment: #{segment.id} - client: #{segment_client.client_id}")
45+
segment_client.dissociate
46+
end
47+
48+
puts "Deleting segment: #{segment.id}"
49+
segment && segment.delete(force: true)
50+
else
51+
puts "Would delete segment: #{segment.id}"
52+
end
53+
rescue RuntimeError, StandardError => ex
54+
puts "Failed to delete segment #{segment.id}, reason: #{ex}"
55+
end
56+
end
57+
end
2558

2659
def delete_project_by_title(title, projects, days = 14, force = false)
2760
dead_line = Time.now - days * 60 * 60 * 24
@@ -73,8 +106,16 @@ def delete_ads_by_title(title, client, days = 14, force = false)
73106
puts "#{deleted} ADS instances with title \"#{title}\" #{'would be ' unless force}deleted."
74107
end
75108

76-
def clean_up!(client, force, days)
109+
def clean_up!(client, force, days, opts = {})
77110
projects = client.projects
111+
112+
if opts[:domain_id]
113+
domain = client.domain(opts[:domain_id])
114+
115+
# segments id format: {title}_{hostname}_{datetime}
116+
delete_segment_by_title(/CAR_DEMO_PREMIUM/, domain.segments, days, force)
117+
end
118+
78119
delete_project_by_title(/Insurance Demo Master/, projects, days, force)
79120
delete_project_by_title(/Car Demo Master/, projects, days, force)
80121
delete_project_by_title(/Insurance Demo Workspace/, projects, days, force)
@@ -117,7 +158,8 @@ def init_client(username, password, server)
117158

118159
force = options[:force]
119160
days = options[:days] || 3
161+
120162
clean_up!(dev_client, force, days)
121-
clean_up!(prod_client, force, days)
163+
clean_up!(prod_client, force, days, {domain_id: default_domain})
122164

123165
dev_client.disconnect

docker-compose.lcm.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ services:
1313
- JRUBY_OPTS=-J-Xmx1g
1414
- GD_SPEC_PASSWORD
1515
- VCR_ON
16+
- POSTGRES_DB=gooddata
17+
- POSTGRES_USER=gooddata
18+
- POSTGRES_PASSWORD=changeit
1619
volumes:
1720
- .:/src
1821
volumes_from:

lcm.rake

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ require 'fileutils'
33
require 'pathname'
44
require 'rspec/core/rake_task'
55

6-
test_cases = %i[integration slow userprov load]
6+
test_cases = %i[integration-e2e integration-release integration-others slow userprov load]
77

88
# Schema for new Bricks.
99
brick_info_schema = {
@@ -79,7 +79,7 @@ namespace :test do
7979
test_cases.each do |test_case|
8080
desc "Run #{test_case} tests"
8181
RSpec::Core::RakeTask.new(test_case) do |task|
82-
task.pattern = "spec/lcm/#{test_case}/**/*_spec.rb"
82+
task.pattern = test_case['integration'] ? "spec/lcm/integration/spec/#{test_case.to_s.split('-')[-1]}/*_spec.rb" : "spec/lcm/#{test_case}/**/*_spec.rb"
8383
end
8484
end
8585

@@ -101,8 +101,14 @@ namespace :test do
101101
test_cases.each do |t|
102102
desc "Run #{t} tests in Docker"
103103
task t do
104-
system("docker-compose -f docker-compose.lcm.yml run --rm appstore bundle exec rake -f lcm.rake test:#{t}") ||
105-
fail('Test execution failed!')
104+
if t.to_s == 'integration'
105+
system("docker-compose -f docker-compose.lcm.yml run --rm appstore /bin/bash -c ./spec/integration_with_postgresql.sh") ||
106+
fail('Test execution failed!')
107+
else
108+
system("docker-compose -f docker-compose.lcm.yml run --rm appstore bundle exec rake -f lcm.rake test:#{t}") ||
109+
fail('Test execution failed!')
110+
end
111+
106112
end
107113
end
108114
end

0 commit comments

Comments
 (0)