deckhand/deckhand/tests/functional/gabbits/resources
Felipe Monteiro e4abca1cd7 Use DAG to resolve substitution dependency chain
Currently, Deckhand fails to perform substitution given
a substitution dependency chain for a group of documents.
That is, if A depends on B and C depends on B for substitution
then substitution will fail. Deckhand, at present, can only
perform substitution if A depends on B and C depends on B
and D depends on B, for example: In this case, the dependency
chain is no bigger than 2.

However, for cases where the substitution dependency chain
is larger than 2, then the dependency is no longer trivial. This
is because the substitution dependencies form a DAG that must
be topologically sorted in order to derive the correct order of
substitution. Once the documents are correctly sorted according
to this scheme, then substitution can be carried out as usual.

This PS makes the aforementioned changes to Deckhand's layering
module to make substitution work for non-cyclical dependencies:
A DAG is used to topologically sort the documents according to
their substitution dependency chain. A unit and functional
test has been added to verify the code.

If a cycle is detected, a critical error is thrown. Unit tests
have been added to validate this case as well.

Change-Id: Iaca3963f44aec6c897ad9fd690ce314a3a4d97a2
2018-02-12 20:54:54 +00:00
..
deckhand-owned-sample.yaml Add functional tests for "owned" documents 2017-12-23 02:25:29 +00:00
design-doc-layering-sample-2-layers.yaml Allow parentSelector to use multiple labels to select parent document 2018-02-09 15:27:45 -05:00
design-doc-layering-sample-3-layers.yaml DECKHAND-89: Integrate layering with rendered documents 2017-12-15 11:07:41 -05:00
design-doc-layering-sample-split-bucket-a.yaml Sorting/filtering for rendered-documents. 2018-01-15 15:25:08 -04:00
design-doc-layering-sample-split-bucket-b.yaml Sorting/filtering for rendered-documents. 2018-01-15 15:25:08 -04:00
design-doc-layering-sample-with-delete.yaml Add concept of buckets 2017-08-23 09:25:27 -05:00
design-doc-layering-sample-with-update.yaml Add concept of buckets 2017-08-23 09:25:27 -05:00
design-doc-substitution-generic-sample.yaml Fix: Allow generic documents to be used as substitution sources. 2018-01-12 14:06:44 -04:00
design-doc-substitution-sample-split-bucket-a.yaml DECKHAND-66: Document substitution implementation 2017-10-13 15:16:27 -04:00
design-doc-substitution-sample-split-bucket-b.yaml DECKHAND-89: Integrate layering with rendered documents 2017-12-15 11:07:41 -05:00
design-doc-substitution-sample.yaml DECKHAND-89: Integrate layering with rendered documents 2017-12-15 11:07:41 -05:00
layering-and-substitution-dag-sample.yaml Use DAG to resolve substitution dependency chain 2018-02-12 20:54:54 +00:00
layering-and-substitution-sample.yaml Use DAG to resolve substitution dependency chain 2018-02-12 20:54:54 +00:00
layering-needs-substitution-source.yaml Add concept of buckets 2017-08-23 09:25:27 -05:00
passphrase.yaml Unskip all multi-doc CRUD functional tests 2017-09-08 20:02:16 +01:00
sample-doc.yaml Add concept of buckets 2017-08-23 09:25:27 -05:00
sample-schema.yaml Add basic schema validation tests. 2017-09-14 10:10:28 -04:00
sample-tag-data.yaml [feat] DECKHAND-36 Revision tagging API 2017-08-29 15:41:20 +01:00
ucp-sample-documents.yaml Test: add real-world functional schema validation 2017-12-21 14:48:42 -06:00
unusual-documents.yaml Test: add unusual documents to functional testing 2018-01-10 23:33:01 -04:00