diff options
| -rw-r--r-- | Makefile | 15 | ||||
| -rw-r--r-- | allocbench/benchmarks/dummy.py | 35 | ||||
| -rwxr-xr-x | bench.py | 10 | ||||
| -rw-r--r-- | tests/integration/__init__.py | 0 | ||||
| -rw-r--r-- | tests/integration/test_benchmarks.py | 39 |
5 files changed, 92 insertions, 7 deletions
@@ -20,8 +20,12 @@ export CXXFLAGS = -std=c++11 $(CFLAGS) -fno-exceptions export LDFLAGS = -pthread -static-libgcc export LDXXFLAGS = $(LDFLAGS) -static-libstdc++ -.PHONY: all clean pylint format tags check check-format check-pylint $(MAKEFILES) $(CMAKELISTS) -all: $(OBJDIR)/ccinfo $(MAKEFILES) $(CMAKELISTS) +.PHONY: all clean pylint format tags\ + check check-format check-pylint check-mypy\ + test integration-test\ + $(MAKEFILES) $(CMAKELISTS) + +all: $(OBJDIR)/ccinfo $(MAKEFILES) $(CMAKELISTS) $(CMAKELISTS): $(eval BENCHDIR=$(OBJDIR)$(shell echo $@ | sed s/$(SRCDIR)//)) @@ -62,4 +66,9 @@ check-mypy: tags: ctags -R --exclude="build/*" --exclude="cache/*" --exclude="doc/*" --exclude="results/*" -check: check-pylint check-format check-mypy +integration-test: + python3 -m unittest discover -s tests/integration + +test: integration-test + +check: check-pylint check-format check-mypy test diff --git a/allocbench/benchmarks/dummy.py b/allocbench/benchmarks/dummy.py new file mode 100644 index 0000000..ef67891 --- /dev/null +++ b/allocbench/benchmarks/dummy.py @@ -0,0 +1,35 @@ +# Copyright 2020 Florian Fischer <florian.fl.fischer@fau.de> +# +# This file is part of allocbench. +# +# allocbench is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# allocbench is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with allocbench. If not, see <http://www.gnu.org/licenses/>. +"""Definition of dummy benchmark + +This benchmark does nothing and is only usefull for testing allocbench""" + +from allocbench.benchmark import Benchmark + + +class BenchmarkDummy(Benchmark): + """Dummy benchmark + + This benchmark does nothing""" + def __init__(self): + name = "dummy" + + self.cmd = "true" + + self.args = {} + + super().__init__(name) @@ -130,10 +130,12 @@ def main(): # Prepare allocbench print_status("Building allocbench ...") - make_cmd = ["make"] - if args.verbose < 2: - make_cmd.append("-s") - run_cmd(make_cmd, output_verbosity=1) + # TODO: sort out recursive makes when running integration tests through our Makefile + if not 'MAKELEVEL' in os.environ: + make_cmd = ["make", "-d"] + if args.verbose < 2: + make_cmd.append("-s") + run_cmd(make_cmd, output_verbosity=1) # allocators to benchmark allocators = collect_allocators(args.allocators) diff --git a/tests/integration/__init__.py b/tests/integration/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/tests/integration/__init__.py diff --git a/tests/integration/test_benchmarks.py b/tests/integration/test_benchmarks.py new file mode 100644 index 0000000..a3b8ef7 --- /dev/null +++ b/tests/integration/test_benchmarks.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 + +# Copyright 2020 Florian Fischer <florian.fl.fischer@fau.de> +# +# This file is part of allocbench. +# +# allocbench is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# allocbench is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with allocbench. If not, see <http://www.gnu.org/licenses/>. +"""Integration tests for in allocbench included benchmarks""" + +import unittest +import subprocess + + +class TestDummy(unittest.TestCase): + """Test the dummy benchmark""" + def test_execution(self): + """Test if it executes successfully and outputs something""" + cmd = './bench.py -b dummy -a system_default -r 1 -vv' + res = subprocess.check_output(cmd.split(), + text=True, + stderr=subprocess.STDOUT) + + # allocbench should output something + self.assertNotEqual(res, "") + + +if __name__ == '__main__': + unittest.main() |
