{ "cells": [ { "cell_type": "markdown", "id": "f623967c8652cdf4", "metadata": {}, "source": [ "# The Event Backlog" ] }, { "cell_type": "markdown", "id": "1f16fbe04726f9ff", "metadata": {}, "source": [ "Offers a container for managing events via insertion, retrieval, and deletion." ] }, { "cell_type": "markdown", "id": "df7e0e801a342646", "metadata": {}, "source": [ "--------------------------------------\n", "Following code fragment demonstrates:\n", "- Create Backlog\n", "- Add Events to Backlog" ] }, { "cell_type": "code", "execution_count": 1, "id": "9389501c425f1789", "metadata": { "ExecuteTime": { "end_time": "2025-07-18T11:17:12.781922Z", "start_time": "2025-07-18T11:17:12.771765Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Len: 0\n", "\n", "šŸ“¦ Events in Backlog:\n", "> event.data={'id': 0, 'message': 'Test Event 0'}, state: receiving\n", "> event.data={'id': 1, 'message': 'Test Event 1'}, state: processing\n", "> event.data={'id': 2, 'message': 'Test Event 2'}, state: acked\n", "\n", "Len: 3\n" ] } ], "source": [ "from logprep.ng.event.set_event_backlog import SetEventBacklog\n", "from logprep.ng.event.event_state import EventStateType\n", "from logprep.ng.event.log_event import LogEvent\n", "\n", "backlog = SetEventBacklog()\n", "\n", "events = [\n", " LogEvent(\n", " data={\"id\": 0, \"message\": \"Test Event 0\"},\n", " original=b\"\",\n", " state=EventStateType.RECEIVING),\n", " LogEvent(\n", " data={\"id\": 1, \"message\": \"Test Event 1\"},\n", " original=b\"\",\n", " state=EventStateType.PROCESSING),\n", " LogEvent(\n", " data={\"id\": 2, \"message\": \"Test Event 2\"},\n", " original=b\"\",\n", " state=EventStateType.ACKED,\n", " ),\n", "]\n", "\n", "print(f\"\\nLen: {len(backlog.backlog)}\")\n", "backlog.register(events)\n", "\n", "print(\"\\nšŸ“¦ Events in Backlog:\")\n", "\n", "for event in backlog.backlog:\n", " print(f\"> {event.data=}, state: {event.state}\")\n", "\n", "print(f\"\\nLen: {len(backlog.backlog)}\")" ] }, { "cell_type": "markdown", "id": "c578efe4a6b51f16", "metadata": {}, "source": [ "--------------------------------------\n", "Following code fragment demonstrates:\n", "- Getting Event from Backlog" ] }, { "cell_type": "code", "execution_count": 2, "id": "2535f8366062db32", "metadata": { "ExecuteTime": { "end_time": "2025-07-18T11:19:21.166388Z", "start_time": "2025-07-18T11:19:21.162878Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Len: 3\n", "\n", "šŸ“„ Events in PROCESSING state:\n", "> event.data={'id': 1, 'message': 'Test Event 1'}, state: processing\n", "\n", "Len: 3\n" ] } ], "source": [ "processing_events = backlog.get(EventStateType.PROCESSING)\n", "\n", "print(f\"Len: {len(backlog.backlog)}\")\n", "\n", "print(\"\\nšŸ“„ Events in PROCESSING state:\")\n", "\n", "for event in processing_events:\n", " print(f\"> {event.data=}, state: {event.state}\")\n", "\n", "print(f\"\\nLen: {len(backlog.backlog)}\")\n" ] }, { "cell_type": "markdown", "id": "5a492e823c0f21e8", "metadata": {}, "source": [ "--------------------------------------\n", "Following code fragment demonstrates:\n", "- Removing Events from Backlog" ] }, { "cell_type": "code", "execution_count": 3, "id": "16ac2474df41292a", "metadata": { "ExecuteTime": { "end_time": "2025-07-18T11:20:08.601957Z", "start_time": "2025-07-18T11:20:08.598028Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Len: 3\n", "\n", "🧹 Unregistered events with state ACKED:\n", "> event.data={'id': 2, 'message': 'Test Event 2'}, state: acked\n", "\n", "šŸ“¦ Remaining events in backlog:\n", "> event.data={'id': 0, 'message': 'Test Event 0'}, state: receiving\n", "> event.data={'id': 1, 'message': 'Test Event 1'}, state: processing\n", "\n", "Len: 2\n" ] } ], "source": [ "print(f\"Len: {len(backlog.backlog)}\")\n", "\n", "acked_events = backlog.unregister(EventStateType.ACKED)\n", "print(\"\\n🧹 Unregistered events with state ACKED:\")\n", "\n", "for event in acked_events:\n", " print(f\"> {event.data=}, state: {event.state}\")\n", "\n", "\n", "print(\"\\nšŸ“¦ Remaining events in backlog:\")\n", "\n", "for state in EventStateType:\n", " still_in_backlog = backlog.get(state)\n", " for event in still_in_backlog:\n", " print(f\"> {event.data=}, state: {event.state}\")\n", "\n", "print(f\"\\nLen: {len(backlog.backlog)}\")\n" ] }, { "cell_type": "markdown", "id": "405d697678bd50e9", "metadata": {}, "source": [ "--------------------------------------\n", "Following code fragment demonstrates:\n", "- FAILING Removing Events from Backlog" ] }, { "cell_type": "code", "execution_count": 4, "id": "802e191d811ad8be", "metadata": { "ExecuteTime": { "end_time": "2025-07-18T11:22:10.567396Z", "start_time": "2025-07-18T11:22:10.562906Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "> Failed: unregister(receiving)\n", "> Failed: unregister(received)\n", "> Failed: unregister(processing)\n", "> Failed: unregister(processed)\n", "> Failed: unregister(stored_in_output)\n", "> Failed: unregister(stored_in_error)\n", "> Failed: unregister(delivered)\n", "Expected Failing: 7\n", "Failed: 7\n", "\n", "Should work without exceptions\n", "> Ok: unregister(failed)\n", "> Ok: unregister(acked)\n" ] } ], "source": [ "fail_unregister_states = [\n", " EventStateType.RECEIVING,\n", " EventStateType.RECEIVED,\n", " EventStateType.PROCESSING,\n", " EventStateType.PROCESSED,\n", " EventStateType.STORED_IN_OUTPUT,\n", " EventStateType.STORED_IN_ERROR,\n", " EventStateType.DELIVERED,\n", "]\n", "\n", "cnt_failing = 0\n", "\n", "for state in fail_unregister_states:\n", " try:\n", " backlog.unregister(state)\n", " except ValueError:\n", " cnt_failing += 1\n", " print(f\"> Failed: unregister({state})\")\n", "\n", "print(f\"Expected Failing: {len(fail_unregister_states)}\\nFailed: {cnt_failing}\")\n", "\n", "success_unregister_states = [\n", " EventStateType.FAILED,\n", " EventStateType.ACKED,\n", "]\n", "\n", "print(\"\\nShould work without exceptions\")\n", "for state in success_unregister_states:\n", " backlog.unregister(state)\n", " print(f\"> Ok: unregister({state})\")\n" ] }, { "cell_type": "code", "execution_count": null, "id": "dc699f2391e39ba7", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "3.11.11" } }, "nbformat": 4, "nbformat_minor": 5 }