summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* _profile.py: Added a new profiling topic, load-selectiondanielsilverstone-ct/for-jimJames Ennis2019-01-182-0/+8
| | | | | profile_start() and profile_end() calls have been added to Stream.load_selection()
* _profile.py: Added a new profiling topic, schedulerJames Ennis2019-01-182-1/+7
| | | | | profile_start() and profile_end() calls have been incorporated into Scheduler.run()
* Merge branch 'valentindavid/overnight-tests-logs-artifacts' into 'master'Javier Jardón2019-01-181-0/+3
|\ | | | | | | | | .gitlab-ci.yml: Add overnight tests logs to artifacts. See merge request BuildStream/buildstream!1084
| * .gitlab-ci.yml: Add overnight tests logs to artifacts.Valentin David2019-01-181-0/+3
|/
* Merge branch 'jennis/profiling_outputs_binaries' into 'master'James Ennis2019-01-181-4/+16
|\ | | | | | | | | Make the profiler output binaries (which can be used to visualise the data) See merge request BuildStream/buildstream!1082
| * _profile.py: Write binaries as well as logsjennis/profiling_outputs_binariesJames Ennis2019-01-171-2/+14
| | | | | | | | | | | | Private class methods which write the logs and write the binaries have been added to Profile. The binaries are able to be used by various visualisation tools.
| * _profile.py: Add timestamp to the logsJames Ennis2019-01-171-4/+4
|/
* Merge branch 'tristan/error-message-regression' into 'master'Tristan Van Berkom2019-01-173-7/+8
|\ | | | | | | | | sandbox/sandbox.py: Display failed commands in the detail string See merge request BuildStream/buildstream!1081
| * sandbox/sandbox.py: Display failed commands in the detail stringtristan/error-message-regressionTristan Van Berkom2019-01-163-7/+8
|/ | | | | | | | | | | We should only display commands in detail strings, not in the message texts. This also updates tests/integration/sandbox-bwrap.py to expect the new message string which only contains the command exit status and not the whole command itself, this does not alter the validity of the text case which is checking that we can obtain the expected return value.
* Merge branch 'tristan/organizing-tests' into 'master'Tristan Van Berkom2019-01-17247-739/+500
|\ | | | | | | | | General refactor in tests directory See merge request BuildStream/buildstream!1062
| * tests: Migrate junctions test to tests/format/junctions.pyTristan Van Berkom2019-01-1664-0/+0
| | | | | | | | This is the directory for all things related to loading.
| * tests: Migrate protected variable handling tests to tests/format/variables.pyTristan Van Berkom2019-01-164-102/+89
| |
| * tests: Removing tests/pipeline/load.pyTristan Van Berkom2019-01-163-26/+0
| | | | | | | | | | | | The remaining test simply loads a project with one element and asserts a value on it. This is already sufficiently tested in tests/format/project.py.
| * tests: Renaming some tests in tests/format/project.pyTristan Van Berkom2019-01-161-5/+5
| | | | | | | | Remove some redundancy from the test lines.
| * tests: Migrate preflight error handling check to tests/format/project.pyTristan Van Berkom2019-01-166-19/+7
| | | | | | | | | | | | This is where other load time related plugin error handling is checked, and is the last thing to remove in the `tests/pipeline` directory.
| * tests: Migrate test for load_ref() unsupporting plugins into format/project.pyTristan Van Berkom2019-01-165-32/+32
| | | | | | | | | | | | | | The tests/format/project.py test already has some tests about how we error gracefully for bad plugins and bad plugin configurations, lets put it there rather than tests/pipeline/load.py which we will remove.
| * tests: Migrate dependency order/iteration testing to the format testsTristan Van Berkom2019-01-1630-107/+108
| | | | | | | | | | | | Created new `tests/format/iteration.py` which tests the order in which elements are iterated over in various scopes in a loaded data model.
| * tests: Migrate dependencies test to tests/formatTristan Van Berkom2019-01-1625-292/+168
| | | | | | | | This used to be an internal test, converted this to use the `cli` fixture.
| * tests: Migrate internal Loader basic test to internals directoryTristan Van Berkom2019-01-167-2/+15
| |
| * tests: Rename `plugins` directory to `elements` directoryTristan Van Berkom2019-01-1618-0/+0
| | | | | | | | | | | | Now that the remaining test "filter.py" in the plugins directory tests a specific element, it makes sense to create a place for testing elements, just like we do for sources.
| * tests: Removing tests/plugins/third_party.pyTristan Van Berkom2019-01-165-79/+0
| | | | | | | | | | | | This tests exactly the same thing that is tested in tests/internals/pluginfactory.py (the new location of tests/plugins/basics.py).
| * tests: Migrate plugin loading test to internals directoryTristan Van Berkom2019-01-1617-1/+1
| |
| * tests: Migrate plugin factory test to internals directoryTristan Van Berkom2019-01-1621-1/+1
| |
| * tests: Migrate context test into the internals directoryTristan Van Berkom2019-01-165-1/+1
| |
| * tests: Migrate utils tests into internals directoryTristan Van Berkom2019-01-164-0/+0
| |
| * tests: Migrate yaml test to the internals directoryTristan Van Berkom2019-01-1614-1/+1
| |
| * tests: Migrate storage test to the internals directoryTristan Van Berkom2019-01-164-1/+1
| |
| * tests: Migrate virtual directory storage test to internals directoryTristan Van Berkom2019-01-161-0/+0
| | | | | | | | Grouping bits of internal testing together here
| * tests: Migrate `--except` testing to tests/frontend/show.pyTristan Van Berkom2019-01-1615-88/+86
| | | | | | | | | | | | | | | | | | The tests/pipeline directory will be removed, and this test is the better of the two but also redundant with the one in tests/frontend/show. Renamed existing test in show.py to `test_show_except_simple` and added the better test as `test_show_except` below it.
| * tests: Migrate completions test to tests/frontendTristan Van Berkom2019-01-1624-1/+4
|/
* Merge branch 'tristan/cleanup-staging-tempdir' into 'master'Tristan Van Berkom2019-01-162-31/+28
|\ | | | | | | | | element.py: Cleanup temporary staging directories on termination See merge request BuildStream/buildstream!1080
| * element.py: Cleanup temporary staging directories on terminationTristan Van Berkom2019-01-162-31/+28
|/ | | | | | | | | | | Use utils._tempdir() which in turn uses _signals.terminator() for this purpose. This also changes utils._tempdir() to use utils._force_rmtree() so that it is safe to use for cleaning up the staging directory. This patch fixes orphaned temporary directories being left behind in the artifact cache directory at forceful termination time.
* Merge branch 'tristan/element-processing-order' into 'master'Tristan Van Berkom2019-01-169-258/+307
|\ | | | | | | | | | | | | Scheduler refactor, fix processing order Closes #712 See merge request BuildStream/buildstream!1067
| * _artifactcache/artifactcache.py: Rephrase failure messageTristan Van Berkom2019-01-161-1/+1
| | | | | | | | | | | | | | | | | | | | It was saying "There is not enough space to build the given element.", this makes me think the error is associated to a specific element, but this does not make sense to show up in a cleanup task. Instead say "There is not enough space to complete the build.", which should be more clear that even after cleaning up there is not enough space.
| * tests/frontend/order.py: Enable the test for build and fix the fetch testsTristan Van Berkom2019-01-161-18/+19
| | | | | | | | | | | | With the scheduler changes, fetch jobs get automatically skipped so the output is changed, using a separate repo for each element fixes the test such that every fetch job gets a job launched.
| * _scheduler: Refactor of queues and resources.Tristan Van Berkom2019-01-167-239/+287
|/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This branch makes the following changes: * jobs/job.py: No longer stores any interested resource list Jobs are ephemeral again, they only ever exist while they are running. * queues/queue.py: Revert to only handling lists of elements Elements pass through the queues, Queue.harvest_jobs() replaces Queue.pop_ready_jobs() and now the Queue stops creating jobs as soon as there are not enough resources for the job. Also removed unused `prepare()` abstract method. * queues/buildqueue.py: Adapt the part where we launch a job This part needs to be reworked anyway, just touch it up for now so that it doesnt break with the surrounding changes. * jobs/{cachesize,cleanup}job.py: Expose uniform complete callback Allows the scheduler to manage resource deallocation for these two job completions as a custom thing, at the same phase that the Queues take care of their own resource deallocation. * resources.py: No longer has knowledge of the job Since jobs are ephemeral, they are not a suitable place to store the resource identifiers, these must be provided by the callers wherever needed. Now the main Resources object is owned by the Scheduler but shared with Queues, each take care of managing the resources of the jobs they create through the same resource API. * scheduler.py: Reverted to only creating jobs on demand This changes the flow of the scheduler such that whenever jobs complete, the queues are interrogated for as many jobs which can run at the moment but not more; and this completely removes the waiting list. For the internal cache management jobs, we handle this with a little state instead of having a waiting list and only launch when the resources permit it. By abolishing the scheduler waiting list and creating jobs on demand, we fix the order of element processing and consequently fix issue #712.
* Merge branch 'jennis/fix_bst_artifact_server' into 'master'James Ennis2019-01-161-1/+1
|\ | | | | | | | | | | | | Ensure that we can execute `bst-artifact-server` Closes #867 See merge request BuildStream/buildstream!1079
| * setup.py: Import server main from _cas/casserver.pyJames Ennis2019-01-161-1/+1
|/ | | | | | | Since the CAS refactor, we have not been able to execute bst-artifact-server. This commit ensures that we can. This fix closes #867
* Merge branch 'tristan/detoxing-integration-tests' into 'master'Tristan Van Berkom2019-01-164-12/+51
|\ | | | | | | | | Make integration tests parallelizable See merge request BuildStream/buildstream!1077
| * conftest.py: Use different artifact directory for integration testsTristan Van Berkom2019-01-163-11/+50
| | | | | | | | | | | | | | | | To ensure we can run integration tests in parallel, use a tempdir for the artifact cache of each separate integration test run. This makes it possible to run multiple full test runs including integration tests in parallel under detox.
| * source-determinism.py integration test: Dont use integration_cache fixtureTristan Van Berkom2019-01-161-1/+1
|/ | | | This was just deadcode, it's not really used here.
* Merge branch 'chadnan' into 'master'Angelos Evripiotis2019-01-161-1/+1
|\ | | | | | | | | bst-docker-import: fix Chandan's name See merge request BuildStream/buildstream!1076
| * bst-docker-import: fix Chandan's namechadnanAngelos Evripiotis2019-01-161-1/+1
|/
* Merge branch 'raoul/cas-refactor' into 'master'Jürg Billeter2019-01-1615-414/+443
|\ | | | | | | | | Cas refactor See merge request BuildStream/buildstream!1071
| * cas: move remote only functions to CASRemoteRaoul Hidalgo Charman2019-01-164-144/+148
| | | | | | | | | | | | | | | | | | | | | | | | List of methods moved * Initialization check: made it a class method that is run in a subprocess, for when checking in the main buildstream process. * fetch_blobs * send_blobs * verify_digest_on_remote * push_method Part of #802
| * casremote.py: Move remote CAS classes into its own fileRaoul Hidalgo Charman2019-01-164-257/+283
| | | | | | | | Part of #802
| * _cas: Rename artifactcache folder and move that to a root moduleRaoul Hidalgo Charman2019-01-1613-21/+20
|/ | | | | | | | | Other components will start to reply on cas modules, and not the artifact cache modules so it should be organized to reflect this. All relevant imports have been changed. Part #802
* Merge branch 'jennis/doc_fixes_in_context' into 'master'James Ennis2019-01-161-1/+8
|\ | | | | | | | | Small documentation/comment fixes in context.py See merge request BuildStream/buildstream!1072
| * _context.py: Add documentation to get_workspaces() commandJames Ennis2019-01-161-0/+7
| |
| * _context.py: Doc fix: get_toplevel_project() returns object not listJames Ennis2019-01-161-1/+1
|/