-
Notifications
You must be signed in to change notification settings - Fork 93
Jessie/microbenchmarks #262
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
550cc8c
f9c3817
0f93b66
b965d7b
e9916db
2b75311
813af03
3a96f04
d4d5d30
1b7deb7
668652c
aae1023
25fd1d9
c478c91
d6c4227
27b14d6
ace2335
ad3023d
52f30c0
4efff4d
adf54a5
67772e2
8f02b66
ae61e4b
e06985c
037f6c3
377d949
8dd8a6e
de15075
3006879
d224ddc
921f321
dd840d1
4fca4aa
26dfcf4
fad77da
e995e6a
7e0d13f
942f5a1
6bc1dd7
460ea1f
de41ab6
ded520f
5c85980
c5782dd
2b52ced
e5cb20c
6488d6d
55c4ac4
b97b7a5
1998b6b
2cbd768
074d4b7
efced9c
bc48b5e
e154ba0
d9ed506
e120167
cedcf15
6d28eef
55960b7
ba8f800
9632860
a1caa5a
6dfc552
468aa27
221c540
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,55 @@ | ||
| name: Lint | ||
|
|
||
| on: | ||
| push: | ||
| pull_request: | ||
|
|
||
| jobs: | ||
| linting: | ||
| runs-on: ubuntu-latest | ||
|
|
||
| steps: | ||
| - name: Check out code | ||
| uses: actions/checkout@v4 | ||
|
|
||
| - name: Set up Python | ||
| id: setup-python | ||
| uses: actions/setup-python@v5 | ||
| with: | ||
| python-version: '3.x' | ||
|
|
||
| - name: Cache virtualenv | ||
| uses: actions/cache@v4 | ||
| with: | ||
| path: python-venv | ||
| key: venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('requirements.txt') }}-${{ github.ref_name }} | ||
| restore-keys: | | ||
| venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}-${{ hashFiles('requirements.txt') }}- | ||
| venv-${{ runner.os }}-${{ steps.setup-python.outputs.python-version }}- | ||
| - name: Install system packages | ||
| run: | | ||
| sudo apt-get update | ||
| sudo apt-get install -y libcurl4-openssl-dev | ||
| - name: Install Python dependencies (via install.py) | ||
| run: | | ||
| python3 install.py --no-aws --no-azure --no-gcp --no-openwhisk --no-local | ||
| - name: Black (check) | ||
| run: | | ||
| . python-venv/bin/activate | ||
| black benchmarks --check --config .black.toml | ||
| - name: Flake8 (lint) | ||
| run: | | ||
| . python-venv/bin/activate | ||
| # write to file and echo to stdout (requires flake8 with --tee support) | ||
| flake8 benchmarks --config=.flake8.cfg --tee --output-file flake-reports | ||
| - name: Upload flake report | ||
| if: always() | ||
| uses: actions/upload-artifact@v4 | ||
| with: | ||
| name: flake-reports | ||
| path: flake-reports | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| # .pre-commit-config.yaml | ||
| repos: | ||
| - repo: local | ||
| hooks: | ||
| - id: flake8-local | ||
| name: flake8 (project env) | ||
| language: python | ||
| additional_dependencies: ["flake8==7.1.1"] | ||
| entry: flake8 | ||
| args: ["--config=.flake8.cfg"] | ||
| types: [python] | ||
| files: ^(sebs/|benchmarks/) | ||
| - repo: local | ||
| hooks: | ||
| - id: black-check-local | ||
| name: black --check (project env) | ||
| language: python | ||
| additional_dependencies: ["black==22.8.0"] | ||
| entry: black | ||
| args: ["--config=.black.toml", "--check", "--diff"] | ||
| types: [python] | ||
| files: ^(sebs/|benchmarks/) | ||
| # - repo: local | ||
| # hooks: | ||
| # - id: mypy-local | ||
| # name: mypy (project venv) | ||
| # language: system | ||
| # entry: bash -lc 'python -m mypy --config-file=.mypy.ini sebs' | ||
| # types: [python] | ||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| { | ||
| "[python]": { | ||
| "editor.defaultFormatter": "ms-python.black-formatter", | ||
| "editor.formatOnSave": true | ||
| }, | ||
|
|
||
| "black-formatter.importStrategy": "fromEnvironment", | ||
| "black-formatter.path": [], | ||
| "black-formatter.args": ["--config=.black.toml"], | ||
|
|
||
| "flake8.importStrategy": "fromEnvironment", | ||
| "flake8.path": [], | ||
| "flake8.args": ["--config=.flake8.cfg"], | ||
| "flake8.enabled": true | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,12 +1,11 @@ | ||
| size_generators = {"test": 1, "small": 100, "large": 1000} | ||
|
|
||
| size_generators = { | ||
| 'test' : 1, | ||
| 'small' : 100, | ||
| 'large': 1000 | ||
| } | ||
|
|
||
| def buckets_count(): | ||
| return (0, 0) | ||
|
|
||
| def generate_input(data_dir, size, benchmarks_bucket, input_paths, output_paths, upload_func, nosql_func): | ||
| return { 'sleep': size_generators[size] } | ||
|
|
||
| def generate_input( | ||
| data_dir, size, benchmarks_bucket, input_paths, output_paths, upload_func, nosql_func | ||
| ): | ||
| return {"sleep": size_generators[size]} |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,9 +1,9 @@ | ||
|
|
||
| from time import sleep | ||
|
|
||
|
|
||
| def handler(event): | ||
|
|
||
| # start timing | ||
| sleep_time = event.get('sleep') | ||
| sleep_time = event.get("sleep") | ||
| sleep(sleep_time) | ||
| return { 'result': sleep_time } | ||
| return {"result": sleep_time} |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,27 +1,26 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import csv | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import json | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import os.path | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import socket | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| from datetime import datetime | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| from time import sleep | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| from . import storage | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| def handler(event): | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| request_id = event['request-id'] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| address = event['server-address'] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| port = event['server-port'] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| repetitions = event['repetitions'] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| output_bucket = event.get('bucket').get('bucket') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| output_prefix = event.get('bucket').get('output') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| request_id = event["request-id"] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| address = event["server-address"] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| port = event["server-port"] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| repetitions = event["repetitions"] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| output_bucket = event.get("bucket").get("bucket") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| output_prefix = event.get("bucket").get("output") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| times = [] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| i = 0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| socket.setdefaulttimeout(3) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| server_socket.bind(('', 0)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| message = request_id.encode('utf-8') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| server_socket.bind(("", 0)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| message = request_id.encode("utf-8") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| adr = (address, port) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| consecutive_failures = 0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| while i < repetitions + 1: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -43,16 +42,16 @@ def handler(event): | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| consecutive_failures = 0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| server_socket.settimeout(2) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| server_socket.close() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| if consecutive_failures != 5: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| with open('/tmp/data.csv', 'w', newline='') as csvfile: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| writer = csv.writer(csvfile, delimiter=',') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| writer.writerow(["id", "client_send", "client_rcv"]) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| with open("/tmp/data.csv", "w", newline="") as csvfile: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| writer = csv.writer(csvfile, delimiter=",") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| writer.writerow(["id", "client_send", "client_rcv"]) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| for row in times: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| writer.writerow(row) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| client = storage.storage.get_instance() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| filename = 'results-{}.csv'.format(request_id) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| key = client.upload(output_bucket, os.path.join(output_prefix, filename), '/tmp/data.csv') | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| filename = "results-{}.csv".format(request_id) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| key = client.upload(output_bucket, os.path.join(output_prefix, filename), "/tmp/data.csv") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| return { 'result': key } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| return {"result": key} | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
47
to
+57
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Fix uninitialized If the UDP connection fails 5 times, Initialize - server_socket.close()
-
- if consecutive_failures != 5:
+ server_socket.close()
+
+ key = None
+ if consecutive_failures != 5:
with open("/tmp/data.csv", "w", newline="") as csvfile:
writer = csv.writer(csvfile, delimiter=",")
writer.writerow(["id", "client_send", "client_rcv"])
for row in times:
writer.writerow(row)
client = storage.storage.get_instance()
filename = "results-{}.csv".format(request_id)
key = client.upload(output_bucket, os.path.join(output_prefix, filename), "/tmp/data.csv")
return {"result": key}The Ruff S108 warnings about 📝 Committable suggestion
Suggested change
🧰 Tools🪛 Ruff (0.14.5)47-47: Probable insecure usage of temporary file or directory: "/tmp/data.csv" (S108) 55-55: Probable insecure usage of temporary file or directory: "/tmp/data.csv" (S108) 🤖 Prompt for AI Agents |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,12 +1,13 @@ | ||
|
|
||
|
|
||
| def buckets_count(): | ||
| return 0, 1 | ||
|
|
||
| def generate_input(data_dir, size, benchmarks_bucket, input_paths, output_paths, upload_func, nosql_func): | ||
|
|
||
| def generate_input( | ||
| data_dir, size, benchmarks_bucket, input_paths, output_paths, upload_func, nosql_func | ||
| ): | ||
| return { | ||
| 'bucket': { | ||
| 'bucket': benchmarks_bucket, | ||
| 'output': output_paths[0], | ||
| "bucket": { | ||
| "bucket": benchmarks_bucket, | ||
| "output": output_paths[0], | ||
| }, | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Verify Black is only intended to run on benchmarks/.
The Black check only targets the
benchmarksdirectory, but the pre-commit configuration in.pre-commit-config.yamlapplies to bothsebs/andbenchmarks/. Consider whether the workflow should also checksebs/for consistency.Run the following script to check if
sebs/contains Python files that should be formatted:🏁 Script executed:
Length of output: 198
I've confirmed that
sebs/contains Python files. Now I need to verify the pre-commit configuration to see if it actually applies Black to both directories.Length of output: 506
Update the Black check in the lint workflow to include the
sebs/directory.The pre-commit configuration applies Black to
files: ^(sebs/|benchmarks/), but the workflow only checksbenchmarks/. Thesebs/directory contains multiple Python files and should be included in the CI check for consistency.Update line 42 to:
🤖 Prompt for AI Agents