results.webkit.org: Make recent=False more usable
https://bugs.webkit.org/show_bug.cgi?id=202873
Rubber-stamped by Aakash Jain.
* resultsdbpy/resultsdbpy/model/configuration_context.py:
(ConfigurationContext.search_for_configuration): If no configuration is specified,
use a set of configurations defined by recent platform.
* resultsdbpy/resultsdbpy/model/configuration_context_unittest.py:
(ConfigurationContextTest.test_expired_configurations): Test that recent=False works.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@251072 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Tools/ChangeLog b/Tools/ChangeLog
index 7c4b09d..930786c 100644
--- a/Tools/ChangeLog
+++ b/Tools/ChangeLog
@@ -1,3 +1,16 @@
+2019-10-14 Jonathan Bedard <jbedard@apple.com>
+
+ results.webkit.org: Make recent=False more usable
+ https://bugs.webkit.org/show_bug.cgi?id=202873
+
+ Rubber-stamped by Aakash Jain.
+
+ * resultsdbpy/resultsdbpy/model/configuration_context.py:
+ (ConfigurationContext.search_for_configuration): If no configuration is specified,
+ use a set of configurations defined by recent platform.
+ * resultsdbpy/resultsdbpy/model/configuration_context_unittest.py:
+ (ConfigurationContextTest.test_expired_configurations): Test that recent=False works.
+
2019-10-14 Adrian Perez de Castro <aperez@igalia.com>
Unreviewed, set Adrian Perez de Castro as WebKit Reviewer
diff --git a/Tools/resultsdbpy/resultsdbpy/model/configuration_context.py b/Tools/resultsdbpy/resultsdbpy/model/configuration_context.py
index 55e8790..9e17fa4 100644
--- a/Tools/resultsdbpy/resultsdbpy/model/configuration_context.py
+++ b/Tools/resultsdbpy/resultsdbpy/model/configuration_context.py
@@ -189,7 +189,7 @@
self._register_in_redis(configuration, branch, timestamp)
- def search_for_configuration(self, configuration, branch=None):
+ def search_for_configuration(self, configuration=Configuration(), branch=None):
if not isinstance(configuration, Configuration):
raise TypeError(f'Expected type {Configuration}, got {type(configuration)}')
@@ -207,7 +207,16 @@
elif 'model' in kwargs:
table = self.ByModel
else:
- raise TypeError(f'{configuration} is not specific enough to be searched by')
+ # Platforms rarely expire, so we can do a decent job of wildcard matching expired configurations
+ # if we try all platforms in the cache.
+ platforms = set([config.platform for config in self.search_for_recent_configuration(branch=branch)])
+ with self:
+ result = []
+ for platform in platforms:
+ configuration.platform = platform
+ result.extend(self.search_for_configuration(configuration, branch))
+ configuration.platform = None
+ return result
with self:
return [model.to_configuration() for model in self.cassandra.select_from_table(table.__table_name__, **kwargs)]
diff --git a/Tools/resultsdbpy/resultsdbpy/model/configuration_context_unittest.py b/Tools/resultsdbpy/resultsdbpy/model/configuration_context_unittest.py
index 1150eb2..47810ce 100644
--- a/Tools/resultsdbpy/resultsdbpy/model/configuration_context_unittest.py
+++ b/Tools/resultsdbpy/resultsdbpy/model/configuration_context_unittest.py
@@ -160,6 +160,14 @@
self.assertEqual(12, len(recent_configurations))
@WaitForDockerTestCase.mock_if_no_docker(mock_redis=FakeStrictRedis, mock_cassandra=MockCassandraContext)
+ def test_expired_configurations(self, redis=StrictRedis, cassandra=CassandraContext):
+ self.init_database(redis=redis, cassandra=cassandra)
+ self.register_configurations()
+
+ recent_configurations = self.database.search_for_configuration()
+ self.assertEqual(24, len(recent_configurations))
+
+ @WaitForDockerTestCase.mock_if_no_docker(mock_redis=FakeStrictRedis, mock_cassandra=MockCassandraContext)
def test_recent_configurations_constrained(self, redis=StrictRedis, cassandra=CassandraContext):
self.init_database(redis=redis, cassandra=cassandra)
self.register_configurations()