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 |
|
