Detailed test plan for QoS Booking#70
Conversation
🦙 MegaLinter status: ✅ SUCCESS
See detailed report in MegaLinter reports |
Masa8106
left a comment
There was a problem hiding this comment.
Thank you for creating this PR.
Overall, it seems good. As there is several open questions, let us discuss them (Please find my comments.). Thank you.
| | $.sink | exists only if provided in the request body and with the same value | | ||
|
|
||
| # Open questions: | ||
| # serviceArea has to have same value as in the request body or implementations can make adjustments |
There was a problem hiding this comment.
Could you elaborate what you assume "implementations can make adjustments" is? Is there possibility that different serviceArea value with in the request body may be responded?
There was a problem hiding this comment.
It's whether the value in the response has to be strictly the same as in the request or implementation may adjust the serviceArea to facilitate the implementation. I assume that it should be the same, but it would be good to make it more clear in the spec.
There was a problem hiding this comment.
I understood what you pointed out. In my opinion, the same value would be better. But I became to recognise that implemantation may response different serviceArea value through breakout session. Therefore, it seems to be ok that there is no $.serviceArea in examples of the scenario outline.
There was a problem hiding this comment.
How should we handle this?
(1) We assume it should be the same: Write it out in the spec and adding $.serviceArea as example.
(2) We allow implementation adjust the serviceArea: (Write "should be the same" our in the spec, and approve this as it is).
My preference is (2). What do you think?
There was a problem hiding this comment.
Maybe it is more problematic to allow implementations to modify the requested area in 2xx responses, because customers may complain that the booked session is not what they asked for. I guess that a very minimal adjustment would not be a problem, but if we allow implementations to adjust the serviceArea in general, it willl be difficult to specify how much they can adjust it.
I think it will be more pragmatic to return exactly the requested area, even if internally the implementations may perform those necessary adjustments, as long as the perceived service is not noticeably affected.
There was a problem hiding this comment.
It is fine with me to return exactly the requested area.
There was a problem hiding this comment.
CQM Meeting Feb 6th: Proposal to return same data agreed in meeting; @jlurien will adapt API spec as well
There was a problem hiding this comment.
@jlurien, please let me suggest adding this proposal into line#50 and removing this note.
| # serviceArea has to have same value as in the request body or implementations can make adjustments |
| # startTime has to have same value as in the request body or implementations can make adjustments, to be returned when status = UNAVAILABLE? | ||
| # duration to be returned when when status = UNAVAILABLE? | ||
| # bookingId to be returned when when status = UNAVAILABLE? | ||
| # statusInfo should have another value when status = UNAVAILABLE after creation, e.g. BOOKING_CANNOT_BE_FULFILLED or open string |
There was a problem hiding this comment.
We can discuss on this. There is status diagram I assume so far here.
There was a problem hiding this comment.
I commented about this above. In the diagram that you link there is no status for a booking request that has been declined, but the v0.1 spec says that the status for a booking declined during creation is UNAVAILABLE. That is something that we need to decide upon.
There was a problem hiding this comment.
We can update the diagram
There was a problem hiding this comment.
@jlurien, please let me present you an updated diagram.
Changing points are the following:
- The status for a booking declined during creation is specified as "Terminated". In my opinion, it is ok for me not to create resourse for declined booking instead of "Terminated", depending on implementation.
- The status "Available" and "Unavailable" are updated to "Activated (Avaiable)" and "Activated (Unavaiable)". What I am thinking is to distinguish status for booking with status for connectivity. For example, "Activated (Avaiable)" means that the booking is activated after start time is passed and the connectivity to network is fine. Though we can specify two status parameter in yaml file, so far I would like to express them in one existing status parameter.
There was a problem hiding this comment.
There was a problem hiding this comment.
Please refer to Issue#83.
I would like to suggest removing this note.
| # statusInfo should have another value when status = UNAVAILABLE after creation, e.g. BOOKING_CANNOT_BE_FULFILLED or open string |
| # duration to be returned when when status = UNAVAILABLE? | ||
| # bookingId to be returned when when status = UNAVAILABLE? | ||
| # statusInfo should have another value when status = UNAVAILABLE after creation, e.g. BOOKING_CANNOT_BE_FULFILLED or open string | ||
| # sinkCredential may be returned in the response in any case or it should be removed for security |
There was a problem hiding this comment.
I think it is good way to align with other QoD APIs on how sinkCredential is returned.
There was a problem hiding this comment.
Agree. Even more, it should be aligned at Commonalities across all CAMARA APis
There was a problem hiding this comment.
As far as I see QoD API and QoS Provisioning, sinkCrediential in the response is not specified, I think, due to security reason. I prefer to keep as it is (I mean no sinkCredential should be returned).
There was a problem hiding this comment.
I would like to suggest removing this note.
| # sinkCredential may be returned in the response in any case or it should be removed for security |
|
|
||
| # This step is optional, for cases when the implementation did not grant the booking synchronously and later rejects the booking | ||
| # or when it was granted (SCHEDULED) but implementation decides to revoke it before the start | ||
| # TBD if a better status or statusInfo is specified for this use case, e.g. status = "REJECTED" or status = "UNAVAILABLE" + statusInfo = "NOT_SCHEDULED" or "REVOKED" |
There was a problem hiding this comment.
We can discuss on this. There is status diagram I assume so far camaraproject/QualityOnDemand#337.
There was a problem hiding this comment.
as commented above the v0.1 is not aligned with that diagram, so we have to work towards v0.2 on a better definition of statuses in the spec, which is what prevails.
There was a problem hiding this comment.
Please refer to Issue#83.
I would like to suggest removing this note.
| # TBD if a better status or statusInfo is specified for this use case, e.g. status = "REJECTED" or status = "UNAVAILABLE" + statusInfo = "NOT_SCHEDULED" or "REVOKED" |
|
|
||
| # This step is optional, for cases when the implementation did not grant the booking synchronously and later rejects the booking | ||
| # or when it was granted (SCHEDULED) but implementation decides to revoke it before the start | ||
| # TBD if a better status or statusInfo is specified for this use case, e.g. status = "REJECTED" or status = "UNAVAILABLE" + statusInfo = "NOT_SCHEDULED" or "REVOKED" |
There was a problem hiding this comment.
Please refer to Issue#83.
I would like to suggest removing this note.
| # TBD if a better status or statusInfo is specified for this use case, e.g. status = "REJECTED" or status = "UNAVAILABLE" + statusInfo = "NOT_SCHEDULED" or "REVOKED" |
| # startTime has to have same value as in the request body or implementations can make adjustments, to be returned when status = UNAVAILABLE? | ||
| # duration to be returned when when status = UNAVAILABLE? | ||
| # bookingId to be returned when when status = UNAVAILABLE? | ||
| # statusInfo should have another value when status = UNAVAILABLE after creation, e.g. BOOKING_CANNOT_BE_FULFILLED or open string |
There was a problem hiding this comment.
Please refer to Issue#83.
I would like to suggest removing this note.
| # statusInfo should have another value when status = UNAVAILABLE after creation, e.g. BOOKING_CANNOT_BE_FULFILLED or open string |
| # duration to be returned when when status = UNAVAILABLE? | ||
| # bookingId to be returned when when status = UNAVAILABLE? | ||
| # statusInfo should have another value when status = UNAVAILABLE after creation, e.g. BOOKING_CANNOT_BE_FULFILLED or open string | ||
| # sinkCredential may be returned in the response in any case or it should be removed for security |
There was a problem hiding this comment.
I would like to suggest removing this note.
| # sinkCredential may be returned in the response in any case or it should be removed for security |
| | $.device | exists only if provided in the request body and contains only one of the identifier values in the request | | ||
| | $.qosProfile | same value as in the request body | | ||
| | $.startTime | is in the future | | ||
| | $.status | is "REQUESTED", "SCHEDULED" or "UNAVAILABLE" | |
There was a problem hiding this comment.
I would like to suggest updating as below based on our latest discussion.
| | $.status | is "REQUESTED", "SCHEDULED" or "UNAVAILABLE" | | |
| | $.serviceArea | same value as in the request body | | |
| | $.status | is "REQUESTED", "SCHEDULED" or "TERMINATED" | |
| | $.sink | exists only if provided in the request body and with the same value | | ||
|
|
||
| # Open questions: | ||
| # serviceArea has to have same value as in the request body or implementations can make adjustments |
There was a problem hiding this comment.
@jlurien, please let me suggest adding this proposal into line#50 and removing this note.
| # serviceArea has to have same value as in the request body or implementations can make adjustments |
CAMARA Validation — PASS (with warnings)0 errors, 41 warnings, 18 hints | Profile: standard |
Rename `status` property to `bookingStatus` and update status enum values throughout all four feature files: AVAILABLE -> ACTIVATED, UNAVAILABLE -> TERMINATED, and event data field `$.data.status` -> `$.data.bookingStatus`. Resolve all open questions and TBDs: - Add `$.serviceArea` equality assertion (agreed in CQM meeting 2026-02-06) - Assert `$.sinkCredential` absent in all responses (security, aligned with QoD) - Remove resolved open questions for startTime/duration/bookingId (required fields) - Replace TBD on revoked booking with BOOKING_REVOKED statusInfo - Add new scenario for synchronous booking decline (TERMINATED + BOOKING_DECLINED) Fix deleteBooking async/sync split: 202 applies to REQUESTED/SCHEDULED/ACTIVATED; 204 applies to TERMINATED (not REQUESTED/UNAVAILABLE as previously stated). Fix qos-booking-getBookingById scenario _02: replace non-existent property `$.qosStatus` with correct `$.bookingStatus` = "TERMINATED".
|
@Masa8106 this PR updated after PR #88 merged. Changes in the last commit:
I have updated also the TBD/TBC comments and align the test plan with the PR discussions |
hdamker
left a comment
There was a problem hiding this comment.
A very few inconsistencies found by agent, see below.
Co-authored-by: Herbert Damker <herbert.damker@telekom.de>
Co-authored-by: Masaharu Hattori <112887632+Masa8106@users.noreply.github.com> Co-authored-by: Herbert Damker <herbert.damker@telekom.de> Co-authored-by: Jose Luis Urien <jlurien@gmail.com>
|
Hi @hdamker, as we discussed at the last CQM meeting, may I ask you a final review in order to include this PR into M3 RC release. Thank you for your corporation. |
@Masa8106 shortly looked (I'm on vacation). LGTM, my comments are all addressed. You might want to trim the comment "## Code QOS_BOOKING.QOS_PROFILE_NOT_APPLICABLE to be added in next version" as it is already in main after #104 (createBooking.feature:582). |
hdamker
left a comment
There was a problem hiding this comment.
LGTM, see previous comment.
Thanks @hdamker, I have removed the comment. |
|
@Masa8106 you can formally approve again, as the previous approvals were dismissed after I removed the comment. Then we can finally merge. |
- qos-booking.yaml: auto-merged cleanly (Commonalities r4.3 constraints from PR camaraproject#97 combined with CloudEvent alignment from PRs camaraproject#98 and camaraproject#102) - qos-booking.feature (monolithic): deleted, superseded by split files introduced in PR camaraproject#70; $.device assertion updated in qos-booking-getBookingById.feature and qos-booking-retrieveBookingByDevice.feature to match PR camaraproject#97 intent

What type of PR is this?
What this PR does / why we need it:
Creates a new version of the test plan, substituting the single file that we had in the last meta, with a level of detail similar to what we have in other CAMARA APIs and aligned with the guidelines.
There is a separate file per operation, covering all expected responses. Comments are included when issues with the current spec are detected, which may be treated separately.
Which issue(s) this PR fixes:
Fixes #69
Special notes for reviewers:
Once merged, this test plan should evolve and be aligned with the API spec towards the next version.
Changelog input