WsClient Test Generation Progress
Report Generated: March 4, 2026
Executive Summary
| Metric | Value |
| Total Tests Generated | 293 |
| Total Tests Enabled | 276 |
| Total Lines of Code Generated | 8,175 |
| Estimated Engineer Hours Saved | ~481 |
| Automatically Fixed Client Issues | 9 (3 Critical · 2 High · 4 Medium) |
| Low Confidence Client Issues | 0 |
| Server Issues Reported (test failures) | 16 (2 High · 4 Medium · 3 Low root causes) |
| Server API Methods Covered by Test Generator | 16 / 365 (4.4%) |
| Tested Services: Server API Coverage | 100% |
| Tested Services: Client Branch Coverage | 88% |
ESP Service Coverage Details
| Service | Methods Tested | API Coverage | Server Branch Coverage | Client Branch Coverage | Notes |
| WsStore | 10/10 | 100% | N/A | 82% | Missed branches: error handling / null checks |
| WsDFU | 3/26 | N/A | N/A | N/A | Partial coverage - 3 methods tested |
| WsResources | 3/3 | 100% | N/A | 93% | Full coverage achieved |
Issue Analysis
Automatically Fixed Client Issues — by Severity
| Severity | Count |
| Critical | 3 |
| High | 2 |
| Medium | 4 |
| Low | 0 |
| Total | 9 |
Server Issues Reported — by Severity
Note: Counts represent distinct root causes. A single issue may affect multiple tests (e.g., the DALI @ encoding issue alone causes 7 test failures).
| Severity | Distinct Issues | Test Failures |
| High | 2 | 8 |
| Medium | 4 | 5 |
| Low | 3 | 3 |
| Total | 9 | 16 |
Resource Estimation
Estimated Engineer Hours Saved
The ~481 hour estimate is derived from three components:
| Component | Calculation | Hours |
| Manual test authoring | 293 tests × 1.5 hrs/test | 440 |
| Client bug discovery & fix | 9 issues × 3 hrs/issue | 27 |
| Server issue investigation & documentation | 9 root causes × 1.5 hrs/issue | 14 |
| Total | | 481 |
Assumptions:
- 1.5 hrs/test — covers API familiarisation, test design, implementation, and debugging against a live server
- 3 hrs/client issue — covers reproduction, root cause analysis, implementing the fix, and verification
- 1.5 hrs/server issue — covers reproduction, investigation, and writing a clear bug report; excludes server-side fix time
Coverage Analysis
Server API Methods Coverage
| Service | Total Methods | Covered | Remaining | Coverage % |
| ws_store.ecm | 10 | 10 | 0 | 100% |
| ws_dfu.ecm | 26 | 3 | 23 | 11.5% |
| ws_workunits.ecm | 80 | 0 | 80 | 0% |
| ws_access.ecm | 53 | 0 | 53 | 0% |
| ws_fs.ecm | 31 | 0 | 31 | 0% |
| ws_dali.ecm | 29 | 0 | 29 | 0% |
| ws_smc.ecm | 22 | 0 | 22 | 0% |
| ws_topology.ecm | 20 | 0 | 20 | 0% |
| ws_packageprocess.ecm | 16 | 0 | 16 | 0% |
| ws_esdlconfig.ecm | 12 | 0 | 12 | 0% |
| ws_dfuXref.ecm | 11 | 0 | 11 | 0% |
| ws_sql.ecm | 10 | 0 | 10 | 0% |
| ws_espcontrol.ecm | 10 | 0 | 10 | 0% |
| ws_machine.ecm | 5 | 0 | 5 | 0% |
| ws_sasha.ecm | 4 | 0 | 4 | 0% |
| ws_decoupledlogging.ecm | 4 | 0 | 4 | 0% |
| ws_account.ecm | 4 | 0 | 4 | 0% |
| ws_resources.ecm | 3 | 3 | 0 | 100% |
| ws_logaccess.ecm | 3 | 0 | 3 | 0% |
| ws_fileio.ecm | 3 | 0 | 3 | 0% |
| ws_dfs.ecm | 3 | 0 | 3 | 0% |
| ws_codesign.ecm | 3 | 0 | 3 | 0% |
| ws_loggingservice.ecm | 2 | 0 | 2 | 0% |
| ws_cloud.ecm | 2 | 0 | 2 | 0% |
| ldapenvironment.ecm | 2 | 0 | 2 | 0% |
| ws_elk.ecm | 1 | 0 | 1 | 0% |
| Total | 365 | 16 | 349 | 4.4% |
Detailed Results by Method
WsDFU.getFileDataColumns
| Metric | Value |
| Tests Generated | 19 |
| Tests Passed | 15 |
| Tests Failed | 4 |
| Automatically Fixed Client Issues | 2 |
| Low Confidence Client Issues | 0 |
| Server Issues Reported | 3 |
| Lines of Code Generated | 494 |
Automatically Fixed Client Issues
Critical
- Fix
ClassCastException in ArrayOfDFUDataColumn unwrapping
- Implement virtual column filtering
Server Issues Reported
High Priority
- DATASET Column Support — Enhance ESP
DFUGetDataColumns service to return DATASET-type fields
Medium Priority
ColumnEclType Consistency — Ensure ESP service always populates the ColumnEclType field
WsDFU.getLogicalFiles
| Metric | Value |
| Tests Generated | 33 |
| Tests Passed | 30 |
| Tests Failed | 3 |
| Automatically Fixed Client Issues | 0 |
| Low Confidence Client Issues | 0 |
| Server Issues Reported | 3 |
| Lines of Code Generated | 458 |
Server Issues Reported
Low Priority
- Duplicate Files in Pagination Splits — Duplicate results appear across paginated responses
firstN = 0 Returns Full List — A firstN value of 0 should return zero files, not the full list
- Tilde Search Semantics — Support for tilde (
~) prefix in logical file queries is inconsistent
WsDFU.fastWURefresh
| Metric | Value |
| Tests Generated | 18 |
| Tests Passed | 18 |
| Tests Failed | 0 |
| Automatically Fixed Client Issues | 1 |
| Low Confidence Client Issues | 0 |
| Server Issues Reported | 0 |
| Lines of Code Generated | 697 |
Automatically Fixed Client Issues
Medium Priority
WorkunitWrapper.updateState(ECLWorkunit) — Failed to populate some fields, causing test failures
WsStore — All Methods
| Metric | Value |
| Methods Covered | 12 |
| Tests Generated | 170 |
| Tests Passed | 160 |
| Tests Failed | 10 |
| Automatically Fixed Client Issues | 6 |
| Low Confidence Client Issues | 0 |
| Server Issues Reported | 10 |
| Lines of Code Generated | 5,368 |
Code Coverage
| Metric | Value |
| Function Coverage | 100% |
| Branch Coverage | 82% |
Note: Missed branches are typically error handling and null checks not considered worth testing.
Automatically Fixed Client Issues
Critical
- Fix wrong parameter in
fetchValueEncrypted delegate call (secretKey was passed as the key argument)
High
- Handle
ArrayOfEspExceptionWrapper gracefully in fetchValue, listNamespaces, fetchAllNSKeys, and fetchKeyMetaData (return null/empty instead of propagating exception)
- Re-throw
RemoteException on connection failure in listNSKeys and fetchAllNSKeys (was silently swallowed)
Medium
- Guard against null internal stub in
fetchAllNSKeys (throw descriptive exception instead of NullPointerException)
- Add null/mode input validation to
setValueEncrypted (Cipher and secretKey overloads)
- Guard against null
Cipher argument in fetchValueEncrypted
Server Issues Reported
High Priority
- DALI
@ Character Encoding — 7 tests fail when store names, namespace names, or usernames contain @; DALI internally encodes @ → _a, corrupting path lookups. Affects listNamespaces, listNSKeys, fetchAllNSKeys, deleteValue, and deleteNamespace
Medium Priority
listStores Type Filter Not Enforced — Server ignores typeFilter parameter and returns all stores regardless of type
- Non-Idempotent
deleteNamespace — Server throws an error on a second deleteNamespace call for an already-deleted namespace instead of returning gracefully
- Silent Credential Acceptance —
fetchAllNSKeys does not return an authentication error when called with invalid credentials on a secured cluster
WsResources — All Methods
| Metric | Value |
| Tests Generated | 53 |
| Tests Passed | 53 |
| Tests Failed | 0 |
| Automatically Fixed Client Issues | 0 |
| Low Confidence Client Issues | 0 |
| Server Issues Reported | 0 |
| Lines of Code Generated | 1,158 |
Code Coverage
| Metric | Value |
| Function Coverage | 100% |
| Branch Coverage | 93% |