{ "info": { "author": "Federico Sismondi", "author_email": "federicosismondi@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "Operating System :: MacOS", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Internet", "Topic :: Scientific/Engineering", "Topic :: Software Development :: Testing" ], "description": "Contact\n-------\n\nFederico Sismondi\nContact address: federicosismondi(AT)gmail(DOT)com\n\nUtils\n-----\n\nThis repo provides some libs and snippets in the form of python modules\nused by several ioppytest components and F-Interop components.\n\nInstalling CLI, lib and other components\n------------------------------------------\n\n`pip install ioppytest-utils`\n\n\n# Package `event_bus_utils`\n---------------------------\n\n(coming soon)\n\n# Package `messages`\n--------------------\n\nThis packages provides to your code a new abstraction level on\nhow to interact with the messages in the bus.\n\nEssentially it allows you to:\n\n## 1. manipulate data using the python syntax\n\n```\n>>> from messages import *\n>>> m = MsgTestCaseSkip(testcase_id = 'some_testcase_id')\n>>> m\nMsgTestCaseSkip(_api_version = 1.2.14, description = Skip testcase, node = someNode, testcase_id = some_testcase_id, )\n>>> m.routing_key\n'testsuite.testcase.skip'\n>>> m.message_id # doctest: +SKIP\n'802012eb-24e3-45c4-9dcc-dc293c584f63'\n>>> m.testcase_id\n'some_testcase_id'\n\n# also we can modify some of the fields (rewrite the default ones)\n>>> m = MsgTestCaseSkip(testcase_id = 'TD_COAP_CORE_03')\n>>> m\nMsgTestCaseSkip(_api_version = 1.2.14, description = Skip testcase, node = someNode, testcase_id = TD_COAP_CORE_03, )\n>>> m.testcase_id\n'TD_COAP_CORE_03'\n\n# and even export the message in json format (for example for sending the message though the amqp event bus)\n>>> m.to_json()\n'{\"_api_version\": \"1.2.14\", \"description\": \"Skip testcase\", \"node\": \"someNode\", \"testcase_id\": \"TD_COAP_CORE_03\"}'\n\n# We can use the Message class to import json into Message objects:\n>>> m=MsgTestSuiteStart()\n>>> m.routing_key\n'testsuite.start'\n>>> m.to_json()\n'{\"_api_version\": \"1.2.14\", \"description\": \"Test suite START command\"}'\n>>> json_message = m.to_json()\n>>> obj=Message.load(json_message,'testsuite.start', None )\n>>> obj\nMsgTestSuiteStart(_api_version = 1.2.14, description = Test suite START command, )\n>>> type(obj) # doctest: +SKIP\n\n\n# We can use the library for generating error responses:\n# the request:\n>>> m = MsgSniffingStart()\n>>>\n\n# the error reply (note that we pass the message of the request to build the reply):\n>>> err = MsgErrorReply(m)\n>>> err\nMsgErrorReply(_api_version = 1.2.14, error_code = None, error_message = None, ok = False, )\n\n# properties of the message are auto-generated:\n>>> m.reply_to\n'sniffing.start.reply'\n>>> err.routing_key\n'sniffing.start.reply'\n>>> m.correlation_id # doctest: +SKIP\n'360b0f67-4455-43e3-a00f-eca91f2e84da'\n>>> err.correlation_id # doctest: +SKIP\n'360b0f67-4455-43e3-a00f-eca91f2e84da'\n\n# we can get all the AMQP properties also as a dict:\n>>> err.get_properties() # doctest: +SKIP\n'{'timestamp': 1515172549, 'correlation_id': '16257581-06be-4088-a1f6-5672cc73d8f2', 'message_id': '1ec12c2b-33c7-44ad-97b8-5099c4d52e81', 'content_type': 'application/json'}'\n\n```\n\n## 2. importing/exporting message events from/to json\n\n```\n# We can use the Message class to build Message objects from json + rkey:\n>>> m=MsgSniffingGetCapture()\n>>> m.routing_key\n'sniffing.getcapture.request'\n>>> m.to_json()\n'{\"_api_version\": \"1.2.14\", \"capture_id\": \"TD_COAP_CORE_01\"}'\n>>> json_message = m.to_json()\n>>> json_message\n'{\"_api_version\": \"1.2.14\", \"capture_id\": \"TD_COAP_CORE_01\"}'\n>>> obj=Message.load(json_message,'testsuite.start', None )\n>>> type(obj) # doctest\n\n```\n\n\n## 3. importing messages from event bus using pika's API\n\nBuild a message from a pika's returned values on consume:\n\n```\n>>> m = Message.load_from_pika(method, props, body)\n>>> m.routing_key\n'sniffing.getcapture.request'\n>>> m.to_json()\n'{\"_api_version\": \"1.2.14\", \"capture_id\": \"TD_COAP_CORE_01\"}'\n```\n\n\n# Package cli tool: ioppytest-cli\n---------------------------------\n\n(used from terminal with entrypoint `ioppytest-cli`)\n\n ```\n(my_venv) \u279c ioppytest-cli\nUsage: ioppytest-cli [OPTIONS] COMMAND [ARGS]...\n\nOptions:\n --help Show this message and exit.\n\nCommands:\n action Execute interop test action\n chat Send chat message, useful for user-to-user...\n check_connection (REPL only) Check if AMQP connection is...\n clear Clear screen\n connect Connect to an AMQP session and start...\n download_network_traces Downloads all networks traces generated...\n enter_debug_context (REPL only) Provides user with some extra...\n exit Exits REPL\n get_session_parameters Print session state and parameters\n get_session_status Retrieves status information from testing...\n gui_display_message Sends message to GUI\n gui_request_file_upload Request user to upload a file, saves it in...\n ignore (REPL only) Do not notify any more on message...\n repl Interactive shell, allows user to interact...\n```\n\n\n\n## 1. REPL mode: `ioppytest-cli repl`\n\nthis can be used for example for UI actions:\n\n```\n> action ts_start\n[User input] ts_start\nDo you want START test suite? [y/N]: y\nSending message..\n\n[Event bus message] []\n\n------------ ------------------------\n_api_version 1.2.14\ndescription Test suite START command\n------------ ------------------------\n```\n\nbut also for testing internal services provided by the tools\n(`> enter_debug_context` needed):\n\n```\n> _send_MsgTestSuiteGetTestCases\n[User input] trying to send message: MsgTestSuiteGetTestCases(_api_version = 1.2.14, )\nSending message..\n\n[Event bus message] []\n------------ -----\n_api_version 1.2.14\n------------ -----\n\n[log][test_coordinator|amqp_connector] RECEIVED request: \n[log][test_coordinator|amqp_connector] HANDLING request: \n[log][test_coordinator|amqp_connector] PUBLISHING to routing_key: testsuite.testcases.list.reply, msg: MsgReply(_api_version = 1.2.14, ok = True, tc_list = [OrderedDict([('te\n\n[Event bus message] []\n\n------------ --------------------------------------------------------------------------------------------------------------------\n _api_version 1.2.14\n ok True\n tc_list {'testcase_id': 'TD_COAP_CORE_01', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_01', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_02', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_02', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_03', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_03', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_04', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_04', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_05', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_05', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_06', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_06', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_07', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_07', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_08', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_08', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_09', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_09', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_10', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_09', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_11', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_11', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_12', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_12', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_13', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_13', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_14', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_14', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_15', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_15', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_16', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_16', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_17', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_17', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_18', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_18', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_19', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_19', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_20', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_20', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_21', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_21', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_22', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_22', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_23', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_23', 'state': None}\n {'testcase_id': 'TD_COAP_CORE_31', 'testcase_ref': 'http://doc.f-interop.eu/tests/TD_COAP_CORE_31', 'state': None}\n------------ --------------------------------------------------------------------------------------------------------------------\n[log][test_coordinator|amqp_connector] Finished with REQUEST: \n```\n\nother example:\n\n```\n> _send_MsgAgentTunStart\n[User input] trying to send message: MsgAgentTunStart(_api_version = 1.2.14, ipv4_host = None, ipv4_netmask = None, ipv4_network = None, ipv6_host = :3, ipv6_no_forwarding = False, ipv6_prefix = bbbb, name = agent_TT, re_route_packets_host = None, re_route_packets_if = None, re_route_packets_prefix = None, )\nSending message..\n\n[Event bus message] []\n\n----------------------- --------\n_api_version 1.2.14\nipv4_host\nipv4_netmask\nipv4_network\nipv6_host :3\nipv6_no_forwarding False\nipv6_prefix bbbb\nname agent_TT\nre_route_packets_host\nre_route_packets_if\nre_route_packets_prefix\n----------------------- --------\n>\n```\n\n\npress TAB for more info:\n\n```\n>\n _configure_6lowpan_tt Send example configuration message for...\n _configure_coap_tt Send example configuration message for CoAP...\n _configure_comi_tt Send example configuration message for CoMI...\n _configure_perf_tt Send example configuration message for perf...\n _execute_stimuli_step Stimuli to be executed by IUT1, targeting...\n _execute_verify_step Request IUT to verify a step, normally they...\n _get_session_configuration_from_ui Get session config from UI\n _send_MsgAgentSerialStart Send dummy MsgAgentSerialStart message to bus.\n _send_MsgAgentSerialStarted Send dummy MsgAgentSerialStarted message to bus.\n _send_MsgAgentTunStart Send dummy MsgAgentTunStart message to bus.\n _send_MsgAgentTunStarted Send dummy MsgAgentTunStarted message to bus.\n _send_MsgConfigurationExecute Send dummy MsgConfigurationExecute message to bus.\n _send_MsgConfigurationExecuted Send dummy MsgConfigurationExecuted message to bus.\n _send_MsgDeleteResultReply Send dummy MsgDeleteResultReply message to bus.\n _send_MsgDeleteResultRequest Send dummy MsgDeleteResultRequest message to bus.\n _send_MsgDissectionAutoDissect Send dummy MsgDissectionAutoDissect message to bus.\n (...)\n```\n\n\n## sniffing the event bus with: `ioppytest-cli connect`\n\nconnects to event bus (amqp vhost), subscribes and consumes any type of\nmessage in the bus, this component tries to import the json messages\nand the message properties into Message python objects\n(using `messages` package)\n\n```\n(my_venv) \u279c ioppytest-cli connect\n[Test Assistant] Connecting to amqp://paul:iamthewalrus@f-interop.rennes.inria.fr/session05?heartbeat=600&blocked_connection_timeout=300&retry_delay=1&socket_timeout=1&connection_attempts=3\n\n[Event bus message] []\n\n------------ -------------------------------\n_api_version 1.2.14\ncomponent amqp_listener_b49d7db4\ndescription amqp_listener_b49d7db4 is READY\n------------ -------------------------------\n```\n\n\n## sniffing w/ lazy listener: `ioppytest-cli connect --ll`\n\nThe same as `ioppytest-cli connect` but no import into `messages`\nobjects. It just echos back the json and some amqp properties like\nrouting key, message id, correlation id, content type, etc..\n\nNo conversion from json to python objects, no data validation\n\n```\n(my_venv) \u279c ioppytest_cli connect -ll\n\n[Test Assistant] Connecting to amqp://paul:iamthewalrus@f-interop.rennes.inria.fr/session05?heartbeat=600&blocked_connection_timeout=300&retry_delay=1&socket_timeout=1&connection_attempts=3\n\n------------------------------------------------------------------------------------------------------------------------\nrouting_key : testsuite.testcases.list.request\n------------------------------------------------------------------------------------------------------------------------\n{\n \"_api_version\": \"1.2.14\",\n \"content_type\": \"application/json\",\n \"correlation_id\": \"00393e9e-d255-4309-8a9b-18ec608602f3\",\n \"message_id\": \"00393e9e-d255-4309-8a9b-18ec608602f3\",\n \"reply_to\": \"testsuite.testcases.list.reply\",\n \"timestamp\": 1527671157\n}\n------------------------------------------------------------------------------------------------------------------------\nrouting_key : log.info.test_coordinator|amqp_connector\n------------------------------------------------------------------------------------------------------------------------\n{\n \"_api_version\": \"1.0.8\",\n \"component\": \"test_coordinator|amqp_connector\",\n \"content_type\": \"application/json\",\n \"message\": \"RECEIVED request: \"\n}\n------------------------------------------------------------------------------------------------------------------------\nrouting_key : log.info.test_coordinator|amqp_connector\n------------------------------------------------------------------------------------------------------------------------\n{\n \"_api_version\": \"1.0.8\",\n \"component\": \"test_coordinator|amqp_connector\",\n \"content_type\": \"application/json\",\n \"message\": \"HANDLING request: \"\n}\n------------------------------------------------------------------------------------------------------------------------\nrouting_key : log.info.test_coordinator|amqp_connector\n------------------------------------------------------------------------------------------------------------------------\n{\n \"_api_version\": \"1.0.8\",\n \"component\": \"test_coordinator|amqp_connector\",\n \"content_type\": \"application/json\",\n \"message\": \"PUBLISHING to routing_key: testsuite.testcases.list.reply, msg: MsgReply(_api_version = 1.2.14, ok = True, tc_list = [OrderedDict([('te\"\n}\n------------------------------------------------------------------------------------------------------------------------\nrouting_key : testsuite.testcases.list.reply\n------------------------------------------------------------------------------------------------------------------------\n{\n \"_api_version\": \"1.2.14\",\n \"content_type\": \"application/json\",\n \"correlation_id\": \"00393e9e-d255-4309-8a9b-18ec608602f3\",\n \"message_id\": \"619283ab-c6a1-4b91-8a65-8697b665e3a1\",\n \"ok\": true,\n \"tc_list\": [\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_01\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_01\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_02\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_02\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_03\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_03\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_04\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_04\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_05\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_05\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_06\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_06\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_07\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_07\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_08\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_08\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_09\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_09\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_10\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_09\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_11\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_11\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_12\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_12\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_13\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_13\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_14\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_14\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_15\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_15\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_16\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_16\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_17\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_17\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_18\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_18\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_19\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_19\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_20\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_20\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_21\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_21\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_22\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_22\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_23\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_23\"\n },\n {\n \"state\": null,\n \"testcase_id\": \"TD_COAP_CORE_31\",\n \"testcase_ref\": \"http://doc.f-interop.eu/tests/TD_COAP_CORE_31\"\n }\n ],\n \"timestamp\": 1527671158\n}\n------------------------------------------------------------------------------------------------------------------------\nrouting_key : log.info.test_coordinator|amqp_connector\n------------------------------------------------------------------------------------------------------------------------\n{\n \"_api_version\": \"1.0.8\",\n \"component\": \"test_coordinator|amqp_connector\",\n \"content_type\": \"application/json\",\n \"message\": \"Finished with REQUEST: \"\n}\n```\n\n\nFor contributing or directly using the source code:\n---------------------------------------------------\n\nLibraries in this repo are all self contained what makes it easy to\nimport.\nThere are several approaches for doing so:\n\n1. Simply copy & paste the code into your python modules.\nAny modification on the libraries must be done into\n[utils repo](https://gitlab.f-interop.eu/f-interop-contributors/utils)\nPlease increase the VERSION number when doing so.\n\n2. Submodule it:\nFrom the top dir of your git repo run:\n\n```\ngit submodule add https://gitlab.f-interop.eu/f-interop-contributors/utils.git /utils\n```\n\ncommit & push\n\n```\ngit commit -m 'added f-interop's utils git repo as submodule'\n```\n\nremember when cloning a project with submodules to use --recursive flag\n\n```\ngit clone --recursive ...\n```\n\nor else, right after cloning you can:\n\n```\ngit submodule update --init --recursive\n```\n\nwhenever you find that your utils libraries are not the latests versions\nyou can 'bring' those last changes from the main utils repo to your project\nwith:\n\n```\ngit submodule update --remote --merge\n```\n\nafter bringing the last changes you can update your project with the last changes by doing:\n\n```\ngit add /utils\ngit commit -m 'updated submodule reference to last commit'\ngit push\n```\n\n\nTODO:\n=====\n\nusing ioppytest console file:\n\n```\npython3 -i console.py\n```\n\n```\n>>> AMQP_URL\n'amqp://paul:iamthewalrus@f-interop.rennes.inria.fr/session05?heartbeat=0&blocked_connection_timeout=2&retry_delay=1&socket_timeout=5&connection_attempts=3'\n\nDocument use of ioppytest_cli interactively with python terminal:\n\n >>> ioppytest_cli.session_profile.update({'amqp_url': AMQP_URL}))\n File \"\", line 1\n ioppytest_cli.session_profile.update({'amqp_url': AMQP_URL}))\n ^\nSyntaxError: invalid syntax\n>>> ioppytest_cli.session_profile.update({'amqp_url': AMQP_URL})\n>>> ioppytest_cli.session_profile.update({'amqp_url': AMQP_URL})\nKeyboardInterrupt\n>>> ioppytest_cli.session_profile\nOrderedDict([('user_name', 'Walter White'), ('protocol', 'coap'), ('node', 'both'), ('amqp_url', 'amqp://paul:iamthewalrus@f-interop.rennes.inria.fr/session05?heartbeat=0&blocked_connection_timeout=2&retry_delay=1&socket_timeout=5&connection_attempts=3'), ('amqp_exchange', 'amq.topic')])\n>>> a=ioppytest_cli._set_up_connection()\n[Test Assistant] Connecting to amqp://paul:iamthewalrus@f-interop.rennes.inria.fr/session05?heartbeat=0&blocked_connection_timeout=2&retry_delay=1&socket_timeout=5&connection_attempts=3\n\n[Event bus message] []\n\n>>> ------------ -------------------------------\n_api_version 1.2.14\ncomponent amqp_listener_47607736\ndescription amqp_listener_47607736 is READY\n------------ -------------------------------\n\n>>> ioppytest_cli.download_network_traces()\n\n[Event bus message] []\n\n------------ -----\n_api_version 1.2.14\n------------ -----\n[Error] Is testing tool up?\n[Error] Response timeout! rkey: testsuite.testcases.list.request , request type: \nTraceback (most recent call last):\n File \"\", line 1, in \n File \"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/click/core.py\", line 722, in __call__\n return self.main(*args, **kwargs)\n File \"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/click/core.py\", line 697, in main\n rv = self.invoke(ctx)\n File \"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/click/core.py\", line 895, in invoke\n return ctx.invoke(self.callback, **ctx.params)\n File \"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/click/core.py\", line 535, in invoke\n return callback(*args, **kwargs)\n File \"/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ioppytest_cli/ioppytest_cli.py\", line 164, in download_network_traces\n ls = state['tc_list'].copy()\nKeyError: 'tc_list'\n>>>\n\n```\n\nif ioppytest testing tool is running on a certain AMQP vhost,\nand test case 20 and 21 have been executed.\nThen using ioppytest console provides nice features like ask the\ntesting tool for all the pcap files and create a local copy of those:\n\n```\npython3 -i console.py\n```\n\n```\nProject dir: /Users/fsismondi/dev/ioppytest\nENVIRONMENT VAR not found, using defaulte: INTERACTIVE_SESSION=True\nEnv vars for AMQP connection succesfully imported\nURL: amqp://paul:iamthewalrus@f-interop.rennes.inria.fr/session05\nAMQP_EXCHANGE: amq.topic\nWelcome to ttproto console.\n- run as: python3 -i console.py\n- Use [tab] to complete\n- Use help(object) to print help messages.\n- Quit using ctrl+d\n>>> # use AMQP event bus instance where a testing tool is listening to:\n...\n>>>\nKeyboardInterrupt\n>>> AMQP_URL='amqp://5JFKMADK:M49Y8NQZ@mq.f-interop.eu:443/750bcce8-c1e3-4d9a-ba39-efd12d9da7a4'\n>>> ioppytest_cli\n\n\n>>> ioppytest_cli.session_profile.update({'amqp_url': AMQP_URL})\n>>> ioppytest_cli.download_network_traces()\n\nNo connection established yet, setting up one..\n\n[Test Assistant] Connecting to amqp://5JFKMADK:M49Y8NQZ@mq.f-interop.eu:443/750bcce8-c1e3-4d9a-ba39-efd12d9da7a4\ntestcase_id testcase_ref objective state\n--------------- --------------------------------------------- -------------------------------------------------------------------------------------------------------------------- -----------\nTD_COAP_CORE_01 http://doc.f-interop.eu/tests/TD_COAP_CORE_01 Perform GET transaction(CON mode) skipped\nTD_COAP_CORE_02 http://doc.f-interop.eu/tests/TD_COAP_CORE_02 Perform DELETE transaction (CON mode) skipped\nTD_COAP_CORE_03 http://doc.f-interop.eu/tests/TD_COAP_CORE_03 Perform PUT transaction (CON mode) skipped\nTD_COAP_CORE_04 http://doc.f-interop.eu/tests/TD_COAP_CORE_04 Perform POST transaction (CON mode) skipped\nTD_COAP_CORE_05 http://doc.f-interop.eu/tests/TD_COAP_CORE_05 Perform GET transaction (NON mode) skipped\nTD_COAP_CORE_06 http://doc.f-interop.eu/tests/TD_COAP_CORE_06 Perform DELETE transaction (NON mode) skipped\nTD_COAP_CORE_07 http://doc.f-interop.eu/tests/TD_COAP_CORE_07 Perform PUT transaction (NON mode) skipped\nTD_COAP_CORE_08 http://doc.f-interop.eu/tests/TD_COAP_CORE_08 Perform POST transaction (NON mode) skipped\nTD_COAP_CORE_09 http://doc.f-interop.eu/tests/TD_COAP_CORE_09 Perform GET transaction with separate response(CON mode, no piggyback) skipped\nTD_COAP_CORE_10 http://doc.f-interop.eu/tests/TD_COAP_CORE_10 Perform GET transaction containing non-empty Token (CON mode) skipped\nTD_COAP_CORE_11 http://doc.f-interop.eu/tests/TD_COAP_CORE_11 Perform GET transaction containing non-empty Token with a separate response (CON mode) skipped\nTD_COAP_CORE_12 http://doc.f-interop.eu/tests/TD_COAP_CORE_12 Perform GET transaction using empty Token (CON mode) skipped\nTD_COAP_CORE_13 http://doc.f-interop.eu/tests/TD_COAP_CORE_13 Perform GET transaction containing several URI-Path options (CON mode) skipped\nTD_COAP_CORE_14 http://doc.f-interop.eu/tests/TD_COAP_CORE_14 Perform GET transaction containing several URI-Query options (CON mode) skipped\nTD_COAP_CORE_15 http://doc.f-interop.eu/tests/TD_COAP_CORE_15 Perform GET transaction (CON mode, piggybacked response) in a lossy context skipped\nTD_COAP_CORE_16 http://doc.f-interop.eu/tests/TD_COAP_CORE_16 Perform GET transaction (CON mode, delayed response) in a lossy context skipped\nTD_COAP_CORE_17 http://doc.f-interop.eu/tests/TD_COAP_CORE_17 Perform GET transaction with a separate response(NON mode) skipped\nTD_COAP_CORE_18 http://doc.f-interop.eu/tests/TD_COAP_CORE_18 Perform POST transaction with responses containing several Location-Path option(CON mode) skipped\nTD_COAP_CORE_19 http://doc.f-interop.eu/tests/TD_COAP_CORE_19 Perform POST transaction with responses containing several Location-Query option(CON mode) skipped\nTD_COAP_CORE_20 http://doc.f-interop.eu/tests/TD_COAP_CORE_20 Perform GET transaction containing the Accept option (CON mode) finished\nTD_COAP_CORE_21 http://doc.f-interop.eu/tests/TD_COAP_CORE_21 Perform GET transaction containing the Etag option (CON mode) finished\nTD_COAP_CORE_22 http://doc.f-interop.eu/tests/TD_COAP_CORE_22 Perform GET transaction with responses containing the ETag option requests containing the If-Match option (CON mode) configuring\nTD_COAP_CORE_23 http://doc.f-interop.eu/tests/TD_COAP_CORE_23 Perform PUT transaction containing the If-None-Match option (CON mode) None\nTD_COAP_CORE_31 http://doc.f-interop.eu/tests/TD_COAP_CORE_31 Perform CoAP Ping (CON mode) skipped\n\n[User input] downloaded network trace TD_COAP_CORE_20.pcap , into dir: tmp\n[User input] downloaded network trace TD_COAP_CORE_21.pcap , into dir: tmp\n\n\n\n```\n\n\n```\nls tmp/*.pcap\nmyrepl-history\nTD_COAP_CORE_20.pcap\nTD_COAP_CORE_21.pcap\n```\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.f-interop.eu/f-interop-contributors/utils", "keywords": "", "license": "GPLv3+", "maintainer": "Federico Sismondi", "maintainer_email": "federicosismondi@gmail.com", "name": "ioppytest-utils", "package_url": "https://pypi.org/project/ioppytest-utils/", "platform": "", "project_url": "https://pypi.org/project/ioppytest-utils/", "project_urls": { "Homepage": "https://gitlab.f-interop.eu/f-interop-contributors/utils" }, "release_url": "https://pypi.org/project/ioppytest-utils/1.2.14/", "requires_dist": [ "click (==6.7)", "click-repl (==0.1.2)", "pika (==0.11.0)", "prompt-toolkit (==1.0.15)", "wcwidth (==0.1.7)" ], "requires_python": "", "summary": "Set of useful packages, modules and programs for ioppytest components.Installs `ioppytest-cli` Command line interface for interacting with ioppytest testing tool (all interactions happen over AMQP event bus).", "version": "1.2.14" }, "last_serial": 4563300, "releases": { "0.1.2": [ { "comment_text": "", "digests": { "md5": "d61742b04ce65be6443027baf0926b23", "sha256": "3a329136775f8a5915a3522bc74e38a965f90bac640d1d170f4a83a5d5dd9687" }, "downloads": -1, "filename": "ioppytest-utils-0.1.2.tar.gz", "has_sig": false, "md5_digest": "d61742b04ce65be6443027baf0926b23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 48672, "upload_time": "2018-04-12T08:50:55", "url": "https://files.pythonhosted.org/packages/e0/63/81e6be801ca0eac4e0b928034aacc998e42fb3e91a76f965e79b1b5a08b3/ioppytest-utils-0.1.2.tar.gz" } ], "1.0.18": [ { "comment_text": "", "digests": { "md5": "4b4addc1a0ec783d1fe86bd9ea27e29b", "sha256": "a934992e0becd06e173c05c80dc10c156e5b9067fa8d1c3a6c91207e6c7de1c8" }, "downloads": -1, "filename": "ioppytest_utils-1.0.18-py3-none-any.whl", "has_sig": false, "md5_digest": "4b4addc1a0ec783d1fe86bd9ea27e29b", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 51325, "upload_time": "2018-05-22T09:09:02", "url": "https://files.pythonhosted.org/packages/c0/ad/907cfbe82f2e52264b856b70b7d90176611f52e93d64afbd069666abe9b3/ioppytest_utils-1.0.18-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0acc49c37c16e7c247ca1b9355590f2d", "sha256": "3132fec5e9a9cf70323f541f4c21f14adce91fde78d42950e16b9eb82ede1f40" }, "downloads": -1, "filename": "ioppytest-utils-1.0.18.tar.gz", "has_sig": false, "md5_digest": "0acc49c37c16e7c247ca1b9355590f2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49690, "upload_time": "2018-05-22T09:08:31", "url": "https://files.pythonhosted.org/packages/9d/34/5a008c3e03f8231154f1e3ef99e37b18bbbcb85699d5872d0359b8b298f7/ioppytest-utils-1.0.18.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "64b0c616bb76c9d514715999bf6648b2", "sha256": "ec606f74160b638dccf047a295f444312fdc5122c3193ce5ab95250f1a5c57c4" }, "downloads": -1, "filename": "ioppytest_utils-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "64b0c616bb76c9d514715999bf6648b2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 51392, "upload_time": "2018-05-29T15:34:14", "url": "https://files.pythonhosted.org/packages/a0/04/e8c22321425c7708678cd0f21aeec3882410110a4b5c1c42f846ebdf6f70/ioppytest_utils-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0811e5aec856f86a239c0b01170d6f74", "sha256": "ee7e0aec15b7c5267db7f6001453ac9394425803a04de720bef2529706b7429b" }, "downloads": -1, "filename": "ioppytest-utils-1.1.0.tar.gz", "has_sig": false, "md5_digest": "0811e5aec856f86a239c0b01170d6f74", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49774, "upload_time": "2018-05-29T15:34:16", "url": "https://files.pythonhosted.org/packages/e8/c3/c4708939a97a67e8196455946182349af67c93763b2df9cff20b2307b2b7/ioppytest-utils-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "ebc98a1660e0fd7a216bae852b119669", "sha256": "7131ef19bb099568975e19d75fa0db025560ba2eeeef53c6ab3f61b9c1950002" }, "downloads": -1, "filename": "ioppytest_utils-1.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ebc98a1660e0fd7a216bae852b119669", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 51418, "upload_time": "2018-05-29T15:45:29", "url": "https://files.pythonhosted.org/packages/49/86/723c9fc1b26b9997dc4f42def33699c8e9c0d0eb1693f5ce1ea027f976fa/ioppytest_utils-1.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8d2ec0699a18ca0372d33e43da8d3fe2", "sha256": "3130d504f2a76a1a26b1ed71c098d9a07df5bf7c9609aa8e048952b6eb5a3e87" }, "downloads": -1, "filename": "ioppytest-utils-1.1.1.tar.gz", "has_sig": false, "md5_digest": "8d2ec0699a18ca0372d33e43da8d3fe2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49815, "upload_time": "2018-05-29T15:45:31", "url": "https://files.pythonhosted.org/packages/55/ca/b7b8934b30e09ae1885686c2fcd7b8d25fce58c264bb74924b56e007626e/ioppytest-utils-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "566d0cdf663d675e0cef9ea4ee0f2a35", "sha256": "364014ce5d0cee923223311cb5ad23f1bafa168009e5728fc65644a3e2747d0b" }, "downloads": -1, "filename": "ioppytest_utils-1.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "566d0cdf663d675e0cef9ea4ee0f2a35", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 55031, "upload_time": "2018-05-30T14:28:17", "url": "https://files.pythonhosted.org/packages/ed/88/eedd6908a5f4d297c2f49eee8bd4039eff1e908cafa52a8173d95fa19697/ioppytest_utils-1.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2707ab324a78a64b78f12221116e69e7", "sha256": "f306d02e12ebcb150edc450299dc5031b4b54e255680ca0b6184784bbcbf6d7a" }, "downloads": -1, "filename": "ioppytest-utils-1.1.2.tar.gz", "has_sig": false, "md5_digest": "2707ab324a78a64b78f12221116e69e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60490, "upload_time": "2018-05-30T14:28:18", "url": "https://files.pythonhosted.org/packages/5a/df/0b4f1e9b43b789920150d8e1a91bd7b64d91b7375a672a92efcf7198571b/ioppytest-utils-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "bf1b0cd1a3e09785782db29c14d57e5e", "sha256": "78c92b675e8e15266265ff740919343d265fedc9b60a01848a358ad19a71dac7" }, "downloads": -1, "filename": "ioppytest_utils-1.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "bf1b0cd1a3e09785782db29c14d57e5e", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 55591, "upload_time": "2018-06-20T14:22:05", "url": "https://files.pythonhosted.org/packages/f7/55/31eb2c37e7c7e890f2221a600f3368b05aa4dee5f92687b1c322f84b5e0c/ioppytest_utils-1.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a0dba98a6c4154f0d788f4005810c04c", "sha256": "59c2b6fc9fc5b39200c0ee5525976dac4be3e203e4a93d63641ef8f94be4b4de" }, "downloads": -1, "filename": "ioppytest-utils-1.1.3.tar.gz", "has_sig": false, "md5_digest": "a0dba98a6c4154f0d788f4005810c04c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60992, "upload_time": "2018-06-20T14:21:28", "url": "https://files.pythonhosted.org/packages/a8/c6/13236f00b3fdb0cea0bbb5fce89978f29307833dcef22a2344d20b42443c/ioppytest-utils-1.1.3.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "671a2a002f8a3806b840fdf5f08951dc", "sha256": "c1e27eeb7670183665993329fa8a4255dbee3c287f63d39eefdd59d8607e839a" }, "downloads": -1, "filename": "ioppytest_utils-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "671a2a002f8a3806b840fdf5f08951dc", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 63127, "upload_time": "2018-06-21T08:41:41", "url": "https://files.pythonhosted.org/packages/f4/a3/f65eb86cb7f1c010a6c5e7172acab34051f06c4a08f389ad3a6d60de11bf/ioppytest_utils-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3cd2457e79f6eb87b3f335ca4d30e0d4", "sha256": "738e998bb53825731f2e2c86d01050af71d7d7fef38007cd41b2ce384816e20a" }, "downloads": -1, "filename": "ioppytest-utils-1.2.0.tar.gz", "has_sig": false, "md5_digest": "3cd2457e79f6eb87b3f335ca4d30e0d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67031, "upload_time": "2018-06-21T08:41:31", "url": "https://files.pythonhosted.org/packages/9f/2d/a1db246798c7709bc54ed87da1faaddafe09e72356c246192d583cd23936/ioppytest-utils-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "7bb53c53019e1e495e9459cfbd0e6bd3", "sha256": "01f2de6cc13443cfb92f469daff3430122fcd753e410bb3d7252838f15843237" }, "downloads": -1, "filename": "ioppytest_utils-1.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "7bb53c53019e1e495e9459cfbd0e6bd3", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 83430, "upload_time": "2018-06-21T10:15:27", "url": "https://files.pythonhosted.org/packages/7d/b3/15a3690e0a6dfd62ca554d65cea9c498944b22f2f8eff4e9dc2e411016c6/ioppytest_utils-1.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "92b5a6ba09005678b91cd8a48e5ae9a6", "sha256": "33629d0c4f028c54c11b3cd4605691b3b36dcc22105f36eeecf8d443d1ab51cf" }, "downloads": -1, "filename": "ioppytest-utils-1.2.1.tar.gz", "has_sig": false, "md5_digest": "92b5a6ba09005678b91cd8a48e5ae9a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66775, "upload_time": "2018-06-21T10:15:15", "url": "https://files.pythonhosted.org/packages/1a/48/8d0fb1fe81c5587726e193e52f367536b8162ec458288441bfad09494027/ioppytest-utils-1.2.1.tar.gz" } ], "1.2.10": [ { "comment_text": "", "digests": { "md5": "b8df366e7aa0ca24f2c3a498ac7ff7b1", "sha256": "1c7e00d5839ecd5024b678bba208d9da04f1c198a14fa70b94935ec5e86bffc9" }, "downloads": -1, "filename": "ioppytest_utils-1.2.10-py3-none-any.whl", "has_sig": false, "md5_digest": "b8df366e7aa0ca24f2c3a498ac7ff7b1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 65801, "upload_time": "2018-10-04T14:34:57", "url": "https://files.pythonhosted.org/packages/86/ea/18ac89f6a59096eeb73d308fe97180f3c02f90d16a29591fc31aff310864/ioppytest_utils-1.2.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a454510c142d0d801ded14e3fe1d803", "sha256": "206c0ed5d70450e6ae3ed9d878627d420da65bd8800fb9704e6a520ce67029ac" }, "downloads": -1, "filename": "ioppytest-utils-1.2.10.tar.gz", "has_sig": false, "md5_digest": "4a454510c142d0d801ded14e3fe1d803", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73860, "upload_time": "2018-10-04T14:34:59", "url": "https://files.pythonhosted.org/packages/10/f5/8a2c21de5f4211d69926343f161db3855bfa5eb6cd147a4b5cfd23a0be48/ioppytest-utils-1.2.10.tar.gz" } ], "1.2.11": [ { "comment_text": "", "digests": { "md5": "948113a9e3f7a7ce120b271e12edc212", "sha256": "2d42e87d7358be09298bedee8a8ffd8a234ea692c12cb2fc673fe87eb777b4b8" }, "downloads": -1, "filename": "ioppytest_utils-1.2.11-py3-none-any.whl", "has_sig": false, "md5_digest": "948113a9e3f7a7ce120b271e12edc212", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 65880, "upload_time": "2018-11-08T16:29:03", "url": "https://files.pythonhosted.org/packages/34/c2/3344a01027db5f34b9834ffe6eb3565d1fc17431c4ae0d87557b4af3de9f/ioppytest_utils-1.2.11-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bcca6dd8c01de2082eb1402bf0b39a4a", "sha256": "8c6a7355e49cbdeb830a47ea4f1805c1feed9d838115ed31efe57fca0f8ec63d" }, "downloads": -1, "filename": "ioppytest-utils-1.2.11.tar.gz", "has_sig": false, "md5_digest": "bcca6dd8c01de2082eb1402bf0b39a4a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 74017, "upload_time": "2018-11-08T16:29:14", "url": "https://files.pythonhosted.org/packages/64/9f/3a870b3180e315ac225465085b209e24a3d658970b4066479a38b0a91353/ioppytest-utils-1.2.11.tar.gz" } ], "1.2.12": [ { "comment_text": "", "digests": { "md5": "a68c80ec4c60c255f8a2501ac3ab1dab", "sha256": "f7b909cb2eb86291fe8a98ea9eb38b96e3bbd2c234c5d09d002fdfdf1ba82249" }, "downloads": -1, "filename": "ioppytest_utils-1.2.12-py3-none-any.whl", "has_sig": false, "md5_digest": "a68c80ec4c60c255f8a2501ac3ab1dab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 65955, "upload_time": "2018-11-08T16:46:06", "url": "https://files.pythonhosted.org/packages/52/b6/1c7fb2f815fbf0810cb3249e561adac6330ae7707753e7165c0f15aeb53a/ioppytest_utils-1.2.12-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b5407d330f1c13a5dd449bcf91ced68e", "sha256": "560a8932a09e489fafcce1bc1231c32ca92b1488703b3ccd47a5517c8c7db081" }, "downloads": -1, "filename": "ioppytest-utils-1.2.12.tar.gz", "has_sig": false, "md5_digest": "b5407d330f1c13a5dd449bcf91ced68e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 74013, "upload_time": "2018-11-08T16:46:09", "url": "https://files.pythonhosted.org/packages/1c/c8/fb0319da730714604c28ce2899e1522b9a7604ab32e60ae9995427801b83/ioppytest-utils-1.2.12.tar.gz" } ], "1.2.13": [ { "comment_text": "", "digests": { "md5": "5c6d85a65d40caf68930460451182b0b", "sha256": "2a4f6de795e4c6f623e0be3a3c8075e4c9b8bf353c22df0f66b7cd5a3d94b9fb" }, "downloads": -1, "filename": "ioppytest-utils-1.2.13.macosx-10.6-intel.tar.gz", "has_sig": false, "md5_digest": "5c6d85a65d40caf68930460451182b0b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 130351, "upload_time": "2018-11-08T16:49:58", "url": "https://files.pythonhosted.org/packages/70/5a/f49ad0c7c01f6d118efcf284de050c1ad25808b657a5a27073a9ccdab02e/ioppytest-utils-1.2.13.macosx-10.6-intel.tar.gz" }, { "comment_text": "", "digests": { "md5": "43b5bbc84bffebf9c72ff909a7769c13", "sha256": "416d03195bc84080544f4c2b52604b869c8192f06120f7952709f4ada0a010eb" }, "downloads": -1, "filename": "ioppytest_utils-1.2.13-py3-none-any.whl", "has_sig": false, "md5_digest": "43b5bbc84bffebf9c72ff909a7769c13", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 65954, "upload_time": "2018-11-08T16:49:55", "url": "https://files.pythonhosted.org/packages/46/a6/afdf7b0d11df3e8367b7853ceecccb3cd417ef6242f63e37009b9c575b6c/ioppytest_utils-1.2.13-py3-none-any.whl" } ], "1.2.14": [ { "comment_text": "", "digests": { "md5": "7803b7d3d13a907768838b5a567a0ce1", "sha256": "572506d724426b86a65d1663ddf88f949e004c8e1e0b987d78ecbf0b06e19cba" }, "downloads": -1, "filename": "ioppytest-utils-1.2.14.macosx-10.6-intel.tar.gz", "has_sig": false, "md5_digest": "7803b7d3d13a907768838b5a567a0ce1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 130492, "upload_time": "2018-12-05T10:40:14", "url": "https://files.pythonhosted.org/packages/d4/a3/d7d0e79a883dd1981e87ca159ae7f6dc8895834fea6d78b03877ba9ba528/ioppytest-utils-1.2.14.macosx-10.6-intel.tar.gz" }, { "comment_text": "", "digests": { "md5": "e105b7c24e8f96385e94828db74d52da", "sha256": "1bbaca2291105a989cf28d83f78e8e17f9e1e108f1fc7534a3b05209b5585f23" }, "downloads": -1, "filename": "ioppytest_utils-1.2.14-py3-none-any.whl", "has_sig": false, "md5_digest": "e105b7c24e8f96385e94828db74d52da", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 65996, "upload_time": "2018-12-05T10:40:12", "url": "https://files.pythonhosted.org/packages/3e/f4/675b92ff56552bd7e02ba31d168f1b4861baa8e8d19ceb344bb6f8e74359/ioppytest_utils-1.2.14-py3-none-any.whl" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "f2952310418503fee56e09919d70c4eb", "sha256": "c4a5b5413a4b627b33e5c941d15fe8ca6930c3b0fad385a5a16fc75bd620e689" }, "downloads": -1, "filename": "ioppytest_utils-1.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "f2952310418503fee56e09919d70c4eb", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 51402, "upload_time": "2018-06-21T12:32:14", "url": "https://files.pythonhosted.org/packages/2d/02/cb9b0e42a7a56ea87bca59a93010134adee9a43dd65ed6749907b8301de0/ioppytest_utils-1.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "918e9b1b381e2bb87b90a23e5a173794", "sha256": "e233b13de337f1d96f32ec278c03fbc885663a0dd0c6b9ec52d17647a7a89604" }, "downloads": -1, "filename": "ioppytest-utils-1.2.2.tar.gz", "has_sig": false, "md5_digest": "918e9b1b381e2bb87b90a23e5a173794", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56390, "upload_time": "2018-06-21T12:32:35", "url": "https://files.pythonhosted.org/packages/fd/00/b96d66fb7d95d018c83fa5b99c820e3f106984ae3488d377c010517be680/ioppytest-utils-1.2.2.tar.gz" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "8fdf36a054a250856a1315b4ecbbdd3a", "sha256": "2a03d61435da5332731ab2be46244a44b1c3defeb8ca195f50dd9e3e6658977a" }, "downloads": -1, "filename": "ioppytest_utils-1.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "8fdf36a054a250856a1315b4ecbbdd3a", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 63314, "upload_time": "2018-06-22T16:46:06", "url": "https://files.pythonhosted.org/packages/45/91/e541f6e8fe9f192d1ddcd1a7e2a061638533416e30c414ccff6d69650357/ioppytest_utils-1.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bfb1c985b152bf9b3805da2028c71d8a", "sha256": "190d7a3e4e572d02ea743954adfc4c1231539e24e2c92de85fdc510f42ce9dbe" }, "downloads": -1, "filename": "ioppytest-utils-1.2.3.tar.gz", "has_sig": false, "md5_digest": "bfb1c985b152bf9b3805da2028c71d8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67126, "upload_time": "2018-06-22T16:45:56", "url": "https://files.pythonhosted.org/packages/81/94/9bdca0c30fd8a05eb85d0e5dfe103b541726f1efcc5032ef9499458d1241/ioppytest-utils-1.2.3.tar.gz" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "1d96d8e1054391ea6921d32c6684dc02", "sha256": "185a61f8f7b349b6c3f9ada1e27fc2b90b15bf5272873e5b8e31448390478e0c" }, "downloads": -1, "filename": "ioppytest_utils-1.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "1d96d8e1054391ea6921d32c6684dc02", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 63659, "upload_time": "2018-06-28T16:44:50", "url": "https://files.pythonhosted.org/packages/51/41/7755dbb3d8d2d355dee4f4b0d0d6c887948ee71ce602fe4013ee11591094/ioppytest_utils-1.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "618d413008881daee32e3034af9c9129", "sha256": "65b8bfba46598a5af387d47307ef37f7fef0ff168fc6959d6b94e43181a4ac5b" }, "downloads": -1, "filename": "ioppytest-utils-1.2.4.tar.gz", "has_sig": false, "md5_digest": "618d413008881daee32e3034af9c9129", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67509, "upload_time": "2018-06-28T16:44:41", "url": "https://files.pythonhosted.org/packages/d4/7e/43fb12cfc357db2bcb847fcb65457b60eb93a48e22dd954cdc9c68a97230/ioppytest-utils-1.2.4.tar.gz" } ], "1.2.5": [ { "comment_text": "", "digests": { "md5": "465f720d8c5558167cde488db243e705", "sha256": "6147b45023887a1c9b10cf175d6ff7442ee8e61a7b25fa95af7a7bb74e8dd3fe" }, "downloads": -1, "filename": "ioppytest_utils-1.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "465f720d8c5558167cde488db243e705", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 63788, "upload_time": "2018-07-09T13:10:27", "url": "https://files.pythonhosted.org/packages/40/3e/06d04157b061c8a03b3d2cbc425982ed2c5a5a66728276754fe0fa9a6f74/ioppytest_utils-1.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b8b061b1c24ea32c5164ef67864d6c45", "sha256": "80541441b081820afeabc927e1cbb0adb9470e5165da8113f3ca37b16eab867e" }, "downloads": -1, "filename": "ioppytest-utils-1.2.5.tar.gz", "has_sig": false, "md5_digest": "b8b061b1c24ea32c5164ef67864d6c45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67618, "upload_time": "2018-07-09T13:10:18", "url": "https://files.pythonhosted.org/packages/22/de/8968d93b2aaf9242c98e4907128ec5e69bdadf60061a17da145bffcc01c3/ioppytest-utils-1.2.5.tar.gz" } ], "1.2.6": [ { "comment_text": "", "digests": { "md5": "deff17f2e68f36426a01909b181b33b7", "sha256": "6f73a220e4100f94e4521572bcce76e40f9d8ac827cea87e53082fe7bd897198" }, "downloads": -1, "filename": "ioppytest_utils-1.2.6-py3-none-any.whl", "has_sig": false, "md5_digest": "deff17f2e68f36426a01909b181b33b7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 63828, "upload_time": "2018-07-10T08:26:25", "url": "https://files.pythonhosted.org/packages/3c/2b/a72186c49c8d3d9dfe89f0fdbfda9bdb1d7f2d83d4f5ae42c17ca03c12a4/ioppytest_utils-1.2.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "082107866fd07c8b8c6a00635699795c", "sha256": "4947c423bdc3abcf3e41412c294dc002f298218f3518b61186b8a24b5e28ffed" }, "downloads": -1, "filename": "ioppytest-utils-1.2.6.tar.gz", "has_sig": false, "md5_digest": "082107866fd07c8b8c6a00635699795c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 67782, "upload_time": "2018-07-10T08:26:26", "url": "https://files.pythonhosted.org/packages/f7/07/0d8de642716ba59c228145ee7af74861cb37b9bc6658f78681f2bcbbe6f2/ioppytest-utils-1.2.6.tar.gz" } ], "1.2.7": [ { "comment_text": "", "digests": { "md5": "93c08987bf9d12cbd22385ce49af7178", "sha256": "dfe208c75c3ce3a1919a869ca8de07b0ae15dbb7756e22e66fc4bd7f5c092b47" }, "downloads": -1, "filename": "ioppytest_utils-1.2.7-py3-none-any.whl", "has_sig": false, "md5_digest": "93c08987bf9d12cbd22385ce49af7178", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 64070, "upload_time": "2018-10-01T14:33:37", "url": "https://files.pythonhosted.org/packages/02/b8/97ae302b1aca28a9617a3a450db5ca2302a682f2422ee5ffe38b0021585f/ioppytest_utils-1.2.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "aa5f1f396cb3d51c47cfcb10cf60352e", "sha256": "f1058de53b80b1e4b8eed7f6462915caf6fb0a1a08b11e2f087a6de0ca64dcd6" }, "downloads": -1, "filename": "ioppytest-utils-1.2.7.tar.gz", "has_sig": false, "md5_digest": "aa5f1f396cb3d51c47cfcb10cf60352e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68010, "upload_time": "2018-10-01T14:33:39", "url": "https://files.pythonhosted.org/packages/1d/3a/da167342ff4fd236354f992e0624ad3551c35d02e71e6c36bd0eb16e7ea8/ioppytest-utils-1.2.7.tar.gz" } ], "1.2.8": [ { "comment_text": "", "digests": { "md5": "69a511e3e7c5db093cff1407ba92ba38", "sha256": "4b6b01c3160bdabd0ac5eac8673001a86eb506b4f34cab4fb7595c5f81ed68a7" }, "downloads": -1, "filename": "ioppytest_utils-1.2.8-py3-none-any.whl", "has_sig": false, "md5_digest": "69a511e3e7c5db093cff1407ba92ba38", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 65725, "upload_time": "2018-10-03T09:37:35", "url": "https://files.pythonhosted.org/packages/7f/b3/d117c8556519eafa60641808c9ea166f77bfc3f53d0ff2581ee49783eb28/ioppytest_utils-1.2.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1f607b9134139f88abb59d42bb520b12", "sha256": "6e49db8bb4b2e3464e1696060b6277a5ef27890279d2774ab87a852d5dc7b797" }, "downloads": -1, "filename": "ioppytest-utils-1.2.8.tar.gz", "has_sig": false, "md5_digest": "1f607b9134139f88abb59d42bb520b12", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73794, "upload_time": "2018-10-03T09:37:37", "url": "https://files.pythonhosted.org/packages/0e/7e/c1af7be118053790a86f84ac19e84fdab40d47c473a6043f0e7c0fc50d13/ioppytest-utils-1.2.8.tar.gz" } ], "1.2.9": [ { "comment_text": "", "digests": { "md5": "e09da6241232b04f4d146c30aa78418f", "sha256": "25ca3aee54e13a89bfa17d724463e7caf67d6d858660dcad312cd76fae9a5558" }, "downloads": -1, "filename": "ioppytest_utils-1.2.9-py3-none-any.whl", "has_sig": false, "md5_digest": "e09da6241232b04f4d146c30aa78418f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 65769, "upload_time": "2018-10-04T09:13:26", "url": "https://files.pythonhosted.org/packages/3c/d0/7b258cc00a92918864c2c6bbc61bddff6248510a4d2feb4955c89d68e86e/ioppytest_utils-1.2.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8947183929e694839d6bed4ec6225cdf", "sha256": "e73269d2eaa95af103a7c62e153971d3c74a8f3b0ce9cdb80b190fcfc9564a73" }, "downloads": -1, "filename": "ioppytest-utils-1.2.9.tar.gz", "has_sig": false, "md5_digest": "8947183929e694839d6bed4ec6225cdf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73841, "upload_time": "2018-10-04T09:13:28", "url": "https://files.pythonhosted.org/packages/8a/e9/c48151a311ff31e95e87b6a17cf3db7f44ca1e0f1b0ff668c8dec9bc0570/ioppytest-utils-1.2.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7803b7d3d13a907768838b5a567a0ce1", "sha256": "572506d724426b86a65d1663ddf88f949e004c8e1e0b987d78ecbf0b06e19cba" }, "downloads": -1, "filename": "ioppytest-utils-1.2.14.macosx-10.6-intel.tar.gz", "has_sig": false, "md5_digest": "7803b7d3d13a907768838b5a567a0ce1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 130492, "upload_time": "2018-12-05T10:40:14", "url": "https://files.pythonhosted.org/packages/d4/a3/d7d0e79a883dd1981e87ca159ae7f6dc8895834fea6d78b03877ba9ba528/ioppytest-utils-1.2.14.macosx-10.6-intel.tar.gz" }, { "comment_text": "", "digests": { "md5": "e105b7c24e8f96385e94828db74d52da", "sha256": "1bbaca2291105a989cf28d83f78e8e17f9e1e108f1fc7534a3b05209b5585f23" }, "downloads": -1, "filename": "ioppytest_utils-1.2.14-py3-none-any.whl", "has_sig": false, "md5_digest": "e105b7c24e8f96385e94828db74d52da", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 65996, "upload_time": "2018-12-05T10:40:12", "url": "https://files.pythonhosted.org/packages/3e/f4/675b92ff56552bd7e02ba31d168f1b4861baa8e8d19ceb344bb6f8e74359/ioppytest_utils-1.2.14-py3-none-any.whl" } ] }