From 20f9a29d20bc198555858e62932bfcfdfd9d8bed Mon Sep 17 00:00:00 2001
From: Martin Lange <martin.lange@ufz.de>
Date: Sun, 27 Nov 2022 00:11:23 +0100
Subject: [PATCH] put histograms in artifacts

---
 .gitignore                    |  1 +
 .gitlab-ci.yml                |  5 ++++-
 benchmarks/data/test_tools.py | 14 ++++++++++++++
 pyproject.toml                |  2 +-
 4 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/.gitignore b/.gitignore
index 4ce653c6..0c434ec4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -49,6 +49,7 @@ nosetests.xml
 coverage.xml
 *.cover
 .hypothesis/
+/bench/
 
 # Translations
 *.mo
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b75b5cbf..9bf1a624 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -35,7 +35,10 @@ benchmark:
   stage: test
   script:
     - pip3 install --editable .[test]
-    - python -m pytest -v benchmarks/
+    - python -m pytest -v benchmarks/ --benchmark-histogram bench/bench
+  artifacts:
+    paths:
+      - bench
 
 doctest:
   stage: test
diff --git a/benchmarks/data/test_tools.py b/benchmarks/data/test_tools.py
index 6b8d61d4..fcd7631b 100644
--- a/benchmarks/data/test_tools.py
+++ b/benchmarks/data/test_tools.py
@@ -23,12 +23,14 @@ class TestCheckXarray(unittest.TestCase):
     def setupBenchmark(self, benchmark):
         self.benchmark = benchmark
 
+    @pytest.mark.benchmark(group="tools")
     def test_check_xarray_01_2x1(self):
         time = dt.datetime(2000, 1, 1)
         info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
         xdata = full(0.0, "test", info, time)
         _result = self.benchmark(check, xdata=xdata, name="test", info=info, time=time)
 
+    @pytest.mark.benchmark(group="tools")
     def test_check_xarray_02_128x64(self):
         time = dt.datetime(2000, 1, 1)
         info = fm.Info(time=time, grid=fm.UniformGrid((128, 64)), units="m")
@@ -41,6 +43,7 @@ class TestToXarray(unittest.TestCase):
     def setupBenchmark(self, benchmark):
         self.benchmark = benchmark
 
+    @pytest.mark.benchmark(group="tools")
     def test_to_xarray_01_2x1(self):
         time = dt.datetime(2000, 1, 1)
         info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
@@ -50,6 +53,7 @@ class TestToXarray(unittest.TestCase):
             to_xarray, data=data, name="test", info=info, time=time
         )
 
+    @pytest.mark.benchmark(group="tools")
     def test_to_xarray_02_128x64(self):
         time = dt.datetime(2000, 1, 1)
         info = fm.Info(time=time, grid=fm.UniformGrid((128, 64)), units="m")
@@ -59,6 +63,7 @@ class TestToXarray(unittest.TestCase):
             to_xarray, data=data, name="test", info=info, time=time
         )
 
+    @pytest.mark.benchmark(group="tools")
     def test_to_xarray_03_2048x1024(self):
         time = dt.datetime(2000, 1, 1)
         info = fm.Info(time=time, grid=fm.UniformGrid((2048, 1024)), units="m")
@@ -74,18 +79,21 @@ class TestTimeTools(unittest.TestCase):
     def setupBenchmark(self, benchmark):
         self.benchmark = benchmark
 
+    @pytest.mark.benchmark(group="tools")
     def test_strip_time(self):
         time = dt.datetime(2000, 1, 1)
         info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
         xdata = full(0.0, "test", info, time)
         _result = self.benchmark(strip_time, xdata=xdata)
 
+    @pytest.mark.benchmark(group="tools")
     def test_assign_time_update(self):
         time = dt.datetime(2000, 1, 1)
         info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
         xdata = full(0.0, "test", info, time)
         _result = self.benchmark(assign_time, xdata=xdata, time=dt.datetime(2000, 1, 2))
 
+    @pytest.mark.benchmark(group="tools")
     def test_assign_time_add(self):
         time = dt.datetime(2000, 1, 1)
         info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
@@ -93,12 +101,14 @@ class TestTimeTools(unittest.TestCase):
         xdata = strip_time(xdata)
         _result = self.benchmark(assign_time, xdata=xdata, time=dt.datetime(2000, 1, 2))
 
+    @pytest.mark.benchmark(group="tools")
     def test_get_time(self):
         time = dt.datetime(2000, 1, 1)
         info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
         xdata = full(0.0, "test", info, time)
         _result = self.benchmark(get_time, xdata=xdata)
 
+    @pytest.mark.benchmark(group="tools")
     def test_has_time(self):
         time = dt.datetime(2000, 1, 1)
         info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
@@ -111,24 +121,28 @@ class TestUnitsTools(unittest.TestCase):
     def setupBenchmark(self, benchmark):
         self.benchmark = benchmark
 
+    @pytest.mark.benchmark(group="tools")
     def test_get_units(self):
         time = dt.datetime(2000, 1, 1)
         info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
         xdata = full(0.0, "test", info, time)
         _result = self.benchmark(get_units, xdata=xdata)
 
+    @pytest.mark.benchmark(group="tools")
     def test_to_units_2x1(self):
         time = dt.datetime(2000, 1, 1)
         info = fm.Info(time=time, grid=fm.UniformGrid((2, 1)), units="m")
         xdata = full(0.0, "test", info, time)
         _result = self.benchmark(to_units, xdata=xdata, units="in")
 
+    @pytest.mark.benchmark(group="tools")
     def test_to_units_128x64(self):
         time = dt.datetime(2000, 1, 1)
         info = fm.Info(time=time, grid=fm.UniformGrid((128, 64)), units="m")
         xdata = full(0.0, "test", info, time)
         _result = self.benchmark(to_units, xdata=xdata, units="in")
 
+    @pytest.mark.benchmark(group="tools")
     def test_to_units_2048x1024(self):
         time = dt.datetime(2000, 1, 1)
         info = fm.Info(time=time, grid=fm.UniformGrid((2048, 1024)), units="m")
diff --git a/pyproject.toml b/pyproject.toml
index c564e04d..bafe19e3 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -67,7 +67,7 @@ doc = [
 ]
 test = [
     "pytest-cov>=3",
-    "pytest-benchmark>=4.0",
+    "pytest-benchmark[histogram]>=4.0",
 ]
 
 [tool.setuptools]
-- 
GitLab