Qinusty pushed to branch Qinusty/skipped-rework at BuildStream / buildstream
Commits:
-
0e86492d
by Josh Smith at 2018-09-12T09:20:20Z
-
0628de74
by Josh Smith at 2018-09-12T09:20:30Z
-
8bd56383
by Josh Smith at 2018-09-12T09:20:30Z
-
1b6b8cfa
by Josh Smith at 2018-09-12T09:23:51Z
4 changed files:
- buildstream/_artifactcache/cascache.py
- buildstream/element.py
- tests/frontend/push.py
- tests/testutils/runcli.py
Changes:
... | ... | @@ -228,7 +228,7 @@ class CASCache(ArtifactCache): |
228 | 228 |
try:
|
229 | 229 |
remote.init()
|
230 | 230 |
|
231 |
- element.info("Pulling {} <- {}".format(element._get_brief_display_key(), remote.spec.url))
|
|
231 |
+ element.status("Pulling {} <- {}".format(element._get_brief_display_key(), remote.spec.url))
|
|
232 | 232 |
|
233 | 233 |
request = buildstream_pb2.GetReferenceRequest()
|
234 | 234 |
request.key = ref
|
... | ... | @@ -250,11 +250,8 @@ class CASCache(ArtifactCache): |
250 | 250 |
raise ArtifactError("Failed to pull artifact {}: {}".format(
|
251 | 251 |
element._get_brief_display_key(), e)) from e
|
252 | 252 |
else:
|
253 |
- self.context.message(Message(
|
|
254 |
- None,
|
|
255 |
- MessageType.INFO,
|
|
256 |
- "Remote ({}) does not have {} cached".format(
|
|
257 |
- remote.spec.url, element._get_brief_display_key())
|
|
253 |
+ element.info("Remote ({}) does not have {} cached".format(
|
|
254 |
+ remote.spec.url, element._get_brief_display_key()
|
|
258 | 255 |
))
|
259 | 256 |
|
260 | 257 |
return False
|
... | ... | @@ -279,7 +276,7 @@ class CASCache(ArtifactCache): |
279 | 276 |
for remote in push_remotes:
|
280 | 277 |
remote.init()
|
281 | 278 |
skipped_remote = True
|
282 |
- element.info("Pushing {} -> {}".format(element._get_brief_display_key(), remote.spec.url))
|
|
279 |
+ element.status("Pushing {} -> {}".format(element._get_brief_display_key(), remote.spec.url))
|
|
283 | 280 |
|
284 | 281 |
try:
|
285 | 282 |
for ref in refs:
|
... | ... | @@ -361,11 +358,8 @@ class CASCache(ArtifactCache): |
361 | 358 |
raise ArtifactError("Failed to push artifact {}: {}".format(refs, e), temporary=True) from e
|
362 | 359 |
|
363 | 360 |
if skipped_remote:
|
364 |
- self.context.message(Message(
|
|
365 |
- None,
|
|
366 |
- MessageType.INFO,
|
|
367 |
- "Remote ({}) already has {} cached".format(
|
|
368 |
- remote.spec.url, element._get_brief_display_key())
|
|
361 |
+ element.info("Remote ({}) already has {} cached".format(
|
|
362 |
+ remote.spec.url, element._get_brief_display_key()
|
|
369 | 363 |
))
|
370 | 364 |
return pushed
|
371 | 365 |
|
... | ... | @@ -1746,7 +1746,7 @@ class Element(Plugin): |
1746 | 1746 |
|
1747 | 1747 |
# Notify successfull download
|
1748 | 1748 |
display_key = self._get_brief_display_key()
|
1749 |
- self.info("Downloaded artifact {}".format(display_key))
|
|
1749 |
+ self.info("Pulled artifact {}".format(display_key))
|
|
1750 | 1750 |
return True
|
1751 | 1751 |
|
1752 | 1752 |
# _skip_push():
|
... | ... | @@ -1785,16 +1785,15 @@ class Element(Plugin): |
1785 | 1785 |
self.warn("Not pushing tainted artifact.")
|
1786 | 1786 |
return False
|
1787 | 1787 |
|
1788 |
- display_key = self._get_brief_display_key()
|
|
1789 |
- with self.timed_activity("Pushing artifact {}".format(display_key)):
|
|
1790 |
- # Push all keys used for local commit
|
|
1791 |
- pushed = self.__artifacts.push(self, self.__get_cache_keys_for_commit())
|
|
1792 |
- if not pushed:
|
|
1793 |
- return False
|
|
1788 |
+ # Push all keys used for local commit
|
|
1789 |
+ pushed = self.__artifacts.push(self, self.__get_cache_keys_for_commit())
|
|
1790 |
+ if not pushed:
|
|
1791 |
+ return False
|
|
1794 | 1792 |
|
1795 |
- # Notify successful upload
|
|
1796 |
- self.info("Pushed artifact {}".format(display_key))
|
|
1797 |
- return True
|
|
1793 |
+ # Notify successful upload
|
|
1794 |
+ display_key = self._get_brief_display_key()
|
|
1795 |
+ self.info("Pushed artifact {}".format(display_key))
|
|
1796 |
+ return True
|
|
1798 | 1797 |
|
1799 | 1798 |
# _shell():
|
1800 | 1799 |
#
|
... | ... | @@ -386,3 +386,26 @@ def test_push_cross_junction(cli, tmpdir, datafiles): |
386 | 386 |
|
387 | 387 |
cache_key = cli.get_element_key(project, 'junction.bst:import-etc.bst')
|
388 | 388 |
assert share.has_artifact('subtest', 'import-etc.bst', cache_key)
|
389 |
+ |
|
390 |
+ |
|
391 |
+@pytest.mark.datafiles(DATA_DIR)
|
|
392 |
+def test_push_already_cached(caplog, cli, tmpdir, datafiles):
|
|
393 |
+ project = os.path.join(datafiles.dirname, datafiles.basename)
|
|
394 |
+ caplog.set_level(1)
|
|
395 |
+ |
|
396 |
+ with create_artifact_share(os.path.join(str(tmpdir), 'artifactshare')) as share:
|
|
397 |
+ |
|
398 |
+ cli.configure({
|
|
399 |
+ 'artifacts': {'url': share.repo, 'push': True}
|
|
400 |
+ })
|
|
401 |
+ result = cli.run(project=project, args=['build', 'target.bst'])
|
|
402 |
+ |
|
403 |
+ result.assert_success()
|
|
404 |
+ assert "SKIPPED Push" not in result.stderr
|
|
405 |
+ |
|
406 |
+ result = cli.run(project=project, args=['push', 'target.bst'])
|
|
407 |
+ |
|
408 |
+ result.assert_success()
|
|
409 |
+ assert not result.get_pushed_elements(), "No elements should have been pushed since the cache was populated"
|
|
410 |
+ assert "INFO Remote ({}) already has ".format(share.repo) in result.stderr
|
|
411 |
+ assert "SKIPPED Push" in result.stderr
|
... | ... | @@ -178,7 +178,7 @@ class Result(): |
178 | 178 |
return list(pushed)
|
179 | 179 |
|
180 | 180 |
def get_pulled_elements(self):
|
181 |
- pulled = re.findall(r'\[\s*pull:(\S+)\s*\]\s*INFO\s*Downloaded artifact', self.stderr)
|
|
181 |
+ pulled = re.findall(r'\[\s*pull:(\S+)\s*\]\s*INFO\s*Pulled artifact', self.stderr)
|
|
182 | 182 |
if pulled is None:
|
183 | 183 |
return []
|
184 | 184 |
|