Compare commits

...
13 Commits
Author SHA1 Message Date
Brian Bjarke Jensen 1760fc8136 Merge pull request 'added data queue' (#9) from main into release
Docker / Publish (push) Successful in 13s
Docker / Test (push) Successful in 39s
Reviewed-on: http://192.168.1.2:3000/brian/bandwidth_probing/pulls/9
2023-07-12 12:59:05 +02:00
brb cffcac8b37 added data queue
pipeline / Test (push) Successful in 39s
2023-07-12 12:54:52 +02:00
brb 907958484c removed unused step
pipeline / Test (push) Successful in 39s
Docker / Test (push) Successful in 39s
Docker / Publish (push) Successful in 8s
2023-07-12 12:08:42 +02:00
brb 9a1724742a added code to extract version number
Docker / Test (push) Successful in 39s
Docker / Publish (push) Successful in 7s
2023-07-12 11:54:31 +02:00
brb 20023ca9a9 added code to print version number
Docker / Publish (push) Failing after 6s
Docker / Test (push) Successful in 39s
2023-07-12 11:49:00 +02:00
brb 478d258a31 added code to extract version number
Docker / Test (push) Successful in 40s
Docker / Publish (push) Failing after 7s
2023-07-12 11:45:18 +02:00
brb eb8b1456ab added code to extract version number
Docker / Test (push) Successful in 40s
Docker / Publish (push) Failing after 5s
2023-07-12 11:39:44 +02:00
brb 4c99b6a1af testing how to set env vars
Docker / Test (push) Successful in 38s
Docker / Publish (push) Failing after 4s
2023-07-12 11:32:50 +02:00
brb 0becddf81f added code to extract version number
Docker / Test (push) Successful in 38s
Docker / Publish (push) Failing after 5s
2023-07-12 11:29:26 +02:00
brb 233c0ef977 added code to extract version number
Docker / Test (push) Successful in 40s
Docker / Publish (push) Failing after 5s
2023-07-12 11:27:46 +02:00
brb 11e3c866de added code to extract version number
Docker / Publish (push) Failing after 5s
Docker / Test (push) Successful in 39s
2023-07-12 11:06:29 +02:00
brb ce43e1fa38 added code to extract version number
Docker / Test (push) Successful in 39s
Docker / Publish (push) Failing after 5s
2023-07-12 11:01:40 +02:00
brb 9c9722615f added code to extract version number
Docker / Test (push) Successful in 38s
Docker / Publish (push) Failing after 5s
2023-07-12 10:42:15 +02:00
3 changed files with 47 additions and 38 deletions
+1 -25
View File
@@ -25,28 +25,4 @@ jobs:
- name: PEP8 check - name: PEP8 check
run: flake8 ./code --benchmark --exit-zero run: flake8 ./code --benchmark --exit-zero
- name: Type check - name: Type check
run: mypy ./code run: mypy ./code
# publish:
# name: Publish
# runs-on: ubuntu-latest
# needs: [test]
# if: gitea.ref == 'refs/heads/release'
# env:
# repository_host: 192.168.1.2:5000
# repository_name: ${{ gitea.repository }}
# repository_version: v1.0
# steps:
# - uses: actions/checkout@v3
# - name: Build
# run: |
# echo "> docker build . --file Dockerfile --tag ${repository_name}:${repository_version}"
# docker build . --file Dockerfile --tag ${repository_name}:${repository_version}
# - name: Tag
# run: |
# echo "> docker tag ${repository_name}:${repository_version} ${repository_host}/${repository_name}:${repository_version}"
# docker tag ${repository_name}:${repository_version} ${repository_host}/${repository_name}:${repository_version}
# - name: Push
# run: |
# echo "> docker push ${repository_host}/${repository_name}:${repository_version}"
# docker push ${repository_host}/${repository_name}:${repository_version}
+12 -4
View File
@@ -32,13 +32,21 @@ jobs:
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- -
name: Get Version name: Set Environment Variables
id: get_version id: vars
run: echo ::set-output name=VERSION::${gitea.ref_name/refs\/tags\//} env:
repository: ${{gitea.repository}}
ref_name: ${{gitea.ref_name}}
run: |
echo $repository
echo ::set-output name=OWNER::${repository#/*}
echo ::set-output name=PROJECT::${repository#*/}
echo $ref_name
echo ::set-output name=TAG::${ref_name#refs/*/}
- -
name: Push Image name: Push Image
uses: docker/build-push-action@v2 uses: docker/build-push-action@v2
with: with:
context: . context: .
push: true push: true
tags: 192.168.1.2:5000/${{gitea.repository}}:${{steps.get_version.outputs.VERSION}} tags: 192.168.1.2:5000/${{gitea.repository}}:${{steps.vars.outputs.TAG}}
+34 -9
View File
@@ -1,8 +1,10 @@
import time import time
import logging import logging
import os import os
import json
from configparser import ConfigParser from configparser import ConfigParser
from pathlib import Path from pathlib import Path
from queue import Queue
from initialise_app import initialise_app from initialise_app import initialise_app
from bandwidth import measure as measure_bandwidth from bandwidth import measure as measure_bandwidth
from database import connect from database import connect
@@ -29,29 +31,50 @@ def event(
# load environment variables # load environment variables
replicates = int(os.getenv('REPLICATES', default=REPLICATES)) replicates = int(os.getenv('REPLICATES', default=REPLICATES))
user_id = int(os.getenv('USER_ID', default=USER_ID)) user_id = int(os.getenv('USER_ID', default=USER_ID))
# setup database connection # setup data queue
db = connect() data_queue: Queue = Queue()
# run event # run event
for rep_num in range(replicates): for rep_num in range(replicates):
logging.info(f'running replicate {rep_num}') logging.debug(f'running replicate {rep_num+1} of {replicates}')
# do measurement # do measurement
try: try:
res = measure_bandwidth() data = measure_bandwidth()
except Exception as e: except Exception as e:
logging.error(f'failed to measure bandwidth: {e}') logging.error(f'failed to measure bandwidth: {e}')
continue continue
# upload result to database # add data to queue
data_queue.put(data)
# polite pause
time.sleep(1)
# check if queue should be flushed
queue_size = data_queue.qsize()
if queue_size == 0:
logging.debug('queue empty, continuing')
return
# flush queue to database
db = connect()
for i in range(queue_size):
# get data
data = data_queue.get()
# prepare payload
payload_dict = { payload_dict = {
'user_id': user_id, 'user_id': user_id,
'data': res 'data': data
} }
# send to database
try: try:
db_id = db.insert_one(payload_dict).inserted_id db_id = db.insert_one(payload_dict).inserted_id
except Exception as e: except Exception as e:
logging.error(f'failed sending results to database: {e}') logging.error('failed sending data to database')
logging.info(
'failed pushing to database:\n'
f'{json.dumps(payload_dict, indent=4)}\n'
f'with error: {e}'
)
data_queue.put(data) # put data back in queue
continue continue
logging.debug(f'data sent to database received db_id: {db_id}') else:
time.sleep(1) logging.debug(f'data sent to database received id: {db_id}')
logging.debug('finished') logging.debug('finished')
@@ -60,6 +83,7 @@ if __name__ == '__main__':
trigger_time = time.time() trigger_time = time.time()
while True: while True:
if time.time() >= trigger_time: if time.time() >= trigger_time:
logging.debug('triggered event')
# set new trigger time # set new trigger time
trigger_interval = float( trigger_interval = float(
os.getenv( os.getenv(
@@ -75,4 +99,5 @@ if __name__ == '__main__':
logging.error(e) logging.error(e)
else: else:
logging.info('finished event') logging.info('finished event')
# polite pause
time.sleep(1) time.sleep(1)