62c11edb4a
CI / lint (pull_request) Successful in 34s
CI / typecheck (pull_request) Successful in 1m5s
CI / build (pull_request) Successful in 55s
CI / helm (pull_request) Successful in 26s
CI / quality (pull_request) Successful in 1m18s
CI / security (pull_request) Successful in 1m33s
CI / push-validation (pull_request) Successful in 20s
CI / unit_tests (pull_request) Successful in 6m49s
CI / docker (pull_request) Successful in 1m50s
CI / coverage (pull_request) Successful in 12m25s
CI / integration_tests (pull_request) Successful in 28m3s
CI / status-check (pull_request) Successful in 4s
- Add create_sandbox() override to _ContainerBaseHandler raising NotImplementedError, matching CloudResourceHandler pattern (issue #836) - Add project_access() override to _ContainerBaseHandler raising NotImplementedError, consistent with all other stub methods - Rename @then("the import should succeed without errors") step to @then("the container handler module import should succeed without errors") to resolve AmbiguousStep collision with tdd_a2a_sdk_dependency_steps.py - Update container_handler.feature to use renamed step - Apply ruff format to container.py ISSUES CLOSED: #2907
278 lines
13 KiB
Gherkin
278 lines
13 KiB
Gherkin
@container-handler
|
|
Feature: Container infrastructure resource handler module
|
|
Verifies that the container handler module exists and implements all
|
|
five handler classes referenced in _resource_registry_container.py:
|
|
ContainerRuntimeHandler, ContainerImageHandler, ContainerChildHandler,
|
|
ContainerVolumeHandler, ContainerNetworkHandler.
|
|
|
|
All handlers must conform to the ResourceHandler protocol and be
|
|
importable from cleveragents.resource.handlers.container.
|
|
|
|
# ── Module importability ─────────────────────────────────
|
|
|
|
Scenario: Container handler module is importable
|
|
When I import the container handler module
|
|
Then the container handler module import should succeed without errors
|
|
|
|
Scenario Outline: Handler class is importable from container module
|
|
When I import "<class_name>" from the container handler module
|
|
Then the class should be importable
|
|
|
|
Examples:
|
|
| class_name |
|
|
| ContainerRuntimeHandler |
|
|
| ContainerImageHandler |
|
|
| ContainerChildHandler |
|
|
| ContainerVolumeHandler |
|
|
| ContainerNetworkHandler |
|
|
|
|
# ── Protocol conformance ─────────────────────────────────
|
|
|
|
Scenario Outline: Handler class conforms to ResourceHandler protocol
|
|
Given a "<class_name>" instance
|
|
Then the instance should satisfy the ResourceHandler protocol
|
|
|
|
Examples:
|
|
| class_name |
|
|
| ContainerRuntimeHandler |
|
|
| ContainerImageHandler |
|
|
| ContainerChildHandler |
|
|
| ContainerVolumeHandler |
|
|
| ContainerNetworkHandler |
|
|
|
|
# ── Handler resolution via resolver ─────────────────────
|
|
|
|
Scenario Outline: Handler resolves via resolve_handler for container types
|
|
When I resolve the handler "<handler_ref>"
|
|
Then the handler should resolve without HandlerResolutionError
|
|
|
|
Examples:
|
|
| handler_ref |
|
|
| cleveragents.resource.handlers.container:ContainerRuntimeHandler |
|
|
| cleveragents.resource.handlers.container:ContainerImageHandler |
|
|
| cleveragents.resource.handlers.container:ContainerChildHandler |
|
|
| cleveragents.resource.handlers.container:ContainerVolumeHandler |
|
|
| cleveragents.resource.handlers.container:ContainerNetworkHandler |
|
|
|
|
# ── ContainerRuntimeHandler ──────────────────────────────
|
|
|
|
Scenario: ContainerRuntimeHandler has correct type label
|
|
Given a "ContainerRuntimeHandler" instance
|
|
Then the handler type_label should be "container-runtime"
|
|
|
|
Scenario: ContainerRuntimeHandler resolve raises NotImplementedError
|
|
Given a "ContainerRuntimeHandler" instance
|
|
And a container resource of type "container-runtime" with location "/var/run/docker.sock"
|
|
When I call resolve on the container handler
|
|
Then a container handler NotImplementedError should be raised
|
|
|
|
Scenario: ContainerRuntimeHandler read raises NotImplementedError
|
|
Given a "ContainerRuntimeHandler" instance
|
|
And a container resource of type "container-runtime" with location "/var/run/docker.sock"
|
|
When I call read on the container handler
|
|
Then a container handler NotImplementedError should be raised
|
|
|
|
Scenario: ContainerRuntimeHandler content_hash returns EMPTY_CONTENT_HASH for no location
|
|
Given a "ContainerRuntimeHandler" instance
|
|
And a container resource of type "container-runtime" with no location
|
|
When I call content_hash on the container handler
|
|
Then the content_hash result should be the EMPTY_CONTENT_HASH sentinel
|
|
|
|
Scenario: ContainerRuntimeHandler content_hash returns identity hash for location
|
|
Given a "ContainerRuntimeHandler" instance
|
|
And a container resource of type "container-runtime" with location "/var/run/docker.sock"
|
|
When I call content_hash on the container handler
|
|
Then the content_hash result should be a non-empty hex string
|
|
|
|
# ── ContainerImageHandler ────────────────────────────────
|
|
|
|
Scenario: ContainerImageHandler has correct type label
|
|
Given a "ContainerImageHandler" instance
|
|
Then the handler type_label should be "container-image"
|
|
|
|
Scenario: ContainerImageHandler resolve raises NotImplementedError
|
|
Given a "ContainerImageHandler" instance
|
|
And a container resource of type "container-image" with location "ubuntu:22.04"
|
|
When I call resolve on the container handler
|
|
Then a container handler NotImplementedError should be raised
|
|
|
|
Scenario: ContainerImageHandler content_hash returns identity hash for image ref
|
|
Given a "ContainerImageHandler" instance
|
|
And a container resource of type "container-image" with location "ubuntu:22.04"
|
|
When I call content_hash on the container handler
|
|
Then the content_hash result should be a non-empty hex string
|
|
|
|
# ── ContainerChildHandler ────────────────────────────────
|
|
|
|
Scenario: ContainerChildHandler has correct type label
|
|
Given a "ContainerChildHandler" instance
|
|
Then the handler type_label should be "container-child"
|
|
|
|
Scenario: ContainerChildHandler resolve raises NotImplementedError
|
|
Given a "ContainerChildHandler" instance
|
|
And a container resource of type "container-mount" with location "/mnt/data"
|
|
When I call resolve on the container handler
|
|
Then a container handler NotImplementedError should be raised
|
|
|
|
Scenario: ContainerChildHandler read raises NotImplementedError
|
|
Given a "ContainerChildHandler" instance
|
|
And a container resource of type "container-mount" with location "/mnt/data"
|
|
When I call read on the container handler
|
|
Then a container handler NotImplementedError should be raised
|
|
|
|
# ── ContainerVolumeHandler ───────────────────────────────
|
|
|
|
Scenario: ContainerVolumeHandler has correct type label
|
|
Given a "ContainerVolumeHandler" instance
|
|
Then the handler type_label should be "container-volume"
|
|
|
|
Scenario: ContainerVolumeHandler resolve raises NotImplementedError
|
|
Given a "ContainerVolumeHandler" instance
|
|
And a container resource of type "container-volume" with location "my-volume"
|
|
When I call resolve on the container handler
|
|
Then a container handler NotImplementedError should be raised
|
|
|
|
Scenario: ContainerVolumeHandler content_hash returns identity hash for volume name
|
|
Given a "ContainerVolumeHandler" instance
|
|
And a container resource of type "container-volume" with location "my-volume"
|
|
When I call content_hash on the container handler
|
|
Then the content_hash result should be a non-empty hex string
|
|
|
|
# ── ContainerNetworkHandler ──────────────────────────────
|
|
|
|
Scenario: ContainerNetworkHandler has correct type label
|
|
Given a "ContainerNetworkHandler" instance
|
|
Then the handler type_label should be "container-network"
|
|
|
|
Scenario: ContainerNetworkHandler resolve raises NotImplementedError
|
|
Given a "ContainerNetworkHandler" instance
|
|
And a container resource of type "container-network" with location "bridge"
|
|
When I call resolve on the container handler
|
|
Then a container handler NotImplementedError should be raised
|
|
|
|
Scenario: ContainerNetworkHandler content_hash returns identity hash for network name
|
|
Given a "ContainerNetworkHandler" instance
|
|
And a container resource of type "container-network" with location "bridge"
|
|
When I call content_hash on the container handler
|
|
Then the content_hash result should be a non-empty hex string
|
|
|
|
# ── CRUD stubs ───────────────────────────────────────────
|
|
|
|
Scenario Outline: Handler write raises NotImplementedError
|
|
Given a "<class_name>" instance
|
|
And a container resource of type "container-runtime" with location "/var/run/docker.sock"
|
|
When I call write on the container handler with data b"test"
|
|
Then a container handler NotImplementedError should be raised
|
|
|
|
Examples:
|
|
| class_name |
|
|
| ContainerRuntimeHandler |
|
|
| ContainerImageHandler |
|
|
| ContainerChildHandler |
|
|
| ContainerVolumeHandler |
|
|
| ContainerNetworkHandler |
|
|
|
|
Scenario Outline: Handler delete raises NotImplementedError
|
|
Given a "<class_name>" instance
|
|
And a container resource of type "container-runtime" with location "/var/run/docker.sock"
|
|
When I call delete on the container handler
|
|
Then a container handler NotImplementedError should be raised
|
|
|
|
Examples:
|
|
| class_name |
|
|
| ContainerRuntimeHandler |
|
|
| ContainerImageHandler |
|
|
| ContainerChildHandler |
|
|
| ContainerVolumeHandler |
|
|
| ContainerNetworkHandler |
|
|
|
|
Scenario Outline: Handler list_children raises NotImplementedError
|
|
Given a "<class_name>" instance
|
|
And a container resource of type "container-runtime" with location "/var/run/docker.sock"
|
|
When I call list_children on the container handler
|
|
Then a container handler NotImplementedError should be raised
|
|
|
|
Examples:
|
|
| class_name |
|
|
| ContainerRuntimeHandler |
|
|
| ContainerImageHandler |
|
|
| ContainerChildHandler |
|
|
| ContainerVolumeHandler |
|
|
| ContainerNetworkHandler |
|
|
|
|
Scenario Outline: Handler diff raises NotImplementedError
|
|
Given a "<class_name>" instance
|
|
And a container resource of type "container-runtime" with location "/var/run/docker.sock"
|
|
When I call diff on the container handler with other_location "/other"
|
|
Then a container handler NotImplementedError should be raised
|
|
|
|
Examples:
|
|
| class_name |
|
|
| ContainerRuntimeHandler |
|
|
| ContainerImageHandler |
|
|
| ContainerChildHandler |
|
|
| ContainerVolumeHandler |
|
|
| ContainerNetworkHandler |
|
|
|
|
Scenario Outline: Handler discover_children raises NotImplementedError
|
|
Given a "<class_name>" instance
|
|
And a container resource of type "container-runtime" with location "/var/run/docker.sock"
|
|
When I call discover_children on the container handler
|
|
Then a container handler NotImplementedError should be raised
|
|
|
|
Examples:
|
|
| class_name |
|
|
| ContainerRuntimeHandler |
|
|
| ContainerImageHandler |
|
|
| ContainerChildHandler |
|
|
| ContainerVolumeHandler |
|
|
| ContainerNetworkHandler |
|
|
|
|
# ── Lifecycle stubs ──────────────────────────────────────
|
|
|
|
Scenario Outline: Handler create_checkpoint raises NotImplementedError
|
|
Given a "<class_name>" instance
|
|
And a container resource of type "container-runtime" with location "/var/run/docker.sock"
|
|
When I call create_checkpoint on the container handler
|
|
Then a container handler NotImplementedError should be raised
|
|
|
|
Examples:
|
|
| class_name |
|
|
| ContainerRuntimeHandler |
|
|
| ContainerImageHandler |
|
|
| ContainerChildHandler |
|
|
| ContainerVolumeHandler |
|
|
| ContainerNetworkHandler |
|
|
|
|
Scenario Outline: Handler rollback_to raises NotImplementedError
|
|
Given a "<class_name>" instance
|
|
And a container resource of type "container-runtime" with location "/var/run/docker.sock"
|
|
When I call rollback_to on the container handler
|
|
Then a container handler NotImplementedError should be raised
|
|
|
|
Examples:
|
|
| class_name |
|
|
| ContainerRuntimeHandler |
|
|
| ContainerImageHandler |
|
|
| ContainerChildHandler |
|
|
| ContainerVolumeHandler |
|
|
| ContainerNetworkHandler |
|
|
|
|
# ── Registry integration ─────────────────────────────────
|
|
|
|
Scenario: container-runtime handler resolves without error after module creation
|
|
When I resolve the handler for resource type "container-runtime"
|
|
Then the handler should resolve without HandlerResolutionError
|
|
|
|
Scenario: container-image handler resolves without error after module creation
|
|
When I resolve the handler for resource type "container-image"
|
|
Then the handler should resolve without HandlerResolutionError
|
|
|
|
Scenario: container-volume handler resolves without error after module creation
|
|
When I resolve the handler for resource type "container-volume"
|
|
Then the handler should resolve without HandlerResolutionError
|
|
|
|
Scenario: container-network handler resolves without error after module creation
|
|
When I resolve the handler for resource type "container-network"
|
|
Then the handler should resolve without HandlerResolutionError
|