Skip to content

Add layer tests based on deptrac layers.#832

Draft
DanielBadura wants to merge 1 commit into3.19.xfrom
phpat-layer
Draft

Add layer tests based on deptrac layers.#832
DanielBadura wants to merge 1 commit into3.19.xfrom
phpat-layer

Conversation

@DanielBadura
Copy link
Member

This is the next step into removing deptrac in favor of phpat.

These 3 violations, which are in the deptrace baseline, are not covered right now:

    Patchlevel\EventSourcing\Aggregate\CustomId:
      - Patchlevel\EventSourcing\Serializer\Normalizer\IdNormalizer
    Patchlevel\EventSourcing\Aggregate\Uuid:
      - Patchlevel\EventSourcing\Serializer\Normalizer\IdNormalizer
    Patchlevel\EventSourcing\Attribute\Stream:
      - Patchlevel\EventSourcing\Aggregate\AggregateRoot

These 2 are false positives from deptrac imho:

    Patchlevel\EventSourcing\Aggregate\CustomId:
      - Patchlevel\EventSourcing\Serializer\Normalizer\IdNormalizer
    Patchlevel\EventSourcing\Aggregate\Uuid:
      - Patchlevel\EventSourcing\Serializer\Normalizer\IdNormalizer

As the AggregateRootId interface as a dependency on the attribute Patchlevel\EventSourcing\Serializer\Normalizer\IdNormalizer and not the concrete classes. So this is a good that these 2 are not picked up.

    Patchlevel\EventSourcing\Attribute\Stream:
      - Patchlevel\EventSourcing\Aggregate\AggregateRoot

Is due the dependecy is coming from a union type inside the phpdoc. As soon as I change /** @param string|class-string<AggregateRoot> $name */ to /** @param class-string<AggregateRoot> $name */ it gets picked up correctly:

 ------ ----------------------------------------------------------------------------------------------------------------- 
  Line   src/Attribute/Stream.php                                                                                         
 ------ ----------------------------------------------------------------------------------------------------------------- 
  14     Patchlevel\EventSourcing\Attribute\Stream should not depend on Patchlevel\EventSourcing\Aggregate\AggregateRoot  
         🪪  phpat.testAttributeCanOnlyDependOnAllowedLayers                                                              
 ------ ----------------------------------------------------------------------------------------------------------------- 

So this is a bug on phpat side.

With this change, we can remove deptrac as an dependency and still have our layers protected. WDYT @DavidBadura ?

This is the next step into removing deptrac in favor of phpat
@github-actions
Copy link

Hello 👋

here is the most recent benchmark result:

PersonalDataBench
=================

+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
|                                        | time (kde mode)                                     | memory                                     |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| subject                                | Tag: <current>     | Tag: base          | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| benchLoad1Event ()                     | 1.231ms (±0.00%)   | 1.158ms (±0.00%)   | +6.30%    | 35.584mb        | 36.099mb   | -1.43%      |
| benchLoad10000Events ()                | 96.721ms (±0.00%)  | 95.857ms (±0.00%)  | +0.90%    | 35.584mb        | 35.584mb   | 0.00%       |
| benchSave1Event ()                     | 2.057ms (±0.00%)   | 1.805ms (±0.00%)   | +13.95%   | 35.584mb        | 35.584mb   | 0.00%       |
| benchSave10000Events ()                | 255.038ms (±0.00%) | 267.168ms (±0.00%) | -4.54%    | 35.586mb        | 35.586mb   | 0.00%       |
| benchSave10000Aggregates ()            | 13.620s (±0.00%)   | 13.698s (±0.00%)   | -0.57%    | 35.584mb        | 35.584mb   | 0.00%       |
| benchSave10000AggregatesTransaction () | 9.691s (±0.00%)    | 9.750s (±0.00%)    | -0.61%    | 36.044mb        | 36.044mb   | 0.00%       |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+

CommandToQueryBench
===================

+----------------+------------------+------------------+-----------+-----------------+------------+-------------+
|                | time (kde mode)                                 | memory                                     |
+----------------+------------------+------------------+-----------+-----------------+------------+-------------+
| subject        | Tag: <current>   | Tag: base        | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+----------------+------------------+------------------+-----------+-----------------+------------+-------------+
| benchCreate () | 2.733ms (±0.00%) | 2.928ms (±0.00%) | -6.64%    | 4.975mb         | 4.975mb    | +0.01%      |
| benchUpdate () | 4.408ms (±0.00%) | 4.563ms (±0.00%) | -3.39%    | 5.016mb         | 5.016mb    | 0.00%       |
| benchBoth ()   | 7.022ms (±0.00%) | 7.605ms (±0.00%) | -7.66%    | 5.021mb         | 5.021mb    | 0.00%       |
+----------------+------------------+------------------+-----------+-----------------+------------+-------------+

SnapshotsBench
==============

