Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add clipboard function to context crd #128

Merged
merged 9 commits into from
Oct 8, 2024
Merged

Conversation

metacoma
Copy link
Contributor

@metacoma metacoma commented Oct 7, 2024

No description provided.

Copy link

github-actions bot commented Oct 7, 2024

allure report

gherkin outptut ============================= test session starts ============================== collecting ... collected 50 items

Feature: Mindwm Lifecycle Management
Scenario: Deploy Mindwm Cluster and Applications
Given an Ubuntu 24.04 system with 6 CPUs and 16 GB of RAM (PASSED)
And the mindwm-gitops repository is cloned into the "~/mindwm-gitops" directory (PASSED)
When God executes "make cluster" (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God executes "make argocd" (PASSED)
Then helm release "argocd" is deployed in "argocd" namespace (PASSED)
When God executes "make argocd_app" (PASSED)
Then the argocd "mindwm-gitops" application appears in "argocd" namespace (PASSED)
When God executes "make argocd_app_sync_async" (PASSED)
Then the argocd "mindwm-gitops" application is argocd namespace in a progressing status (PASSED)
When God executes "make argocd_app_async_wait" (PASSED)
Then all argocd applications are in a healthy state (PASSED)
When God executes "make crossplane_rolebinding_workaround" (PASSED)
Then the following roles should exist: (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Knative
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "knative-serving" should exist (PASSED)
And namespace "knative-eventing" should exist (PASSED)
And namespace "knative-operator" should exist (PASSED)
And the following deployments are in a ready state in the "knative-serving" namespace (PASSED)
And the following deployments are in a ready state in the "knative-eventing" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Istio
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "istio-system" should exist (PASSED)
And the following deployments are in a ready state in the "istio-system" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Redpanda
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "redpanda" should exist (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
And helm release "neo4j-cdc" is deployed in "redpanda" namespace (PASSED)
And statefulset "neo4j-cdc" in namespace "redpanda" is in ready state (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Cert manager
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "cert-manager" should exist (PASSED)
And the following deployments are in a ready state in the "cert-manager" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Nats
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "nats" should exist (PASSED)
And the following deployments are in a ready state in the "nats" namespace (PASSED)
And statefulset "nats" in namespace "nats" is in ready state (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Monitoring
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "monitoring" should exist (PASSED)
And the following deployments are in a ready state in the "monitoring" namespace (PASSED)
And statefulset "loki" in namespace "monitoring" is in ready state (PASSED)
And statefulset "tempo" in namespace "monitoring" is in ready state (PASSED)
And statefulset "vmalertmanager-vm-aio-victoria-metrics-k8s-stack" in namespace "monitoring" is in ready state (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Context
Given a MindWM environment (PASSED)
When God creates a MindWM context with the name "xxx3" (PASSED)
Then the context should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create User
Given a MindWM environment (PASSED)
When God creates a MindWM user resource with the name "alice" and connects it to the context "xxx3" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Host
Given a MindWM environment (PASSED)
When God creates a MindWM host resource with the name "laptop" and connects it to the user "alice" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
When God deletes the MindWM host resource "laptop" (PASSED)
Then the host "laptop" should be deleted (PASSED)
When God deletes the MindWM user resource "alice" (PASSED)
Then the user "alice" should be deleted (PASSED)
When God deletes the MindWM context resource "xxx3" (PASSED)
Then the context "xxx3" should be deleted (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create Context and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "cyan" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-cyan" should exist (PASSED)
And helm release "cyan-neo4j" is deployed in "context-cyan" namespace (PASSED)
And statefulset "cyan-neo4j" in namespace "context-cyan" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative brokers are in a ready state in the "context-cyan" namespace (PASSED)
And kafka topic "context-cyan-cdc" is in ready state in "redpanda" namespace (PASSED)
And kafka source "context-cyan-cdc-kafkasource" is in ready state in "context-cyan" namespace (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create User and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM user resource with the name "bob" and connects it to the context "cyan" (PASSED)
Then the user resource should be ready and operable (PASSED)
And namespace "user-bob" should exist (PASSED)
And the following knative brokers are in a ready state in the "user-bob" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "user-bob" namespace (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-07T18:12:17Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'workstation-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"7b4b8158-900c-4dfc-97a6-f9ec51ed06c1"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-07T18:12:17Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-07T18:12:20Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}},
'f:observedGeneration': {}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-07T18:12:20Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:conditions': {},
'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-07T18:12:20Z'}],
'name': 'workstation-host-broker-kne-trigger',
'namespace': 'user-bob',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'workstation-host-broker',
'uid': '7b4b8158-900c-4dfc-97a6-f9ec51ed06c1'}],
'resourceVersion': '26273',
'uid': '216f802f-5f23-40d1-b465-b788682c6753'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.bob.workstation.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-bob.svc.cluster.local'}},
'generation': 1,
'name': 'workstation-host-broker-worksta4461fd0c0111ea4f2d930f4e4013e9e5',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-bob/workstation-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-bob/workstation-trigger-to-user-broker-trigger/f440e3db-33da-4ca8-8383-a1e6d0d31907',
'uid': 'd0a6afc8-8280-41dd-8973-9c2d1daf9d5b'}]},
'status': {'address': {'url': 'http://workstation-host-broker-kne-trigger-kn-jsm-channel.user-bob.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-07T18:12:19Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-07T18:12:19Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-07T18:12:19Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-07T18:12:19Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-07T18:12:19Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-07T18:12:17Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-07T18:12:19Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': 'd0a6afc8-8280-41dd-8973-9c2d1daf9d5b'}]}}

Feature: MindWM Custom kubernetes resources
Scenario: Create Host and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "workstation" and connects it to the user "bob" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "workstation-host-broker-kne-trigger" is ready in "user-bob" namespace (PASSED)
And the following knative triggers are in a ready state in the "user-bob" namespace (PASSED)
And the following knative brokers are in a ready state in the "user-bob" namespace (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "workstation" (PASSED)
Then the host "workstation" should be deleted (PASSED)
When God deletes the MindWM user resource "bob" (PASSED)
Then the user "bob" should be deleted (PASSED)
And namespace "user-bob" should not exist (PASSED)
When God deletes the MindWM context resource "cyan" (PASSED)
Then the context "cyan" should be deleted (PASSED)
And namespace "context-cyan" should not exist (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-07T18:15:58Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'pi6-host-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"a423719c-2159-4b3b-9775-3a1a82f248f1"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-07T18:15:58Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-07T18:16:00Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}},
'f:observedGeneration': {}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-07T18:16:00Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:conditions': {},
'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-07T18:16:01Z'}],
'name': 'pi6-host-host-broker-kne-trigger',
'namespace': 'user-amanda4',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'pi6-host-host-broker',
'uid': 'a423719c-2159-4b3b-9775-3a1a82f248f1'}],
'resourceVersion': '33227',
'uid': '7025e7c8-6d90-4df5-b2b4-4515d7374b11'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.amanda4.pi6-host.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-amanda4.svc.cluster.local'}},
'generation': 1,
'name': 'pi6-host-host-broker-pi6-host-t6bb0a9c5988dd0b00fdf111789a0bbff',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-amanda4/pi6-host-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-amanda4/pi6-host-trigger-to-user-broker-trigger/a6870b43-f8f3-4215-9f15-2319df8adef2',
'uid': 'ad352d77-407e-445c-bed4-34f0dc981296'}]},
'status': {'address': {'url': 'http://pi6-host-host-broker-kne-trigger-kn-jsm-channel.user-amanda4.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-07T18:16:00Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-07T18:16:00Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-07T18:16:00Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-07T18:16:00Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-07T18:16:01Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-07T18:15:58Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-07T18:16:01Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': 'ad352d77-407e-445c-bed4-34f0dc981296'}]}}

Feature: MindWM Ping-pong EDA test
Scenario: Prepare environment for ping tests
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "green4" (PASSED)
Then the context should be ready and operable (PASSED)
And the following knative services are in a ready state in the "context-green4" namespace (PASSED)
When God creates a MindWM user resource with the name "amanda4" and connects it to the context "green4" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "pi6-host" and connects it to the user "amanda4" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "pi6-host-host-broker-kne-trigger" is ready in "user-amanda4" namespace (PASSED)
When God starts reading message from NATS topic ">" (PASSED)
PASSED
Connected to NATS server at nats://root:[email protected]:4222
Subscribed to topic '>'

