Closed rbattle closed 1 year ago
Unit Tests Coverage Report
File | Coverage | Lines | Branches | |
---|---|---|---|---|
All files | 86% |
91% |
82% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.model.LocalUpdateSyncRequest | 84% |
88% |
80% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.model.Direction | 100% |
100% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.model.LocalDeleteSyncRequest | 99% |
98% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest | 84% |
98% |
71% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.model.CloudDeleteSyncRequest | 80% |
78% |
83% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.model.OverwriteCloudShadowRequest | 98% |
95% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.model.BaseSyncRequest | 83% |
93% |
73% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.model.OverwriteLocalShadowRequest | 98% |
95% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.model.CloudUpdateSyncRequest | 74% |
76% |
71% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.model.Operation | 100% |
100% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.model.PubSubRequest | 100% |
100% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.strategy.PeriodicSyncStrategy | 63% |
77% |
50% |
:x: |
com.aws.greengrass.shadowmanager.sync.strategy.SyncStrategyFactory | 100% |
100% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.strategy.BaseSyncStrategy | 87% |
90% |
85% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.strategy.RealTimeSyncStrategy | 93% |
86% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.IotDataPlaneClientFactory | 72% |
95% |
50% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.RequestBlockingQueue | 96% |
99% |
93% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.SyncHandler | 71% |
89% |
53% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.IotDataPlaneClientWrapper | 91% |
91% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.RequestMerger | 78% |
76% |
81% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.CloudDataClient | 74% |
72% |
77% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.configuration.ShadowSyncConfiguration | 87% |
93% |
82% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.configuration.ThingShadowSyncConfiguration | 76% |
78% |
75% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ShadowManagerDatabase | 0% |
0% |
0% |
:x: |
com.aws.greengrass.shadowmanager.ShadowManager | 83% |
86% |
80% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ShadowManagerDAOImpl | 100% |
100% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.AuthorizationHandlerWrapper | 100% |
100% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.PubSubIntegrator | 89% |
93% |
86% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ShadowManager$1 | 43% |
43% |
0% |
:x: |
software.amazon.awssdk.aws.greengrass.GeneratedAbstractDeleteThingShadowOperationHandler | 67% |
67% |
0% |
:white_check_mark: |
software.amazon.awssdk.aws.greengrass.GeneratedAbstractListNamedShadowsForThingOperationHandler | 67% |
67% |
0% |
:white_check_mark: |
software.amazon.awssdk.aws.greengrass.GeneratedAbstractUpdateThingShadowOperationHandler | 67% |
67% |
0% |
:white_check_mark: |
software.amazon.awssdk.aws.greengrass.GeneratedAbstractGetThingShadowOperationHandler | 67% |
67% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.strategy.model.StrategyType | 86% |
92% |
80% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.strategy.model.Strategy | 90% |
100% |
80% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.util.JsonMerger | 94% |
100% |
89% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.util.SyncNodeMerger | 91% |
98% |
84% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.util.DataOwner | 100% |
100% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.util.ShadowWriteSynchronizeHelper | 100% |
100% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.util.Validator | 100% |
100% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.util.JsonUtil | 95% |
100% |
90% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.ResponseMessageBuilder | 100% |
100% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.ShadowDocument | 81% |
89% |
73% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.ShadowStateMetadata | 93% |
98% |
89% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.ErrorMessage | 75% |
100% |
50% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.ShadowRequest | 100% |
100% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.ShadowState | 84% |
87% |
81% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.LogEvents | 100% |
100% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.BaseRequestHandler | 77% |
77% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.GetThingShadowRequestHandler | 100% |
100% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.IpcRateLimiter | 100% |
100% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.PubSubClientWrapper | 100% |
100% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.UpdateThingShadowIPCHandler | 100% |
100% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.InboundRateLimiter | 100% |
100% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.InboundRateLimiter$1 | 100% |
100% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.DeleteThingShadowRequestHandler | 99% |
99% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.UpdateThingShadowRequestHandler | 92% |
95% |
89% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.DeleteThingShadowIPCHandler | 100% |
100% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.GetThingShadowIPCHandler | 100% |
100% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.ListNamedShadowsForThingIPCHandler | 100% |
100% |
100% |
:white_check_mark: |
Minimum allowed coverage is 65%
Generated by :monkey: cobertura-action against 28286da2c5f878a3b91c5947777970dacac8ee89
Integration Tests Coverage Report
File | Coverage | Lines | Branches | |
---|---|---|---|---|
All files | 62% |
69% |
56% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.model.LocalUpdateSyncRequest | 34% |
47% |
20% |
:x: |
com.aws.greengrass.shadowmanager.sync.model.Direction | 83% |
91% |
75% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.model.LocalDeleteSyncRequest | 55% |
59% |
50% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest | 35% |
47% |
24% |
:x: |
com.aws.greengrass.shadowmanager.sync.model.CloudDeleteSyncRequest | 53% |
55% |
50% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.model.OverwriteCloudShadowRequest | 76% |
76% |
75% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.model.BaseSyncRequest | 43% |
50% |
36% |
:x: |
com.aws.greengrass.shadowmanager.sync.model.OverwriteLocalShadowRequest | 33% |
33% |
0% |
:x: |
com.aws.greengrass.shadowmanager.sync.model.CloudUpdateSyncRequest | 51% |
51% |
50% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.model.Operation | 100% |
100% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.model.PubSubRequest | 100% |
100% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.strategy.PeriodicSyncStrategy | 71% |
92% |
50% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.strategy.SyncStrategyFactory | 100% |
100% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.strategy.BaseSyncStrategy | 78% |
78% |
77% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.strategy.RealTimeSyncStrategy | 83% |
90% |
75% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.IotDataPlaneClientFactory | 80% |
95% |
65% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.RequestBlockingQueue | 59% |
69% |
50% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.SyncHandler | 82% |
94% |
71% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.IotDataPlaneClientWrapper | 100% |
100% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.RequestMerger | 24% |
33% |
16% |
:x: |
com.aws.greengrass.shadowmanager.sync.CloudDataClient | 49% |
45% |
53% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.configuration.ShadowSyncConfiguration | 70% |
79% |
61% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.configuration.ThingShadowSyncConfiguration | 76% |
78% |
75% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ShadowManagerDatabase | 100% |
100% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ShadowManager | 84% |
89% |
79% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ShadowManagerDAOImpl | 84% |
90% |
77% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.AuthorizationHandlerWrapper | 100% |
100% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.PubSubIntegrator | 22% |
22% |
21% |
:x: |
com.aws.greengrass.shadowmanager.ShadowManager$1 | 14% |
14% |
0% |
:x: |
software.amazon.awssdk.aws.greengrass.GeneratedAbstractDeleteThingShadowOperationHandler | 100% |
100% |
0% |
:white_check_mark: |
software.amazon.awssdk.aws.greengrass.GeneratedAbstractListNamedShadowsForThingOperationHandler | 100% |
100% |
0% |
:white_check_mark: |
software.amazon.awssdk.aws.greengrass.GeneratedAbstractUpdateThingShadowOperationHandler | 100% |
100% |
0% |
:white_check_mark: |
software.amazon.awssdk.aws.greengrass.GeneratedAbstractGetThingShadowOperationHandler | 100% |
100% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.strategy.model.StrategyType | 55% |
69% |
40% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.sync.strategy.model.Strategy | 90% |
100% |
80% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.util.JsonMerger | 34% |
38% |
31% |
:x: |
com.aws.greengrass.shadowmanager.util.SyncNodeMerger | 0% |
0% |
0% |
:x: |
com.aws.greengrass.shadowmanager.util.DataOwner | 0% |
0% |
0% |
:x: |
com.aws.greengrass.shadowmanager.util.ShadowWriteSynchronizeHelper | 100% |
100% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.util.Validator | 64% |
65% |
63% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.util.JsonUtil | 80% |
87% |
73% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.ResponseMessageBuilder | 91% |
91% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.ShadowDocument | 81% |
89% |
73% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.ShadowStateMetadata | 81% |
86% |
77% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.ErrorMessage | 97% |
94% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.ShadowRequest | 88% |
77% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.ShadowState | 94% |
98% |
91% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.model.LogEvents | 100% |
100% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.BaseRequestHandler | 77% |
77% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.GetThingShadowRequestHandler | 87% |
74% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.IpcRateLimiter | 100% |
100% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.PubSubClientWrapper | 82% |
82% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.UpdateThingShadowIPCHandler | 55% |
55% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.InboundRateLimiter | 94% |
100% |
88% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.InboundRateLimiter$1 | 75% |
100% |
50% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.DeleteThingShadowRequestHandler | 86% |
72% |
100% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.UpdateThingShadowRequestHandler | 74% |
76% |
72% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.DeleteThingShadowIPCHandler | 53% |
53% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.GetThingShadowIPCHandler | 95% |
95% |
0% |
:white_check_mark: |
com.aws.greengrass.shadowmanager.ipc.ListNamedShadowsForThingIPCHandler | 61% |
55% |
67% |
:white_check_mark: |
Minimum allowed coverage is 45%
Generated by :monkey: cobertura-action against 28286da2c5f878a3b91c5947777970dacac8ee89
Validated this is working using the example provided in #126? #126 (comment)
I wasn't able to use that specific data yet (waiting on limit increase in the account I was testing with), but was able to reproduce the issue manually using generated data. Confirmed manually that this PR addresses the issue.
Shadow size validation needs to occur after merging the update request into the existing document.
Shadow size validation should just based on desired and reported nodes in order to be consistent with cloud.
Issue #, if available: https://github.com/aws-greengrass/aws-greengrass-shadow-manager/issues/126
Description of changes: Validate shadow size in a manner consistent with cloud
Why is this change necessary: Extra bytes in shadow update are counted when it should be just the contents of "desired" and "reported" Customers could potentially have larger shadows by setting multiple keys as 8kb in distinct requests, it needs to check shadow size after applying the update.
How was this change tested: Unit tests. Ideally we could replicate with customer issue as well. Posting here for review
Any additional information or context required to review the change:
Checklist:
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.