Skip to content

Detailed test plan for QoS Booking#70

Merged
jlurien merged 12 commits into
mainfrom
qos-booking-testplan-evolution
Jul 1, 2026
Merged

Detailed test plan for QoS Booking#70
jlurien merged 12 commits into
mainfrom
qos-booking-testplan-evolution

Conversation

@jlurien

@jlurien jlurien commented Oct 28, 2025

Copy link
Copy Markdown
Contributor

What type of PR is this?

  • enhancement/feature
  • tests

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

- Enhanced test plan for QoS Booking API

@jlurien jlurien requested a review from Masa8106 as a code owner October 28, 2025 12:04
@github-actions

github-actions Bot commented Oct 28, 2025

Copy link
Copy Markdown

🦙 MegaLinter status: ✅ SUCCESS

Descriptor Linter Files Fixed Errors Elapsed time
✅ ACTION actionlint 2 0 0.01s
✅ API spectral 2 0 3.85s
✅ GHERKIN gherkin-lint 5 0 1.81s
✅ REPOSITORY git_diff yes no 0.01s
✅ REPOSITORY secretlint yes no 0.61s
✅ YAML yamllint 2 0 1.07s

See detailed report in MegaLinter reports

MegaLinter is graciously provided by OX Security

@Masa8106 Masa8106 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is fine with me to return exactly the requested area.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CQM Meeting Feb 6th: Proposal to return same data agreed in meeting; @jlurien will adapt API spec as well

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jlurien, please let me suggest adding this proposal into line#50 and removing this note.

Suggested change
# serviceArea has to have same value as in the request body or implementations can make adjustments

Comment thread code/Test_definitions/qos-booking-createBooking.feature Outdated
# 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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can discuss on this. There is status diagram I assume so far here.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See the above comment.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can update the diagram

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Masa8106 would you take it?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@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.
StatusDiagram_QoSB_260218

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jlurien, @hdamker
Based on our discussion in the last meeting, I have updated the status diagram.
We can discuss on options "separate states of booking and QoS Session (Connectivity) (more complex?) vs combined state".
Let's discuss on it first in breakout session today.

状態遷移図案260225

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I opened Issue #83 for diagram discussion.
Let's keep discussion there from now and onwards.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please refer to Issue#83.
I would like to suggest removing this note.

Suggested change
# 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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it is good way to align with other QoD APIs on how sinkCredential is returned.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agree. Even more, it should be aligned at Commonalities across all CAMARA APis

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like to suggest removing this note.

Suggested change
# 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"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can discuss on this. There is status diagram I assume so far camaraproject/QualityOnDemand#337.

@jlurien jlurien Nov 13, 2025

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please refer to Issue#83.
I would like to suggest removing this note.

Suggested change
# 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"

Comment thread code/Test_definitions/qos-booking-createBooking.feature Outdated

# 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"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please refer to Issue#83.
I would like to suggest removing this note.

Suggested change
# 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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please refer to Issue#83.
I would like to suggest removing this note.

Suggested change
# 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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like to suggest removing this note.

Suggested change
# 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" |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would like to suggest updating as below based on our latest discussion.

Suggested change
| $.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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jlurien, please let me suggest adding this proposal into line#50 and removing this note.

Suggested change
# serviceArea has to have same value as in the request body or implementations can make adjustments

@camara-validation

camara-validation Bot commented Jun 18, 2026

Copy link
Copy Markdown

CAMARA Validation — PASS (with warnings)

0 errors, 41 warnings, 18 hints | Profile: standard

View full results

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".
@jlurien jlurien requested review from Masa8106 and hdamker June 18, 2026 12:03
@jlurien

jlurien commented Jun 18, 2026

Copy link
Copy Markdown
Contributor Author

@Masa8106 this PR updated after PR #88 merged. Changes in the last commit:

Align test plan with PR #88 status model changes
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".

I have updated also the TBD/TBC comments and align the test plan with the PR discussions

Masa8106
Masa8106 previously approved these changes Jun 18, 2026

@Masa8106 Masa8106 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jlurien, thanks for the update. LGTM.
Will you merge this PR? or I will do it tomorrow or onwards.
Thank you.

@hdamker hdamker left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A very few inconsistencies found by agent, see below.

Comment thread code/Test_definitions/qos-booking-getBookingById.feature Outdated
Comment thread code/Test_definitions/qos-booking-createBooking.feature
Comment thread code/Test_definitions/qos-booking-deleteBooking.feature Outdated
Comment thread code/Test_definitions/qos-booking-createBooking.feature Outdated
Co-authored-by: Herbert Damker <herbert.damker@telekom.de>
Comment thread code/Test_definitions/qos-booking-createBooking.feature Outdated
@Masa8106

Copy link
Copy Markdown
Contributor

@hdamker, thank you for poiting them out.

@jlurien, please find my suggestion. If you are ok, please apply them.

@Masa8106

Copy link
Copy Markdown
Contributor

@jlurien, I am glad if you can have time to review this PR and a related one, #104. After that, we will tackle commonalities alignment PRs in order to complete M3 by this weekend. Thank you for your cooperation.

Comment thread code/Test_definitions/qos-booking-createBooking.feature Outdated
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>
@jlurien

jlurien commented Jun 26, 2026

Copy link
Copy Markdown
Contributor Author

Thanks for the review @Masa8106 , @hdamker . Suggestions applied. #104 approved so error here is kept

@jlurien jlurien requested review from Masa8106 and hdamker June 26, 2026 12:32
Masa8106
Masa8106 previously approved these changes Jun 26, 2026

@Masa8106 Masa8106 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@Masa8106

Copy link
Copy Markdown
Contributor

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.

@hdamker

hdamker commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

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
hdamker previously approved these changes Jul 1, 2026

@hdamker hdamker left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, see previous comment.

Comment thread code/Test_definitions/qos-booking-createBooking.feature Outdated
@jlurien jlurien dismissed stale reviews from hdamker and Masa8106 via 757c37a July 1, 2026 07:14
Comment thread code/Test_definitions/qos-booking-createBooking.feature Outdated
@jlurien

jlurien commented Jul 1, 2026

Copy link
Copy Markdown
Contributor Author

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).

Thanks @hdamker, I have removed the comment.

@jlurien jlurien requested a review from Masa8106 July 1, 2026 07:17
@jlurien

jlurien commented Jul 1, 2026

Copy link
Copy Markdown
Contributor Author

@Masa8106 you can formally approve again, as the previous approvals were dismissed after I removed the comment. Then we can finally merge.

@Masa8106 Masa8106 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I confirmed the removal of the comment. Thank you @hdamker and @jlurien .
Please merge this PR.

@jlurien jlurien merged commit 4d49633 into main Jul 1, 2026
3 checks passed
jlurien added a commit to Masa8106/QoSBooking that referenced this pull request Jul 1, 2026
- 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
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.

Enhance the quality and deep of QoS Booking tests

3 participants