+----------------------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+
|                                        | time (kde mode)                                   | memory                                     |
+----------------------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+
| subject                                | Tag: <current>    | Tag: base         | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+----------------------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+
| benchLoad10000EventsMissingSnapshot () | 63.889ms (±0.00%) | 61.543ms (±0.00%) | +3.81%    | 35.049mb        | 35.049mb   | 0.00%       |
| benchLoad10000Events ()                | 1.204ms (±0.00%)  | 1.194ms (±0.00%)  | +0.80%    | 35.049mb        | 35.049mb   | 0.00%       |
+----------------------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+

SimpleSetupStreamStoreBench
===========================

+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
|                                        | time (kde mode)                                     | memory                                     |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| subject                                | Tag: <current>     | Tag: base          | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| benchLoad1Event ()                     | 1.065ms (±0.00%)   | 1.124ms (±0.00%)   | -5.23%    | 35.206mb        | 35.206mb   | 0.00%       |
| benchLoad10000Events ()                | 67.082ms (±0.00%)  | 66.486ms (±0.00%)  | +0.90%    | 35.206mb        | 35.206mb   | 0.00%       |
| benchSave1Event ()                     | 1.251ms (±0.00%)   | 1.295ms (±0.00%)   | -3.38%    | 35.206mb        | 35.206mb   | 0.00%       |
| benchSave10000Events ()                | 290.419ms (±0.00%) | 300.278ms (±0.00%) | -3.28%    | 35.206mb        | 35.206mb   | 0.00%       |
| benchSave10000Aggregates ()            | 9.279s (±0.00%)    | 9.013s (±0.00%)    | +2.95%    | 35.206mb        | 35.206mb   | 0.00%       |
| benchSave10000AggregatesTransaction () | 5.365s (±0.00%)    | 5.436s (±0.00%)    | -1.30%    | 35.206mb        | 35.206mb   | 0.00%       |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+

SimpleSetupBench
================

+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
|                                        | time (kde mode)                                     | memory                                     |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| subject                                | Tag: <current>     | Tag: base          | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| benchLoad1Event ()                     | 1.039ms (±0.00%)   | 1.035ms (±0.00%)   | +0.43%    | 34.978mb        | 34.978mb   | 0.00%       |
| benchLoad10000Events ()                | 62.148ms (±0.00%)  | 60.546ms (±0.00%)  | +2.65%    | 34.978mb        | 34.978mb   | 0.00%       |
| benchSave1Event ()                     | 1.645ms (±0.00%)   | 1.261ms (±0.00%)   | +30.46%   | 34.978mb        | 34.978mb   | 0.00%       |
| benchSave10000Events ()                | 224.989ms (±0.00%) | 224.308ms (±0.00%) | +0.30%    | 34.978mb        | 34.978mb   | 0.00%       |
| benchSave10000Aggregates ()            | 8.975s (±0.00%)    | 8.915s (±0.00%)    | +0.67%    | 34.978mb        | 34.978mb   | 0.00%       |
| benchSave10000AggregatesTransaction () | 5.237s (±0.00%)    | 5.209s (±0.00%)    | +0.54%    | 34.979mb        | 34.979mb   | 0.00%       |
+----------------------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+

SubscriptionEngineBatchBench
============================

+---------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+
|                           | time (kde mode)                                   | memory                                     |
+---------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+
| subject                   | Tag: <current>    | Tag: base         | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+---------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+
| benchHandle10000Events () | 82.167ms (±0.00%) | 81.283ms (±0.00%) | +1.09%    | 35.544mb        | 35.544mb   | 0.00%       |
+---------------------------+-------------------+-------------------+-----------+-----------------+------------+-------------+

SplitStreamBench
================

+-------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
|                         | time (kde mode)                                     | memory                                     |
+-------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| subject                 | Tag: <current>     | Tag: base          | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+-------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+
| benchLoad10000Events () | 5.225ms (±0.00%)   | 5.145ms (±0.00%)   | +1.56%    | 35.584mb        | 35.584mb   | 0.00%       |
| benchSave10000Events () | 348.205ms (±0.00%) | 345.905ms (±0.00%) | +0.66%    | 35.651mb        | 35.651mb   | 0.00%       |
+-------------------------+--------------------+--------------------+-----------+-----------------+------------+-------------+

SubscriptionEngineBench
=======================

+---------------------------+-----------------+-----------------+-----------+-----------------+------------+-------------+
|                           | time (kde mode)                               | memory                                     |
+---------------------------+-----------------+-----------------+-----------+-----------------+------------+-------------+
| subject                   | Tag: <current>  | Tag: base       | time-diff | Tag: <current>  | Tag: base  | memory-diff |
+---------------------------+-----------------+-----------------+-----------+-----------------+------------+-------------+
| benchHandle10000Events () | 3.344s (±0.00%) | 3.332s (±0.00%) | +0.35%    | 47.557mb        | 47.557mb   | 0.00%       |
+---------------------------+-----------------+-----------------+-----------+-----------------+------------+-------------+

This comment gets update everytime a new commit comes in!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant