Compare commits

...
18 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
brb 9ad983cc1c added code to extract version number
Docker / Test (push) Successful in 38s
Docker / Publish (push) Failing after 5s
2023-07-12 10:27:41 +02:00
brb 10821f94df added code to extract version number
Docker / Test (push) Successful in 40s
Docker / Publish (push) Failing after 4s
2023-07-12 10:24:43 +02:00
brb 550551c4a0 updated to only run when tag is provided
Docker / Test (push) Successful in 40s
Docker / Publish (push) Failing after 6s
2023-07-12 10:08:13 +02:00
brb 5709c7152a updated to only run when tag is provided to release branch
pipeline / Test (push) Successful in 52s
Docker / Test (push) Successful in 38s
Docker / Publish (push) Failing after 6s
2023-07-11 18:41:05 +02:00
brb a8b27d8f21 ignored pushes to release branch without tag
pipeline / Test (push) Successful in 39s
2023-07-11 18:33:15 +02:00
3 changed files with 50 additions and 37 deletions
+1 -25
View File
@@ -25,28 +25,4 @@ jobs:
- name: PEP8 check
run: flake8 ./code --benchmark --exit-zero
- name: Type check
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}
run: mypy ./code
+15 -3
View File
@@ -3,8 +3,8 @@ run-name: Build and Publish Service
runs-on: ubuntu-latest
on:
push:
branches: [release]
tags: ['v*']
tags:
- 'v[0-9]+.[0-9]+.[0-9]+'
jobs:
test:
name: Test
@@ -31,10 +31,22 @@ jobs:
needs: [test]
steps:
- uses: actions/checkout@v3
-
name: Set Environment Variables
id: vars
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
uses: docker/build-push-action@v2
with:
context: .
push: true
tags: 192.168.1.2:5000/${{gitea.repository}}:${{gitea.ref_name}}
tags: 192.168.1.2:5000/${{gitea.repository}}:${{steps.vars.outputs.TAG}}
+34 -9
View File
@@ -1,8 +1,10 @@
import time
import logging
import os
import json
from configparser import ConfigParser
from pathlib import Path
from queue import Queue
from initialise_app import initialise_app
from bandwidth import measure as measure_bandwidth
from database import connect
@@ -29,29 +31,50 @@ def event(
# load environment variables
replicates = int(os.getenv('REPLICATES', default=REPLICATES))
user_id = int(os.getenv('USER_ID', default=USER_ID))
# setup database connection
db = connect()
# setup data queue
data_queue: Queue = Queue()
# run event
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
try:
res = measure_bandwidth()
data = measure_bandwidth()
except Exception as e:
logging.error(f'failed to measure bandwidth: {e}')
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 = {
'user_id': user_id,
'data': res
'data': data
}
# send to database
try:
db_id = db.insert_one(payload_dict).inserted_id
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
logging.debug(f'data sent to database received db_id: {db_id}')
time.sleep(1)
else:
logging.debug(f'data sent to database received id: {db_id}')
logging.debug('finished')
@@ -60,6 +83,7 @@ if __name__ == '__main__':
trigger_time = time.time()
while True:
if time.time() >= trigger_time:
logging.debug('triggered event')
# set new trigger time
trigger_interval = float(
os.getenv(
@@ -75,4 +99,5 @@ if __name__ == '__main__':
logging.error(e)
else:
logging.info('finished event')
# polite pause
time.sleep(1)