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
|
||||
|
||||
- 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
|
||||
|
||||
|
||||
@ -108,7 +108,7 @@ def compile_to_ir(filename: str, output: str):
|
||||
return output
|
||||
|
||||
|
||||
def compile():
|
||||
def compile() -> bool:
|
||||
# Look one level up the stack to the caller of this function
|
||||
caller_frame = inspect.stack()[1]
|
||||
caller_file = Path(caller_frame.filename).resolve()
|
||||
@ -116,14 +116,16 @@ def compile():
|
||||
ll_file = Path("/tmp") / caller_file.with_suffix(".ll").name
|
||||
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",
|
||||
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:
|
||||
|
||||
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