testing
This commit is contained in:
parent
fd38d807e7
commit
cf883ca8ad
37
clean.py
Normal file
37
clean.py
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import sys
|
||||||
|
|
||||||
|
from hcloud import Client
|
||||||
|
|
||||||
|
prefix = "444380"
|
||||||
|
ssh_key_name = prefix+"-webservice-ssh-key"
|
||||||
|
subnet_name = prefix+"-webservice-subnet"
|
||||||
|
server_name = prefix+"-webservice-server"
|
||||||
|
load_balancer_name = prefix+"-webservice-loadbalancer"
|
||||||
|
|
||||||
|
public_key = sys.argv[2]
|
||||||
|
token = sys.argv[1]
|
||||||
|
|
||||||
|
server_count = 5
|
||||||
|
|
||||||
|
client = Client(
|
||||||
|
token=token
|
||||||
|
)
|
||||||
|
|
||||||
|
print("Removing servers...")
|
||||||
|
for i in range(server_count):
|
||||||
|
action = client.servers.delete(client.servers.get_by_name(f"{server_name}-{i+1}"))
|
||||||
|
action.wait_until_finished()
|
||||||
|
print("Servers removed")
|
||||||
|
|
||||||
|
print("Removing load balancer...")
|
||||||
|
action = client.load_balancers.delete(client.load_balancers.get_by_name(load_balancer_name))
|
||||||
|
print("Load balancer removed")
|
||||||
|
|
||||||
|
print("Removing subnet...")
|
||||||
|
action = client.networks.delete(client.networks.get_by_name(subnet_name))
|
||||||
|
print("Subnet removed")
|
||||||
|
|
||||||
|
print("Removing ssh-key...")
|
||||||
|
action = client.ssh_keys.delete(client.ssh_keys.get_by_name(ssh_key_name))
|
||||||
|
print("Ssh-key removed")
|
||||||
|
|
3
clean.sh
Executable file
3
clean.sh
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
source venv/bin/activate
|
||||||
|
python3 clean.py <HETZNER_TOKEN> <SSH_PUBLIC_KEY>
|
@ -17,12 +17,12 @@ prefix = "444380"
|
|||||||
ssh_key_name = prefix+"-webservice-ssh-key"
|
ssh_key_name = prefix+"-webservice-ssh-key"
|
||||||
subnet_name = prefix+"-webservice-subnet"
|
subnet_name = prefix+"-webservice-subnet"
|
||||||
server_name = prefix+"-webservice-server"
|
server_name = prefix+"-webservice-server"
|
||||||
load_balancer_name = prefix+"webservice-loadbalancer"
|
load_balancer_name = prefix+"-webservice-loadbalancer"
|
||||||
|
|
||||||
public_key = sys.argv[2]
|
public_key = sys.argv[2]
|
||||||
token = sys.argv[1]
|
token = sys.argv[1]
|
||||||
|
|
||||||
server_count = 2
|
server_count = 5
|
||||||
|
|
||||||
CLOUD_INIT = """#cloud-config
|
CLOUD_INIT = """#cloud-config
|
||||||
runcmd:
|
runcmd:
|
||||||
|
168
test.ipynb
Normal file
168
test.ipynb
Normal file
@ -0,0 +1,168 @@
|
|||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"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.174.58: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": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"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": {
|
||||||
|
"language_info": {
|
||||||
|
"name": "python"
|
||||||
|
},
|
||||||
|
"orig_nbformat": 4
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 2
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user