Commits on Source 35
-
James Ennis authored
Since the CAS refactor, we have not been able to execute bst-artifact-server. This commit ensures that we can. This fix closes #867
-
James Ennis authored
Ensure that we can execute `bst-artifact-server` Closes #867 See merge request !1079
-
Tristan Van Berkom authored
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.
-
Tristan Van Berkom authored
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.
-
Tristan Van Berkom authored
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.
-
Tristan Van Berkom authored
Scheduler refactor, fix processing order Closes #712 See merge request !1067
-
Tristan Van Berkom authored
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.
-
Tristan Van Berkom authored
element.py: Cleanup temporary staging directories on termination See merge request !1080
-
Tristan Van Berkom authored
-
Tristan Van Berkom authored
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.
-
Tristan Van Berkom authored
Grouping bits of internal testing together here
-
Tristan Van Berkom authored
-
Tristan Van Berkom authored
-
Tristan Van Berkom authored
-
Tristan Van Berkom authored
-
Tristan Van Berkom authored
-
Tristan Van Berkom authored
-
Tristan Van Berkom authored
This tests exactly the same thing that is tested in tests/internals/pluginfactory.py (the new location of tests/plugins/basics.py).
-
Tristan Van Berkom authored
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.
-
Tristan Van Berkom authored
-
Tristan Van Berkom authored
This used to be an internal test, converted this to use the `cli` fixture.
-
Tristan Van Berkom authored
Created new `tests/format/iteration.py` which tests the order in which elements are iterated over in various scopes in a loaded data model.
-
Tristan Van Berkom authored
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.
-
Tristan Van Berkom authored
This is where other load time related plugin error handling is checked, and is the last thing to remove in the `tests/pipeline` directory.
-
Tristan Van Berkom authored
Remove some redundancy from the test lines.
-
Tristan Van Berkom authored
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.
-
Tristan Van Berkom authored
-
Tristan Van Berkom authored
This is the directory for all things related to loading.
-
Tristan Van Berkom authored
General refactor in tests directory See merge request !1062
-
Tristan Van Berkom authored
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.
-
Tristan Van Berkom authored
sandbox/sandbox.py: Display failed commands in the detail string See merge request !1081
-
James Ennis authored
-
James Ennis authored
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.
-
James Ennis authored
Make the profiler output binaries (which can be used to visualise the data) See merge request !1082
-
Angelos Evripiotis authored