From 391cfb7d8c0cecce2ca86e57903e545a8a195b75 Mon Sep 17 00:00:00 2001 From: Aleksandra Jonas Date: Sun, 29 Jan 2023 23:54:19 +0100 Subject: [PATCH] final --- README.md | 11 + checkin.ipynb | 664 ++++++++++++++++++++++++++++++++++++++++++++++++++ main.py | 6 +- 3 files changed, 678 insertions(+), 3 deletions(-) create mode 100644 README.md create mode 100644 checkin.ipynb diff --git a/README.md b/README.md new file mode 100644 index 0000000..ab0c66e --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# Public cloud 4.1/4.3 HETZNER + +Please, create remember to include the Hetzner token in the `main.py` file's code. + +## Run + +Go to the project directory and run the following in terminal: + +```bash +python3 main.py +``` diff --git a/checkin.ipynb b/checkin.ipynb new file mode 100644 index 0000000..0229c1f --- /dev/null +++ b/checkin.ipynb @@ -0,0 +1,664 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 0\treqs: 5\tmean time: 0.070s\tfast\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 0\treqs: 5\tmean time: 0.074s\tfast\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 1\treqs: 5\tmean time: 0.070s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 0\treqs: 5\tmean time: 0.075s\tfast\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 1\treqs: 5\tmean time: 0.072s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 0\treqs: 5\tmean time: 0.069s\tfast\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 2\treqs: 5\tmean time: 0.067s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 1\treqs: 5\tmean time: 0.068s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 0\treqs: 5\tmean time: 0.076s\tfast\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 2\treqs: 5\tmean time: 0.069s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 1\treqs: 5\tmean time: 0.073s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 0\treqs: 5\tmean time: 0.071s\tfast\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 3\treqs: 5\tmean time: 0.068s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 2\treqs: 5\tmean time: 0.077s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 1\treqs: 5\tmean time: 0.067s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 0\treqs: 5\tmean time: 0.059s\tfast\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 3\treqs: 5\tmean time: 0.062s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 2\treqs: 5\tmean time: 0.068s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 1\treqs: 5\tmean time: 0.074s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 4\treqs: 5\tmean time: 0.076s\t\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 0\treqs: 5\tmean time: 0.056s\tfast\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 3\treqs: 5\tmean time: 0.060s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 2\treqs: 5\tmean time: 0.064s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 1\treqs: 5\tmean time: 0.081s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 4\treqs: 5\tmean time: 0.075s\t\n", + "INFO:root:Thread: 0\treqs: 5\tmean time: 0.065s\tfast\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 3\treqs: 5\tmean time: 0.064s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 2\treqs: 5\tmean time: 0.066s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 1\treqs: 5\tmean time: 0.073s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 4\treqs: 5\tmean time: 0.060s\t\n", + "INFO:root:Thread: 0\treqs: 5\tmean time: 0.059s\tfast\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 4\treqs: 2\tmean time: 0.079s\t\n", + "INFO:root:Thread: 3\treqs: 5\tmean time: 0.066s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 2\treqs: 5\tmean time: 0.072s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 1\treqs: 5\tmean time: 0.066s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 3\treqs: 3\tmean time: 0.061s\t\n", + "INFO:root:Thread: 0\treqs: 5\tmean time: 0.061s\tfast\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 2\treqs: 5\tmean time: 0.064s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 1\treqs: 5\tmean time: 0.067s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 2\treqs: 4\tmean time: 0.058s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 0\treqs: 5\tmean time: 0.053s\tfast\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 1\treqs: 5\tmean time: 0.053s\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 0\treqs: 5\tmean time: 0.059s\tfast\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 0\treqs: 5\tmean time: 0.064s\tfast\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 0\treqs: 5\tmean time: 0.062s\tfast\t\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "ERROR:root:wrong status code from webservice\n", + "INFO:root:Thread: 0\treqs: 4\tmean time: 0.072s\tfast\t\n" + ] + } + ], + "source": [ + "import requests\n", + "import random\n", + "import math\n", + "import time\n", + "import threading\n", + "import logging\n", + "logging.getLogger().setLevel(logging.INFO)\n", + "\n", + "\n", + "API_URL=\"http://95.217.175.172:8080\"\n", + "\n", + "\n", + "UNIT = 5.0 # secs\n", + "\n", + "# Pre generated primes\n", + "first_primes_list = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29,\n", + " 31, 37, 41, 43, 47, 53, 59, 61, 67,\n", + " 71, 73, 79, 83, 89, 97, 101, 103,\n", + " 107, 109, 113, 127, 131, 137, 139,\n", + " 149, 151, 157, 163, 167, 173, 179,\n", + " 181, 191, 193, 197, 199, 211, 223,\n", + " 227, 229, 233, 239, 241, 251, 257,\n", + " 263, 269, 271, 277, 281, 283, 293,\n", + " 307, 311, 313, 317, 331, 337, 347, 349]\n", + "\n", + "\n", + "def nBitRandom(n):\n", + " return random.randrange(2**(n-1)+1, 2**n - 1)\n", + " \n", + "def getLowLevelPrime(n):\n", + " '''Generate a prime candidate divisible\n", + " by first primes'''\n", + " while True:\n", + " # Obtain a random number\n", + " pc = nBitRandom(n)\n", + " \n", + " # Test divisibility by pre-generated\n", + " # primes\n", + " for divisor in first_primes_list:\n", + " if pc % divisor == 0 and divisor**2 <= pc:\n", + " break\n", + " else: return pc\n", + " \n", + "def isMillerRabinPassed(mrc):\n", + " '''Run 20 iterations of Rabin Miller Primality test'''\n", + " maxDivisionsByTwo = 0\n", + " ec = mrc-1\n", + " while ec % 2 == 0:\n", + " ec >>= 1\n", + " maxDivisionsByTwo += 1\n", + " assert(2**maxDivisionsByTwo * ec == mrc-1)\n", + " \n", + " def trialComposite(round_tester):\n", + " if pow(round_tester, ec, mrc) == 1:\n", + " return False\n", + " for i in range(maxDivisionsByTwo):\n", + " if pow(round_tester, 2**i * ec, mrc) == mrc-1:\n", + " return False\n", + " return True\n", + " \n", + " # Set number of trials here\n", + " numberOfRabinTrials = 20\n", + " for i in range(numberOfRabinTrials):\n", + " round_tester = random.randrange(2, mrc)\n", + " if trialComposite(round_tester):\n", + " return False\n", + " return True\n", + " \n", + "def random_large_prime(bits):\n", + " while True:\n", + " prime_candidate = getLowLevelPrime(bits)\n", + " if not isMillerRabinPassed(prime_candidate):\n", + " continue\n", + " else:\n", + " return prime_candidate\n", + "\n", + "def thread_function(i, fast, timeout):\n", + " start = time.time()\n", + "\n", + " c = 5 # bits: 20: 200ms; 21: 350ms; 22: 700ms 23: 1.5s; 25: 6s; 26: 10s; 27: 24s\n", + " bits = 19 if fast else 23\n", + " last_report = time.time()\n", + " processing_time = 0.0\n", + " reqs = 0\n", + " while True:\n", + " iter_start = time.time()\n", + " if iter_start - start > timeout:\n", + " logging.info(\"Thread: %d\\treqs: %d\\tmean time: %.3fs\\t%s\"%(i, reqs, processing_time/reqs if reqs>0 else 0.0, \"fast\\t\" if fast else \"\"))\n", + " results[i][iter_start] = processing_time/reqs if reqs>0 else 0.0\n", + " return\n", + " if iter_start - last_report > UNIT/2:\n", + " if len(results[i])%2 == 0:\n", + " logging.info(\"Thread: %d\\treqs: %d\\tmean time: %.3fs\\t%s\"%(i, reqs, processing_time/reqs if reqs>0 else 0.0, \"fast\\t\" if fast else \"\"))\n", + " results[i][iter_start] = processing_time/reqs if reqs>0 else 0.0\n", + " processing_time = 0.0\n", + " reqs = 0\n", + " last_report=iter_start\n", + "\n", + " factors = [random_large_prime(bits) for i in range(c)]\n", + " factors.sort()\n", + " n=math.prod(factors)\n", + "\n", + " r = requests.get(API_URL+'/factors/%d'%(n))\n", + " if r.status_code != 200:\n", + " logging.error(\"wrong status code from webservice\")\n", + " else:\n", + " result = r.json()\n", + " if result != factors:\n", + " logging.error(\"Wrong factors\")\n", + "\n", + " processing_time+=time.time() - iter_start\n", + " reqs+=1\n", + " time.sleep(0.5)\n", + "\n", + "START = time.time()\n", + "slow_threads = 4\n", + "\n", + "results = [ {} for i in range(slow_threads+1)]\n", + "\n", + "t0 = threading.Thread(target=thread_function, args=(0, True, (5 + slow_threads*3) * UNIT))\n", + "t0.start()\n", + "time.sleep(2 * UNIT)\n", + "for i in range(slow_threads):\n", + " t = threading.Thread(target=thread_function, args=(i+1, False, (slow_threads-i) * 3 * UNIT))\n", + " t.start()\n", + " time.sleep(2 * UNIT)\n", + "\n", + "t0.join()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import scipy.stats as stats\n", + "mu = 0\n", + "std = 1\n", + "for i, result in enumerate(results):\n", + " x = [(x - START)/UNIT for x in result.keys()]\n", + " y = result.values()\n", + " plt.plot(x, y, label=\"t%d\"%(i,))\n", + "\n", + "plt.legend()\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.9" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "736888a2fe7f30701e403545cd826a09e7b18a72829f1395b89a416eae077a79" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/main.py b/main.py index 6778113..7705272 100644 --- a/main.py +++ b/main.py @@ -27,7 +27,7 @@ with open("token.txt", "r") as file: hetzner_token = file.read().strip() client = Client(token=hetzner_token) -""" + vnet = client.networks.create( name=vnet_name, ip_range='10.10.10.0/24', @@ -37,8 +37,8 @@ vnet = client.networks.create( type='cloud') ] ) -""" -vnet = client.networks.get_by_name(vnet_name) + +# vnet = client.networks.get_by_name(vnet_name) print("Vnet: done") #ssh_key = client.ssh_keys.create(name=ssh_name, public_key=ssh_key_text)