Files
dmlc--dgl/tests/examples/test_sparse_examples.py
2026-07-13 13:35:51 +08:00

142 lines
4.4 KiB
Python

import os
import subprocess
import sys
EXAMPLE_ROOT = os.path.join(
os.path.dirname(os.path.relpath(__file__)),
"..",
"..",
"examples",
"sparse",
)
def test_gcn():
script = os.path.join(EXAMPLE_ROOT, "gcn.py")
out = subprocess.run(["python", str(script)], capture_output=True)
assert (
out.returncode == 0
), f"stdout: {out.stdout.decode('utf-8')}\nstderr: {out.stderr.decode('utf-8')}"
stdout = out.stdout.decode("utf-8")
assert float(stdout[-5:]) > 0.75
def test_gcnii():
script = os.path.join(EXAMPLE_ROOT, "gcnii.py")
out = subprocess.run(["python", str(script)], capture_output=True)
assert (
out.returncode == 0
), f"stdout: {out.stdout.decode('utf-8')}\nstderr: {out.stderr.decode('utf-8')}"
stdout = out.stdout.decode("utf-8")
assert float(stdout[-5:]) > 0.75
def test_appnp():
script = os.path.join(EXAMPLE_ROOT, "appnp.py")
out = subprocess.run(["python", str(script)], capture_output=True)
assert (
out.returncode == 0
), f"stdout: {out.stdout.decode('utf-8')}\nstderr: {out.stderr.decode('utf-8')}"
stdout = out.stdout.decode("utf-8")
assert float(stdout[-5:]) > 0.75
def test_c_and_s():
script = os.path.join(EXAMPLE_ROOT, "c_and_s.py")
out = subprocess.run(["python", str(script)], capture_output=True)
assert (
out.returncode == 0
), f"stdout: {out.stdout.decode('utf-8')}\nstderr: {out.stderr.decode('utf-8')}"
stdout = out.stdout.decode("utf-8")
assert float(stdout[-5:]) > 0.7
def test_gat():
script = os.path.join(EXAMPLE_ROOT, "gat.py")
out = subprocess.run(["python", str(script)], capture_output=True)
assert (
out.returncode == 0
), f"stdout: {out.stdout.decode('utf-8')}\nstderr: {out.stderr.decode('utf-8')}"
stdout = out.stdout.decode("utf-8")
assert float(stdout[-5:]) > 0.7
def test_hgnn():
script = os.path.join(EXAMPLE_ROOT, "hgnn.py")
out = subprocess.run(["python", str(script)], capture_output=True)
assert (
out.returncode == 0
), f"stdout: {out.stdout.decode('utf-8')}\nstderr: {out.stderr.decode('utf-8')}"
stdout = out.stdout.decode("utf-8")
assert float(stdout[-5:]) >= 0.65
def test_hypergraphatt():
script = os.path.join(EXAMPLE_ROOT, "hypergraphatt.py")
out = subprocess.run(
["python", str(script), "--epochs=10"], capture_output=True
)
assert (
out.returncode == 0
), f"stdout: {out.stdout.decode('utf-8')}\nstderr: {out.stderr.decode('utf-8')}"
def test_sgc():
script = os.path.join(EXAMPLE_ROOT, "sgc.py")
out = subprocess.run(["python", str(script)], capture_output=True)
assert (
out.returncode == 0
), f"stdout: {out.stdout.decode('utf-8')}\nstderr: {out.stderr.decode('utf-8')}"
stdout = out.stdout.decode("utf-8")
assert float(stdout[-5:]) > 0.7
def _test_flaky(test_fn, max_num_success=8, num_tries=10):
num_success = 0
for i in range(num_tries):
try:
test_fn()
num_success += 1
except AssertionError:
pass
# If it succeeds max_num_success / num_tries of the time.
if num_tries * num_success >= max_num_success * (i + 1):
return
# Early failure if required success rate is impossible now.
num_failure = i + 1 - num_success
assert num_failure <= num_tries - max_num_success
def _test_sign():
script = os.path.join(EXAMPLE_ROOT, "sign.py")
out = subprocess.run(["python", str(script)], capture_output=True)
assert (
out.returncode == 0
), f"stdout: {out.stdout.decode('utf-8')}\nstderr: {out.stderr.decode('utf-8')}"
stdout = out.stdout.decode("utf-8")
assert float(stdout[-5:]) > 0.7
def test_sign():
_test_flaky(_test_sign)
def test_twirls():
script = os.path.join(EXAMPLE_ROOT, "twirls.py")
out = subprocess.run(["python", str(script)], capture_output=True)
assert (
out.returncode == 0
), f"stdout: {out.stdout.decode('utf-8')}\nstderr: {out.stderr.decode('utf-8')}"
stdout = out.stdout.decode("utf-8")
assert float(stdout[-5:]) > 0.7
out = subprocess.run(
["python", str(script), "--attention"], capture_output=True
)
assert (
out.returncode == 0
), f"stdout: {out.stdout.decode('utf-8')}\nstderr: {out.stderr.decode('utf-8')}"
stdout = out.stdout.decode("utf-8")
assert float(stdout[-5:]) > 0.65