mirror of
https://github.com/varun-r-mallya/Python-BPF.git
synced 2025-12-31 21:06:25 +00:00
add failing tests
This commit is contained in:
6
TODO.md
6
TODO.md
@ -1,7 +1,11 @@
|
|||||||
## Short term
|
## Short term
|
||||||
|
|
||||||
- Implement enough functionality to port the BCC tutorial examples in PythonBPF
|
- Implement enough functionality to port the BCC tutorial examples in PythonBPF
|
||||||
|
- Static Typing
|
||||||
|
- Add all maps
|
||||||
|
- XDP support in pylibbpf
|
||||||
|
- ringbuf support
|
||||||
|
- recursive expression resolution
|
||||||
|
|
||||||
## Long term
|
## Long term
|
||||||
|
|
||||||
|
|||||||
@ -108,7 +108,7 @@ def compile_to_ir(filename: str, output: str):
|
|||||||
return output
|
return output
|
||||||
|
|
||||||
|
|
||||||
def compile():
|
def compile() -> bool:
|
||||||
# Look one level up the stack to the caller of this function
|
# Look one level up the stack to the caller of this function
|
||||||
caller_frame = inspect.stack()[1]
|
caller_frame = inspect.stack()[1]
|
||||||
caller_file = Path(caller_frame.filename).resolve()
|
caller_file = Path(caller_frame.filename).resolve()
|
||||||
@ -116,14 +116,16 @@ def compile():
|
|||||||
ll_file = Path("/tmp") / caller_file.with_suffix(".ll").name
|
ll_file = Path("/tmp") / caller_file.with_suffix(".ll").name
|
||||||
o_file = caller_file.with_suffix(".o")
|
o_file = caller_file.with_suffix(".o")
|
||||||
|
|
||||||
compile_to_ir(str(caller_file), str(ll_file))
|
success = True
|
||||||
|
success = compile_to_ir(str(caller_file), str(ll_file)) and success
|
||||||
|
|
||||||
subprocess.run([
|
success = subprocess.run([
|
||||||
"llc", "-march=bpf", "-filetype=obj", "-O2",
|
"llc", "-march=bpf", "-filetype=obj", "-O2",
|
||||||
str(ll_file), "-o", str(o_file)
|
str(ll_file), "-o", str(o_file)
|
||||||
], check=True)
|
], check=True) and success
|
||||||
|
|
||||||
print(f"Object written to {o_file}, {ll_file} can be removed")
|
print(f"Object written to {o_file}")
|
||||||
|
return success
|
||||||
|
|
||||||
|
|
||||||
def BPF() -> BpfProgram:
|
def BPF() -> BpfProgram:
|
||||||
|
|||||||
15
tests/failing_tests/binops.py
Normal file
15
tests/failing_tests/binops.py
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
from pythonbpf import compile, bpf, section, bpfglobal
|
||||||
|
from ctypes import c_void_p, c_int64
|
||||||
|
|
||||||
|
@bpf
|
||||||
|
@section("sometag1")
|
||||||
|
def sometag(ctx: c_void_p) -> c_int64:
|
||||||
|
a = 1 + 2 + 1
|
||||||
|
return c_int64(0)
|
||||||
|
|
||||||
|
@bpf
|
||||||
|
@bpfglobal
|
||||||
|
def LICENSE() -> str:
|
||||||
|
return "GPL"
|
||||||
|
|
||||||
|
compile()
|
||||||
16
tests/failing_tests/if.py
Normal file
16
tests/failing_tests/if.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
from pythonbpf import compile, bpf, section, bpfglobal
|
||||||
|
from ctypes import c_void_p, c_int64
|
||||||
|
|
||||||
|
@bpf
|
||||||
|
@section("sometag1")
|
||||||
|
def sometag(ctx: c_void_p) -> c_int64:
|
||||||
|
if 3 + 2 == 5:
|
||||||
|
return c_int64(5)
|
||||||
|
return c_int64(0)
|
||||||
|
|
||||||
|
@bpf
|
||||||
|
@bpfglobal
|
||||||
|
def LICENSE() -> str:
|
||||||
|
return "GPL"
|
||||||
|
|
||||||
|
compile()
|
||||||
11
tests/failing_tests/license.py
Normal file
11
tests/failing_tests/license.py
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
from pythonbpf import compile, bpf, section, bpfglobal
|
||||||
|
from ctypes import c_void_p, c_int64
|
||||||
|
|
||||||
|
# FAILS WHEN THERE IS NO LICENSE. which is wrong.
|
||||||
|
@bpf
|
||||||
|
@section("sometag1")
|
||||||
|
def sometag(ctx: c_void_p) -> c_int64:
|
||||||
|
a = 1 + 2
|
||||||
|
return c_int64(0)
|
||||||
|
|
||||||
|
compile()
|
||||||
14
tests/failing_tests/return.py
Normal file
14
tests/failing_tests/return.py
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
from pythonbpf import compile, bpf, section, bpfglobal
|
||||||
|
from ctypes import c_void_p, c_int64
|
||||||
|
|
||||||
|
@bpf
|
||||||
|
@section("sometag1")
|
||||||
|
def sometag(ctx: c_void_p) -> c_int64:
|
||||||
|
return c_int64(1 - 1)
|
||||||
|
|
||||||
|
@bpf
|
||||||
|
@bpfglobal
|
||||||
|
def LICENSE() -> str:
|
||||||
|
return "GPL"
|
||||||
|
|
||||||
|
compile()
|
||||||
Reference in New Issue
Block a user