diff options
Diffstat (limited to 'testsuites/tmtests/tmtimer01')
-rw-r--r-- | testsuites/tmtests/tmtimer01/init.c | 64 | ||||
-rw-r--r-- | testsuites/tmtests/tmtimer01/plot.py | 75 | ||||
-rw-r--r-- | testsuites/tmtests/tmtimer01/tmtimer01.scn | 389 |
3 files changed, 349 insertions, 179 deletions
diff --git a/testsuites/tmtests/tmtimer01/init.c b/testsuites/tmtests/tmtimer01/init.c index c95ca80f3a..1a37b5192c 100644 --- a/testsuites/tmtests/tmtimer01/init.c +++ b/testsuites/tmtests/tmtimer01/init.c @@ -1,15 +1,28 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + /* - * Copyright (c) 2016 embedded brains GmbH. All rights reserved. + * Copyright (C) 2016, 2024 embedded brains GmbH & Co. KG * - * embedded brains GmbH - * Dornierstr. 4 - * 82178 Puchheim - * Germany - * <rtems@embedded-brains.de> + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. */ #ifdef HAVE_CONFIG_H @@ -95,13 +108,14 @@ static void test_fire_and_cancel( rtems_test_assert(sc2 == RTEMS_SUCCESSFUL); printf( - "<%s unit=\"ns\">%" PRIu64 "</%s>", + ",\n \"%s\": %" PRIu64, name, - rtems_counter_ticks_to_nanoseconds(d), - name + rtems_counter_ticks_to_nanoseconds(d) ); } +static const char *sep = "\n "; + static void test_case(test_context *ctx, size_t j, size_t k) { rtems_status_code sc; @@ -117,13 +131,17 @@ static void test_case(test_context *ctx, size_t j, size_t k) rtems_test_assert(sc == RTEMS_SUCCESSFUL); } - printf(" <Sample>\n <ActiveTimers>%zu</ActiveTimers>", j); - - test_fire_and_cancel(ctx, j, 0, "First"); - test_fire_and_cancel(ctx, j, j / 2, "Middle"); - test_fire_and_cancel(ctx, j, j + 1, "Last"); + printf( + "%s{\n" + " \"active-timers\": %zu", + sep, + j + ); + sep = "\n }, "; - printf("\n </Sample>\n"); + test_fire_and_cancel(ctx, j, 0, "first"); + test_fire_and_cancel(ctx, j, j / 2, "middle"); + test_fire_and_cancel(ctx, j, j + 1, "last"); } static void test(void) @@ -168,7 +186,13 @@ static void test(void) timer_count = n; } - printf("<TMTimer01 timerCount=\"%zu\">\n", timer_count); + printf( + "*** BEGIN OF JSON DATA ***\n" + "{\n" + " \"timer-count\": %zu,\n" + " \"samples\": [", + timer_count + ); k = 0; j = 0; @@ -181,7 +205,7 @@ static void test(void) test_case(ctx, n - 2, k); - printf("</TMTimer01>\n"); + printf("\n }\n ]\n}\n*** END OF JSON DATA ***\n"); } static void Init(rtems_task_argument arg) diff --git a/testsuites/tmtests/tmtimer01/plot.py b/testsuites/tmtests/tmtimer01/plot.py index 7f3cf9ece0..73654c5b9d 100644 --- a/testsuites/tmtests/tmtimer01/plot.py +++ b/testsuites/tmtests/tmtimer01/plot.py @@ -1,25 +1,56 @@ +# SPDX-License-Identifier: BSD-2-Clause + +# Copyright (C) 2016, 2024 embedded brains GmbH & Co. KG # -# Copyright (c) 2016 embedded brains GmbH. All rights reserved. -# -# The license and distribution terms for this file may be -# found in the file LICENSE in this distribution or at -# http://www.rtems.org/license/LICENSE. +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. # +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +import json +import re +import matplotlib.pyplot as plt # type: ignore +from matplotlib import ticker # type: ignore + + +def _plot(data: dict) -> None: + _, axes = plt.subplots() + axes.set_title("Timer Fire and Cancel Timing Test") + axes.set_xlabel("Active Timers") + axes.set_xscale("log") + axes.set_ylabel("Timer Fire and Cancel Duration [μs]") + x = [sample["active-timers"] for sample in data["samples"]] + for key in ["first", "middle", "last"]: + y = [sample[key] / 1000.0 for sample in data["samples"]] + axes.plot(x, y, label=f"operate on {key} timer", marker='o') + axes.legend(loc='best') + plt.savefig("tmtimer01.png") + plt.savefig("tmtimer01.pdf") + plt.close() + + +_JSON_DATA = re.compile( + r"\*\*\* BEGIN OF JSON DATA \*\*\*(.*)" + r"\*\*\* END OF JSON DATA \*\*\*", re.DOTALL) + +with open("tmtimer01.scn", "r", encoding="utf-8") as src: + match = _JSON_DATA.search(src.read()) + data = json.loads(match.group(1)) -import libxml2 -from libxml2 import xmlNode -import matplotlib.pyplot as plt -doc = libxml2.parseFile('tmtimer01.scn') -ctx = doc.xpathNewContext() - -plt.title('timer test') -plt.xscale('log') -plt.xlabel('active timers') -plt.ylabel('timer fire and cancel [ns]') - -x = map(xmlNode.getContent, ctx.xpathEval('/TMTimer01/Sample/ActiveTimers')) -for i in ['First', 'Middle', 'Last']: - y = map(xmlNode.getContent, ctx.xpathEval('/TMTimer01/Sample/' + i)) - plt.plot(x, y, label = i) -plt.legend(loc = 'best') -plt.show() +_plot(data) diff --git a/testsuites/tmtests/tmtimer01/tmtimer01.scn b/testsuites/tmtests/tmtimer01/tmtimer01.scn index db3ca01d27..b278c75177 100644 --- a/testsuites/tmtests/tmtimer01/tmtimer01.scn +++ b/testsuites/tmtests/tmtimer01/tmtimer01.scn @@ -1,137 +1,252 @@ -<TMTimer01 timerCount="65504"> - <Sample> - <ActiveTimers>0</ActiveTimers><First unit="ns">8812</First><Middle unit="ns">1412</Middle><Last unit="ns">917</Last> - </Sample> - <Sample> - <ActiveTimers>2</ActiveTimers><First unit="ns">1602</First><Middle unit="ns">1010</Middle><Last unit="ns">1367</Last> - </Sample> - <Sample> - <ActiveTimers>4</ActiveTimers><First unit="ns">1524</First><Middle unit="ns">1089</Middle><Last unit="ns">1086</Last> - </Sample> - <Sample> - <ActiveTimers>7</ActiveTimers><First unit="ns">1791</First><Middle unit="ns">1121</Middle><Last unit="ns">1838</Last> - </Sample> - <Sample> - <ActiveTimers>10</ActiveTimers><First unit="ns">1488</First><Middle unit="ns">1016</Middle><Last unit="ns">2134</Last> - </Sample> - <Sample> - <ActiveTimers>14</ActiveTimers><First unit="ns">1527</First><Middle unit="ns">1698</Middle><Last unit="ns">3186</Last> - </Sample> - <Sample> - <ActiveTimers>19</ActiveTimers><First unit="ns">2078</First><Middle unit="ns">1665</Middle><Last unit="ns">3397</Last> - </Sample> - <Sample> - <ActiveTimers>25</ActiveTimers><First unit="ns">1519</First><Middle unit="ns">2368</Middle><Last unit="ns">4464</Last> - </Sample> - <Sample> - <ActiveTimers>32</ActiveTimers><First unit="ns">1243</First><Middle unit="ns">2623</Middle><Last unit="ns">3549</Last> - </Sample> - <Sample> - <ActiveTimers>41</ActiveTimers><First unit="ns">2368</First><Middle unit="ns">2578</Middle><Last unit="ns">4105</Last> - </Sample> - <Sample> - <ActiveTimers>52</ActiveTimers><First unit="ns">2322</First><Middle unit="ns">2563</Middle><Last unit="ns">4126</Last> - </Sample> - <Sample> - <ActiveTimers>66</ActiveTimers><First unit="ns">2499</First><Middle unit="ns">1855</Middle><Last unit="ns">4919</Last> - </Sample> - <Sample> - <ActiveTimers>83</ActiveTimers><First unit="ns">1689</First><Middle unit="ns">3128</Middle><Last unit="ns">5894</Last> - </Sample> - <Sample> - <ActiveTimers>104</ActiveTimers><First unit="ns">2301</First><Middle unit="ns">2647</Middle><Last unit="ns">4595</Last> - </Sample> - <Sample> - <ActiveTimers>130</ActiveTimers><First unit="ns">2880</First><Middle unit="ns">3183</Middle><Last unit="ns">6222</Last> - </Sample> - <Sample> - <ActiveTimers>162</ActiveTimers><First unit="ns">2597</First><Middle unit="ns">2376</Middle><Last unit="ns">7118</Last> - </Sample> - <Sample> - <ActiveTimers>201</ActiveTimers><First unit="ns">3519</First><Middle unit="ns">3466</Middle><Last unit="ns">6673</Last> - </Sample> - <Sample> - <ActiveTimers>249</ActiveTimers><First unit="ns">2829</First><Middle unit="ns">3177</Middle><Last unit="ns">7784</Last> - </Sample> - <Sample> - <ActiveTimers>308</ActiveTimers><First unit="ns">2614</First><Middle unit="ns">3396</Middle><Last unit="ns">7338</Last> - </Sample> - <Sample> - <ActiveTimers>381</ActiveTimers><First unit="ns">3454</First><Middle unit="ns">4888</Middle><Last unit="ns">9114</Last> - </Sample> - <Sample> - <ActiveTimers>470</ActiveTimers><First unit="ns">3397</First><Middle unit="ns">2443</Middle><Last unit="ns">7689</Last> - </Sample> - <Sample> - <ActiveTimers>580</ActiveTimers><First unit="ns">2233</First><Middle unit="ns">4410</Middle><Last unit="ns">9355</Last> - </Sample> - <Sample> - <ActiveTimers>715</ActiveTimers><First unit="ns">3787</First><Middle unit="ns">5891</Middle><Last unit="ns">6833</Last> - </Sample> - <Sample> - <ActiveTimers>881</ActiveTimers><First unit="ns">3839</First><Middle unit="ns">5089</Middle><Last unit="ns">9232</Last> - </Sample> - <Sample> - <ActiveTimers>1085</ActiveTimers><First unit="ns">2838</First><Middle unit="ns">2739</Middle><Last unit="ns">11575</Last> - </Sample> - <Sample> - <ActiveTimers>1336</ActiveTimers><First unit="ns">3256</First><Middle unit="ns">5011</Middle><Last unit="ns">9684</Last> - </Sample> - <Sample> - <ActiveTimers>1645</ActiveTimers><First unit="ns">2293</First><Middle unit="ns">5262</Middle><Last unit="ns">10183</Last> - </Sample> - <Sample> - <ActiveTimers>2025</ActiveTimers><First unit="ns">4436</First><Middle unit="ns">5934</Middle><Last unit="ns">8804</Last> - </Sample> - <Sample> - <ActiveTimers>2492</ActiveTimers><First unit="ns">4506</First><Middle unit="ns">7284</Middle><Last unit="ns">10389</Last> - </Sample> - <Sample> - <ActiveTimers>3067</ActiveTimers><First unit="ns">3832</First><Middle unit="ns">4990</Middle><Last unit="ns">9536</Last> - </Sample> - <Sample> - <ActiveTimers>3774</ActiveTimers><First unit="ns">5088</First><Middle unit="ns">4888</Middle><Last unit="ns">9633</Last> - </Sample> - <Sample> - <ActiveTimers>4644</ActiveTimers><First unit="ns">5590</First><Middle unit="ns">5749</Middle><Last unit="ns">8975</Last> - </Sample> - <Sample> - <ActiveTimers>5714</ActiveTimers><First unit="ns">4854</First><Middle unit="ns">6813</Middle><Last unit="ns">11603</Last> - </Sample> - <Sample> - <ActiveTimers>7030</ActiveTimers><First unit="ns">6139</First><Middle unit="ns">6132</Middle><Last unit="ns">12630</Last> - </Sample> - <Sample> - <ActiveTimers>8649</ActiveTimers><First unit="ns">6877</First><Middle unit="ns">3852</Middle><Last unit="ns">10973</Last> - </Sample> - <Sample> - <ActiveTimers>10640</ActiveTimers><First unit="ns">6532</First><Middle unit="ns">6097</Middle><Last unit="ns">11725</Last> - </Sample> - <Sample> - <ActiveTimers>13089</ActiveTimers><First unit="ns">5284</First><Middle unit="ns">5392</Middle><Last unit="ns">13246</Last> - </Sample> - <Sample> - <ActiveTimers>16101</ActiveTimers><First unit="ns">7077</First><Middle unit="ns">7572</Middle><Last unit="ns">14820</Last> - </Sample> - <Sample> - <ActiveTimers>19806</ActiveTimers><First unit="ns">7132</First><Middle unit="ns">8335</Middle><Last unit="ns">11668</Last> - </Sample> - <Sample> - <ActiveTimers>24363</ActiveTimers><First unit="ns">8676</First><Middle unit="ns">7919</Middle><Last unit="ns">13937</Last> - </Sample> - <Sample> - <ActiveTimers>29968</ActiveTimers><First unit="ns">5970</First><Middle unit="ns">10978</Middle><Last unit="ns">16035</Last> - </Sample> - <Sample> - <ActiveTimers>36862</ActiveTimers><First unit="ns">8804</First><Middle unit="ns">8767</Middle><Last unit="ns">13089</Last> - </Sample> - <Sample> - <ActiveTimers>45342</ActiveTimers><First unit="ns">8608</First><Middle unit="ns">10305</Middle><Last unit="ns">15709</Last> - </Sample> - <Sample> - <ActiveTimers>55772</ActiveTimers><First unit="ns">8949</First><Middle unit="ns">10031</Middle><Last unit="ns">16262</Last> - </Sample> - <Sample> - <ActiveTimers>65503</ActiveTimers><First unit="ns">9199</First><Middle unit="ns">10309</Middle><Last unit="ns">19090</Last> - </Sample> -</TMTimer01> + + SIS - SPARC/RISCV instruction simulator 2.30, copyright Jiri Gaisler 2020 + Bug-reports to jiri@gaisler.se + + GR740/LEON4 emulation enabled, 4 cpus online, delta 50 clocks + + Loaded build/sparc/gr740/testsuites/tmtests/tmtimer01.exe, entry 0x00000000 + + +*** BEGIN OF TEST TMTIMER 1 *** +*** TEST VERSION: 6.0.0.76c91ee7793fc70b92e2f87e601c3fdc2d2b7f3f +*** TEST STATE: EXPECTED_PASS +*** TEST BUILD: RTEMS_SMP +*** TEST TOOLS: 13.2.0 20230727 (RTEMS 6, RSB d3d738c35a71ca05f675b188539225099401ac79, Newlib a021448) +*** BEGIN OF JSON DATA *** +{ + "timer-count": 61024, + "samples": [ + { + "active-timers": 0, + "first": 8560, + "middle": 8600, + "last": 8520 + }, { + "active-timers": 2, + "first": 9020, + "middle": 11680, + "last": 8860 + }, { + "active-timers": 4, + "first": 9480, + "middle": 9440, + "last": 11060 + }, { + "active-timers": 7, + "first": 9360, + "middle": 9820, + "last": 12300 + }, { + "active-timers": 10, + "first": 9860, + "middle": 9580, + "last": 11980 + }, { + "active-timers": 14, + "first": 9860, + "middle": 10040, + "last": 12280 + }, { + "active-timers": 19, + "first": 10360, + "middle": 10080, + "last": 13260 + }, { + "active-timers": 25, + "first": 10360, + "middle": 10500, + "last": 14460 + }, { + "active-timers": 32, + "first": 10240, + "middle": 10620, + "last": 13040 + }, { + "active-timers": 41, + "first": 10820, + "middle": 10540, + "last": 15000 + }, { + "active-timers": 52, + "first": 10740, + "middle": 10880, + "last": 13660 + }, { + "active-timers": 66, + "first": 10820, + "middle": 10880, + "last": 13960 + }, { + "active-timers": 83, + "first": 11160, + "middle": 11040, + "last": 14940 + }, { + "active-timers": 104, + "first": 11160, + "middle": 11420, + "last": 14340 + }, { + "active-timers": 130, + "first": 11160, + "middle": 11300, + "last": 14720 + }, { + "active-timers": 162, + "first": 11460, + "middle": 11380, + "last": 14880 + }, { + "active-timers": 201, + "first": 11500, + "middle": 11880, + "last": 17060 + }, { + "active-timers": 249, + "first": 11580, + "middle": 11800, + "last": 16900 + }, { + "active-timers": 308, + "first": 11380, + "middle": 12060, + "last": 15640 + }, { + "active-timers": 381, + "first": 11760, + "middle": 11840, + "last": 19800 + }, { + "active-timers": 470, + "first": 11880, + "middle": 12180, + "last": 16100 + }, { + "active-timers": 580, + "first": 11760, + "middle": 12600, + "last": 16560 + }, { + "active-timers": 715, + "first": 12140, + "middle": 12220, + "last": 17380 + }, { + "active-timers": 881, + "first": 12260, + "middle": 12640, + "last": 18740 + }, { + "active-timers": 1085, + "first": 12140, + "middle": 12560, + "last": 22320 + }, { + "active-timers": 1336, + "first": 12720, + "middle": 12600, + "last": 17240 + }, { + "active-timers": 1645, + "first": 12560, + "middle": 13020, + "last": 21140 + }, { + "active-timers": 2025, + "first": 12720, + "middle": 12980, + "last": 19500 + }, { + "active-timers": 2492, + "first": 12720, + "middle": 13400, + "last": 18160 + }, { + "active-timers": 3067, + "first": 13060, + "middle": 13060, + "last": 19220 + }, { + "active-timers": 3774, + "first": 12980, + "middle": 13560, + "last": 18620 + }, { + "active-timers": 4644, + "first": 13260, + "middle": 13860, + "last": 18920 + }, { + "active-timers": 5714, + "first": 13440, + "middle": 13520, + "last": 18920 + }, { + "active-timers": 7030, + "first": 13440, + "middle": 13900, + "last": 19380 + }, { + "active-timers": 8649, + "first": 13440, + "middle": 13820, + "last": 21640 + }, { + "active-timers": 10640, + "first": 14020, + "middle": 13940, + "last": 19760 + }, { + "active-timers": 13089, + "first": 13940, + "middle": 14160, + "last": 22100 + }, { + "active-timers": 16101, + "first": 13900, + "middle": 14320, + "last": 22680 + }, { + "active-timers": 19806, + "first": 13900, + "middle": 14700, + "last": 20840 + }, { + "active-timers": 24363, + "first": 14360, + "middle": 14320, + "last": 21660 + }, { + "active-timers": 29968, + "first": 14360, + "middle": 14540, + "last": 21300 + }, { + "active-timers": 36862, + "first": 14360, + "middle": 15320, + "last": 21440 + }, { + "active-timers": 45342, + "first": 14580, + "middle": 14700, + "last": 21600 + }, { + "active-timers": 55772, + "first": 14700, + "middle": 15040, + "last": 22060 + }, { + "active-timers": 61023, + "first": 14780, + "middle": 15080, + "last": 22960 + } + ] +} +*** END OF JSON DATA *** + +*** END OF TEST TMTIMER 1 *** + +cpu 0 in error mode (tt = 0x80) + 522750200 00009b40: 91d02000 ta 0x0 |