From c9c6af4cc974193226ac123a3d8cdff3e00c62e1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9my=20Coutable?= <remy@rymai.me>
Date: Mon, 20 Jan 2020 15:26:49 +0100
Subject: [PATCH] Prune flaky examples after 30 days
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Rémy Coutable <remy@rymai.me>
---
 .gitlab/ci/test-metadata.gitlab-ci.yml                    | 2 +-
 lib/rspec_flaky/report.rb                                 | 2 +-
 scripts/{ => flaky_examples}/detect-new-flaky-examples    | 0
 .../prune-old-flaky-examples}                             | 2 +-
 scripts/rspec_helpers.sh                                  | 2 +-
 spec/lib/rspec_flaky/report_spec.rb                       | 8 ++++----
 6 files changed, 8 insertions(+), 8 deletions(-)
 rename scripts/{ => flaky_examples}/detect-new-flaky-examples (100%)
 rename scripts/{prune-old-flaky-specs => flaky_examples/prune-old-flaky-examples} (90%)

diff --git a/.gitlab/ci/test-metadata.gitlab-ci.yml b/.gitlab/ci/test-metadata.gitlab-ci.yml
index 21af0d373bc8..4ec0dc70ae66 100644
--- a/.gitlab/ci/test-metadata.gitlab-ci.yml
+++ b/.gitlab/ci/test-metadata.gitlab-ci.yml
@@ -64,4 +64,4 @@ flaky-examples-check:
   script:
     - '[[ -f $NEW_FLAKY_SPECS_REPORT ]] || echo "{}" > ${NEW_FLAKY_SPECS_REPORT}'
     - scripts/merge-reports ${NEW_FLAKY_SPECS_REPORT} rspec_flaky/new_*_*.json
-    - scripts/detect-new-flaky-examples $NEW_FLAKY_SPECS_REPORT
+    - scripts/flaky_examples/detect-new-flaky-examples $NEW_FLAKY_SPECS_REPORT
diff --git a/lib/rspec_flaky/report.rb b/lib/rspec_flaky/report.rb
index 9a0fb88c4243..d88233aea8e8 100644
--- a/lib/rspec_flaky/report.rb
+++ b/lib/rspec_flaky/report.rb
@@ -10,7 +10,7 @@ module RspecFlaky
   # This class is responsible for loading/saving JSON reports, and pruning
   # outdated examples.
   class Report < SimpleDelegator
-    OUTDATED_DAYS_THRESHOLD = 90
+    OUTDATED_DAYS_THRESHOLD = 30
 
     attr_reader :flaky_examples
 
diff --git a/scripts/detect-new-flaky-examples b/scripts/flaky_examples/detect-new-flaky-examples
similarity index 100%
rename from scripts/detect-new-flaky-examples
rename to scripts/flaky_examples/detect-new-flaky-examples
diff --git a/scripts/prune-old-flaky-specs b/scripts/flaky_examples/prune-old-flaky-examples
similarity index 90%
rename from scripts/prune-old-flaky-specs
rename to scripts/flaky_examples/prune-old-flaky-examples
index a00a334fd6e0..7700b93438b1 100755
--- a/scripts/prune-old-flaky-specs
+++ b/scripts/flaky_examples/prune-old-flaky-examples
@@ -24,5 +24,5 @@ puts "Current report has #{report.size} entries."
 
 new_report = report.prune_outdated
 
-puts "New report has #{new_report.size} entries: #{report.size - new_report.size} entries older than 90 days were removed."
+puts "New report has #{new_report.size} entries: #{report.size - new_report.size} entries older than #{RspecFlaky::Report::OUTDATED_DAYS_THRESHOLD} days were removed."
 puts "Saved #{new_report_file}." if new_report.write(new_report_file)
diff --git a/scripts/rspec_helpers.sh b/scripts/rspec_helpers.sh
index 23e769809266..8762108066dc 100644
--- a/scripts/rspec_helpers.sh
+++ b/scripts/rspec_helpers.sh
@@ -25,7 +25,7 @@ function update_tests_metadata() {
   scripts/merge-reports "${FLAKY_RSPEC_SUITE_REPORT_PATH}" rspec_flaky/all_*.json
 
   export FLAKY_RSPEC_GENERATE_REPORT="1"
-  scripts/prune-old-flaky-specs "${FLAKY_RSPEC_SUITE_REPORT_PATH}"
+  scripts/flaky_examples/prune-old-flaky-examples "${FLAKY_RSPEC_SUITE_REPORT_PATH}"
 
   if [[ -n ${TESTS_METADATA_S3_BUCKET} ]]; then
     scripts/sync-reports put "${TESTS_METADATA_S3_BUCKET}" "${FLAKY_RSPEC_SUITE_REPORT_PATH}"
diff --git a/spec/lib/rspec_flaky/report_spec.rb b/spec/lib/rspec_flaky/report_spec.rb
index 6a98a7a4e6b0..1f0eff83db06 100644
--- a/spec/lib/rspec_flaky/report_spec.rb
+++ b/spec/lib/rspec_flaky/report_spec.rb
@@ -3,11 +3,11 @@
 require 'spec_helper'
 
 describe RspecFlaky::Report, :aggregate_failures do
-  let(:a_hundred_days) { 3600 * 24 * 100 }
+  let(:thirty_one_days) { 3600 * 24 * 31 }
   let(:collection_hash) do
     {
       a: { example_id: 'spec/foo/bar_spec.rb:2' },
-      b: { example_id: 'spec/foo/baz_spec.rb:3', first_flaky_at: (Time.now - a_hundred_days).to_s, last_flaky_at: (Time.now - a_hundred_days).to_s }
+      b: { example_id: 'spec/foo/baz_spec.rb:3', first_flaky_at: (Time.now - thirty_one_days).to_s, last_flaky_at: (Time.now - thirty_one_days).to_s }
     }
   end
   let(:suite_flaky_example_report) do
@@ -109,7 +109,7 @@
   end
 
   describe '#prune_outdated' do
-    it 'returns a new collection without the examples older than 90 days by default' do
+    it 'returns a new collection without the examples older than 30 days by default' do
       new_report = flaky_examples.to_h.dup.tap { |r| r.delete(:b) }
       new_flaky_examples = report.prune_outdated
 
@@ -119,7 +119,7 @@
     end
 
     it 'accepts a given number of days' do
-      new_flaky_examples = report.prune_outdated(days: 200)
+      new_flaky_examples = report.prune_outdated(days: 32)
 
       expect(new_flaky_examples.to_h).to eq(report.to_h)
     end
-- 
GitLab