Feature: MindWM Ping-pong EDA test
Scenario: Send pind to knative ping service
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to knative service "pong" in "context-green4" namespace (PASSED)
Then the response http code should be "200" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Send ping via broker-ingress.knative-eventing/context-green4/context-broker
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "traceparent" to "00-5df92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/context-green4/context-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
Then the trace with "00-5df92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" should appear in TraceQL (PASSED)
And the trace should contains (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-amanda4.pi6-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Send ping via broker-ingress.knative-eventing/user-amanda4/user-broker
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "traceparent" to "00-6df93f3577b34da6a3ce929d0e0e4742-00f067aa0ba902b7-00" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/user-amanda4/user-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
Then the trace with "00-6df93f3577b34da6a3ce929d0e0e4742-00f067aa0ba902b7-00" should appear in TraceQL (PASSED)
And the trace should contains (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-amanda4.pi6-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Send ping via nats
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.3623.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-amanda4.pi6-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Cleanup amanda4@pi6-host in green4
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "pi6-host" (PASSED)
Then the host "pi6-host" should be deleted (PASSED)
When God deletes the MindWM user resource "amanda4" (PASSED)
When God deletes the MindWM context resource "green4" (PASSED)
PASSED

<Record n=<Node element_id='1' labels=frozenset({'Host'}) properties={'hostname': 'tablet', 'atime': 0, 'traceparent': '00-7df92f3577b34da6a3ce930d0e0e4734-bc2b965d56433c1b-01', 'type': 'org.mindwm.v1.graph.node.host'}>>
<Record n=<Node element_id='5' labels=frozenset({'IoDocument'}) properties={'output': 'uid=1000(pion) gid=1000(pion) groups=1000(pion),4(adm),100(users),112(tmux),988(docker)', 'input': 'id', 'atime': 0, 'traceparent': '00-7df92f3577b34da6a3ce930d0e0e4734-bc2b965d56433c1b-01', 'type': 'org.mindwm.v1.graph.node.iodocument', 'uuid': 'bde997fc90a3498dbda8ad9ecad00423', 'ps1': 'pion@mindwm-stg1:~/work/dev/mindwm-manager$'}>>

Feature: MindWM io context function test
Scenario: io context red
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "red" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-red" namespace (PASSED)
And statefulset "red-neo4j" in namespace "context-red" is in ready state (PASSED)
When God creates a MindWM user resource with the name "kitty" and connects it to the context "red" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "tablet" and connects it to the user "kitty" (PASSED)
Then the host resource should be ready and operable (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-id" to "442af213-c860-4535-b639-355f13b2d883" (PASSED)
And sets cloudevent header "traceparent" to "00-7df92f3577b34da6a3ce930d0e0e4734-00f064aa0ba902b8-00" (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.kitty.tablet.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/context-red/context-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-red" namespace (PASSED)
Then the trace with "00-7df92f3577b34da6a3ce930d0e0e4734-00f064aa0ba902b8-00" should appear in TraceQL (PASSED)
And the trace should contains (PASSED)
Then graph have node "User" with property "username" = "kitty" in context "red" (PASSED)
And graph have node "Host" with property "hostname" = "tablet" in context "red" (PASSED)
And graph have node "IoDocument" with property "input" = "id" in context "red" (PASSED)
PASSED

Feature: MindWM io context function test
Scenario: Cleanup kitty@tablet in red
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "tablet" (PASSED)
Then the host "tablet" should be deleted (PASSED)
When God deletes the MindWM user resource "kitty" (PASSED)
When God deletes the MindWM context resource "red" (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM kafka_cdc function test
Scenario: io context blue
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "blue" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And statefulset "blue-neo4j" in namespace "context-blue" is in ready state (PASSED)
When God creates a MindWM user resource with the name "garmr" and connects it to the context "blue" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "helheim" and connects it to the user "garmr" (PASSED)
Then the host resource should be ready and operable (PASSED)
When God starts reading message from NATS topic ">" (PASSED)
And God makes graph query in context "blue" (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-garmr.helheim-host-broker-kne-trigger._knative" (PASSED)
When God makes graph query in context "blue" (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.updated" should have been received from the NATS topic "user-garmr.helheim-host-broker-kne-trigger._knative" (PASSED)
When God makes graph query in context "blue" (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.deleted" should have been received from the NATS topic "user-garmr.helheim-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM kafka_cdc function test
Scenario: Cleanup garmr@helheim in blue
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "helheim" (PASSED)
Then the host "helheim" should be deleted (PASSED)
When God deletes the MindWM user resource "garmr" (PASSED)
When God deletes the MindWM context resource "blue" (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Create context varanasi and user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "varanasi" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-varanasi" namespace (PASSED)
And statefulset "varanasi-neo4j" in namespace "context-varanasi" is in ready state (PASSED)
When God creates a MindWM user resource with the name "shesha" and connects it to the context "varanasi" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Create workstation01 for user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "workstation01" and connects it to the user "shesha" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Create travellaptop for user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "travellaptop" and connects it to the user "shesha" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two hosts one user function test
Scenario: Send ping via nats host: workstation01, user: shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-varanasi" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-shesha.workstation01-host-broker-kne-trigger._knative" (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two hosts one user function test
Scenario: Send ping via nats host: travellaptop, user: shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.shesha.travellaptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.shesha.travellaptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-varanasi" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-shesha.travellaptop-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Send iodocument via nats host: workstation01, user: shesha and check that second host received graph the update
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.3623.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-varanasi" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-shesha.travellaptop-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Cleanup hosts workstation01 in user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "workstation01" (PASSED)
Then the host "workstation01" should be deleted (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Cleanup hosts travellaptop in user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "travellaptop" (PASSED)
Then the host "travellaptop" should be deleted (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Cleanup user shesha and context varanasi
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM user resource "shesha" (PASSED)
Then the user "shesha" should be deleted (PASSED)
When God deletes the MindWM context resource "varanasi" (PASSED)
Then the context "varanasi" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create context tokyo
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "tokyo" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-tokyo" namespace (PASSED)
And statefulset "tokyo-neo4j" in namespace "context-tokyo" is in ready state (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create godzilla and connects it to tokyo
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM user resource with the name "godzilla" and connects it to the context "tokyo" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create tengu and connects it to tokyo
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM user resource with the name "tengu" and connects it to the context "tokyo" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create laptop resource and connects it to godzilla user
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "laptop" and connects it to the user "godzilla" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create tablet resource and connects it to tengu user
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "tablet" and connects it to the user "tengu" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two users one context function test
Scenario: Send iodocument via nats host: , user: and check that second user received graph update
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.godzilla.laptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.godzilla.laptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-tokyo" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-tengu.tablet-host-broker-kne-trigger._knative" (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two users one context function test
Scenario: Send iodocument via nats host: , user: and check that second user received graph update
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.tengu.tablet.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.tengu.tablet.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-tokyo" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-godzilla.laptop-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup laptop host for godzilla username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "laptop" (PASSED)
Then the host "laptop" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup tablet host for tengu username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "tablet" (PASSED)
Then the host "tablet" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup godzilla username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM user resource "godzilla" (PASSED)
Then the user "godzilla" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup tengu username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM user resource "tengu" (PASSED)
Then the user "tengu" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup tokyo context
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM context resource "tokyo" (PASSED)
Then the context "tokyo" should be deleted (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Create Contexts and Verify All Related Resources Are in Ready State
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "aphrodite" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-aphrodite" should exist (PASSED)
And the following deployments are in a ready state in the "context-aphrodite" namespace (PASSED)
And statefulset "aphrodite-neo4j" in namespace "context-aphrodite" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-aphrodite" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-aphrodite" namespace (PASSED)
And the following knative brokers are in a ready state in the "context-aphrodite" namespace (PASSED)
And kafka topic "context-aphrodite-cdc" is in ready state in "redpanda" namespace (PASSED)
And kafka source "context-aphrodite-cdc-kafkasource" is in ready state in "context-aphrodite" namespace (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Create Contexts and Verify All Related Resources Are in Ready State
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "kypros" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-kypros" should exist (PASSED)
And the following deployments are in a ready state in the "context-kypros" namespace (PASSED)
And statefulset "kypros-neo4j" in namespace "context-kypros" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-kypros" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-kypros" namespace (PASSED)
And the following knative brokers are in a ready state in the "context-kypros" namespace (PASSED)
And kafka topic "context-kypros-cdc" is in ready state in "redpanda" namespace (PASSED)
And kafka source "context-kypros-cdc-kafkasource" is in ready state in "context-kypros" namespace (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Cleanup Contexts and Verify Resources Are Deleted
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM context resource "aphrodite" (PASSED)
Then the context "aphrodite" should be deleted (PASSED)
And namespace "context-aphrodite" should not exist (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Cleanup Contexts and Verify Resources Are Deleted
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM context resource "kypros" (PASSED)
Then the context "kypros" should be deleted (PASSED)
And namespace "context-kypros" should not exist (PASSED)
PASSED

================= 50 passed, 71 warnings in 2398.59s (0:39:58) =================

Copy link

github-actions bot commented Oct 7, 2024

allure report

gherkin outptut ============================= test session starts ============================== collecting ... collected 56 items

Feature: Mindwm Lifecycle Management
Scenario: Deploy Mindwm Cluster and Applications
Given an Ubuntu 24.04 system with 6 CPUs and 16 GB of RAM (PASSED)
And the mindwm-gitops repository is cloned into the "~/mindwm-gitops" directory (PASSED)
When God executes "make cluster" (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God executes "make argocd" (PASSED)
Then helm release "argocd" is deployed in "argocd" namespace (PASSED)
When God executes "make argocd_app" (PASSED)
Then the argocd "mindwm-gitops" application appears in "argocd" namespace (PASSED)
When God executes "make argocd_app_sync_async" (PASSED)
Then the argocd "mindwm-gitops" application is argocd namespace in a progressing status (PASSED)
When God executes "make argocd_app_async_wait" (PASSED)
Then all argocd applications are in a healthy state (PASSED)
When God executes "make crossplane_rolebinding_workaround" (PASSED)
Then the following roles should exist: (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Knative
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "knative-serving" should exist (PASSED)
And namespace "knative-eventing" should exist (PASSED)
And namespace "knative-operator" should exist (PASSED)
And the following deployments are in a ready state in the "knative-serving" namespace (PASSED)
And the following deployments are in a ready state in the "knative-eventing" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Istio
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "istio-system" should exist (PASSED)
And the following deployments are in a ready state in the "istio-system" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Redpanda
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "redpanda" should exist (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
And helm release "neo4j-cdc" is deployed in "redpanda" namespace (FAILED)
And statefulset "neo4j-cdc" in namespace "redpanda" is in ready state (FAILED)
And the following deployments are in a ready state in the "redpanda" namespace (FAILED)
FAILED

=================================== FAILURES ===================================
_ test_scenarios[file:features/0_1_mindwm_eda.feature-Mindwm event driven architecture-Redpanda] _

kube = <kubetest.client.TestClient object at 0x7823ba9d5fa0>
helm_release = 'neo4j-cdc', namespace = 'redpanda'

@then("helm release \"{helm_release}\" is deployed in \"{namespace}\" namespace" )
def helm_release_deploeyd(kube, helm_release, namespace):
    #info = utils.helm_release_info(kube, helm_release, namespace)
  info = utils.helm_release_is_ready(kube, helm_release, namespace)

conftest.py:255:


utils.py:52: in helm_release_is_ready
kubetest_utils.wait_for_condition(


condition = <Condition (name: helm release has status and info, met: False)>
timeout = 600, interval = 5, fail_on_api_error = True

def wait_for_condition(
    condition: Condition,
    timeout: int = None,
    interval: Union[int, float] = 1,
    fail_on_api_error: bool = True,
) -> None:
    """Wait for a condition to be met.

    Args:
        condition: The Condition to wait for.
        timeout: The maximum time to wait, in seconds, for the condition to be met.
            If unspecified, this function will wait indefinitely. If specified and
            the timeout is met or exceeded, a TimeoutError will be raised.
        interval: The time, in seconds, to wait before re-checking the condition.
        fail_on_api_error: Fail the condition checks if a Kubernetes API error is
            incurred. An API error can be raised for a number of reasons, including
            a Pod being restarted and temporarily unavailable. Disabling this will
            cause those errors to be ignored, allowing the check to continue until
            timeout or resolution. (default: True).

    Raises:
        TimeoutError: The specified timeout was exceeded.
    """
    log.info(f"waiting for condition: {condition}")

    # define the maximum time to wait. once this is met, we should
    # stop waiting.
    max_time = None
    if timeout is not None:
        max_time = time.time() + timeout

    # start the wait block
    start = time.time()
    while True:
        if max_time and time.time() >= max_time:
          raise TimeoutError(
                f"timed out ({timeout}s) while waiting for condition {condition}"
            )

E TimeoutError: timed out (600s) while waiting for condition <Condition (name: helm release has status and info, met: False)>

.venv/lib/python3.12/site-packages/kubetest/utils.py:130: TimeoutError
=========================== short test summary info ============================
FAILED features/0_1_mindwm_eda.feature::test_scenarios[file:features/0_1_mindwm_eda.feature-Mindwm event driven architecture-Redpanda] - TimeoutError: timed out (600s) while waiting for condition <Condition (name: helm release has status and info, met: False)>
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
============ 1 failed, 3 passed, 15 warnings in 1343.82s (0:22:23) =============

Copy link

github-actions bot commented Oct 7, 2024

allure report

gherkin outptut ============================= test session starts ============================== collecting ... collected 56 items

Feature: Mindwm Lifecycle Management
Scenario: Deploy Mindwm Cluster and Applications
Given an Ubuntu 24.04 system with 6 CPUs and 16 GB of RAM (PASSED)
And the mindwm-gitops repository is cloned into the "~/mindwm-gitops" directory (PASSED)
When God executes "make cluster" (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God executes "make argocd" (PASSED)
Then helm release "argocd" is deployed in "argocd" namespace (PASSED)
When God executes "make argocd_app" (PASSED)
Then the argocd "mindwm-gitops" application appears in "argocd" namespace (PASSED)
When God executes "make argocd_app_sync_async" (PASSED)
Then the argocd "mindwm-gitops" application is argocd namespace in a progressing status (PASSED)
When God executes "make argocd_app_async_wait" (PASSED)
Then all argocd applications are in a healthy state (PASSED)
When God executes "make crossplane_rolebinding_workaround" (PASSED)
Then the following roles should exist: (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Knative
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "knative-serving" should exist (PASSED)
And namespace "knative-eventing" should exist (PASSED)
And namespace "knative-operator" should exist (PASSED)
And the following deployments are in a ready state in the "knative-serving" namespace (PASSED)
And the following deployments are in a ready state in the "knative-eventing" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Istio
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "istio-system" should exist (PASSED)
And the following deployments are in a ready state in the "istio-system" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Redpanda
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "redpanda" should exist (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
And helm release "neo4j-cdc" is deployed in "redpanda" namespace (PASSED)
And statefulset "neo4j-cdc" in namespace "redpanda" is in ready state (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Cert manager
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "cert-manager" should exist (PASSED)
And the following deployments are in a ready state in the "cert-manager" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Nats
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "nats" should exist (PASSED)
And the following deployments are in a ready state in the "nats" namespace (PASSED)
And statefulset "nats" in namespace "nats" is in ready state (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Monitoring
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "monitoring" should exist (PASSED)
And the following deployments are in a ready state in the "monitoring" namespace (PASSED)
And statefulset "loki" in namespace "monitoring" is in ready state (PASSED)
And statefulset "tempo" in namespace "monitoring" is in ready state (PASSED)
And statefulset "vmalertmanager-vm-aio-victoria-metrics-k8s-stack" in namespace "monitoring" is in ready state (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Context
Given a MindWM environment (PASSED)
When God creates a MindWM context with the name "xxx3" (PASSED)
Then the context should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create User
Given a MindWM environment (PASSED)
When God creates a MindWM user resource with the name "alice" and connects it to the context "xxx3" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Host
Given a MindWM environment (PASSED)
When God creates a MindWM host resource with the name "laptop" and connects it to the user "alice" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
When God deletes the MindWM host resource "laptop" (PASSED)
Then the host "laptop" should be deleted (PASSED)
When God deletes the MindWM user resource "alice" (PASSED)
Then the user "alice" should be deleted (PASSED)
When God deletes the MindWM context resource "xxx3" (PASSED)
Then the context "xxx3" should be deleted (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create Context and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "cyan" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-cyan" should exist (PASSED)
And helm release "cyan-neo4j" is deployed in "context-cyan" namespace (PASSED)
And statefulset "cyan-neo4j" in namespace "context-cyan" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (FAILED)
And the following knative brokers are in a ready state in the "context-cyan" namespace (FAILED)
And kafka topic "context-cyan-cdc" is in ready state in "redpanda" namespace (FAILED)
And kafka source "context-cyan-cdc-kafkasource" is in ready state in "context-cyan" namespace (FAILED)
FAILED

=================================== FAILURES ===================================
_ test_scenarios[file:features/2_mindwm_crd_resources.feature-MindWM Custom kubernetes resources-Create Context and check k8s resources] _

kube = <kubetest.client.TestClient object at 0x7c1580b80ef0>
step = PickleStep(argument=PickleStepArgument(doc_string=None, data_table=PickleTable(rows=[PickleTableRow(cells=[PickleTable...=<Type.outcome: 'Outcome'>, text='the following knative triggers are in a ready state in the "context-cyan" namespace')
namespace = 'context-cyan'

@then("the following knative triggers are in a ready state in the \"{namespace}\" namespace")
def knative_trigger_exist(kube, step, namespace):
    title_row, *rows = step.data_table.rows
    for row in rows:
        trigger_name = row.cells[0].value
        trigger = utils.knative_trigger_wait_for(kube, trigger_name, namespace)
        is_ready = utils.resource_get_condition(trigger['status'], 'Ready')
        with allure.step(f"Knative trigger '{trigger_name}' ready state is {is_ready}"):
            pass
      assert(is_ready == 'True')

E AssertionError: assert 'False' == 'True'
E
E - True
E + False

conftest.py:352: AssertionError
=========================== short test summary info ============================
FAILED features/2_mindwm_crd_resources.feature::test_scenarios[file:features/2_mindwm_crd_resources.feature-MindWM Custom kubernetes resources-Create Context and check k8s resources] - AssertionError: assert 'False' == 'True'

  • True
  • False
    !!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
    ============ 1 failed, 11 passed, 22 warnings in 907.53s (0:15:07) =============

Copy link

github-actions bot commented Oct 7, 2024

allure report

gherkin outptut ============================= test session starts ============================== collecting ... collected 56 items

Feature: Mindwm Lifecycle Management
Scenario: Deploy Mindwm Cluster and Applications
Given an Ubuntu 24.04 system with 6 CPUs and 16 GB of RAM (PASSED)
And the mindwm-gitops repository is cloned into the "~/mindwm-gitops" directory (PASSED)
When God executes "make cluster" (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God executes "make argocd" (PASSED)
Then helm release "argocd" is deployed in "argocd" namespace (PASSED)
When God executes "make argocd_app" (PASSED)
Then the argocd "mindwm-gitops" application appears in "argocd" namespace (PASSED)
When God executes "make argocd_app_sync_async" (PASSED)
Then the argocd "mindwm-gitops" application is argocd namespace in a progressing status (PASSED)
When God executes "make argocd_app_async_wait" (PASSED)
Then all argocd applications are in a healthy state (PASSED)
When God executes "make crossplane_rolebinding_workaround" (PASSED)
Then the following roles should exist: (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Knative
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "knative-serving" should exist (PASSED)
And namespace "knative-eventing" should exist (PASSED)
And namespace "knative-operator" should exist (PASSED)
And the following deployments are in a ready state in the "knative-serving" namespace (PASSED)
And the following deployments are in a ready state in the "knative-eventing" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Istio
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "istio-system" should exist (PASSED)
And the following deployments are in a ready state in the "istio-system" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Redpanda
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "redpanda" should exist (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
And helm release "neo4j-cdc" is deployed in "redpanda" namespace (PASSED)
And statefulset "neo4j-cdc" in namespace "redpanda" is in ready state (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Cert manager
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "cert-manager" should exist (PASSED)
And the following deployments are in a ready state in the "cert-manager" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Nats
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "nats" should exist (PASSED)
And the following deployments are in a ready state in the "nats" namespace (PASSED)
And statefulset "nats" in namespace "nats" is in ready state (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Monitoring
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "monitoring" should exist (PASSED)
And the following deployments are in a ready state in the "monitoring" namespace (PASSED)
And statefulset "loki" in namespace "monitoring" is in ready state (PASSED)
And statefulset "tempo" in namespace "monitoring" is in ready state (PASSED)
And statefulset "vmalertmanager-vm-aio-victoria-metrics-k8s-stack" in namespace "monitoring" is in ready state (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Context
Given a MindWM environment (PASSED)
When God creates a MindWM context with the name "xxx3" (PASSED)
Then the context should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create User
Given a MindWM environment (PASSED)
When God creates a MindWM user resource with the name "alice" and connects it to the context "xxx3" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Host
Given a MindWM environment (PASSED)
When God creates a MindWM host resource with the name "laptop" and connects it to the user "alice" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
When God deletes the MindWM host resource "laptop" (PASSED)
Then the host "laptop" should be deleted (PASSED)
When God deletes the MindWM user resource "alice" (PASSED)
Then the user "alice" should be deleted (PASSED)
When God deletes the MindWM context resource "xxx3" (PASSED)
Then the context "xxx3" should be deleted (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create Context and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "cyan" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-cyan" should exist (PASSED)
And helm release "cyan-neo4j" is deployed in "context-cyan" namespace (PASSED)
And statefulset "cyan-neo4j" in namespace "context-cyan" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative brokers are in a ready state in the "context-cyan" namespace (PASSED)
And kafka topic "context-cyan-cdc" is in ready state in "redpanda" namespace (PASSED)
And kafka source "context-cyan-cdc-kafkasource" is in ready state in "context-cyan" namespace (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create User and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM user resource with the name "bob" and connects it to the context "cyan" (PASSED)
Then the user resource should be ready and operable (PASSED)
And namespace "user-bob" should exist (PASSED)
And the following knative brokers are in a ready state in the "user-bob" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "user-bob" namespace (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-07T20:25:36Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'workstation-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"0aea3926-03d0-4846-93f0-29c010ae1547"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-07T20:25:36Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-07T20:25:39Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}},
'f:observedGeneration': {}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-07T20:25:39Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:conditions': {},
'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-07T20:25:39Z'}],
'name': 'workstation-host-broker-kne-trigger',
'namespace': 'user-bob',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'workstation-host-broker',
'uid': '0aea3926-03d0-4846-93f0-29c010ae1547'}],
'resourceVersion': '22058',
'uid': '2954a6fe-ae19-4abb-87f8-6b9c43837643'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.bob.workstation.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-bob.svc.cluster.local'}},
'generation': 1,
'name': 'workstation-host-broker-worksta8f2cedd2156b19f2da50b8973d29f79a',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-bob/workstation-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-bob/workstation-trigger-to-user-broker-trigger/72ecc336-a48e-4b5d-bc12-0eb5db9e45f7',
'uid': '667968a5-3768-46ed-895d-e284798140ee'}]},
'status': {'address': {'url': 'http://workstation-host-broker-kne-trigger-kn-jsm-channel.user-bob.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-07T20:25:38Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-07T20:25:38Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-07T20:25:39Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-07T20:25:38Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-07T20:25:39Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-07T20:25:36Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-07T20:25:39Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': '667968a5-3768-46ed-895d-e284798140ee'}]}}

Feature: MindWM Custom kubernetes resources
Scenario: Create Host and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "workstation" and connects it to the user "bob" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "workstation-host-broker-kne-trigger" is ready in "user-bob" namespace (PASSED)
And the following knative triggers are in a ready state in the "user-bob" namespace (PASSED)
And the following knative brokers are in a ready state in the "user-bob" namespace (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "workstation" (PASSED)
Then the host "workstation" should be deleted (PASSED)
When God deletes the MindWM user resource "bob" (PASSED)
Then the user "bob" should be deleted (PASSED)
And namespace "user-bob" should not exist (PASSED)
When God deletes the MindWM context resource "cyan" (PASSED)
Then the context "cyan" should be deleted (PASSED)
And namespace "context-cyan" should not exist (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-07T20:28:59Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'pi6-host-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"27912f6e-b9cc-4c0e-9f3e-aee982631184"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-07T20:28:59Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-07T20:29:04Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}},
'f:conditions': {}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-07T20:29:05Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:observedGeneration': {},
'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-07T20:29:05Z'}],
'name': 'pi6-host-host-broker-kne-trigger',
'namespace': 'user-amanda4',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'pi6-host-host-broker',
'uid': '27912f6e-b9cc-4c0e-9f3e-aee982631184'}],
'resourceVersion': '28665',
'uid': 'e90cb5b0-c120-4aea-8ce9-ef5cfb6419ea'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.amanda4.pi6-host.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-amanda4.svc.cluster.local'}},
'generation': 1,
'name': 'pi6-host-host-broker-pi6-host-t74e157cc80e942e236bf02a46b3b423c',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-amanda4/pi6-host-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-amanda4/pi6-host-trigger-to-user-broker-trigger/84ac075f-e00e-4127-9426-536b7267f7e8',
'uid': '362b2b48-15ce-4ff8-971a-7157a01c6fbb'}]},
'status': {'address': {'url': 'http://pi6-host-host-broker-kne-trigger-kn-jsm-channel.user-amanda4.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-07T20:29:04Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-07T20:29:04Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-07T20:29:05Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-07T20:29:04Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-07T20:29:05Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-07T20:29:00Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-07T20:29:04Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': '362b2b48-15ce-4ff8-971a-7157a01c6fbb'}]}}

Feature: MindWM Ping-pong EDA test
Scenario: Prepare environment for ping tests
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "green4" (PASSED)
Then the context should be ready and operable (PASSED)
And the following knative services are in a ready state in the "context-green4" namespace (PASSED)
When God creates a MindWM user resource with the name "amanda4" and connects it to the context "green4" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "pi6-host" and connects it to the user "amanda4" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "pi6-host-host-broker-kne-trigger" is ready in "user-amanda4" namespace (PASSED)
When God starts reading message from NATS topic ">" (PASSED)
PASSED
Connected to NATS server at nats://root:[email protected]:4222
Subscribed to topic '>'

Feature: MindWM Ping-pong EDA test
Scenario: Send pind to knative ping service
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to knative service "pong" in "context-green4" namespace (PASSED)
Then the response http code should be "200" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Send ping via broker-ingress.knative-eventing/context-green4/context-broker
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "traceparent" to "00-5df92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/context-green4/context-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
Then the trace with "00-5df92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" should appear in TraceQL (PASSED)
And the trace should contains (FAILED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-amanda4.pi6-host-host-broker-kne-trigger._knative" (FAILED)
FAILED

=================================== FAILURES ===================================
_ test_scenarios[file:features/3_mindwm_ping_pong.feature-MindWM Ping-pong EDA test-Send ping via broker-ingress.knative-eventing/context-green4/context-broker[table_rows:[line: 82]]] _

step = PickleStep(argument=PickleStepArgument(doc_string=None, data_table=PickleTable(rows=[PickleTableRow(cells=[PickleTable...atcher')])])), ast_node_ids=['352', '355'], id='415', type=<Type.outcome: 'Outcome'>, text='the trace should contains')
trace_data = {'data': resource_spans {
resource {
attributes {
key: "service.name"
value {
string_value: ..._time_unix_nano: 1728332948307214419
end_time_unix_nano: 1728332948314453703
status {
}
}
}
}
}

@then("the trace should contains")
def trace_should_contains(step, trace_data):
    #pprint.pprint(f"TRACE DATA = {trace_data['data']}")
    title_row, *rows = step.data_table.rows
    for row in rows:
        service_name = row.cells[0].value
        #http_code = row.cells[1].value
        #http_path = row.cells[2].value
        #pprint.pprint(f"{service_name} {http_code} {http_path}")
        scope_span = utils.span_by_service_name(trace_data['data'], service_name)
      assert(scope_span is not None), f"Scope span {service_name} not found in trace data"

E AssertionError: Scope span jetstream-ch-dispatcher not found in trace data
E assert None is not None

conftest.py:435: AssertionError
=========================== short test summary info ============================
FAILED features/3_mindwm_ping_pong.feature::test_scenarios[file:features/3_mindwm_ping_pong.feature-MindWM Ping-pong EDA test-Send ping via broker-ingress.knative-eventing/context-green4/context-broker[table_rows:[line: 82]]] - AssertionError: Scope span jetstream-ch-dispatcher not found in trace data
assert None is not None
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
============ 1 failed, 17 passed, 34 warnings in 1270.15s (0:21:10) ============

Copy link

github-actions bot commented Oct 7, 2024

allure report

gherkin outptut ============================= test session starts ============================== collecting ... collected 56 items

Feature: Mindwm Lifecycle Management
Scenario: Deploy Mindwm Cluster and Applications
Given an Ubuntu 24.04 system with 6 CPUs and 16 GB of RAM (PASSED)
And the mindwm-gitops repository is cloned into the "~/mindwm-gitops" directory (PASSED)
When God executes "make cluster" (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God executes "make argocd" (PASSED)
Then helm release "argocd" is deployed in "argocd" namespace (PASSED)
When God executes "make argocd_app" (PASSED)
Then the argocd "mindwm-gitops" application appears in "argocd" namespace (PASSED)
When God executes "make argocd_app_sync_async" (PASSED)
Then the argocd "mindwm-gitops" application is argocd namespace in a progressing status (PASSED)
When God executes "make argocd_app_async_wait" (PASSED)
Then all argocd applications are in a healthy state (PASSED)
When God executes "make crossplane_rolebinding_workaround" (PASSED)
Then the following roles should exist: (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Knative
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "knative-serving" should exist (PASSED)
And namespace "knative-eventing" should exist (PASSED)
And namespace "knative-operator" should exist (PASSED)
And the following deployments are in a ready state in the "knative-serving" namespace (PASSED)
And the following deployments are in a ready state in the "knative-eventing" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Istio
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "istio-system" should exist (PASSED)
And the following deployments are in a ready state in the "istio-system" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Redpanda
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "redpanda" should exist (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
And helm release "neo4j-cdc" is deployed in "redpanda" namespace (PASSED)
And statefulset "neo4j-cdc" in namespace "redpanda" is in ready state (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Cert manager
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "cert-manager" should exist (PASSED)
And the following deployments are in a ready state in the "cert-manager" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Nats
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "nats" should exist (PASSED)
And the following deployments are in a ready state in the "nats" namespace (PASSED)
And statefulset "nats" in namespace "nats" is in ready state (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Monitoring
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "monitoring" should exist (PASSED)
And the following deployments are in a ready state in the "monitoring" namespace (PASSED)
And statefulset "loki" in namespace "monitoring" is in ready state (PASSED)
And statefulset "tempo" in namespace "monitoring" is in ready state (PASSED)
And statefulset "vmalertmanager-vm-aio-victoria-metrics-k8s-stack" in namespace "monitoring" is in ready state (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Context
Given a MindWM environment (PASSED)
When God creates a MindWM context with the name "xxx3" (PASSED)
Then the context should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create User
Given a MindWM environment (PASSED)
When God creates a MindWM user resource with the name "alice" and connects it to the context "xxx3" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Host
Given a MindWM environment (PASSED)
When God creates a MindWM host resource with the name "laptop" and connects it to the user "alice" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
When God deletes the MindWM host resource "laptop" (PASSED)
Then the host "laptop" should be deleted (PASSED)
When God deletes the MindWM user resource "alice" (PASSED)
Then the user "alice" should be deleted (PASSED)
When God deletes the MindWM context resource "xxx3" (PASSED)
Then the context "xxx3" should be deleted (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create Context and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "cyan" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-cyan" should exist (PASSED)
And helm release "cyan-neo4j" is deployed in "context-cyan" namespace (PASSED)
And statefulset "cyan-neo4j" in namespace "context-cyan" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (FAILED)
And the following knative brokers are in a ready state in the "context-cyan" namespace (FAILED)
And kafka topic "context-cyan-cdc" is in ready state in "redpanda" namespace (FAILED)
And kafka source "context-cyan-cdc-kafkasource" is in ready state in "context-cyan" namespace (FAILED)
FAILED

=================================== FAILURES ===================================
_ test_scenarios[file:features/2_mindwm_crd_resources.feature-MindWM Custom kubernetes resources-Create Context and check k8s resources] _

kube = <kubetest.client.TestClient object at 0x748ff688c2f0>
step = PickleStep(argument=PickleStepArgument(doc_string=None, data_table=PickleTable(rows=[PickleTableRow(cells=[PickleTable...=<Type.outcome: 'Outcome'>, text='the following knative triggers are in a ready state in the "context-cyan" namespace')
namespace = 'context-cyan'

@then("the following knative triggers are in a ready state in the \"{namespace}\" namespace")
def knative_trigger_exist(kube, step, namespace):
    title_row, *rows = step.data_table.rows
    for row in rows:
        trigger_name = row.cells[0].value
        trigger = utils.knative_trigger_wait_for(kube, trigger_name, namespace)
        is_ready = utils.resource_get_condition(trigger['status'], 'Ready')
        with allure.step(f"Knative trigger '{trigger_name}' ready state is {is_ready}"):
            pass
      assert(is_ready == 'True')

E AssertionError: assert 'False' == 'True'
E
E - True
E + False

conftest.py:352: AssertionError
------------------------------ Captured log call -------------------------------
WARNING kubetest:utils.py:139 got api exception while waiting: (404)
Reason: Not Found
HTTP response headers: HTTPHeaderDict({'Audit-Id': '49346aee-2013-49a8-864c-2ef60fe795b9', 'Cache-Control': 'no-cache, private', 'Content-Type': 'application/json', 'X-Kubernetes-Pf-Flowschema-Uid': '05df61b5-5467-4912-8707-1c5c8c30936c', 'X-Kubernetes-Pf-Prioritylevel-Uid': 'd42c68ed-957e-44d4-ae8b-c71f104155c4', 'Date': 'Mon, 07 Oct 2024 20:59:17 GMT', 'Content-Length': '204'})
HTTP response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"namespaces "context-cyan" not found","reason":"NotFound","details":{"name":"context-cyan","kind":"namespaces"},"code":404}
=========================== short test summary info ============================
FAILED features/2_mindwm_crd_resources.feature::test_scenarios[file:features/2_mindwm_crd_resources.feature-MindWM Custom kubernetes resources-Create Context and check k8s resources] - AssertionError: assert 'False' == 'True'

  • True
  • False
    !!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
    ============ 1 failed, 11 passed, 23 warnings in 1079.70s (0:17:59) ============

Copy link

github-actions bot commented Oct 7, 2024

allure report

gherkin outptut ============================= test session starts ============================== collecting ... collected 56 items

Feature: Mindwm Lifecycle Management
Scenario: Deploy Mindwm Cluster and Applications
Given an Ubuntu 24.04 system with 6 CPUs and 16 GB of RAM (PASSED)
And the mindwm-gitops repository is cloned into the "~/mindwm-gitops" directory (PASSED)
When God executes "make cluster" (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God executes "make argocd" (PASSED)
Then helm release "argocd" is deployed in "argocd" namespace (PASSED)
When God executes "make argocd_app" (PASSED)
Then the argocd "mindwm-gitops" application appears in "argocd" namespace (PASSED)
When God executes "make argocd_app_sync_async" (PASSED)
Then the argocd "mindwm-gitops" application is argocd namespace in a progressing status (PASSED)
When God executes "make argocd_app_async_wait" (PASSED)
Then all argocd applications are in a healthy state (PASSED)
When God executes "make crossplane_rolebinding_workaround" (PASSED)
Then the following roles should exist: (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Knative
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "knative-serving" should exist (PASSED)
And namespace "knative-eventing" should exist (PASSED)
And namespace "knative-operator" should exist (PASSED)
And the following deployments are in a ready state in the "knative-serving" namespace (PASSED)
And the following deployments are in a ready state in the "knative-eventing" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Istio
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "istio-system" should exist (PASSED)
And the following deployments are in a ready state in the "istio-system" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Redpanda
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "redpanda" should exist (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
And helm release "neo4j-cdc" is deployed in "redpanda" namespace (PASSED)
And statefulset "neo4j-cdc" in namespace "redpanda" is in ready state (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Cert manager
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "cert-manager" should exist (PASSED)
And the following deployments are in a ready state in the "cert-manager" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Nats
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "nats" should exist (PASSED)
And the following deployments are in a ready state in the "nats" namespace (PASSED)
And statefulset "nats" in namespace "nats" is in ready state (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Monitoring
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "monitoring" should exist (PASSED)
And the following deployments are in a ready state in the "monitoring" namespace (PASSED)
And statefulset "loki" in namespace "monitoring" is in ready state (PASSED)
And statefulset "tempo" in namespace "monitoring" is in ready state (PASSED)
And statefulset "vmalertmanager-vm-aio-victoria-metrics-k8s-stack" in namespace "monitoring" is in ready state (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Context
Given a MindWM environment (PASSED)
When God creates a MindWM context with the name "xxx3" (PASSED)
Then the context should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create User
Given a MindWM environment (PASSED)
When God creates a MindWM user resource with the name "alice" and connects it to the context "xxx3" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Host
Given a MindWM environment (PASSED)
When God creates a MindWM host resource with the name "laptop" and connects it to the user "alice" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
When God deletes the MindWM host resource "laptop" (PASSED)
Then the host "laptop" should be deleted (PASSED)
When God deletes the MindWM user resource "alice" (PASSED)
Then the user "alice" should be deleted (PASSED)
When God deletes the MindWM context resource "xxx3" (PASSED)
Then the context "xxx3" should be deleted (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create Context and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "cyan" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-cyan" should exist (PASSED)
And helm release "cyan-neo4j" is deployed in "context-cyan" namespace (PASSED)
And statefulset "cyan-neo4j" in namespace "context-cyan" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative brokers are in a ready state in the "context-cyan" namespace (PASSED)
And kafka topic "context-cyan-cdc" is in ready state in "redpanda" namespace (PASSED)
And kafka source "context-cyan-cdc-kafkasource" is in ready state in "context-cyan" namespace (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create User and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM user resource with the name "bob" and connects it to the context "cyan" (PASSED)
Then the user resource should be ready and operable (PASSED)
And namespace "user-bob" should exist (PASSED)
And the following knative brokers are in a ready state in the "user-bob" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "user-bob" namespace (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-07T21:26:49Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'workstation-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"c0a5e3f6-e238-4c08-97f0-1d1320d4ec95"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-07T21:26:49Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-07T21:26:51Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}},
'f:observedGeneration': {}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-07T21:26:51Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:conditions': {},
'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-07T21:26:52Z'}],
'name': 'workstation-host-broker-kne-trigger',
'namespace': 'user-bob',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'workstation-host-broker',
'uid': 'c0a5e3f6-e238-4c08-97f0-1d1320d4ec95'}],
'resourceVersion': '25931',
'uid': 'ed18344f-3cf1-48d2-9e7f-32bfa9a96e06'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.bob.workstation.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-bob.svc.cluster.local'}},
'generation': 1,
'name': 'workstation-host-broker-worksta7c4b13133dc258f81b8d84b7d4930eeb',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-bob/workstation-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-bob/workstation-trigger-to-user-broker-trigger/fd500e46-b8b2-44c3-9bbb-57e0d089daf8',
'uid': '5f643b0e-f6e7-4035-8cb8-5feab6ecc916'}]},
'status': {'address': {'url': 'http://workstation-host-broker-kne-trigger-kn-jsm-channel.user-bob.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-07T21:26:51Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-07T21:26:51Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-07T21:26:51Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-07T21:26:51Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-07T21:26:51Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-07T21:26:49Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-07T21:26:51Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': '5f643b0e-f6e7-4035-8cb8-5feab6ecc916'}]}}

Feature: MindWM Custom kubernetes resources
Scenario: Create Host and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "workstation" and connects it to the user "bob" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "workstation-host-broker-kne-trigger" is ready in "user-bob" namespace (PASSED)
And the following knative triggers are in a ready state in the "user-bob" namespace (PASSED)
And the following knative brokers are in a ready state in the "user-bob" namespace (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "workstation" (PASSED)
Then the host "workstation" should be deleted (PASSED)
When God deletes the MindWM user resource "bob" (PASSED)
Then the user "bob" should be deleted (PASSED)
And namespace "user-bob" should not exist (PASSED)
When God deletes the MindWM context resource "cyan" (PASSED)
Then the context "cyan" should be deleted (PASSED)
And namespace "context-cyan" should not exist (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-07T21:28:43Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'pi6-host-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"de94f3de-dbff-4c2d-87da-feddedff55b0"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-07T21:28:43Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-07T21:28:46Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}},
'f:observedGeneration': {}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-07T21:28:46Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:conditions': {},
'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-07T21:28:46Z'}],
'name': 'pi6-host-host-broker-kne-trigger',
'namespace': 'user-amanda4',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'pi6-host-host-broker',
'uid': 'de94f3de-dbff-4c2d-87da-feddedff55b0'}],
'resourceVersion': '30507',
'uid': 'cd08b04e-e989-46e2-87de-59276ec76ebe'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.amanda4.pi6-host.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-amanda4.svc.cluster.local'}},
'generation': 1,
'name': 'pi6-host-host-broker-pi6-host-t2f8545d527a1ea2ba77006a10ff4a4c2',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-amanda4/pi6-host-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-amanda4/pi6-host-trigger-to-user-broker-trigger/3a021486-b55b-4615-b4a3-49bf13ada4e2',
'uid': 'e1d7f658-01d2-4c42-9e9e-b725f322880c'}]},
'status': {'address': {'url': 'http://pi6-host-host-broker-kne-trigger-kn-jsm-channel.user-amanda4.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-07T21:28:46Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-07T21:28:46Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-07T21:28:46Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-07T21:28:46Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-07T21:28:46Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-07T21:28:43Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-07T21:28:46Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': 'e1d7f658-01d2-4c42-9e9e-b725f322880c'}]}}

Feature: MindWM Ping-pong EDA test
Scenario: Prepare environment for ping tests
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "green4" (PASSED)
Then the context should be ready and operable (PASSED)
And the following knative services are in a ready state in the "context-green4" namespace (PASSED)
When God creates a MindWM user resource with the name "amanda4" and connects it to the context "green4" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "pi6-host" and connects it to the user "amanda4" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "pi6-host-host-broker-kne-trigger" is ready in "user-amanda4" namespace (PASSED)
When God starts reading message from NATS topic ">" (PASSED)
PASSED
Connected to NATS server at nats://root:[email protected]:4222
Subscribed to topic '>'

Feature: MindWM Ping-pong EDA test
Scenario: Send pind to knative ping service
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to knative service "pong" in "context-green4" namespace (PASSED)
Then the response http code should be "200" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Send ping via broker-ingress.knative-eventing/context-green4/context-broker
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "traceparent" to "00-5df92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/context-green4/context-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
Then the trace with "00-5df92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" should appear in TraceQL (PASSED)
And the trace should contains (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-amanda4.pi6-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Send ping via broker-ingress.knative-eventing/user-amanda4/user-broker
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "traceparent" to "00-6df93f3577b34da6a3ce929d0e0e4742-00f067aa0ba902b7-00" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/user-amanda4/user-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
Then the trace with "00-6df93f3577b34da6a3ce929d0e0e4742-00f067aa0ba902b7-00" should appear in TraceQL (PASSED)
And the trace should contains (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-amanda4.pi6-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Send ping via nats
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.3623.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-amanda4.pi6-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Cleanup amanda4@pi6-host in green4
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "pi6-host" (PASSED)
Then the host "pi6-host" should be deleted (PASSED)
When God deletes the MindWM user resource "amanda4" (PASSED)
When God deletes the MindWM context resource "green4" (PASSED)
PASSED

<Record n=<Node element_id='1' labels=frozenset({'Host'}) properties={'hostname': 'tablet', 'atime': 0, 'traceparent': '00-7df92f3577b34da6a3ce930d0e0e4734-0af1813023950190-01', 'type': 'org.mindwm.v1.graph.node.host'}>>
<Record n=<Node element_id='5' labels=frozenset({'IoDocument'}) properties={'output': 'uid=1000(pion) gid=1000(pion) groups=1000(pion),4(adm),100(users),112(tmux),988(docker)', 'input': 'id', 'atime': 0, 'traceparent': '00-7df92f3577b34da6a3ce930d0e0e4734-0af1813023950190-01', 'type': 'org.mindwm.v1.graph.node.iodocument', 'uuid': 'b0a1542aff7d42668e4a72c600f0101b', 'ps1': 'pion@mindwm-stg1:~/work/dev/mindwm-manager$'}>>

Feature: MindWM io context function test
Scenario: io context red
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "red" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-red" namespace (PASSED)
And statefulset "red-neo4j" in namespace "context-red" is in ready state (PASSED)
When God creates a MindWM user resource with the name "kitty" and connects it to the context "red" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "tablet" and connects it to the user "kitty" (PASSED)
Then the host resource should be ready and operable (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-id" to "442af213-c860-4535-b639-355f13b2d883" (PASSED)
And sets cloudevent header "traceparent" to "00-7df92f3577b34da6a3ce930d0e0e4734-00f064aa0ba902b8-00" (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.kitty.tablet.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/context-red/context-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-red" namespace (PASSED)
Then the trace with "00-7df92f3577b34da6a3ce930d0e0e4734-00f064aa0ba902b8-00" should appear in TraceQL (PASSED)
And the trace should contains (PASSED)
Then graph have node "User" with property "username" = "kitty" in context "red" (PASSED)
And graph have node "Host" with property "hostname" = "tablet" in context "red" (PASSED)
And graph have node "IoDocument" with property "input" = "id" in context "red" (PASSED)
PASSED

Feature: MindWM io context function test
Scenario: Cleanup kitty@tablet in red
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "tablet" (PASSED)
Then the host "tablet" should be deleted (PASSED)
When God deletes the MindWM user resource "kitty" (PASSED)
When God deletes the MindWM context resource "red" (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM kafka_cdc function test
Scenario: io context blue
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "blue" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And statefulset "blue-neo4j" in namespace "context-blue" is in ready state (PASSED)
When God creates a MindWM user resource with the name "garmr" and connects it to the context "blue" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "helheim" and connects it to the user "garmr" (PASSED)
Then the host resource should be ready and operable (PASSED)
When God starts reading message from NATS topic ">" (PASSED)
And God makes graph query in context "blue" (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-garmr.helheim-host-broker-kne-trigger._knative" (PASSED)
When God makes graph query in context "blue" (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.updated" should have been received from the NATS topic "user-garmr.helheim-host-broker-kne-trigger._knative" (PASSED)
When God makes graph query in context "blue" (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.deleted" should have been received from the NATS topic "user-garmr.helheim-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM kafka_cdc function test
Scenario: Cleanup garmr@helheim in blue
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "helheim" (PASSED)
Then the host "helheim" should be deleted (PASSED)
When God deletes the MindWM user resource "garmr" (PASSED)
When God deletes the MindWM context resource "blue" (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Create context varanasi and user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "varanasi" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-varanasi" namespace (PASSED)
And statefulset "varanasi-neo4j" in namespace "context-varanasi" is in ready state (PASSED)
When God creates a MindWM user resource with the name "shesha" and connects it to the context "varanasi" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Create workstation01 for user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "workstation01" and connects it to the user "shesha" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Create travellaptop for user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "travellaptop" and connects it to the user "shesha" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two hosts one user function test
Scenario: Send ping via nats host: workstation01, user: shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-varanasi" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-shesha.workstation01-host-broker-kne-trigger._knative" (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two hosts one user function test
Scenario: Send ping via nats host: travellaptop, user: shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.shesha.travellaptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.shesha.travellaptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-varanasi" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-shesha.travellaptop-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Send iodocument via nats host: workstation01, user: shesha and check that second host received graph the update
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.3623.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-varanasi" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-shesha.travellaptop-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Cleanup hosts workstation01 in user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "workstation01" (PASSED)
Then the host "workstation01" should be deleted (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Cleanup hosts travellaptop in user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "travellaptop" (PASSED)
Then the host "travellaptop" should be deleted (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Cleanup user shesha and context varanasi
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM user resource "shesha" (PASSED)
Then the user "shesha" should be deleted (PASSED)
When God deletes the MindWM context resource "varanasi" (PASSED)
Then the context "varanasi" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create context tokyo
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "tokyo" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-tokyo" namespace (PASSED)
And statefulset "tokyo-neo4j" in namespace "context-tokyo" is in ready state (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create godzilla and connects it to tokyo
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM user resource with the name "godzilla" and connects it to the context "tokyo" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create tengu and connects it to tokyo
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM user resource with the name "tengu" and connects it to the context "tokyo" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create laptop resource and connects it to godzilla user
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "laptop" and connects it to the user "godzilla" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create tablet resource and connects it to tengu user
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "tablet" and connects it to the user "tengu" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two users one context function test
Scenario: Send iodocument via nats host: , user: and check that second user received graph update
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.godzilla.laptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.godzilla.laptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-tokyo" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-tengu.tablet-host-broker-kne-trigger._knative" (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two users one context function test
Scenario: Send iodocument via nats host: , user: and check that second user received graph update
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.tengu.tablet.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.tengu.tablet.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-tokyo" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-godzilla.laptop-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup laptop host for godzilla username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "laptop" (PASSED)
Then the host "laptop" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup tablet host for tengu username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "tablet" (PASSED)
Then the host "tablet" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup godzilla username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM user resource "godzilla" (PASSED)
Then the user "godzilla" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup tengu username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM user resource "tengu" (PASSED)
Then the user "tengu" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup tokyo context
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM context resource "tokyo" (PASSED)
Then the context "tokyo" should be deleted (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Create Contexts and Verify All Related Resources Are in Ready State
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "aphrodite" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-aphrodite" should exist (PASSED)
And the following deployments are in a ready state in the "context-aphrodite" namespace (PASSED)
And statefulset "aphrodite-neo4j" in namespace "context-aphrodite" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-aphrodite" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-aphrodite" namespace (PASSED)
And the following knative brokers are in a ready state in the "context-aphrodite" namespace (PASSED)
And kafka topic "context-aphrodite-cdc" is in ready state in "redpanda" namespace (PASSED)
And kafka source "context-aphrodite-cdc-kafkasource" is in ready state in "context-aphrodite" namespace (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Create Contexts and Verify All Related Resources Are in Ready State
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "kypros" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-kypros" should exist (PASSED)
And the following deployments are in a ready state in the "context-kypros" namespace (PASSED)
And statefulset "kypros-neo4j" in namespace "context-kypros" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-kypros" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-kypros" namespace (PASSED)
And the following knative brokers are in a ready state in the "context-kypros" namespace (PASSED)
And kafka topic "context-kypros-cdc" is in ready state in "redpanda" namespace (PASSED)
And kafka source "context-kypros-cdc-kafkasource" is in ready state in "context-kypros" namespace (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Cleanup Contexts and Verify Resources Are Deleted
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM context resource "aphrodite" (PASSED)
Then the context "aphrodite" should be deleted (PASSED)
And namespace "context-aphrodite" should not exist (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Cleanup Contexts and Verify Resources Are Deleted
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM context resource "kypros" (PASSED)
Then the context "kypros" should be deleted (PASSED)
And namespace "context-kypros" should not exist (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-07T21:45:41Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'the-host-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"284b6739-f511-40bf-92ac-5c85c98b734f"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-07T21:45:41Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-07T21:45:44Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}},
'f:conditions': {}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-07T21:45:44Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:observedGeneration': {},
'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-07T21:45:45Z'}],
'name': 'the-host-host-broker-kne-trigger',
'namespace': 'user-flukeman',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'the-host-host-broker',
'uid': '284b6739-f511-40bf-92ac-5c85c98b734f'}],
'resourceVersion': '69838',
'uid': 'f19c94ae-f3fe-496f-9595-6c1d9c4d1a73'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.flukeman.the-host.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-flukeman.svc.cluster.local'}},
'generation': 1,
'name': 'the-host-host-broker-the-host-t5988a2d0b89d4c2a41104048d2711b7a',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-flukeman/the-host-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-flukeman/the-host-trigger-to-user-broker-trigger/8ebc56d9-0cc2-4810-b7e0-ff38d711ecbd',
'uid': 'e886dcd7-5bde-4877-bf79-499ad614a2dc'}]},
'status': {'address': {'url': 'http://the-host-host-broker-kne-trigger-kn-jsm-channel.user-flukeman.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-07T21:45:44Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-07T21:45:44Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-07T21:45:44Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-07T21:45:44Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-07T21:45:44Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-07T21:45:42Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-07T21:45:43Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': 'e886dcd7-5bde-4877-bf79-499ad614a2dc'}]}}

Feature: MindWM clipboard EDA test
Scenario: Prepare environment for ping tests
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "philadelphia" (PASSED)
Then the context should be ready and operable (PASSED)
And the following knative services are in a ready state in the "context-philadelphia" namespace (PASSED)
When God creates a MindWM user resource with the name "flukeman" and connects it to the context "philadelphia" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "the-host" and connects it to the user "flukeman" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "the-host-host-broker-kne-trigger" is ready in "user-flukeman" namespace (PASSED)
When God starts reading message from NATS topic ">" (PASSED)
PASSED
Connected to NATS server at nats://root:[email protected]:4222
Subscribed to topic '>'

Feature: MindWM clipboard EDA test
Scenario: Send pind to knative ping service
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "clipboard" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.clipboard" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.flukeman.the-host.clipboard" (PASSED)
And sets cloudevent header "traceparent" to "00-6ef92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" (PASSED)
And sends cloudevent to knative service "clipboard" in "context-philadelphia" namespace (PASSED)
Then the response http code should be "200" (FAILED)
Then the following deployments are in a ready state in the "context-philadelphia" namespace (FAILED)
FAILED

=================================== FAILURES ===================================
_ test_scenarios[file:features/9_mindwm_clipboard.feature-MindWM clipboard EDA test-Send pind to knative ping service[table_rows:[line: 50]]] _

http_response = {'answer': <Response [500]>}, code = '200'

@then("the response http code should be \"{code}\"")
def http_response_code_check(http_response, code):
    status_code = str(http_response['answer'].status_code)
  assert status_code == code, f"HTTP status code {status_code} != {code}"

E AssertionError: HTTP status code 500 != 200
E assert '500' == '200'
E
E - 200
E + 500

conftest.py:548: AssertionError
=========================== short test summary info ============================
FAILED features/9_mindwm_clipboard.feature::test_scenarios[file:features/9_mindwm_clipboard.feature-MindWM clipboard EDA test-Send pind to knative ping service[table_rows:[line: 50]]] - AssertionError: HTTP status code 500 != 200
assert '500' == '200'

  • 200
  • 500
    !!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
    ============ 1 failed, 51 passed, 76 warnings in 2298.86s (0:38:18) ============

Copy link

github-actions bot commented Oct 7, 2024

allure report

gherkin outptut ============================= test session starts ============================== collecting ... collected 56 items

Feature: Mindwm Lifecycle Management
Scenario: Deploy Mindwm Cluster and Applications
Given an Ubuntu 24.04 system with 6 CPUs and 16 GB of RAM (PASSED)
And the mindwm-gitops repository is cloned into the "~/mindwm-gitops" directory (PASSED)
When God executes "make cluster" (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God executes "make argocd" (PASSED)
Then helm release "argocd" is deployed in "argocd" namespace (PASSED)
When God executes "make argocd_app" (PASSED)
Then the argocd "mindwm-gitops" application appears in "argocd" namespace (PASSED)
When God executes "make argocd_app_sync_async" (PASSED)
Then the argocd "mindwm-gitops" application is argocd namespace in a progressing status (PASSED)
When God executes "make argocd_app_async_wait" (PASSED)
Then all argocd applications are in a healthy state (PASSED)
When God executes "make crossplane_rolebinding_workaround" (PASSED)
Then the following roles should exist: (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Knative
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "knative-serving" should exist (PASSED)
And namespace "knative-eventing" should exist (PASSED)
And namespace "knative-operator" should exist (PASSED)
And the following deployments are in a ready state in the "knative-serving" namespace (PASSED)
And the following deployments are in a ready state in the "knative-eventing" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Istio
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "istio-system" should exist (PASSED)
And the following deployments are in a ready state in the "istio-system" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Redpanda
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "redpanda" should exist (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
And helm release "neo4j-cdc" is deployed in "redpanda" namespace (PASSED)
And statefulset "neo4j-cdc" in namespace "redpanda" is in ready state (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Cert manager
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "cert-manager" should exist (PASSED)
And the following deployments are in a ready state in the "cert-manager" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Nats
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "nats" should exist (PASSED)
And the following deployments are in a ready state in the "nats" namespace (PASSED)
And statefulset "nats" in namespace "nats" is in ready state (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Monitoring
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "monitoring" should exist (PASSED)
And the following deployments are in a ready state in the "monitoring" namespace (PASSED)
And statefulset "loki" in namespace "monitoring" is in ready state (PASSED)
And statefulset "tempo" in namespace "monitoring" is in ready state (PASSED)
And statefulset "vmalertmanager-vm-aio-victoria-metrics-k8s-stack" in namespace "monitoring" is in ready state (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Context
Given a MindWM environment (PASSED)
When God creates a MindWM context with the name "xxx3" (PASSED)
Then the context should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create User
Given a MindWM environment (PASSED)
When God creates a MindWM user resource with the name "alice" and connects it to the context "xxx3" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Host
Given a MindWM environment (PASSED)
When God creates a MindWM host resource with the name "laptop" and connects it to the user "alice" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
When God deletes the MindWM host resource "laptop" (PASSED)
Then the host "laptop" should be deleted (PASSED)
When God deletes the MindWM user resource "alice" (PASSED)
Then the user "alice" should be deleted (PASSED)
When God deletes the MindWM context resource "xxx3" (PASSED)
Then the context "xxx3" should be deleted (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create Context and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "cyan" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-cyan" should exist (PASSED)
And helm release "cyan-neo4j" is deployed in "context-cyan" namespace (PASSED)
And statefulset "cyan-neo4j" in namespace "context-cyan" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (FAILED)
And the following knative brokers are in a ready state in the "context-cyan" namespace (FAILED)
And kafka topic "context-cyan-cdc" is in ready state in "redpanda" namespace (FAILED)
And kafka source "context-cyan-cdc-kafkasource" is in ready state in "context-cyan" namespace (FAILED)
FAILED

=================================== FAILURES ===================================
_ test_scenarios[file:features/2_mindwm_crd_resources.feature-MindWM Custom kubernetes resources-Create Context and check k8s resources] _

kube = <kubetest.client.TestClient object at 0x702be9632bd0>
step = PickleStep(argument=PickleStepArgument(doc_string=None, data_table=PickleTable(rows=[PickleTableRow(cells=[PickleTable...=<Type.outcome: 'Outcome'>, text='the following knative triggers are in a ready state in the "context-cyan" namespace')
namespace = 'context-cyan'

@then("the following knative triggers are in a ready state in the \"{namespace}\" namespace")
def knative_trigger_exist(kube, step, namespace):
    title_row, *rows = step.data_table.rows
    for row in rows:
        trigger_name = row.cells[0].value
        trigger = utils.knative_trigger_wait_for(kube, trigger_name, namespace)
        is_ready = utils.resource_get_condition(trigger['status'], 'Ready')
        with allure.step(f"Knative trigger '{trigger_name}' ready state is {is_ready}"):
            pass
      assert(is_ready == 'True')

E AssertionError: assert 'False' == 'True'
E
E - True
E + False

conftest.py:352: AssertionError
------------------------------ Captured log call -------------------------------
WARNING kubetest:utils.py:139 got api exception while waiting: (404)
Reason: Not Found
HTTP response headers: HTTPHeaderDict({'Audit-Id': 'f2b91b11-0b74-4b94-a15f-ae5224d14e3d', 'Cache-Control': 'no-cache, private', 'Content-Type': 'application/json', 'X-Kubernetes-Pf-Flowschema-Uid': 'ebec9aac-e246-47f7-9147-da62f98e4c92', 'X-Kubernetes-Pf-Prioritylevel-Uid': 'ef2f740c-628e-48f3-b60d-623770a97fb8', 'Date': 'Mon, 07 Oct 2024 23:21:55 GMT', 'Content-Length': '204'})
HTTP response body: {"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"namespaces "context-cyan" not found","reason":"NotFound","details":{"name":"context-cyan","kind":"namespaces"},"code":404}
=========================== short test summary info ============================
FAILED features/2_mindwm_crd_resources.feature::test_scenarios[file:features/2_mindwm_crd_resources.feature-MindWM Custom kubernetes resources-Create Context and check k8s resources] - AssertionError: assert 'False' == 'True'

  • True
  • False
    !!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
    ============ 1 failed, 11 passed, 23 warnings in 1093.16s (0:18:13) ============

Copy link

github-actions bot commented Oct 7, 2024

allure report

gherkin outptut ============================= test session starts ============================== collecting ... collected 56 items

Feature: Mindwm Lifecycle Management
Scenario: Deploy Mindwm Cluster and Applications
Given an Ubuntu 24.04 system with 6 CPUs and 16 GB of RAM (PASSED)
And the mindwm-gitops repository is cloned into the "~/mindwm-gitops" directory (PASSED)
When God executes "make cluster" (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God executes "make argocd" (PASSED)
Then helm release "argocd" is deployed in "argocd" namespace (PASSED)
When God executes "make argocd_app" (PASSED)
Then the argocd "mindwm-gitops" application appears in "argocd" namespace (PASSED)
When God executes "make argocd_app_sync_async" (PASSED)
Then the argocd "mindwm-gitops" application is argocd namespace in a progressing status (PASSED)
When God executes "make argocd_app_async_wait" (PASSED)
Then all argocd applications are in a healthy state (PASSED)
When God executes "make crossplane_rolebinding_workaround" (PASSED)
Then the following roles should exist: (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Knative
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "knative-serving" should exist (PASSED)
And namespace "knative-eventing" should exist (PASSED)
And namespace "knative-operator" should exist (PASSED)
And the following deployments are in a ready state in the "knative-serving" namespace (PASSED)
And the following deployments are in a ready state in the "knative-eventing" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Istio
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "istio-system" should exist (PASSED)
And the following deployments are in a ready state in the "istio-system" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Redpanda
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "redpanda" should exist (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
And helm release "neo4j-cdc" is deployed in "redpanda" namespace (PASSED)
And statefulset "neo4j-cdc" in namespace "redpanda" is in ready state (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Cert manager
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "cert-manager" should exist (PASSED)
And the following deployments are in a ready state in the "cert-manager" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Nats
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "nats" should exist (PASSED)
And the following deployments are in a ready state in the "nats" namespace (PASSED)
And statefulset "nats" in namespace "nats" is in ready state (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Monitoring
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "monitoring" should exist (PASSED)
And the following deployments are in a ready state in the "monitoring" namespace (PASSED)
And statefulset "loki" in namespace "monitoring" is in ready state (PASSED)
And statefulset "tempo" in namespace "monitoring" is in ready state (PASSED)
And statefulset "vmalertmanager-vm-aio-victoria-metrics-k8s-stack" in namespace "monitoring" is in ready state (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Context
Given a MindWM environment (PASSED)
When God creates a MindWM context with the name "xxx3" (PASSED)
Then the context should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create User
Given a MindWM environment (PASSED)
When God creates a MindWM user resource with the name "alice" and connects it to the context "xxx3" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Host
Given a MindWM environment (PASSED)
When God creates a MindWM host resource with the name "laptop" and connects it to the user "alice" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
When God deletes the MindWM host resource "laptop" (PASSED)
Then the host "laptop" should be deleted (PASSED)
When God deletes the MindWM user resource "alice" (PASSED)
Then the user "alice" should be deleted (PASSED)
When God deletes the MindWM context resource "xxx3" (PASSED)
Then the context "xxx3" should be deleted (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create Context and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "cyan" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-cyan" should exist (PASSED)
And helm release "cyan-neo4j" is deployed in "context-cyan" namespace (PASSED)
And statefulset "cyan-neo4j" in namespace "context-cyan" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (FAILED)
And the following knative brokers are in a ready state in the "context-cyan" namespace (FAILED)
And kafka topic "context-cyan-cdc" is in ready state in "redpanda" namespace (FAILED)
And kafka source "context-cyan-cdc-kafkasource" is in ready state in "context-cyan" namespace (FAILED)
FAILED

=================================== FAILURES ===================================
_ test_scenarios[file:features/2_mindwm_crd_resources.feature-MindWM Custom kubernetes resources-Create Context and check k8s resources] _

kube = <kubetest.client.TestClient object at 0x78868619c5f0>
step = PickleStep(argument=PickleStepArgument(doc_string=None, data_table=PickleTable(rows=[PickleTableRow(cells=[PickleTable...=<Type.outcome: 'Outcome'>, text='the following knative triggers are in a ready state in the "context-cyan" namespace')
namespace = 'context-cyan'

@then("the following knative triggers are in a ready state in the \"{namespace}\" namespace")
def knative_trigger_exist(kube, step, namespace):
    title_row, *rows = step.data_table.rows
    for row in rows:
        trigger_name = row.cells[0].value
        trigger = utils.knative_trigger_wait_for(kube, trigger_name, namespace)
        is_ready = utils.resource_get_condition(trigger['status'], 'Ready')
        with allure.step(f"Knative trigger '{trigger_name}' ready state is {is_ready}"):
            pass
      assert(is_ready == 'True')

E AssertionError: assert 'False' == 'True'
E
E - True
E + False

conftest.py:352: AssertionError
=========================== short test summary info ============================
FAILED features/2_mindwm_crd_resources.feature::test_scenarios[file:features/2_mindwm_crd_resources.feature-MindWM Custom kubernetes resources-Create Context and check k8s resources] - AssertionError: assert 'False' == 'True'

  • True
  • False
    !!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
    ============ 1 failed, 11 passed, 23 warnings in 1290.72s (0:21:30) ============

Copy link

github-actions bot commented Oct 8, 2024

allure report

gherkin outptut ============================= test session starts ============================== collecting ... collected 56 items

Feature: Mindwm Lifecycle Management
Scenario: Deploy Mindwm Cluster and Applications
Given an Ubuntu 24.04 system with 6 CPUs and 16 GB of RAM (PASSED)
And the mindwm-gitops repository is cloned into the "~/mindwm-gitops" directory (PASSED)
When God executes "make cluster" (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God executes "make argocd" (PASSED)
Then helm release "argocd" is deployed in "argocd" namespace (PASSED)
When God executes "make argocd_app" (PASSED)
Then the argocd "mindwm-gitops" application appears in "argocd" namespace (PASSED)
When God executes "make argocd_app_sync_async" (PASSED)
Then the argocd "mindwm-gitops" application is argocd namespace in a progressing status (PASSED)
When God executes "make argocd_app_async_wait" (PASSED)
Then all argocd applications are in a healthy state (PASSED)
When God executes "make crossplane_rolebinding_workaround" (PASSED)
Then the following roles should exist: (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Knative
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "knative-serving" should exist (PASSED)
And namespace "knative-eventing" should exist (PASSED)
And namespace "knative-operator" should exist (PASSED)
And the following deployments are in a ready state in the "knative-serving" namespace (PASSED)
And the following deployments are in a ready state in the "knative-eventing" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Istio
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "istio-system" should exist (PASSED)
And the following deployments are in a ready state in the "istio-system" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Redpanda
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "redpanda" should exist (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
And helm release "neo4j-cdc" is deployed in "redpanda" namespace (FAILED)
And statefulset "neo4j-cdc" in namespace "redpanda" is in ready state (FAILED)
And the following deployments are in a ready state in the "redpanda" namespace (FAILED)
FAILED

=================================== FAILURES ===================================
_ test_scenarios[file:features/0_1_mindwm_eda.feature-Mindwm event driven architecture-Redpanda] _

kube = <kubetest.client.TestClient object at 0x71e9aa58d5e0>
helm_release = 'neo4j-cdc', namespace = 'redpanda'

@then("helm release \"{helm_release}\" is deployed in \"{namespace}\" namespace" )
def helm_release_deploeyd(kube, helm_release, namespace):
    #info = utils.helm_release_info(kube, helm_release, namespace)
  info = utils.helm_release_is_ready(kube, helm_release, namespace)

conftest.py:255:


utils.py:52: in helm_release_is_ready
kubetest_utils.wait_for_condition(


condition = <Condition (name: helm release has status and info, met: False)>
timeout = 600, interval = 5, fail_on_api_error = True

def wait_for_condition(
    condition: Condition,
    timeout: int = None,
    interval: Union[int, float] = 1,
    fail_on_api_error: bool = True,
) -> None:
    """Wait for a condition to be met.

    Args:
        condition: The Condition to wait for.
        timeout: The maximum time to wait, in seconds, for the condition to be met.
            If unspecified, this function will wait indefinitely. If specified and
            the timeout is met or exceeded, a TimeoutError will be raised.
        interval: The time, in seconds, to wait before re-checking the condition.
        fail_on_api_error: Fail the condition checks if a Kubernetes API error is
            incurred. An API error can be raised for a number of reasons, including
            a Pod being restarted and temporarily unavailable. Disabling this will
            cause those errors to be ignored, allowing the check to continue until
            timeout or resolution. (default: True).

    Raises:
        TimeoutError: The specified timeout was exceeded.
    """
    log.info(f"waiting for condition: {condition}")

    # define the maximum time to wait. once this is met, we should
    # stop waiting.
    max_time = None
    if timeout is not None:
        max_time = time.time() + timeout

    # start the wait block
    start = time.time()
    while True:
        if max_time and time.time() >= max_time:
          raise TimeoutError(
                f"timed out ({timeout}s) while waiting for condition {condition}"
            )

E TimeoutError: timed out (600s) while waiting for condition <Condition (name: helm release has status and info, met: False)>

.venv/lib/python3.12/site-packages/kubetest/utils.py:130: TimeoutError
=========================== short test summary info ============================
FAILED features/0_1_mindwm_eda.feature::test_scenarios[file:features/0_1_mindwm_eda.feature-Mindwm event driven architecture-Redpanda] - TimeoutError: timed out (600s) while waiting for condition <Condition (name: helm release has status and info, met: False)>
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
============ 1 failed, 3 passed, 15 warnings in 1443.22s (0:24:03) =============

Copy link

github-actions bot commented Oct 8, 2024

allure report

gherkin outptut ============================= test session starts ============================== collecting ... collected 56 items

Feature: Mindwm Lifecycle Management
Scenario: Deploy Mindwm Cluster and Applications
Given an Ubuntu 24.04 system with 6 CPUs and 16 GB of RAM (PASSED)
And the mindwm-gitops repository is cloned into the "~/mindwm-gitops" directory (PASSED)
When God executes "make cluster" (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God executes "make argocd" (PASSED)
Then helm release "argocd" is deployed in "argocd" namespace (PASSED)
When God executes "make argocd_app" (PASSED)
Then the argocd "mindwm-gitops" application appears in "argocd" namespace (PASSED)
When God executes "make argocd_app_sync_async" (PASSED)
Then the argocd "mindwm-gitops" application is argocd namespace in a progressing status (PASSED)
When God executes "make argocd_app_async_wait" (PASSED)
Then all argocd applications are in a healthy state (PASSED)
When God executes "make crossplane_rolebinding_workaround" (PASSED)
Then the following roles should exist: (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Knative
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "knative-serving" should exist (PASSED)
And namespace "knative-eventing" should exist (PASSED)
And namespace "knative-operator" should exist (PASSED)
And the following deployments are in a ready state in the "knative-serving" namespace (PASSED)
And the following deployments are in a ready state in the "knative-eventing" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Istio
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "istio-system" should exist (PASSED)
And the following deployments are in a ready state in the "istio-system" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Redpanda
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "redpanda" should exist (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
And helm release "neo4j-cdc" is deployed in "redpanda" namespace (PASSED)
And statefulset "neo4j-cdc" in namespace "redpanda" is in ready state (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Cert manager
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "cert-manager" should exist (PASSED)
And the following deployments are in a ready state in the "cert-manager" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Nats
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "nats" should exist (PASSED)
And the following deployments are in a ready state in the "nats" namespace (PASSED)
And statefulset "nats" in namespace "nats" is in ready state (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Monitoring
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "monitoring" should exist (PASSED)
And the following deployments are in a ready state in the "monitoring" namespace (PASSED)
And statefulset "loki" in namespace "monitoring" is in ready state (PASSED)
And statefulset "tempo" in namespace "monitoring" is in ready state (PASSED)
And statefulset "vmalertmanager-vm-aio-victoria-metrics-k8s-stack" in namespace "monitoring" is in ready state (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Context
Given a MindWM environment (PASSED)
When God creates a MindWM context with the name "xxx3" (PASSED)
Then the context should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create User
Given a MindWM environment (PASSED)
When God creates a MindWM user resource with the name "alice" and connects it to the context "xxx3" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Host
Given a MindWM environment (PASSED)
When God creates a MindWM host resource with the name "laptop" and connects it to the user "alice" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
When God deletes the MindWM host resource "laptop" (PASSED)
Then the host "laptop" should be deleted (PASSED)
When God deletes the MindWM user resource "alice" (PASSED)
Then the user "alice" should be deleted (PASSED)
When God deletes the MindWM context resource "xxx3" (PASSED)
Then the context "xxx3" should be deleted (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create Context and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "cyan" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-cyan" should exist (PASSED)
And helm release "cyan-neo4j" is deployed in "context-cyan" namespace (PASSED)
And statefulset "cyan-neo4j" in namespace "context-cyan" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative brokers are in a ready state in the "context-cyan" namespace (PASSED)
And kafka topic "context-cyan-cdc" is in ready state in "redpanda" namespace (PASSED)
And kafka source "context-cyan-cdc-kafkasource" is in ready state in "context-cyan" namespace (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create User and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM user resource with the name "bob" and connects it to the context "cyan" (PASSED)
Then the user resource should be ready and operable (PASSED)
And namespace "user-bob" should exist (PASSED)
And the following knative brokers are in a ready state in the "user-bob" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "user-bob" namespace (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-08T10:54:21Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'workstation-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"e98af79d-2674-4bf5-a1e4-96387b63aaae"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-08T10:54:21Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-08T10:54:25Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}},
'f:conditions': {},
'f:observedGeneration': {}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T10:54:26Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T10:54:26Z'}],
'name': 'workstation-host-broker-kne-trigger',
'namespace': 'user-bob',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'workstation-host-broker',
'uid': 'e98af79d-2674-4bf5-a1e4-96387b63aaae'}],
'resourceVersion': '21012',
'uid': '3f17294b-dbae-45f9-ba30-c1d8cdcf27c1'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.bob.workstation.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-bob.svc.cluster.local'}},
'generation': 1,
'name': 'workstation-host-broker-workstaac15648a2091e4fc9ba2f78da809c1b1',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-bob/workstation-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-bob/workstation-trigger-to-user-broker-trigger/818d01e8-5556-4e1e-b974-54939c329e11',
'uid': 'dc2eb0a9-486a-44df-af4f-6fb51d1d0d65'}]},
'status': {'address': {'url': 'http://workstation-host-broker-kne-trigger-kn-jsm-channel.user-bob.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-08T10:54:26Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-08T10:54:26Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-08T10:54:26Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-08T10:54:26Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-08T10:54:26Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-08T10:54:21Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-08T10:54:24Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': 'dc2eb0a9-486a-44df-af4f-6fb51d1d0d65'}]}}

Feature: MindWM Custom kubernetes resources
Scenario: Create Host and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "workstation" and connects it to the user "bob" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "workstation-host-broker-kne-trigger" is ready in "user-bob" namespace (PASSED)
And the following knative triggers are in a ready state in the "user-bob" namespace (PASSED)
And the following knative brokers are in a ready state in the "user-bob" namespace (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "workstation" (PASSED)
Then the host "workstation" should be deleted (PASSED)
When God deletes the MindWM user resource "bob" (PASSED)
Then the user "bob" should be deleted (PASSED)
And namespace "user-bob" should not exist (PASSED)
When God deletes the MindWM context resource "cyan" (PASSED)
Then the context "cyan" should be deleted (PASSED)
And namespace "context-cyan" should not exist (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-08T10:57:46Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'pi6-host-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"ea9bb032-23fb-4b6e-9038-1e1936021279"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-08T10:57:46Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-08T10:57:49Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}},
'f:observedGeneration': {}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T10:57:49Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:conditions': {},
'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T10:57:49Z'}],
'name': 'pi6-host-host-broker-kne-trigger',
'namespace': 'user-amanda4',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'pi6-host-host-broker',
'uid': 'ea9bb032-23fb-4b6e-9038-1e1936021279'}],
'resourceVersion': '27644',
'uid': 'dffc49e1-33d8-431e-8ce3-cd4b173b5be1'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.amanda4.pi6-host.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-amanda4.svc.cluster.local'}},
'generation': 1,
'name': 'pi6-host-host-broker-pi6-host-t1d7060704cd1c70d25a57d7ceb6c8645',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-amanda4/pi6-host-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-amanda4/pi6-host-trigger-to-user-broker-trigger/66e8ef0f-3ae9-41d2-902a-448f29575c91',
'uid': 'c907d53b-ab2d-4f95-93c5-d6b00c1f8557'}]},
'status': {'address': {'url': 'http://pi6-host-host-broker-kne-trigger-kn-jsm-channel.user-amanda4.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-08T10:57:49Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-08T10:57:49Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-08T10:57:49Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-08T10:57:49Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-08T10:57:49Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-08T10:57:46Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-08T10:57:49Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': 'c907d53b-ab2d-4f95-93c5-d6b00c1f8557'}]}}

Feature: MindWM Ping-pong EDA test
Scenario: Prepare environment for ping tests
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "green4" (PASSED)
Then the context should be ready and operable (PASSED)
And the following knative services are in a ready state in the "context-green4" namespace (PASSED)
When God creates a MindWM user resource with the name "amanda4" and connects it to the context "green4" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "pi6-host" and connects it to the user "amanda4" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "pi6-host-host-broker-kne-trigger" is ready in "user-amanda4" namespace (PASSED)
When God starts reading message from NATS topic ">" (PASSED)
PASSED
Connected to NATS server at nats://root:[email protected]:4222
Subscribed to topic '>'

Feature: MindWM Ping-pong EDA test
Scenario: Send pind to knative ping service
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to knative service "pong" in "context-green4" namespace (PASSED)
Then the response http code should be "200" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Send ping via broker-ingress.knative-eventing/context-green4/context-broker
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "traceparent" to "00-5df92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/context-green4/context-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
Then the trace with "00-5df92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" should appear in TraceQL (PASSED)
And the trace should contains (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-amanda4.pi6-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Send ping via broker-ingress.knative-eventing/user-amanda4/user-broker
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "traceparent" to "00-6df93f3577b34da6a3ce929d0e0e4742-00f067aa0ba902b7-00" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/user-amanda4/user-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
Then the trace with "00-6df93f3577b34da6a3ce929d0e0e4742-00f067aa0ba902b7-00" should appear in TraceQL (PASSED)
And the trace should contains (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-amanda4.pi6-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Send ping via nats
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.3623.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-amanda4.pi6-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Cleanup amanda4@pi6-host in green4
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "pi6-host" (PASSED)
Then the host "pi6-host" should be deleted (PASSED)
When God deletes the MindWM user resource "amanda4" (PASSED)
When God deletes the MindWM context resource "green4" (PASSED)
PASSED

<Record n=<Node element_id='1' labels=frozenset({'Host'}) properties={'hostname': 'tablet', 'atime': 0, 'traceparent': '00-7df92f3577b34da6a3ce930d0e0e4734-2d03f5332c4a7f5c-01', 'type': 'org.mindwm.v1.graph.node.host'}>>
<Record n=<Node element_id='5' labels=frozenset({'IoDocument'}) properties={'output': 'uid=1000(pion) gid=1000(pion) groups=1000(pion),4(adm),100(users),112(tmux),988(docker)', 'input': 'id', 'atime': 0, 'traceparent': '00-7df92f3577b34da6a3ce930d0e0e4734-2d03f5332c4a7f5c-01', 'type': 'org.mindwm.v1.graph.node.iodocument', 'uuid': '49d33bbf75714115a0f5222ea0727aa3', 'ps1': 'pion@mindwm-stg1:~/work/dev/mindwm-manager$'}>>

Feature: MindWM io context function test
Scenario: io context red
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "red" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-red" namespace (PASSED)
And statefulset "red-neo4j" in namespace "context-red" is in ready state (PASSED)
When God creates a MindWM user resource with the name "kitty" and connects it to the context "red" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "tablet" and connects it to the user "kitty" (PASSED)
Then the host resource should be ready and operable (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-id" to "442af213-c860-4535-b639-355f13b2d883" (PASSED)
And sets cloudevent header "traceparent" to "00-7df92f3577b34da6a3ce930d0e0e4734-00f064aa0ba902b8-00" (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.kitty.tablet.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/context-red/context-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-red" namespace (PASSED)
Then the trace with "00-7df92f3577b34da6a3ce930d0e0e4734-00f064aa0ba902b8-00" should appear in TraceQL (PASSED)
And the trace should contains (PASSED)
Then graph have node "User" with property "username" = "kitty" in context "red" (PASSED)
And graph have node "Host" with property "hostname" = "tablet" in context "red" (PASSED)
And graph have node "IoDocument" with property "input" = "id" in context "red" (PASSED)
PASSED

Feature: MindWM io context function test
Scenario: Cleanup kitty@tablet in red
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "tablet" (PASSED)
Then the host "tablet" should be deleted (PASSED)
When God deletes the MindWM user resource "kitty" (PASSED)
When God deletes the MindWM context resource "red" (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM kafka_cdc function test
Scenario: io context blue
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "blue" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And statefulset "blue-neo4j" in namespace "context-blue" is in ready state (PASSED)
When God creates a MindWM user resource with the name "garmr" and connects it to the context "blue" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "helheim" and connects it to the user "garmr" (PASSED)
Then the host resource should be ready and operable (PASSED)
When God starts reading message from NATS topic ">" (PASSED)
And God makes graph query in context "blue" (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-garmr.helheim-host-broker-kne-trigger._knative" (PASSED)
When God makes graph query in context "blue" (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.updated" should have been received from the NATS topic "user-garmr.helheim-host-broker-kne-trigger._knative" (PASSED)
When God makes graph query in context "blue" (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.deleted" should have been received from the NATS topic "user-garmr.helheim-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM kafka_cdc function test
Scenario: Cleanup garmr@helheim in blue
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "helheim" (PASSED)
Then the host "helheim" should be deleted (PASSED)
When God deletes the MindWM user resource "garmr" (PASSED)
When God deletes the MindWM context resource "blue" (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Create context varanasi and user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "varanasi" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-varanasi" namespace (PASSED)
And statefulset "varanasi-neo4j" in namespace "context-varanasi" is in ready state (PASSED)
When God creates a MindWM user resource with the name "shesha" and connects it to the context "varanasi" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Create workstation01 for user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "workstation01" and connects it to the user "shesha" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Create travellaptop for user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "travellaptop" and connects it to the user "shesha" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two hosts one user function test
Scenario: Send ping via nats host: workstation01, user: shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-varanasi" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-shesha.workstation01-host-broker-kne-trigger._knative" (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two hosts one user function test
Scenario: Send ping via nats host: travellaptop, user: shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.shesha.travellaptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.shesha.travellaptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-varanasi" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-shesha.travellaptop-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Send iodocument via nats host: workstation01, user: shesha and check that second host received graph the update
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.3623.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-varanasi" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-shesha.travellaptop-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Cleanup hosts workstation01 in user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "workstation01" (PASSED)
Then the host "workstation01" should be deleted (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Cleanup hosts travellaptop in user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "travellaptop" (PASSED)
Then the host "travellaptop" should be deleted (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Cleanup user shesha and context varanasi
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM user resource "shesha" (PASSED)
Then the user "shesha" should be deleted (PASSED)
When God deletes the MindWM context resource "varanasi" (PASSED)
Then the context "varanasi" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create context tokyo
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "tokyo" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-tokyo" namespace (PASSED)
And statefulset "tokyo-neo4j" in namespace "context-tokyo" is in ready state (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create godzilla and connects it to tokyo
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM user resource with the name "godzilla" and connects it to the context "tokyo" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create tengu and connects it to tokyo
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM user resource with the name "tengu" and connects it to the context "tokyo" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create laptop resource and connects it to godzilla user
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "laptop" and connects it to the user "godzilla" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create tablet resource and connects it to tengu user
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "tablet" and connects it to the user "tengu" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two users one context function test
Scenario: Send iodocument via nats host: , user: and check that second user received graph update
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.godzilla.laptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.godzilla.laptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-tokyo" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-tengu.tablet-host-broker-kne-trigger._knative" (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two users one context function test
Scenario: Send iodocument via nats host: , user: and check that second user received graph update
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.tengu.tablet.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.tengu.tablet.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-tokyo" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-godzilla.laptop-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup laptop host for godzilla username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "laptop" (PASSED)
Then the host "laptop" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup tablet host for tengu username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "tablet" (PASSED)
Then the host "tablet" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup godzilla username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM user resource "godzilla" (PASSED)
Then the user "godzilla" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup tengu username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM user resource "tengu" (PASSED)
Then the user "tengu" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup tokyo context
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM context resource "tokyo" (PASSED)
Then the context "tokyo" should be deleted (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Create Contexts and Verify All Related Resources Are in Ready State
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "aphrodite" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-aphrodite" should exist (PASSED)
And the following deployments are in a ready state in the "context-aphrodite" namespace (PASSED)
And statefulset "aphrodite-neo4j" in namespace "context-aphrodite" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-aphrodite" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-aphrodite" namespace (PASSED)
And the following knative brokers are in a ready state in the "context-aphrodite" namespace (PASSED)
And kafka topic "context-aphrodite-cdc" is in ready state in "redpanda" namespace (PASSED)
And kafka source "context-aphrodite-cdc-kafkasource" is in ready state in "context-aphrodite" namespace (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Create Contexts and Verify All Related Resources Are in Ready State
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "kypros" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-kypros" should exist (PASSED)
And the following deployments are in a ready state in the "context-kypros" namespace (PASSED)
And statefulset "kypros-neo4j" in namespace "context-kypros" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-kypros" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-kypros" namespace (PASSED)
And the following knative brokers are in a ready state in the "context-kypros" namespace (PASSED)
And kafka topic "context-kypros-cdc" is in ready state in "redpanda" namespace (PASSED)
And kafka source "context-kypros-cdc-kafkasource" is in ready state in "context-kypros" namespace (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Cleanup Contexts and Verify Resources Are Deleted
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM context resource "aphrodite" (PASSED)
Then the context "aphrodite" should be deleted (PASSED)
And namespace "context-aphrodite" should not exist (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Cleanup Contexts and Verify Resources Are Deleted
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM context resource "kypros" (PASSED)
Then the context "kypros" should be deleted (PASSED)
And namespace "context-kypros" should not exist (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-08T11:14:34Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'the-host-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"1d95392b-b3bd-4f9b-ac50-7c22253c92a9"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-08T11:14:34Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-08T11:14:37Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}},
'f:observedGeneration': {}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T11:14:37Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:conditions': {},
'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T11:14:37Z'}],
'name': 'the-host-host-broker-kne-trigger',
'namespace': 'user-flukeman',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'the-host-host-broker',
'uid': '1d95392b-b3bd-4f9b-ac50-7c22253c92a9'}],
'resourceVersion': '67434',
'uid': '9406f4f8-364c-46b4-8961-fa09939f768f'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.flukeman.the-host.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-flukeman.svc.cluster.local'}},
'generation': 1,
'name': 'the-host-host-broker-the-host-t66b448977ad60acb457cca56b909ee13',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-flukeman/the-host-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-flukeman/the-host-trigger-to-user-broker-trigger/7b7d428c-670b-4198-959f-5fab71cc4ccd',
'uid': '7446b1a8-c70f-41fd-bc5d-936a39ddb4a6'}]},
'status': {'address': {'url': 'http://the-host-host-broker-kne-trigger-kn-jsm-channel.user-flukeman.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-08T11:14:37Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-08T11:14:37Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-08T11:14:37Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-08T11:14:37Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-08T11:14:37Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-08T11:14:34Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-08T11:14:37Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': '7446b1a8-c70f-41fd-bc5d-936a39ddb4a6'}]}}

Feature: MindWM clipboard EDA test
Scenario: Prepare environment for ping tests
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "philadelphia" (PASSED)
Then the context should be ready and operable (PASSED)
And the following knative services are in a ready state in the "context-philadelphia" namespace (PASSED)
When God creates a MindWM user resource with the name "flukeman" and connects it to the context "philadelphia" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "the-host" and connects it to the user "flukeman" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "the-host-host-broker-kne-trigger" is ready in "user-flukeman" namespace (PASSED)
When God starts reading message from NATS topic ">" (PASSED)
PASSED
Connected to NATS server at nats://root:[email protected]:4222
Subscribed to topic '>'

Feature: MindWM clipboard EDA test
Scenario: Send clipboard to knative ping service
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "clipboard" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.clipboard" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.flukeman.the-host.clipboard" (PASSED)
And sets cloudevent header "traceparent" to "00-6ef92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" (PASSED)
And sends cloudevent to knative service "clipboard" in "context-philadelphia" namespace (PASSED)
Then the response http code should be "200" (FAILED)
Then the following deployments are in a ready state in the "context-philadelphia" namespace (FAILED)
FAILED

=================================== FAILURES ===================================
_ test_scenarios[file:features/9_mindwm_clipboard.feature-MindWM clipboard EDA test-Send clipboard to knative ping service[table_rows:[line: 50]]] _

http_response = {'answer': <Response [500]>}, code = '200'

@then("the response http code should be \"{code}\"")
def http_response_code_check(http_response, code):
    status_code = str(http_response['answer'].status_code)
  assert status_code == code, f"HTTP status code {status_code} != {code}"

E AssertionError: HTTP status code 500 != 200
E assert '500' == '200'
E
E - 200
E + 500

conftest.py:548: AssertionError
=========================== short test summary info ============================
FAILED features/9_mindwm_clipboard.feature::test_scenarios[file:features/9_mindwm_clipboard.feature-MindWM clipboard EDA test-Send clipboard to knative ping service[table_rows:[line: 50]]] - AssertionError: HTTP status code 500 != 200
assert '500' == '200'

  • 200
  • 500
    !!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
    ============ 1 failed, 51 passed, 76 warnings in 2181.48s (0:36:21) ============

Copy link

github-actions bot commented Oct 8, 2024

allure report

gherkin outptut ============================= test session starts ============================== collecting ... collected 56 items

Feature: Mindwm Lifecycle Management
Scenario: Deploy Mindwm Cluster and Applications
Given an Ubuntu 24.04 system with 6 CPUs and 16 GB of RAM (PASSED)
And the mindwm-gitops repository is cloned into the "~/mindwm-gitops" directory (PASSED)
When God executes "make cluster" (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God executes "make argocd" (PASSED)
Then helm release "argocd" is deployed in "argocd" namespace (PASSED)
When God executes "make argocd_app" (PASSED)
Then the argocd "mindwm-gitops" application appears in "argocd" namespace (PASSED)
When God executes "make argocd_app_sync_async" (PASSED)
Then the argocd "mindwm-gitops" application is argocd namespace in a progressing status (PASSED)
When God executes "make argocd_app_async_wait" (PASSED)
Then all argocd applications are in a healthy state (PASSED)
When God executes "make crossplane_rolebinding_workaround" (PASSED)
Then the following roles should exist: (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Knative
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "knative-serving" should exist (PASSED)
And namespace "knative-eventing" should exist (PASSED)
And namespace "knative-operator" should exist (PASSED)
And the following deployments are in a ready state in the "knative-serving" namespace (PASSED)
And the following deployments are in a ready state in the "knative-eventing" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Istio
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "istio-system" should exist (PASSED)
And the following deployments are in a ready state in the "istio-system" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Redpanda
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "redpanda" should exist (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
And helm release "neo4j-cdc" is deployed in "redpanda" namespace (PASSED)
And statefulset "neo4j-cdc" in namespace "redpanda" is in ready state (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Cert manager
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "cert-manager" should exist (PASSED)
And the following deployments are in a ready state in the "cert-manager" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Nats
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "nats" should exist (PASSED)
And the following deployments are in a ready state in the "nats" namespace (PASSED)
And statefulset "nats" in namespace "nats" is in ready state (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Monitoring
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "monitoring" should exist (PASSED)
And the following deployments are in a ready state in the "monitoring" namespace (PASSED)
And statefulset "loki" in namespace "monitoring" is in ready state (PASSED)
And statefulset "tempo" in namespace "monitoring" is in ready state (PASSED)
And statefulset "vmalertmanager-vm-aio-victoria-metrics-k8s-stack" in namespace "monitoring" is in ready state (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Context
Given a MindWM environment (PASSED)
When God creates a MindWM context with the name "xxx3" (PASSED)
Then the context should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create User
Given a MindWM environment (PASSED)
When God creates a MindWM user resource with the name "alice" and connects it to the context "xxx3" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Host
Given a MindWM environment (PASSED)
When God creates a MindWM host resource with the name "laptop" and connects it to the user "alice" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
When God deletes the MindWM host resource "laptop" (PASSED)
Then the host "laptop" should be deleted (PASSED)
When God deletes the MindWM user resource "alice" (PASSED)
Then the user "alice" should be deleted (PASSED)
When God deletes the MindWM context resource "xxx3" (PASSED)
Then the context "xxx3" should be deleted (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create Context and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "cyan" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-cyan" should exist (PASSED)
And helm release "cyan-neo4j" is deployed in "context-cyan" namespace (PASSED)
And statefulset "cyan-neo4j" in namespace "context-cyan" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative brokers are in a ready state in the "context-cyan" namespace (PASSED)
And kafka topic "context-cyan-cdc" is in ready state in "redpanda" namespace (PASSED)
And kafka source "context-cyan-cdc-kafkasource" is in ready state in "context-cyan" namespace (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create User and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM user resource with the name "bob" and connects it to the context "cyan" (PASSED)
Then the user resource should be ready and operable (PASSED)
And namespace "user-bob" should exist (PASSED)
And the following knative brokers are in a ready state in the "user-bob" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "user-bob" namespace (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-08T11:17:36Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'workstation-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"cc3e399a-d936-4117-b8b4-80a70ec0cd54"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-08T11:17:36Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-08T11:17:39Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T11:17:40Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:conditions': {},
'f:observedGeneration': {},
'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T11:17:40Z'}],
'name': 'workstation-host-broker-kne-trigger',
'namespace': 'user-bob',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'workstation-host-broker',
'uid': 'cc3e399a-d936-4117-b8b4-80a70ec0cd54'}],
'resourceVersion': '24774',
'uid': '4076fdaf-5d01-435e-9d0c-0f5700f9185f'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.bob.workstation.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-bob.svc.cluster.local'}},
'generation': 1,
'name': 'workstation-host-broker-worksta776542ff0a77bb790829b74cead11653',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-bob/workstation-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-bob/workstation-trigger-to-user-broker-trigger/2db1e306-bb91-4eb0-b3c9-6150296bdeaa',
'uid': '56c2b955-462e-4b32-ae2d-aa2a90d1a6cb'}]},
'status': {'address': {'url': 'http://workstation-host-broker-kne-trigger-kn-jsm-channel.user-bob.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-08T11:17:38Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-08T11:17:38Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-08T11:17:38Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-08T11:17:38Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-08T11:17:38Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-08T11:17:36Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-08T11:17:38Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': '56c2b955-462e-4b32-ae2d-aa2a90d1a6cb'}]}}

Feature: MindWM Custom kubernetes resources
Scenario: Create Host and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "workstation" and connects it to the user "bob" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "workstation-host-broker-kne-trigger" is ready in "user-bob" namespace (PASSED)
And the following knative triggers are in a ready state in the "user-bob" namespace (PASSED)
And the following knative brokers are in a ready state in the "user-bob" namespace (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "workstation" (PASSED)
Then the host "workstation" should be deleted (PASSED)
When God deletes the MindWM user resource "bob" (PASSED)
Then the user "bob" should be deleted (PASSED)
And namespace "user-bob" should not exist (PASSED)
When God deletes the MindWM context resource "cyan" (PASSED)
Then the context "cyan" should be deleted (PASSED)
And namespace "context-cyan" should not exist (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-08T11:21:00Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'pi6-host-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"cd470d61-b282-4643-8e0c-9f7eb5ee132e"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-08T11:21:00Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-08T11:21:03Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}},
'f:observedGeneration': {}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T11:21:03Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:conditions': {},
'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T11:21:03Z'}],
'name': 'pi6-host-host-broker-kne-trigger',
'namespace': 'user-amanda4',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'pi6-host-host-broker',
'uid': 'cd470d61-b282-4643-8e0c-9f7eb5ee132e'}],
'resourceVersion': '31366',
'uid': '8ef3b0a2-634f-465f-904a-b548deed8fb6'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.amanda4.pi6-host.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-amanda4.svc.cluster.local'}},
'generation': 1,
'name': 'pi6-host-host-broker-pi6-host-tc3d0c6adc386fbb532e7d5a9d5bd9781',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-amanda4/pi6-host-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-amanda4/pi6-host-trigger-to-user-broker-trigger/8e17d50d-72f0-423c-9c5d-c05bf6b83301',
'uid': '7d44a57b-bbd9-4b85-9268-b0e1e7bd049a'}]},
'status': {'address': {'url': 'http://pi6-host-host-broker-kne-trigger-kn-jsm-channel.user-amanda4.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-08T11:21:02Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-08T11:21:02Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-08T11:21:02Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-08T11:21:02Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-08T11:21:03Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-08T11:21:00Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-08T11:21:03Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': '7d44a57b-bbd9-4b85-9268-b0e1e7bd049a'}]}}

Feature: MindWM Ping-pong EDA test
Scenario: Prepare environment for ping tests
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "green4" (PASSED)
Then the context should be ready and operable (PASSED)
And the following knative services are in a ready state in the "context-green4" namespace (PASSED)
When God creates a MindWM user resource with the name "amanda4" and connects it to the context "green4" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "pi6-host" and connects it to the user "amanda4" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "pi6-host-host-broker-kne-trigger" is ready in "user-amanda4" namespace (PASSED)
When God starts reading message from NATS topic ">" (PASSED)
PASSED
Connected to NATS server at nats://root:[email protected]:4222
Subscribed to topic '>'

Feature: MindWM Ping-pong EDA test
Scenario: Send pind to knative ping service
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to knative service "pong" in "context-green4" namespace (PASSED)
Then the response http code should be "200" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Send ping via broker-ingress.knative-eventing/context-green4/context-broker
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "traceparent" to "00-5df92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/context-green4/context-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
Then the trace with "00-5df92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" should appear in TraceQL (PASSED)
And the trace should contains (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-amanda4.pi6-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Send ping via broker-ingress.knative-eventing/user-amanda4/user-broker
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "traceparent" to "00-6df93f3577b34da6a3ce929d0e0e4742-00f067aa0ba902b7-00" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/user-amanda4/user-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
Then the trace with "00-6df93f3577b34da6a3ce929d0e0e4742-00f067aa0ba902b7-00" should appear in TraceQL (PASSED)
And the trace should contains (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-amanda4.pi6-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Send ping via nats
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.3623.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-amanda4.pi6-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Cleanup amanda4@pi6-host in green4
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "pi6-host" (PASSED)
Then the host "pi6-host" should be deleted (PASSED)
When God deletes the MindWM user resource "amanda4" (PASSED)
When God deletes the MindWM context resource "green4" (PASSED)
PASSED

<Record n=<Node element_id='1' labels=frozenset({'Host'}) properties={'hostname': 'tablet', 'atime': 0, 'traceparent': '00-7df92f3577b34da6a3ce930d0e0e4734-b20bd33869fbf00b-01', 'type': 'org.mindwm.v1.graph.node.host'}>>
<Record n=<Node element_id='5' labels=frozenset({'IoDocument'}) properties={'output': 'uid=1000(pion) gid=1000(pion) groups=1000(pion),4(adm),100(users),112(tmux),988(docker)', 'input': 'id', 'atime': 0, 'traceparent': '00-7df92f3577b34da6a3ce930d0e0e4734-b20bd33869fbf00b-01', 'type': 'org.mindwm.v1.graph.node.iodocument', 'uuid': 'c6cd7f5f0c52442888c20868c5eb074f', 'ps1': 'pion@mindwm-stg1:~/work/dev/mindwm-manager$'}>>

Feature: MindWM io context function test
Scenario: io context red
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "red" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-red" namespace (PASSED)
And statefulset "red-neo4j" in namespace "context-red" is in ready state (PASSED)
When God creates a MindWM user resource with the name "kitty" and connects it to the context "red" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "tablet" and connects it to the user "kitty" (PASSED)
Then the host resource should be ready and operable (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-id" to "442af213-c860-4535-b639-355f13b2d883" (PASSED)
And sets cloudevent header "traceparent" to "00-7df92f3577b34da6a3ce930d0e0e4734-00f064aa0ba902b8-00" (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.kitty.tablet.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/context-red/context-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-red" namespace (PASSED)
Then the trace with "00-7df92f3577b34da6a3ce930d0e0e4734-00f064aa0ba902b8-00" should appear in TraceQL (PASSED)
And the trace should contains (PASSED)
Then graph have node "User" with property "username" = "kitty" in context "red" (PASSED)
And graph have node "Host" with property "hostname" = "tablet" in context "red" (PASSED)
And graph have node "IoDocument" with property "input" = "id" in context "red" (PASSED)
PASSED

Feature: MindWM io context function test
Scenario: Cleanup kitty@tablet in red
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "tablet" (PASSED)
Then the host "tablet" should be deleted (PASSED)
When God deletes the MindWM user resource "kitty" (PASSED)
When God deletes the MindWM context resource "red" (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM kafka_cdc function test
Scenario: io context blue
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "blue" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And statefulset "blue-neo4j" in namespace "context-blue" is in ready state (PASSED)
When God creates a MindWM user resource with the name "garmr" and connects it to the context "blue" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "helheim" and connects it to the user "garmr" (PASSED)
Then the host resource should be ready and operable (PASSED)
When God starts reading message from NATS topic ">" (PASSED)
And God makes graph query in context "blue" (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-garmr.helheim-host-broker-kne-trigger._knative" (PASSED)
When God makes graph query in context "blue" (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.updated" should have been received from the NATS topic "user-garmr.helheim-host-broker-kne-trigger._knative" (PASSED)
When God makes graph query in context "blue" (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.deleted" should have been received from the NATS topic "user-garmr.helheim-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM kafka_cdc function test
Scenario: Cleanup garmr@helheim in blue
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "helheim" (PASSED)
Then the host "helheim" should be deleted (PASSED)
When God deletes the MindWM user resource "garmr" (PASSED)
When God deletes the MindWM context resource "blue" (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Create context varanasi and user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "varanasi" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-varanasi" namespace (PASSED)
And statefulset "varanasi-neo4j" in namespace "context-varanasi" is in ready state (PASSED)
When God creates a MindWM user resource with the name "shesha" and connects it to the context "varanasi" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Create workstation01 for user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "workstation01" and connects it to the user "shesha" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Create travellaptop for user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "travellaptop" and connects it to the user "shesha" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two hosts one user function test
Scenario: Send ping via nats host: workstation01, user: shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-varanasi" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-shesha.workstation01-host-broker-kne-trigger._knative" (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two hosts one user function test
Scenario: Send ping via nats host: travellaptop, user: shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.shesha.travellaptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.shesha.travellaptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-varanasi" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-shesha.travellaptop-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Send iodocument via nats host: workstation01, user: shesha and check that second host received graph the update
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.3623.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-varanasi" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-shesha.travellaptop-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Cleanup hosts workstation01 in user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "workstation01" (PASSED)
Then the host "workstation01" should be deleted (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Cleanup hosts travellaptop in user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "travellaptop" (PASSED)
Then the host "travellaptop" should be deleted (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Cleanup user shesha and context varanasi
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM user resource "shesha" (PASSED)
Then the user "shesha" should be deleted (PASSED)
When God deletes the MindWM context resource "varanasi" (PASSED)
Then the context "varanasi" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create context tokyo
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "tokyo" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-tokyo" namespace (PASSED)
And statefulset "tokyo-neo4j" in namespace "context-tokyo" is in ready state (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create godzilla and connects it to tokyo
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM user resource with the name "godzilla" and connects it to the context "tokyo" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create tengu and connects it to tokyo
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM user resource with the name "tengu" and connects it to the context "tokyo" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create laptop resource and connects it to godzilla user
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "laptop" and connects it to the user "godzilla" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create tablet resource and connects it to tengu user
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "tablet" and connects it to the user "tengu" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two users one context function test
Scenario: Send iodocument via nats host: , user: and check that second user received graph update
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.godzilla.laptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.godzilla.laptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-tokyo" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-tengu.tablet-host-broker-kne-trigger._knative" (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two users one context function test
Scenario: Send iodocument via nats host: , user: and check that second user received graph update
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.tengu.tablet.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.tengu.tablet.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-tokyo" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-godzilla.laptop-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup laptop host for godzilla username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "laptop" (PASSED)
Then the host "laptop" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup tablet host for tengu username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "tablet" (PASSED)
Then the host "tablet" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup godzilla username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM user resource "godzilla" (PASSED)
Then the user "godzilla" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup tengu username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM user resource "tengu" (PASSED)
Then the user "tengu" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup tokyo context
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM context resource "tokyo" (PASSED)
Then the context "tokyo" should be deleted (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Create Contexts and Verify All Related Resources Are in Ready State
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "aphrodite" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-aphrodite" should exist (PASSED)
And the following deployments are in a ready state in the "context-aphrodite" namespace (PASSED)
And statefulset "aphrodite-neo4j" in namespace "context-aphrodite" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-aphrodite" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-aphrodite" namespace (PASSED)
And the following knative brokers are in a ready state in the "context-aphrodite" namespace (PASSED)
And kafka topic "context-aphrodite-cdc" is in ready state in "redpanda" namespace (PASSED)
And kafka source "context-aphrodite-cdc-kafkasource" is in ready state in "context-aphrodite" namespace (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Create Contexts and Verify All Related Resources Are in Ready State
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "kypros" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-kypros" should exist (PASSED)
And the following deployments are in a ready state in the "context-kypros" namespace (PASSED)
And statefulset "kypros-neo4j" in namespace "context-kypros" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-kypros" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-kypros" namespace (PASSED)
And the following knative brokers are in a ready state in the "context-kypros" namespace (PASSED)
And kafka topic "context-kypros-cdc" is in ready state in "redpanda" namespace (PASSED)
And kafka source "context-kypros-cdc-kafkasource" is in ready state in "context-kypros" namespace (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Cleanup Contexts and Verify Resources Are Deleted
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM context resource "aphrodite" (PASSED)
Then the context "aphrodite" should be deleted (PASSED)
And namespace "context-aphrodite" should not exist (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Cleanup Contexts and Verify Resources Are Deleted
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM context resource "kypros" (PASSED)
Then the context "kypros" should be deleted (PASSED)
And namespace "context-kypros" should not exist (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-08T11:37:19Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'the-host-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"e5ebe1ee-b10c-44b5-9e04-af22b37965f1"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-08T11:37:19Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-08T11:37:21Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}},
'f:observedGeneration': {}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T11:37:21Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:conditions': {},
'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T11:37:22Z'}],
'name': 'the-host-host-broker-kne-trigger',
'namespace': 'user-flukeman',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'the-host-host-broker',
'uid': 'e5ebe1ee-b10c-44b5-9e04-af22b37965f1'}],
'resourceVersion': '70039',
'uid': '6c4a1567-f87e-4704-99e7-4bbd9af0ef65'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.flukeman.the-host.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-flukeman.svc.cluster.local'}},
'generation': 1,
'name': 'the-host-host-broker-the-host-t8ac5e26965bbd8a0639b3be39bfa2598',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-flukeman/the-host-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-flukeman/the-host-trigger-to-user-broker-trigger/42222335-3c14-4776-b959-a7f5981c751d',
'uid': '84e76ba6-ce83-46e0-a750-6dd77dba9fcb'}]},
'status': {'address': {'url': 'http://the-host-host-broker-kne-trigger-kn-jsm-channel.user-flukeman.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-08T11:37:21Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-08T11:37:21Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-08T11:37:21Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-08T11:37:21Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-08T11:37:21Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-08T11:37:19Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-08T11:37:21Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': '84e76ba6-ce83-46e0-a750-6dd77dba9fcb'}]}}

Feature: MindWM clipboard EDA test
Scenario: Prepare environment for ping tests
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "philadelphia" (PASSED)
Then the context should be ready and operable (PASSED)
And the following knative services are in a ready state in the "context-philadelphia" namespace (PASSED)
When God creates a MindWM user resource with the name "flukeman" and connects it to the context "philadelphia" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "the-host" and connects it to the user "flukeman" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "the-host-host-broker-kne-trigger" is ready in "user-flukeman" namespace (PASSED)
When God starts reading message from NATS topic ">" (PASSED)
PASSED
Connected to NATS server at nats://root:[email protected]:4222
Subscribed to topic '>'

Feature: MindWM clipboard EDA test
Scenario: Send clipboard to knative ping service
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "clipboard" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.clipboard" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.flukeman.the-host.clipboard" (PASSED)
And sets cloudevent header "traceparent" to "00-6ef92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" (PASSED)
And sends cloudevent to knative service "clipboard" in "context-philadelphia" namespace (PASSED)
Then the response http code should be "200" (FAILED)
Then the following deployments are in a ready state in the "context-philadelphia" namespace (FAILED)
FAILED

=================================== FAILURES ===================================
_ test_scenarios[file:features/9_mindwm_clipboard.feature-MindWM clipboard EDA test-Send clipboard to knative ping service[table_rows:[line: 50]]] _

http_response = {'answer': <Response [500]>}, code = '200'

@then("the response http code should be \"{code}\"")
def http_response_code_check(http_response, code):
    status_code = str(http_response['answer'].status_code)
  assert status_code == code, f"HTTP status code {status_code} != {code}"

E AssertionError: HTTP status code 500 != 200
E assert '500' == '200'
E
E - 200
E + 500

conftest.py:548: AssertionError
=========================== short test summary info ============================
FAILED features/9_mindwm_clipboard.feature::test_scenarios[file:features/9_mindwm_clipboard.feature-MindWM clipboard EDA test-Send clipboard to knative ping service[table_rows:[line: 50]]] - AssertionError: HTTP status code 500 != 200
assert '500' == '200'

  • 200
  • 500
    !!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
    ============ 1 failed, 51 passed, 77 warnings in 2233.30s (0:37:13) ============

Copy link

github-actions bot commented Oct 8, 2024

allure report

gherkin outptut ============================= test session starts ============================== collecting ... collected 56 items

Feature: Mindwm Lifecycle Management
Scenario: Deploy Mindwm Cluster and Applications
Given an Ubuntu 24.04 system with 6 CPUs and 16 GB of RAM (PASSED)
And the mindwm-gitops repository is cloned into the "~/mindwm-gitops" directory (PASSED)
When God executes "make cluster" (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God executes "make argocd" (PASSED)
Then helm release "argocd" is deployed in "argocd" namespace (PASSED)
When God executes "make argocd_app" (PASSED)
Then the argocd "mindwm-gitops" application appears in "argocd" namespace (PASSED)
When God executes "make argocd_app_sync_async" (PASSED)
Then the argocd "mindwm-gitops" application is argocd namespace in a progressing status (PASSED)
When God executes "make argocd_app_async_wait" (PASSED)
Then all argocd applications are in a healthy state (PASSED)
When God executes "make crossplane_rolebinding_workaround" (PASSED)
Then the following roles should exist: (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Knative
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "knative-serving" should exist (PASSED)
And namespace "knative-eventing" should exist (PASSED)
And namespace "knative-operator" should exist (PASSED)
And the following deployments are in a ready state in the "knative-serving" namespace (PASSED)
And the following deployments are in a ready state in the "knative-eventing" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Istio
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "istio-system" should exist (PASSED)
And the following deployments are in a ready state in the "istio-system" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Redpanda
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "redpanda" should exist (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
And helm release "neo4j-cdc" is deployed in "redpanda" namespace (PASSED)
And statefulset "neo4j-cdc" in namespace "redpanda" is in ready state (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Cert manager
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "cert-manager" should exist (PASSED)
And the following deployments are in a ready state in the "cert-manager" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Nats
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "nats" should exist (PASSED)
And the following deployments are in a ready state in the "nats" namespace (PASSED)
And statefulset "nats" in namespace "nats" is in ready state (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Monitoring
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "monitoring" should exist (PASSED)
And the following deployments are in a ready state in the "monitoring" namespace (PASSED)
And statefulset "loki" in namespace "monitoring" is in ready state (PASSED)
And statefulset "tempo" in namespace "monitoring" is in ready state (PASSED)
And statefulset "vmalertmanager-vm-aio-victoria-metrics-k8s-stack" in namespace "monitoring" is in ready state (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Context
Given a MindWM environment (PASSED)
When God creates a MindWM context with the name "xxx3" (PASSED)
Then the context should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create User
Given a MindWM environment (PASSED)
When God creates a MindWM user resource with the name "alice" and connects it to the context "xxx3" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Host
Given a MindWM environment (PASSED)
When God creates a MindWM host resource with the name "laptop" and connects it to the user "alice" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
When God deletes the MindWM host resource "laptop" (PASSED)
Then the host "laptop" should be deleted (PASSED)
When God deletes the MindWM user resource "alice" (PASSED)
Then the user "alice" should be deleted (PASSED)
When God deletes the MindWM context resource "xxx3" (PASSED)
Then the context "xxx3" should be deleted (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create Context and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "cyan" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-cyan" should exist (PASSED)
And helm release "cyan-neo4j" is deployed in "context-cyan" namespace (PASSED)
And statefulset "cyan-neo4j" in namespace "context-cyan" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative brokers are in a ready state in the "context-cyan" namespace (PASSED)
And kafka topic "context-cyan-cdc" is in ready state in "redpanda" namespace (PASSED)
And kafka source "context-cyan-cdc-kafkasource" is in ready state in "context-cyan" namespace (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create User and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM user resource with the name "bob" and connects it to the context "cyan" (PASSED)
Then the user resource should be ready and operable (PASSED)
And namespace "user-bob" should exist (PASSED)
And the following knative brokers are in a ready state in the "user-bob" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "user-bob" namespace (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-08T15:36:44Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'workstation-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"24f22e97-42cb-452d-91c6-2a201d2d7bc9"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-08T15:36:44Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-08T15:36:47Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}},
'f:observedGeneration': {}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T15:36:47Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:conditions': {},
'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T15:36:47Z'}],
'name': 'workstation-host-broker-kne-trigger',
'namespace': 'user-bob',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'workstation-host-broker',
'uid': '24f22e97-42cb-452d-91c6-2a201d2d7bc9'}],
'resourceVersion': '20449',
'uid': 'a0730e04-2bf3-4f08-860c-790c8e98a393'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.bob.workstation.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-bob.svc.cluster.local'}},
'generation': 1,
'name': 'workstation-host-broker-worksta2c2024df2b66ca61c59081a3df6ab511',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-bob/workstation-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-bob/workstation-trigger-to-user-broker-trigger/ce7b0c6c-74a1-4b32-a598-d881b8598faa',
'uid': '37eb7d04-0468-45e1-9e87-d0549f697e11'}]},
'status': {'address': {'url': 'http://workstation-host-broker-kne-trigger-kn-jsm-channel.user-bob.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-08T15:36:47Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-08T15:36:47Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-08T15:36:47Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-08T15:36:47Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-08T15:36:47Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-08T15:36:44Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-08T15:36:47Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': '37eb7d04-0468-45e1-9e87-d0549f697e11'}]}}

Feature: MindWM Custom kubernetes resources
Scenario: Create Host and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "workstation" and connects it to the user "bob" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "workstation-host-broker-kne-trigger" is ready in "user-bob" namespace (PASSED)
And the following knative triggers are in a ready state in the "user-bob" namespace (PASSED)
And the following knative brokers are in a ready state in the "user-bob" namespace (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "workstation" (PASSED)
Then the host "workstation" should be deleted (PASSED)
When God deletes the MindWM user resource "bob" (PASSED)
Then the user "bob" should be deleted (PASSED)
And namespace "user-bob" should not exist (PASSED)
When God deletes the MindWM context resource "cyan" (PASSED)
Then the context "cyan" should be deleted (PASSED)
And namespace "context-cyan" should not exist (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-08T15:40:06Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'pi6-host-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"509d0452-6ef7-43ea-a827-bd04484073a7"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-08T15:40:06Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-08T15:40:12Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}},
'f:conditions': {},
'f:observedGeneration': {}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T15:40:12Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T15:40:12Z'}],
'name': 'pi6-host-host-broker-kne-trigger',
'namespace': 'user-amanda4',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'pi6-host-host-broker',
'uid': '509d0452-6ef7-43ea-a827-bd04484073a7'}],
'resourceVersion': '27016',
'uid': '355e1bb5-c2b0-41f2-9656-fa185a6a7a36'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.amanda4.pi6-host.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-amanda4.svc.cluster.local'}},
'generation': 1,
'name': 'pi6-host-host-broker-pi6-host-t6cb07d95d49ce82a3f8c711c7d72d352',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-amanda4/pi6-host-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-amanda4/pi6-host-trigger-to-user-broker-trigger/42153ab6-3da0-423e-8e62-5023a8000011',
'uid': '70ba0073-719b-46c3-b254-55e068c35d61'}]},
'status': {'address': {'url': 'http://pi6-host-host-broker-kne-trigger-kn-jsm-channel.user-amanda4.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-08T15:40:11Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-08T15:40:11Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-08T15:40:11Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-08T15:40:11Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-08T15:40:11Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-08T15:40:07Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-08T15:40:11Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': '70ba0073-719b-46c3-b254-55e068c35d61'}]}}

Feature: MindWM Ping-pong EDA test
Scenario: Prepare environment for ping tests
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "green4" (PASSED)
Then the context should be ready and operable (PASSED)
And the following knative services are in a ready state in the "context-green4" namespace (PASSED)
When God creates a MindWM user resource with the name "amanda4" and connects it to the context "green4" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "pi6-host" and connects it to the user "amanda4" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "pi6-host-host-broker-kne-trigger" is ready in "user-amanda4" namespace (PASSED)
When God starts reading message from NATS topic ">" (PASSED)
PASSED
Connected to NATS server at nats://root:[email protected]:4222
Subscribed to topic '>'

Feature: MindWM Ping-pong EDA test
Scenario: Send pind to knative ping service
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to knative service "pong" in "context-green4" namespace (PASSED)
Then the response http code should be "200" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Send ping via broker-ingress.knative-eventing/context-green4/context-broker
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "traceparent" to "00-5df92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/context-green4/context-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
Then the trace with "00-5df92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" should appear in TraceQL (PASSED)
And the trace should contains (FAILED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-amanda4.pi6-host-host-broker-kne-trigger._knative" (FAILED)
FAILED

=================================== FAILURES ===================================
_ test_scenarios[file:features/3_mindwm_ping_pong.feature-MindWM Ping-pong EDA test-Send ping via broker-ingress.knative-eventing/context-green4/context-broker[table_rows:[line: 82]]] _

step = PickleStep(argument=PickleStepArgument(doc_string=None, data_table=PickleTable(rows=[PickleTableRow(cells=[PickleTable...atcher')])])), ast_node_ids=['352', '355'], id='415', type=<Type.outcome: 'Outcome'>, text='the trace should contains')
trace_data = {'data': resource_spans {
resource {
attributes {
key: "service.name"
value {
string_value: ..._time_unix_nano: 1728402016378172363
end_time_unix_nano: 1728402016378764895
status {
}
}
}
}
}

@then("the trace should contains")
def trace_should_contains(step, trace_data):
    #pprint.pprint(f"TRACE DATA = {trace_data['data']}")
    title_row, *rows = step.data_table.rows
    for row in rows:
        service_name = row.cells[0].value
        #http_code = row.cells[1].value
        #http_path = row.cells[2].value
        #pprint.pprint(f"{service_name} {http_code} {http_path}")
        scope_span = utils.span_by_service_name(trace_data['data'], service_name)
      assert(scope_span is not None), f"Scope span {service_name} not found in trace data"

E AssertionError: Scope span jetstream-ch-dispatcher not found in trace data
E assert None is not None

conftest.py:435: AssertionError
=========================== short test summary info ============================
FAILED features/3_mindwm_ping_pong.feature::test_scenarios[file:features/3_mindwm_ping_pong.feature-MindWM Ping-pong EDA test-Send ping via broker-ingress.knative-eventing/context-green4/context-broker[table_rows:[line: 82]]] - AssertionError: Scope span jetstream-ch-dispatcher not found in trace data
assert None is not None
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
============ 1 failed, 17 passed, 33 warnings in 1179.27s (0:19:39) ============

Copy link

github-actions bot commented Oct 8, 2024

allure report

gherkin outptut ============================= test session starts ============================== collecting ... collected 56 items

Feature: Mindwm Lifecycle Management
Scenario: Deploy Mindwm Cluster and Applications
Given an Ubuntu 24.04 system with 6 CPUs and 16 GB of RAM (PASSED)
And the mindwm-gitops repository is cloned into the "~/mindwm-gitops" directory (PASSED)
When God executes "make cluster" (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God executes "make argocd" (PASSED)
Then helm release "argocd" is deployed in "argocd" namespace (PASSED)
When God executes "make argocd_app" (PASSED)
Then the argocd "mindwm-gitops" application appears in "argocd" namespace (PASSED)
When God executes "make argocd_app_sync_async" (PASSED)
Then the argocd "mindwm-gitops" application is argocd namespace in a progressing status (PASSED)
When God executes "make argocd_app_async_wait" (PASSED)
Then all argocd applications are in a healthy state (PASSED)
When God executes "make crossplane_rolebinding_workaround" (PASSED)
Then the following roles should exist: (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Knative
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "knative-serving" should exist (PASSED)
And namespace "knative-eventing" should exist (PASSED)
And namespace "knative-operator" should exist (PASSED)
And the following deployments are in a ready state in the "knative-serving" namespace (PASSED)
And the following deployments are in a ready state in the "knative-eventing" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Istio
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "istio-system" should exist (PASSED)
And the following deployments are in a ready state in the "istio-system" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Redpanda
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "redpanda" should exist (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
And helm release "neo4j-cdc" is deployed in "redpanda" namespace (PASSED)
And statefulset "neo4j-cdc" in namespace "redpanda" is in ready state (PASSED)
And the following deployments are in a ready state in the "redpanda" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Cert manager
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "cert-manager" should exist (PASSED)
And the following deployments are in a ready state in the "cert-manager" namespace (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Nats
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "nats" should exist (PASSED)
And the following deployments are in a ready state in the "nats" namespace (PASSED)
And statefulset "nats" in namespace "nats" is in ready state (PASSED)
PASSED

Feature: Mindwm event driven architecture
Scenario: Monitoring
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
And namespace "monitoring" should exist (PASSED)
And the following deployments are in a ready state in the "monitoring" namespace (PASSED)
And statefulset "loki" in namespace "monitoring" is in ready state (PASSED)
And statefulset "tempo" in namespace "monitoring" is in ready state (PASSED)
And statefulset "vmalertmanager-vm-aio-victoria-metrics-k8s-stack" in namespace "monitoring" is in ready state (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Context
Given a MindWM environment (PASSED)
When God creates a MindWM context with the name "xxx3" (PASSED)
Then the context should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create User
Given a MindWM environment (PASSED)
When God creates a MindWM user resource with the name "alice" and connects it to the context "xxx3" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Create Host
Given a MindWM environment (PASSED)
When God creates a MindWM host resource with the name "laptop" and connects it to the user "alice" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM Custom Resource Definition
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
When God deletes the MindWM host resource "laptop" (PASSED)
Then the host "laptop" should be deleted (PASSED)
When God deletes the MindWM user resource "alice" (PASSED)
Then the user "alice" should be deleted (PASSED)
When God deletes the MindWM context resource "xxx3" (PASSED)
Then the context "xxx3" should be deleted (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create Context and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "cyan" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-cyan" should exist (PASSED)
And helm release "cyan-neo4j" is deployed in "context-cyan" namespace (PASSED)
And statefulset "cyan-neo4j" in namespace "context-cyan" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative brokers are in a ready state in the "context-cyan" namespace (PASSED)
And kafka topic "context-cyan-cdc" is in ready state in "redpanda" namespace (PASSED)
And kafka source "context-cyan-cdc-kafkasource" is in ready state in "context-cyan" namespace (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Create User and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM user resource with the name "bob" and connects it to the context "cyan" (PASSED)
Then the user resource should be ready and operable (PASSED)
And namespace "user-bob" should exist (PASSED)
And the following knative brokers are in a ready state in the "user-bob" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-cyan" namespace (PASSED)
And the following knative triggers are in a ready state in the "user-bob" namespace (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-08T16:06:31Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'workstation-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"8d05cbcf-c839-4983-bf13-ee81ea269395"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-08T16:06:31Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-08T16:06:33Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}},
'f:observedGeneration': {}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T16:06:33Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:conditions': {},
'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T16:06:33Z'}],
'name': 'workstation-host-broker-kne-trigger',
'namespace': 'user-bob',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'workstation-host-broker',
'uid': '8d05cbcf-c839-4983-bf13-ee81ea269395'}],
'resourceVersion': '22067',
'uid': '18794986-719d-4cfc-abf5-3049edcc3e6a'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.bob.workstation.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-bob.svc.cluster.local'}},
'generation': 1,
'name': 'workstation-host-broker-worksta37f8389e05c5418cf72760e1dfd3984e',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-bob/workstation-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-bob/workstation-trigger-to-user-broker-trigger/f839da68-3c44-42cb-a4a7-32b499f53f63',
'uid': 'cda89283-681d-463c-9b44-36687ad1557d'}]},
'status': {'address': {'url': 'http://workstation-host-broker-kne-trigger-kn-jsm-channel.user-bob.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-08T16:06:33Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-08T16:06:33Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-08T16:06:33Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-08T16:06:33Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-08T16:06:33Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-08T16:06:31Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-08T16:06:33Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': 'cda89283-681d-463c-9b44-36687ad1557d'}]}}

Feature: MindWM Custom kubernetes resources
Scenario: Create Host and check k8s resources
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "workstation" and connects it to the user "bob" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "workstation-host-broker-kne-trigger" is ready in "user-bob" namespace (PASSED)
And the following knative triggers are in a ready state in the "user-bob" namespace (PASSED)
And the following knative brokers are in a ready state in the "user-bob" namespace (PASSED)
PASSED

Feature: MindWM Custom kubernetes resources
Scenario: Delete Resources and Verify Cleanup
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "workstation" (PASSED)
Then the host "workstation" should be deleted (PASSED)
When God deletes the MindWM user resource "bob" (PASSED)
Then the user "bob" should be deleted (PASSED)
And namespace "user-bob" should not exist (PASSED)
When God deletes the MindWM context resource "cyan" (PASSED)
Then the context "cyan" should be deleted (PASSED)
And namespace "context-cyan" should not exist (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-08T16:09:57Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'pi6-host-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"05cfd156-457b-4f23-b575-64aa48a6a6f0"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-08T16:09:56Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-08T16:09:59Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}},
'f:conditions': {},
'f:observedGeneration': {}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T16:10:00Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T16:10:00Z'}],
'name': 'pi6-host-host-broker-kne-trigger',
'namespace': 'user-amanda4',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'pi6-host-host-broker',
'uid': '05cfd156-457b-4f23-b575-64aa48a6a6f0'}],
'resourceVersion': '28702',
'uid': 'd3232082-9f94-4018-a7d2-82a324c83c24'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.amanda4.pi6-host.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-amanda4.svc.cluster.local'}},
'generation': 1,
'name': 'pi6-host-host-broker-pi6-host-t0cfc86a53f8594712de29524a4311496',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-amanda4/pi6-host-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-amanda4/pi6-host-trigger-to-user-broker-trigger/36749fad-3da8-49cd-984c-909fde708aab',
'uid': '9bf8700b-3c86-4bc3-a5dc-427b2b72f093'}]},
'status': {'address': {'url': 'http://pi6-host-host-broker-kne-trigger-kn-jsm-channel.user-amanda4.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-08T16:10:00Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-08T16:10:00Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-08T16:10:00Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-08T16:10:00Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-08T16:10:00Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-08T16:09:57Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-08T16:09:59Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': '9bf8700b-3c86-4bc3-a5dc-427b2b72f093'}]}}

Feature: MindWM Ping-pong EDA test
Scenario: Prepare environment for ping tests
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "green4" (PASSED)
Then the context should be ready and operable (PASSED)
And the following knative services are in a ready state in the "context-green4" namespace (PASSED)
When God creates a MindWM user resource with the name "amanda4" and connects it to the context "green4" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "pi6-host" and connects it to the user "amanda4" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "pi6-host-host-broker-kne-trigger" is ready in "user-amanda4" namespace (PASSED)
When God starts reading message from NATS topic ">" (PASSED)
PASSED
Connected to NATS server at nats://root:[email protected]:4222
Subscribed to topic '>'

Feature: MindWM Ping-pong EDA test
Scenario: Send pind to knative ping service
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to knative service "pong" in "context-green4" namespace (PASSED)
Then the response http code should be "200" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Send ping via broker-ingress.knative-eventing/context-green4/context-broker
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "traceparent" to "00-5df92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/context-green4/context-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
Then the trace with "00-5df92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" should appear in TraceQL (PASSED)
And the trace should contains (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-amanda4.pi6-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Send ping via broker-ingress.knative-eventing/user-amanda4/user-broker
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "traceparent" to "00-6df93f3577b34da6a3ce929d0e0e4742-00f067aa0ba902b7-00" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/user-amanda4/user-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
Then the trace with "00-6df93f3577b34da6a3ce929d0e0e4742-00f067aa0ba902b7-00" should appear in TraceQL (PASSED)
And the trace should contains (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-amanda4.pi6-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Send ping via nats
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.amanda4.pi6-host.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.3623.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-green4" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-amanda4.pi6-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM Ping-pong EDA test
Scenario: Cleanup amanda4@pi6-host in green4
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "pi6-host" (PASSED)
Then the host "pi6-host" should be deleted (PASSED)
When God deletes the MindWM user resource "amanda4" (PASSED)
When God deletes the MindWM context resource "green4" (PASSED)
PASSED

<Record n=<Node element_id='1' labels=frozenset({'Host'}) properties={'hostname': 'tablet', 'atime': 0, 'traceparent': '00-7df92f3577b34da6a3ce930d0e0e4734-efb0730f54f39359-01', 'type': 'org.mindwm.v1.graph.node.host'}>>
<Record n=<Node element_id='5' labels=frozenset({'IoDocument'}) properties={'output': 'uid=1000(pion) gid=1000(pion) groups=1000(pion),4(adm),100(users),112(tmux),988(docker)', 'input': 'id', 'atime': 0, 'traceparent': '00-7df92f3577b34da6a3ce930d0e0e4734-efb0730f54f39359-01', 'type': 'org.mindwm.v1.graph.node.iodocument', 'uuid': 'b52843ec66994970a521ae6c76551649', 'ps1': 'pion@mindwm-stg1:~/work/dev/mindwm-manager$'}>>

Feature: MindWM io context function test
Scenario: io context red
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "red" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-red" namespace (PASSED)
And statefulset "red-neo4j" in namespace "context-red" is in ready state (PASSED)
When God creates a MindWM user resource with the name "kitty" and connects it to the context "red" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "tablet" and connects it to the user "kitty" (PASSED)
Then the host resource should be ready and operable (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-id" to "442af213-c860-4535-b639-355f13b2d883" (PASSED)
And sets cloudevent header "traceparent" to "00-7df92f3577b34da6a3ce930d0e0e4734-00f064aa0ba902b8-00" (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.kitty.tablet.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.09fb195c-c419-6d62-15e0-51b6ee990922.23.36.iodocument" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/context-red/context-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-red" namespace (PASSED)
Then the trace with "00-7df92f3577b34da6a3ce930d0e0e4734-00f064aa0ba902b8-00" should appear in TraceQL (PASSED)
And the trace should contains (PASSED)
Then graph have node "User" with property "username" = "kitty" in context "red" (PASSED)
And graph have node "Host" with property "hostname" = "tablet" in context "red" (PASSED)
And graph have node "IoDocument" with property "input" = "id" in context "red" (PASSED)
PASSED

Feature: MindWM io context function test
Scenario: Cleanup kitty@tablet in red
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "tablet" (PASSED)
Then the host "tablet" should be deleted (PASSED)
When God deletes the MindWM user resource "kitty" (PASSED)
When God deletes the MindWM context resource "red" (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM kafka_cdc function test
Scenario: io context blue
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "blue" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And statefulset "blue-neo4j" in namespace "context-blue" is in ready state (PASSED)
When God creates a MindWM user resource with the name "garmr" and connects it to the context "blue" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "helheim" and connects it to the user "garmr" (PASSED)
Then the host resource should be ready and operable (PASSED)
When God starts reading message from NATS topic ">" (PASSED)
And God makes graph query in context "blue" (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-garmr.helheim-host-broker-kne-trigger._knative" (PASSED)
When God makes graph query in context "blue" (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.updated" should have been received from the NATS topic "user-garmr.helheim-host-broker-kne-trigger._knative" (PASSED)
When God makes graph query in context "blue" (PASSED)
Then the following knative services are in a ready state in the "context-blue" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.deleted" should have been received from the NATS topic "user-garmr.helheim-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM kafka_cdc function test
Scenario: Cleanup garmr@helheim in blue
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "helheim" (PASSED)
Then the host "helheim" should be deleted (PASSED)
When God deletes the MindWM user resource "garmr" (PASSED)
When God deletes the MindWM context resource "blue" (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Create context varanasi and user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "varanasi" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-varanasi" namespace (PASSED)
And statefulset "varanasi-neo4j" in namespace "context-varanasi" is in ready state (PASSED)
When God creates a MindWM user resource with the name "shesha" and connects it to the context "varanasi" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Create workstation01 for user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "workstation01" and connects it to the user "shesha" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Create travellaptop for user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "travellaptop" and connects it to the user "shesha" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two hosts one user function test
Scenario: Send ping via nats host: workstation01, user: shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-varanasi" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-shesha.workstation01-host-broker-kne-trigger._knative" (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two hosts one user function test
Scenario: Send ping via nats host: travellaptop, user: shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "#ping" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.shesha.travellaptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.shesha.travellaptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-varanasi" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.pong" should have been received from the NATS topic "user-shesha.travellaptop-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Send iodocument via nats host: workstation01, user: shesha and check that second host received graph the update
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.36.23.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.shesha.workstation01.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.3623.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-varanasi" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-shesha.travellaptop-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Cleanup hosts workstation01 in user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "workstation01" (PASSED)
Then the host "workstation01" should be deleted (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Cleanup hosts travellaptop in user shesha
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "travellaptop" (PASSED)
Then the host "travellaptop" should be deleted (PASSED)
PASSED

Feature: MindWM two hosts one user function test
Scenario: Cleanup user shesha and context varanasi
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM user resource "shesha" (PASSED)
Then the user "shesha" should be deleted (PASSED)
When God deletes the MindWM context resource "varanasi" (PASSED)
Then the context "varanasi" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create context tokyo
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "tokyo" (PASSED)
Then the context should be ready and operable (PASSED)
Then the following knative services are in a ready state in the "context-tokyo" namespace (PASSED)
And statefulset "tokyo-neo4j" in namespace "context-tokyo" is in ready state (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create godzilla and connects it to tokyo
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM user resource with the name "godzilla" and connects it to the context "tokyo" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create tengu and connects it to tokyo
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM user resource with the name "tengu" and connects it to the context "tokyo" (PASSED)
Then the user resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create laptop resource and connects it to godzilla user
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "laptop" and connects it to the user "godzilla" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Create tablet resource and connects it to tengu user
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM host resource with the name "tablet" and connects it to the user "tengu" (PASSED)
Then the host resource should be ready and operable (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two users one context function test
Scenario: Send iodocument via nats host: , user: and check that second user received graph update
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.godzilla.laptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.godzilla.laptop.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-tokyo" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-tengu.tablet-host-broker-kne-trigger._knative" (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM two users one context function test
Scenario: Send iodocument via nats host: , user: and check that second user received graph update
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "id" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.iodocument" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.tengu.tablet.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
And sends cloudevent to nats topic "org.mindwm.tengu.tablet.L3RtcC90bXV4LTEwMDAvZGVmYXVsdA==.8d839f82-79da-11ef-bc9f-f74fac7543ac.23.36.iodocument" (PASSED)
Then the following deployments are in a ready state in the "context-tokyo" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-godzilla.laptop-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup laptop host for godzilla username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "laptop" (PASSED)
Then the host "laptop" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup tablet host for tengu username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "tablet" (PASSED)
Then the host "tablet" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup godzilla username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM user resource "godzilla" (PASSED)
Then the user "godzilla" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup tengu username
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM user resource "tengu" (PASSED)
Then the user "tengu" should be deleted (PASSED)
PASSED

Feature: MindWM two users one context function test
Scenario: Cleanup tokyo context
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM context resource "tokyo" (PASSED)
Then the context "tokyo" should be deleted (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Create Contexts and Verify All Related Resources Are in Ready State
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "aphrodite" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-aphrodite" should exist (PASSED)
And the following deployments are in a ready state in the "context-aphrodite" namespace (PASSED)
And statefulset "aphrodite-neo4j" in namespace "context-aphrodite" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-aphrodite" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-aphrodite" namespace (PASSED)
And the following knative brokers are in a ready state in the "context-aphrodite" namespace (PASSED)
And kafka topic "context-aphrodite-cdc" is in ready state in "redpanda" namespace (PASSED)
And kafka source "context-aphrodite-cdc-kafkasource" is in ready state in "context-aphrodite" namespace (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Create Contexts and Verify All Related Resources Are in Ready State
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "kypros" (PASSED)
Then the context should be ready and operable (PASSED)
And namespace "context-kypros" should exist (PASSED)
And the following deployments are in a ready state in the "context-kypros" namespace (PASSED)
And statefulset "kypros-neo4j" in namespace "context-kypros" is in ready state (PASSED)
And the following knative services are in a ready state in the "context-kypros" namespace (PASSED)
And the following knative triggers are in a ready state in the "context-kypros" namespace (PASSED)
And the following knative brokers are in a ready state in the "context-kypros" namespace (PASSED)
And kafka topic "context-kypros-cdc" is in ready state in "redpanda" namespace (PASSED)
And kafka source "context-kypros-cdc-kafkasource" is in ready state in "context-kypros" namespace (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Cleanup Contexts and Verify Resources Are Deleted
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM context resource "aphrodite" (PASSED)
Then the context "aphrodite" should be deleted (PASSED)
And namespace "context-aphrodite" should not exist (PASSED)
PASSED

Feature: Context Resource Readiness and Cleanup Verification
Scenario: Cleanup Contexts and Verify Resources Are Deleted
Given a MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM context resource "kypros" (PASSED)
Then the context "kypros" should be deleted (PASSED)
And namespace "context-kypros" should not exist (PASSED)
PASSED

'kind': 'NatsJetStreamChannel',
'metadata': {'annotations': {'eventing.knative.dev/scope': 'cluster',
'messaging.knative.dev/creator': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/lastModifier': 'system:serviceaccount:knative-eventing:eventing-controller',
'messaging.knative.dev/subscribable': 'v1'},
'creationTimestamp': '2024-10-08T16:28:48Z',
'finalizers': ['natsjetstreamchannels.messaging.knative.dev'],
'generation': 2,
'labels': {'eventing.knative.dev/broker': 'the-host-host-broker',
'eventing.knative.dev/brokerEverything': 'true'},
'managedFields': [{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:annotations': {'.': {},
'f:eventing.knative.dev/scope': {}},
'f:labels': {'.': {},
'f:eventing.knative.dev/broker': {},
'f:eventing.knative.dev/brokerEverything': {}},
'f:ownerReferences': {'.': {},
'k:{"uid":"5577976a-dafe-4049-9ce7-27eb41946f9b"}': {}}},
'f:spec': {'.': {},
'f:delivery': {'.': {},
'f:backoffDelay': {},
'f:backoffPolicy': {},
'f:retry': {}},
'f:stream': {'.': {},
'f:config': {'.': {},
'f:additionalSubjects': {}}}}},
'manager': 'mtchannel_broker',
'operation': 'Update',
'time': '2024-10-08T16:28:48Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:metadata': {'f:finalizers': {'.': {},
'v:"natsjetstreamchannels.messaging.knative.dev"': {}}},
'f:spec': {'f:subscribers': {}}},
'manager': 'controller',
'operation': 'Update',
'time': '2024-10-08T16:28:51Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'.': {},
'f:address': {'.': {},
'f:url': {}},
'f:conditions': {},
'f:observedGeneration': {}}},
'manager': 'controller',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T16:28:51Z'},
{'apiVersion': 'messaging.knative.dev/v1alpha1',
'fieldsType': 'FieldsV1',
'fieldsV1': {'f:status': {'f:subscribers': {}}},
'manager': 'dispatcher',
'operation': 'Update',
'subresource': 'status',
'time': '2024-10-08T16:28:51Z'}],
'name': 'the-host-host-broker-kne-trigger',
'namespace': 'user-flukeman',
'ownerReferences': [{'apiVersion': 'eventing.knative.dev/v1',
'blockOwnerDeletion': True,
'controller': True,
'kind': 'Broker',
'name': 'the-host-host-broker',
'uid': '5577976a-dafe-4049-9ce7-27eb41946f9b'}],
'resourceVersion': '70768',
'uid': '3b335fc9-8fd8-440f-857c-f1c6fb9921f3'},
'spec': {'delivery': {'backoffDelay': 'PT0.2S',
'backoffPolicy': 'exponential',
'retry': 10},
'stream': {'config': {'additionalSubjects': ['org.mindwm.flukeman.the-host.>'],
'duplicateWindow': '0s',
'maxAge': '0s'}},
'subscribers': [{'delivery': {'deadLetterSink': {'uri': 'http://dead-letter.user-flukeman.svc.cluster.local'}},
'generation': 1,
'name': 'the-host-host-broker-the-host-t04b7b2808e88362d699760bb6de239e9',
'replyUri': 'http://broker-ingress.knative-eventing.svc.cluster.local/user-flukeman/the-host-host-broker',
'subscriberUri': 'http://broker-filter.knative-eventing.svc.cluster.local/triggers/user-flukeman/the-host-trigger-to-user-broker-trigger/a8ae2651-3bc1-4dc2-ace0-5bb62bd8a038',
'uid': 'bb86143d-3d93-4b93-9e36-5979ad760b5f'}]},
'status': {'address': {'url': 'http://the-host-host-broker-kne-trigger-kn-jsm-channel.user-flukeman.svc.cluster.local'},
'conditions': [{'lastTransitionTime': '2024-10-08T16:28:51Z',
'status': 'True',
'type': 'Addressable'},
{'lastTransitionTime': '2024-10-08T16:28:51Z',
'status': 'True',
'type': 'ChannelServiceReady'},
{'lastTransitionTime': '2024-10-08T16:28:51Z',
'status': 'True',
'type': 'DispatcherReady'},
{'lastTransitionTime': '2024-10-08T16:28:51Z',
'status': 'True',
'type': 'EndpointsReady'},
{'lastTransitionTime': '2024-10-08T16:28:51Z',
'status': 'True',
'type': 'Ready'},
{'lastTransitionTime': '2024-10-08T16:28:48Z',
'status': 'True',
'type': 'ServiceReady'},
{'lastTransitionTime': '2024-10-08T16:28:50Z',
'status': 'True',
'type': 'StreamReady'}],
'observedGeneration': 2,
'subscribers': [{'observedGeneration': 1,
'ready': 'True',
'uid': 'bb86143d-3d93-4b93-9e36-5979ad760b5f'}]}}

Feature: MindWM clipboard EDA test
Scenario: Prepare environment for ping tests
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a MindWM context with the name "philadelphia" (PASSED)
Then the context should be ready and operable (PASSED)
And the following knative services are in a ready state in the "context-philadelphia" namespace (PASSED)
And statefulset "philadelphia-neo4j" in namespace "context-philadelphia" is in ready state (PASSED)
When God creates a MindWM user resource with the name "flukeman" and connects it to the context "philadelphia" (PASSED)
Then the user resource should be ready and operable (PASSED)
When God creates a MindWM host resource with the name "the-host" and connects it to the user "flukeman" (PASSED)
Then the host resource should be ready and operable (PASSED)
And NatsJetStreamChannel "the-host-host-broker-kne-trigger" is ready in "user-flukeman" namespace (PASSED)
When God starts reading message from NATS topic ">" (PASSED)
PASSED
Connected to NATS server at nats://root:[email protected]:4222
Subscribed to topic '>'

Feature: MindWM clipboard EDA test
Scenario: Send clipboard to knative ping service
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-subject" to "clipboard" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.clipboard" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.flukeman.the-host.clipboard" (PASSED)
And sets cloudevent header "traceparent" to "00-6ef92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" (PASSED)
And sends cloudevent to knative service "clipboard" in "context-philadelphia" namespace (PASSED)
Then the response http code should be "200" (PASSED)
Then the following deployments are in a ready state in the "context-philadelphia" namespace (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM clipboard EDA test
Scenario: Send ping directly to function broker-ingress.knative-eventing/context-philadelphia/context-broker
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "clipboard" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.clipboard" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.flukeman.the-host.clipboard" (PASSED)
And sets cloudevent header "traceparent" to "00-5df92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/context-philadelphia/context-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-philadelphia" namespace (PASSED)
Then the trace with "00-5df92f3577b34da6a3ce929d0e0e4734-00f067aa0ba902b7-00" should appear in TraceQL (PASSED)
And the trace should contains (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-flukeman.the-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Subscribed to topic '>'

Feature: MindWM clipboard EDA test
Scenario: Send ping directly to function broker-ingress.knative-eventing/user-flukeman/user-broker
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And God starts reading message from NATS topic ">" (PASSED)
And sets cloudevent header "ce-subject" to "clipboard" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.clipboard" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.flukeman.the-host.clipboard" (PASSED)
And sets cloudevent header "traceparent" to "00-6df93f3577b34da6a3ce929d0e0e4742-00f067aa0ba902b7-00" (PASSED)
And sends cloudevent to "broker-ingress.knative-eventing/user-flukeman/user-broker" (PASSED)
Then the response http code should be "202" (PASSED)
Then the following deployments are in a ready state in the "context-philadelphia" namespace (PASSED)
Then the trace with "00-6df93f3577b34da6a3ce929d0e0e4742-00f067aa0ba902b7-00" should appear in TraceQL (PASSED)
And the trace should contains (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-flukeman.the-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM clipboard EDA test
Scenario: Send ping via nats
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God creates a new cloudevent (PASSED)
And sets cloudevent header "ce-id" to "09fb195c-c419-6d62-15e0-51b6ee990922" (PASSED)
And sets cloudevent header "ce-subject" to "clipboard" (PASSED)
And sets cloudevent header "ce-type" to "org.mindwm.v1.clipboard" (PASSED)
And sets cloudevent header "ce-source" to "org.mindwm.flukeman.the-host.clipboard" (PASSED)
And sets cloudevent header "traceparent" to "00-8af92f3577b34da6a3ce929d0e0e4742-00f067aa0ba902b7-00" (PASSED)
And sends cloudevent to nats topic "org.mindwm.flukeman.the-host.clipboard" (PASSED)
Then the following deployments are in a ready state in the "context-philadelphia" namespace (PASSED)
And a cloudevent with type == "org.mindwm.v1.graph.created" should have been received from the NATS topic "user-flukeman.the-host-host-broker-kne-trigger._knative" (PASSED)
PASSED

Feature: MindWM clipboard EDA test
Scenario: Cleanup flukeman@the-host in philadelphia
Given A MindWM environment (PASSED)
Then all nodes in Kubernetes are ready (PASSED)
When God deletes the MindWM host resource "the-host" (PASSED)
Then the host "the-host" should be deleted (PASSED)
When God deletes the MindWM user resource "flukeman" (PASSED)
When God deletes the MindWM context resource "philadelphia" (PASSED)
PASSED

================= 56 passed, 78 warnings in 2442.28s (0:40:42) =================

@metacoma metacoma merged commit a3346f5 into master Oct 8, 2024
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

1 participant