You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-[Annotate test files with behaviors](#annotate-test-files-with-behaviors)
55
+
-[Annotate existing API documentation with behaviors](#annotate-existing-api-documentation-with-behaviors)
56
+
<!-- /toc -->
49
57
50
58
## Release Signoff Checklist
51
59
@@ -56,12 +64,12 @@ For enhancements that make changes to code or processes/procedures in core Kuber
56
64
57
65
Check these off as they are completed for the Release Team to track. These checklist items _must_ be updated for the enhancement to be released.
58
66
59
-
-[] kubernetes/enhancements issue in release milestone, which links to KEP (this should be a link to the KEP location in kubernetes/enhancements, not the initial KEP PR)
60
-
-[] KEP approvers have set the KEP status to `implementable`
61
-
-[] Design details are appropriately documented
62
-
-[] Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
63
-
-[] Graduation criteria is in place
64
-
-[] "Implementation History" section is up-to-date for milestone
67
+
-[x] kubernetes/enhancements issue in release milestone, which links to KEP (this should be a link to the KEP location in kubernetes/enhancements, not the initial KEP PR)
68
+
-[x] KEP approvers have set the KEP status to `implementable`
69
+
-[x] Design details are appropriately documented
70
+
-[x] Test plan is in place, giving consideration to SIG Architecture and SIG Testing input
71
+
-[x] Graduation criteria is in place
72
+
-[x] "Implementation History" section is up-to-date for milestone
65
73
-[ ] User-facing documentation has been created in [kubernetes/website], for publication to [kubernetes.io]
66
74
-[ ] Supporting documentation e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
67
75
@@ -111,7 +119,8 @@ tests and test scaffolding to quickly cover those behaviors.
111
119
* Enable separate review of behaviors and tests that evaluate those behaviors.
112
120
* Provide a single location for defining conforming behavior.
113
121
* Provide tooling to generate as many of the behaviors as possible from API
114
-
schemas.
122
+
schemas. This will be a seed for the behavior lists, which will in turn be
123
+
human curated. Refinements can improve the quality of the seed over time.
115
124
* Provide tooling to generate tests and test scaffolding for validating
116
125
behaviors.
117
126
* Provide tooling to measure the conformance test coverage of the behaviors.
@@ -125,13 +134,16 @@ tests and test scaffolding to quickly cover those behaviors.
125
134
* Add new conformance tests. It is expected that during this effort new
126
135
tests may be created using the proposed tooling, but it is not explicitly part
127
136
of this proposal.
137
+
* Provide tooling that perfectly populates the behaviors from the API schema.
138
+
Not enough information is present in the schema to achieve this. The tooling
139
+
is only intended to produce a seed for human curation.
128
140
129
141
## Proposal
130
142
131
143
The proposal consists of four deliverables:
132
144
* A machine readable format to define conforming behaviors.
133
145
* Tooling to generate lists of behaviors from the API schemas.
134
-
* Tooling to generate tests and test scaffoloding to evaulate those behaviors.
146
+
* Tooling to generate tests and test scaffolding to evaluate those behaviors.
135
147
* Tooling to compare the implemented tests to the list of behaviors and
136
148
calculate coverage.
137
149
@@ -193,7 +205,7 @@ test/conformance
193
205
194
206
The structure of the behavior YAML files is described by these Go types:
195
207
196
-
```
208
+
```go
197
209
// Area defines a general grouping of behaviors
198
210
typeAreastruct {
199
211
// Area is the name of the area.
@@ -342,20 +354,97 @@ this is not a high risk.
342
354
343
355
## Design Details
344
356
345
-
TBD.
357
+
Delivery of this KEP shall be done in the following phases:
358
+
359
+
### Phase 1
360
+
361
+
In Phase 1, we will:
362
+
* Implement the behavior formats and types described above. This will include
363
+
separate suites for tooling-generated behaviors and handcrafted behaviors.
364
+
* Implement the directory structure described above to contain the behavior
365
+
lists, including how to tie tests back to behaviors.
366
+
*`kubetestgen`, a tool which reads the OpenAPI schema and generates the list of
367
+
behaviors.
368
+
* Migrate existing conformance tests to work with the new tooling. Existing
369
+
tooling around generation of conformance reports will not be changed in this
370
+
phase.
371
+
372
+
#### Tying tests back to behaviors
373
+
The proposal above mentions `tests.yaml` but does not describe a format for that
374
+
file. The current conformance frameworks requests that during promotion of the
375
+
test to conformance, the developer adds metadata, including the release name,
376
+
the test name, and description. Tests are identified in the
0 commit comments