Changeset 248979 in webkit
- Timestamp:
- Aug 21, 2019 5:21:50 PM (5 years ago)
- Location:
- trunk/Tools
- Files:
-
- 2 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Tools/ChangeLog
r248976 r248979 1 2019-08-21 Jonathan Bedard <jbedard@apple.com> 2 3 results.webkit.org: Add database table to save zip archives to 4 https://bugs.webkit.org/show_bug.cgi?id=200718 5 6 Rubber-stamped by Aakash Jain. 7 8 * resultsdbpy/resultsdbpy/model/archive_context.py: Added. 9 (ArchiveContext): 10 (ArchiveContext.ArchivesByCommit): Store archives to be retrieved by commit and configuration. 11 (ArchiveContext.ArchivesByCommit.unpack): 12 (ArchiveContext.assert_zipfile): 13 (ArchiveContext.open_zipfile): 14 (ArchiveContext.__init__): 15 (ArchiveContext.__enter__): 16 (ArchiveContext.__exit__): 17 (ArchiveContext.register): Save the provided archive to Cassandra. 18 (ArchiveContext.find_archive): Find all archives matching the specified criteria. 19 (ArchiveContext._files_for_archive): 20 (ArchiveContext.ls): List all files in the matching archives. 21 (ArchiveContext.file): Extract a file from the matching archives. 22 * resultsdbpy/resultsdbpy/model/archive_context_unittest.py: Added. 23 (ArchiveContextTest): 24 * resultsdbpy/resultsdbpy/model/mock_model_factory.py: 25 (MockModelFactory): 26 (MockModelFactory.process_results): 27 (MockModelFactory.add_mock_archives): 28 * resultsdbpy/resultsdbpy/model/model.py: 29 (Model.__init__): Add an ArchiveContext to the model. 30 1 31 2019-08-21 Aakash Jain <aakash_jain@apple.com> 2 32 -
trunk/Tools/resultsdbpy/resultsdbpy/model/mock_model_factory.py
r247628 r248979 21 21 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 22 22 23 import base64 24 import io 23 25 import time 24 26 … … 31 33 32 34 class MockModelFactory(object): 35 ARCHIVE_ZIP = """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""" 60 THREE_WEEKS = 60 * 60 * 24 * 21 33 61 34 62 @classmethod … … 117 145 with model.upload_context: 118 146 current = time.time() 119 old = current - 60 * 60 * 24 * 21147 old = current - cls.THREE_WEEKS 120 148 for complete_configuration in configurations: 121 149 if complete_configuration != configuration: … … 130 158 131 159 @classmethod 132 def process_results( self, model, configuration=Configuration(), suite='layout-tests'):160 def process_results(cls, model, configuration=Configuration(), suite='layout-tests'): 133 161 configurations = [configuration] if configuration.is_complete() else ConfigurationContextTest.CONFIGURATIONS 134 162 … … 148 176 test_results=result['test_results'], timestamp=result['timestamp'], 149 177 ) 178 179 @classmethod 180 def add_mock_archives(cls, model, configuration=Configuration(), suite='layout-tests', archive=None): 181 archive = archive or io.BytesIO(base64.b64decode(cls.ARCHIVE_ZIP)) 182 configurations = [configuration] if configuration.is_complete() else ConfigurationContextTest.CONFIGURATIONS 183 184 with model.upload_context: 185 current = time.time() 186 old = current - cls.THREE_WEEKS 187 for complete_configuration in configurations: 188 if complete_configuration != configuration: 189 continue 190 191 timestamp_to_use = current 192 if (complete_configuration.platform == 'Mac' and complete_configuration.version <= Configuration.version_to_integer('10.13')) \ 193 or (complete_configuration.platform == 'iOS' and complete_configuration.version <= Configuration.version_to_integer('11')): 194 timestamp_to_use = old 195 196 cls.iterate_all_commits(model, lambda commits: model.archive_context.register(archive, complete_configuration, commits, suite=suite, timestamp=timestamp_to_use)) -
trunk/Tools/resultsdbpy/resultsdbpy/model/model.py
r247628 r248979 24 24 import sys 25 25 26 from resultsdbpy.model.archive_context import ArchiveContext 26 27 from resultsdbpy.model.ci_context import CIContext 27 28 from resultsdbpy.model.commit_context import CommitContext … … 75 76 self.upload_context.register_upload_callback(context.name, context.register) 76 77 78 self.archive_context = ArchiveContext( 79 configuration_context=self.configuration_context, 80 commit_context=self.commit_context, 81 ttl_seconds=self.default_ttl_seconds, 82 ) 83 77 84 def do_work(self): 78 85 if not self._async_processing:
Note: See TracChangeset
for help on using the changeset viewer.